From 255f31647e55ef7bb531a37a79eaee45d1e5b9c5 Mon Sep 17 00:00:00 2001 From: Grzegorz Bernacki Date: Fri, 25 May 2012 06:48:42 +0000 Subject: [PATCH] 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 --- usr.bin/gprof/lookup.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/usr.bin/gprof/lookup.c b/usr.bin/gprof/lookup.c index 0f3b76301ab0..256136090db3 100644 --- a/usr.bin/gprof/lookup.c +++ b/usr.bin/gprof/lookup.c @@ -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 ) {