profiling with cc

Andreas Tobler toa at
Sun Feb 5 06:44:29 PST 2006

Marius Strobl wrote:
> On Sun, Feb 05, 2006 at 12:52:45PM +0100, Andreas Tobler wrote:
>> Marius Strobl wrote:
>>> I think all it takes is the MD _mcount() -> mcount() wrapper but I'm
>>> not sure what it's actually supposed to do.
>> Ok, thank you for the pointer. I try to read through the code and see if 
>> I can get something out of it.
>> Build question, if I play around in this section, does it mean to 
>> rebuild the whole kernel/world everytime, or is it enough to just 
>> compile and install the modified parts ?
> AFAICT the wrapper has to go into the userland version of the MCOUNT
> macro in <machine/profile.h> and you'll have to re-compile and re-
> install libc, specifically libc_p.a, in order to test it.


To my understanding, the wrapper should look similar like in

#else /* !_KERNEL */
#define _MCOUNT_DECL \
static void _mcount(uintfptr_t frompc, uintfptr_t selfpc) __used; \
static void _mcount


#define MCOUNT \
        __asm(".global " _mcount);\
        __asm(_mcount ":");\
        __asm("add %o7, 8, %o1");\
        __asm("1: call 2f; nop; 2:");\
        __asm("add %o7," __mcount "-1b, %o2");\
        __asm("ld [%o2], %o2");\
        __asm("jmpl %o2, %g0");\
        __asm("add %i7, 8, %o0");
#else /* !__GNUCLIKE_ASM */
#define MCOUNT                                       \
void                                                 \
mcount()                                             \
{                                                    \
#endif /* __GNUCLIKE_ASM */

Or am I looking to far?

The above asm code comes from NetBSD...


More information about the freebsd-sparc64 mailing list