aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/arch
diff options
context:
space:
mode:
authorNaveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>2015-04-28 08:05:37 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2015-05-04 11:43:44 -0400
commit031b84c407c3153ffbcb4f8f832edf48af988719 (patch)
treee411fca2e84dee0c112fd6d7b498a559d696d0b9 /tools/perf/arch
parentfb6d59423115b10125f5db6acb8471f6f0af4ad7 (diff)
perf probe ppc: Enable matching against dot symbols automatically
Allow perf probe to work on ppc ABIv1 without the need to specify the leading dot '.' for functions. 'perf probe do_fork' works with this patch. We do this by changing how symbol name comparison works on ppc ABIv1 - we simply ignore and skip over the initial dot, if one exists, during symbol name comparison. Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> Reviewed-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com> Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com> Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com> Cc: linuxppc-dev@lists.ozlabs.org Link: http://lkml.kernel.org/r/652a8f3bfa919bd02a1836a128370eaed59b4a34.1430217967.git.naveen.n.rao@linux.vnet.ibm.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/arch')
-rw-r--r--tools/perf/arch/powerpc/util/sym-handling.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/tools/perf/arch/powerpc/util/sym-handling.c b/tools/perf/arch/powerpc/util/sym-handling.c
index 5522a4000c22..2de2cc484d6e 100644
--- a/tools/perf/arch/powerpc/util/sym-handling.c
+++ b/tools/perf/arch/powerpc/util/sym-handling.c
@@ -8,6 +8,7 @@
8 8
9#include "debug.h" 9#include "debug.h"
10#include "symbol.h" 10#include "symbol.h"
11#include "map.h"
11 12
12#ifdef HAVE_LIBELF_SUPPORT 13#ifdef HAVE_LIBELF_SUPPORT
13bool elf__needs_adjust_symbols(GElf_Ehdr ehdr) 14bool elf__needs_adjust_symbols(GElf_Ehdr ehdr)
@@ -36,4 +37,16 @@ int arch__choose_best_symbol(struct symbol *syma,
36 37
37 return SYMBOL_A; 38 return SYMBOL_A;
38} 39}
40
41/* Allow matching against dot variants */
42int arch__compare_symbol_names(const char *namea, const char *nameb)
43{
44 /* Skip over initial dot */
45 if (*namea == '.')
46 namea++;
47 if (*nameb == '.')
48 nameb++;
49
50 return strcmp(namea, nameb);
51}
39#endif 52#endif