* 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.
This commit is contained in:
Danny Smith 2003-03-16 22:12:01 +00:00
parent 7729cf524f
commit dcbe33d83a
3 changed files with 19 additions and 7 deletions

View File

@ -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> 2003-03-10 Danny Smith <dannysmith@users.sourceforge.net>
* include/stdlib.h (qsort): Remove const from first parm. * include/stdlib.h (qsort): Remove const from first parm.

View File

@ -89,10 +89,12 @@ gcrt1.o: gcrt0.c
gcrt2.o: gcrt0.c gcrt2.o: gcrt0.c
$(CC) -D__MSVCRT__ -c -o $@ $(CPPFLAGS) $(CFLAGS) $? $(CC) -D__MSVCRT__ -c -o $@ $(CPPFLAGS) $(CFLAGS) $?
#FIXME: Optimizing at higher than -O1 tweaks a bug in gcc 3.2.2 #
# and earlier # Dependancies
mcount.o: mcount.c #
$(CC) -D__MSVCRT__ -c -o $@ $(CPPFLAGS) ${filter-out -O%,$(ALL_CFLAGS)} -O1 $? 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 Makefile: Makefile.in config.status configure
$(SHELL) config.status $(SHELL) config.status
@ -137,3 +139,4 @@ dist:
@for i in $(DISTFILES); do\ @for i in $(DISTFILES); do\
cp -p $(srcdir)/$$i $(distdir)/profile/$$i ; \ cp -p $(srcdir)/$$i $(distdir)/profile/$$i ; \
done done

View File

@ -46,18 +46,20 @@
void \ void \
mcount() \ mcount() \
{ \ { \
int selfpc, frompcindex; \ u_long selfpc, frompcindex; \
/* \ /* \
* find the return address for mcount, \ * find the return address for mcount, \
* and the return address for mcount's caller. \ * and the return address for mcount's caller. \
* \ * \
* selfpc = pc pushed by mcount call \ * 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. \ * 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); \ _mcount(frompcindex, selfpc); \
} }