+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.
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
@for i in $(DISTFILES); do\
cp -p $(srcdir)/$$i $(distdir)/profile/$$i ; \
done
+
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); \
}