profiling on amd64

Peter Wemm peter at wemm.org
Tue May 18 18:02:29 PDT 2004


On Tuesday 18 May 2004 09:46 am, Peter Wemm wrote:
> On Tuesday 18 May 2004 12:04 am, Tim Robbins wrote:
> > On Tue, May 18, 2004 at 02:04:21PM +0900, Till Plewe wrote:
> > > The program "int main(){return 0;}" fails to compile if I use the
> > > option "-pg". The error message I get starts with:
> > >
> > > # gcc -pg -o test test.c
> > > /var/tmp//ccTPXtQI.o: In function `main':
> > > /var/tmp//ccTPXtQI.o(.text+0x5): undefined reference to `mcount'
> > > /usr/lib/libc_p.a(gmon.po): In function `monstartup':
> > > gmon.po(.text+0xa): undefined reference to `mcount
> > > ...
> >
> > This is a bug in the FreeBSD/x86-64 GCC configuration. It should be
> > calling ``.mcount'' instead of ``mcount'' (note the full-stop at
> > the start of the name.) After applying this patch, rebuilding gcc,
> > and rebuilding the profiled C library, gcc -pg does not cause
> > linker errors:
> >
> > ====
> > //depot/user/tjr/freebsd-tjr/src/contrib/gcc/config/i386/freebsd64.
> >h# 5 - /home/tim/p4/src/contrib/gcc/config/i386/freebsd64.h ==== @@
> > -25,6 +25,9 @@
> >  #undef  TARGET_VERSION
> >  #define TARGET_VERSION fprintf (stderr, " (FreeBSD/x86-64 ELF)");
> >
> > +#undef  MCOUNT_NAME
> > +#define MCOUNT_NAME ".mcount"
> > +
> >  #undef  FBSD_TARGET_CPU_CPP_BUILTINS
> >  #define FBSD_TARGET_CPU_CPP_BUILTINS()		\
> >    do						\
> >
> >
> > However, programs compiled with -pg will crash almost immediately.
> > I don't understand why this happens well enough to venture
> > an explanation, but I think both GCC and FreeBSD/amd64's
> > <machine/profile.h> header are at fault here.
>
> Yes, profiling wasn't something on my radar at the time so I mostly
> ignored it while doing the early porting work.

OK, I've tracked down the missing parts of userland profiling and made 
it work.  You'll still need the above patch to gcc and do a buildworld 
otherwise there will be undefined references to mcount in libc_p.a etc.
-- 
Peter Wemm - peter at wemm.org; peter at FreeBSD.org; peter at yahoo-inc.com
"All of this is for nothing if we don't go to the stars" - JMS/B5


More information about the freebsd-amd64 mailing list