Date: Fri, 25 May 2012 06:48:43 +0000 (UTC) From: Grzegorz Bernacki <gber@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r235975 - head/usr.bin/gprof Message-ID: <201205250648.q4P6mhPP086072@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: gber Date: Fri May 25 06:48:42 2012 New Revision: 235975 URL: http://svn.freebsd.org/changeset/base/235975 Log: Fix resolving symbol names on ARM. On ARM, binutils are adding '$a' symbols in the symbol table for every function (in addition to normal symbol). When gprof(1) looks up symbol name, it often reads '$a' instead of proper function name, because it find it first. With this fix, when read symbol name begins with '$' and previous symbol has the same address, it will use previous symbol name (which is proper function name). Obtained from: Semihalf Modified: head/usr.bin/gprof/lookup.c Modified: head/usr.bin/gprof/lookup.c ============================================================================== --- head/usr.bin/gprof/lookup.c Fri May 25 06:41:08 2012 (r235974) +++ head/usr.bin/gprof/lookup.c Fri May 25 06:48:42 2012 (r235975) @@ -66,6 +66,12 @@ nllookup( address ) printf( "[nllookup] %d (%d) probes\n" , probes , nname-1 ); } # endif /* DEBUG */ +#if defined(__arm__) + if (nl[middle].name[0] == '$' && + nl[middle-1].value == nl[middle].value) + middle--; +#endif + return &nl[ middle ]; } if ( nl[ middle ].value > address ) {
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201205250648.q4P6mhPP086072>