Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 12 Feb 2006 00:19:36 +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:  <43EE7108.2040200@pop.agri.ch>
In-Reply-To: <20060208173546.D53619@newtrinity.zeist.de>
References:  <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> <43E60F45.4070004@pop.agri.ch> <20060205175656.S68720@newtrinity.zeist.de> <43E7B94E.3070805@pop.agri.ch> <20060207170055.B53619@newtrinity.zeist.de> <43E8FC6B.50705@pop.agri.ch> <20060208173546.D53619@newtrinity.zeist.de>

next in thread | previous in thread | raw e-mail | index | archive | help
Marius Strobl wrote:
> On Tue, Feb 07, 2006 at 09:00:43PM +0100, Andreas Tobler wrote:
>> Attached what I have so far. I built a libc_p.a and I can compile some 
>> code with -pg and do some investigations with gprof now.
>>
>> Done on an enterprise 2 2x296MHz 896MB.
>>
>> FreeBSD enterprise.andreas.nets 7.0-CURRENT FreeBSD 7.0-CURRENT #0: Sun 
>> Feb  5 08:20:12 CET 2006 
>> andreast@enterprise.andreas.nets:/usr/obj/home/andreast/devel/src/sys/GENERIC 
>>   sparc64
>>
>> What I do not know yet, is the fact, how reliably the figures are.
>>
> 
> It should work fine for C functions but the ENTRY macro in
> sparc64/include/asm.h has to be changed to call _mcount() so profiling
> info is also gathered for asm functions (e.g. those in libc).

Ok, after some reading I got confused.

Do you expect an ENTRY for normal operation and one for PROFILED work?
Like netbsd does:
#define ENTRY(name)		_ENTRY(name); _PROF_PROLOGUE
#define ENTRY_NOPROFILE(name)	_ENTRY(name)

Where _PROF_PROLOGUE is like:

#define _PROF_PROLOGUE \
	.data; .align 4; 1: .long 0; \
	.text; save %sp,-96,%sp; sethi %hi(1b),%o0; call _mcount; \
	or %o0,%lo(1b),%o0; restore

?

> 
>> Would you mind giving me some feedback if the attached is useful/needs 
>> rework?
>>
> 
> It has some style issues and inconsitencies (see style(9) and other
> inline asm in e.g. sparc64/include/cpufunc.h). Otherwise it looks
> good but probably needs a PIC version of the MCOUNT asm so it also
> works when compiling with -p.


Regarding inline asm, do you mean something like this:
#define MCOUNT ({                                               \
         __asm __volatile(                                       \
         "               .global __mcount ;              "       \
         "__mcount: ;                                    "       \
         "               add %o7, 8, %o1 ;               "       \
         "1:             call 2f ;                       "       \
         "               nop ;                           "       \
         "2:             add %o7, _mcount - 1b, %o2 ;    "       \
         "               ld [%o2], %o2 ;                 "       \
         "               jmpl %o2, %g0 ;                 "       \
         "               add %i7, 8, %o0 ; ");
})

style 9 is good to have, but I seem to run in corner cases (my 
impression). It would be helpful for me to point out exactly what you 
mean I'm doing 'wrong'. Going through the code shows some 
inconsistencies and I am confused, as said ;)

Thanks,
Andreas





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