* 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>
* include/stdlib.h (qsort): Remove const from first parm.

View File

@ -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

View File

@ -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); \
}