RE: gprof's broken in 7-CURRENT
- From: Luoqi Chen <luoqi@xxxxxxxxxxx>
- Date: Wed, 28 Nov 2007 23:22:45 GMT
Luoqi Chen wrote:
Has anyone else noticed that gprof no longer works with gcc 4.2
It's a known bug (very irritating!), but I think noone is working on it
so it won't be fixed in 7.0.
In that case, I'll fix it.
I've looked at glibc's code, it claims that mcount cannot clobber any register.
I don't know if there is a standard for mcount interface, but I guess the gcc
team would use the glibc implementation as the reference. I'll change our code
to do the same.
/* We need a special version of the `mcount' function since for ix86 it
must not clobber any register. This has several reasons:
- there is a bug in gcc as of version 2.7.2.2 which prohibits the
use of profiling together with nested functions
- the ELF `fixup' function uses GCC's regparm feature
- some (future) systems might want to pass parameters in registers. */
ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(_mcount)
ASM_TYPE_DIRECTIVE(C_SYMBOL_NAME(_mcount), @function)
.align ALIGNARG(4)
C_LABEL(_mcount)
/* Save the caller-clobbered registers. */
pushl %eax
pushl %ecx
pushl %edx
movl 12(%esp), %edx
movl 4(%ebp), %eax
/* No need to access the PLT or GOT, __mcount_internal is an
internal function and we can make a relative call. */
call C_SYMBOL_NAME(__mcount_internal)
/* Pop the saved registers. Please note that `mcount' has no
return value. */
popl %edx
popl %ecx
popl %eax
ret
ASM_SIZE_DIRECTIVE(C_SYMBOL_NAME(_mcount))
Thanks
-lq
_______________________________________________
freebsd-current@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscribe@xxxxxxxxxxx"
- Prev by Date: Re: idea bouncing: using cvs as a replacement for mergemaster
- Next by Date: Re: idea bouncing: using cvs as a replacement for mergemaster
- Previous by thread: gprof's broken in 7-CURRENT
- Next by thread: RE: gprof's broken in 7-CURRENT
- Index(es):
Relevant Pages
|
|