Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDanny Smith <dannysmith@users.sourceforge.net>2003-03-17 01:12:01 +0300
committerDanny Smith <dannysmith@users.sourceforge.net>2003-03-17 01:12:01 +0300
commitdcbe33d83aeca1d70ee00142b9a624dc1205b4b4 (patch)
treeaa00e763d3777f0924e8a05a88e36e7fc038bd24 /winsup/mingw
parent7729cf524f54a2e8ab15cf4eb5c5667136534783 (diff)
* profile/profile.h (mcount): Use __builtin_return_address
rather than __asm statements. * profile/Makefile.in: Remove special rule for mcount.o Specify dependencies for mcount.o profil.o gmon.o.
Diffstat (limited to 'winsup/mingw')
-rw-r--r--winsup/mingw/ChangeLog7
-rw-r--r--winsup/mingw/profile/Makefile.in11
-rw-r--r--winsup/mingw/profile/profile.h8
3 files changed, 19 insertions, 7 deletions
diff --git a/winsup/mingw/ChangeLog b/winsup/mingw/ChangeLog
index 323ac68c9..fe9068b55 100644
--- a/winsup/mingw/ChangeLog
+++ b/winsup/mingw/ChangeLog
@@ -1,3 +1,10 @@
+2003-03-16 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * profile/profile.h (mcount): Use __builtin_return_address
+ rather than inline __asm statements.
+ * profile/Makefile.in: Remove special rule for mcount.o
+ Specify dependencies for mcount.o profil.o gmon.o.
+
2003-03-10 Danny Smith <dannysmith@users.sourceforge.net>
* include/stdlib.h (qsort): Remove const from first parm.
diff --git a/winsup/mingw/profile/Makefile.in b/winsup/mingw/profile/Makefile.in
index f18bfe44a..aca3a2950 100644
--- a/winsup/mingw/profile/Makefile.in
+++ b/winsup/mingw/profile/Makefile.in
@@ -89,10 +89,12 @@ gcrt1.o: gcrt0.c
gcrt2.o: gcrt0.c
$(CC) -D__MSVCRT__ -c -o $@ $(CPPFLAGS) $(CFLAGS) $?
-#FIXME: Optimizing at higher than -O1 tweaks a bug in gcc 3.2.2
-# and earlier
-mcount.o: mcount.c
- $(CC) -D__MSVCRT__ -c -o $@ $(CPPFLAGS) ${filter-out -O%,$(ALL_CFLAGS)} -O1 $?
+#
+# Dependancies
+#
+gmon.o: gmon.c gmon.h profile.h profil.h
+mcount.o: mcount.c gmon.h profile.h
+profil.o: profil.c profil.h
Makefile: Makefile.in config.status configure
$(SHELL) config.status
@@ -137,3 +139,4 @@ dist:
@for i in $(DISTFILES); do\
cp -p $(srcdir)/$$i $(distdir)/profile/$$i ; \
done
+
diff --git a/winsup/mingw/profile/profile.h b/winsup/mingw/profile/profile.h
index d578657f8..6c198d742 100644
--- a/winsup/mingw/profile/profile.h
+++ b/winsup/mingw/profile/profile.h
@@ -46,18 +46,20 @@
void \
mcount() \
{ \
- int selfpc, frompcindex; \
+ u_long selfpc, frompcindex; \
/* \
* find the return address for mcount, \
* and the return address for mcount's caller. \
* \
* selfpc = pc pushed by mcount call \
*/ \
- __asm("movl 4(%%ebp),%0" : "=r" (selfpc)); \
+ /* __asm volatile ("movl 4(%%ebp),%0" : "=r" (selfpc)); */ \
+ selfpc = (u_long) __builtin_return_address (0); \
/* \
* frompcindex = pc pushed by call into self. \
*/ \
- __asm("movl (%%ebp),%0;movl 4(%0),%0" : "=r" (frompcindex)); \
+ /* __asm ("movl (%%ebp),%0;movl 4(%0),%0" : "=r" (frompcindex)); */ \
+ frompcindex = (u_long) __builtin_return_address (1); \
_mcount(frompcindex, selfpc); \
}