Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 05 Feb 2006 15:44:21 +0100
From:      Andreas Tobler <toa@pop.agri.ch>
To:        Marius Strobl <marius@alchemy.franken.de>
Cc:        freebsd-sparc64@freebsd.org
Subject:   Re: profiling with cc
Message-ID:  <43E60F45.4070004@pop.agri.ch>
In-Reply-To: <20060205132234.P68720@newtrinity.zeist.de>
References:  <43E3D228.6060801@pop.agri.ch> <20060205112432.A3868@newtrinity.zeist.de> <43E5D988.2070009@pop.agri.ch> <20060205122153.O68720@newtrinity.zeist.de> <43E5E70D.1090209@pop.agri.ch> <20060205132234.P68720@newtrinity.zeist.de>

next in thread | previous in thread | raw e-mail | index | archive | help
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.

Good.

To my understanding, the wrapper should look similar like in
  sys/amd64/include/profile.h?


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

#ifdef __GNUCLIKE_ASM

#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...

Thanks,
Andreas



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?43E60F45.4070004>