OSDN Git Service

perf tools: Allow user to indicate path to objdump in command line
authorMaciek Borzecki <maciek.borzecki@gmail.com>
Tue, 4 Sep 2012 10:32:30 +0000 (12:32 +0200)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 5 Sep 2012 22:41:55 +0000 (19:41 -0300)
When analyzing perf data from hosts of other architecture than one of
the local host it's useful to call objdump that is part of a toolchain
for that architecture. Instead of calling regular objdump, call one that
user specified in command line.

Signed-off-by: Maciek Borzecki <maciek.borzecki@gmail.com>
Acked-by: David Ahern <dsahern@gmail.com>
Link: http://lkml.kernel.org/r/1346754750.16299.3.camel@localhost.localdomain
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/Documentation/perf-annotate.txt
tools/perf/Documentation/perf-report.txt
tools/perf/builtin-annotate.c
tools/perf/builtin-report.c
tools/perf/util/annotate.c
tools/perf/util/annotate.h

index c89f9e1..c8ffd9f 100644 (file)
@@ -85,6 +85,9 @@ OPTIONS
 -M::
 --disassembler-style=:: Set disassembler style for objdump.
 
+--objdump=<path>::
+        Path to objdump binary.
+
 SEE ALSO
 --------
 linkperf:perf-record[1], linkperf:perf-report[1]
index 495210a..f4d91be 100644 (file)
@@ -168,6 +168,9 @@ OPTIONS
        branch stacks and it will automatically switch to the branch view mode,
        unless --no-branch-stack is used.
 
+--objdump=<path>::
+        Path to objdump binary.
+
 SEE ALSO
 --------
 linkperf:perf-stat[1], linkperf:perf-annotate[1]
index 67522cf..2f3f002 100644 (file)
@@ -282,6 +282,8 @@ int cmd_annotate(int argc, const char **argv, const char *prefix __used)
                    "Display raw encoding of assembly instructions (default)"),
        OPT_STRING('M', "disassembler-style", &disassembler_style, "disassembler style",
                   "Specify disassembler style (e.g. -M intel for intel syntax)"),
+       OPT_STRING(0, "objdump", &objdump_path, "path",
+                  "objdump binary to use for disassembly and annotations"),
        OPT_END()
        };
 
index d618253..1f8d11b 100644 (file)
@@ -638,6 +638,8 @@ int cmd_report(int argc, const char **argv, const char *prefix __used)
                    "Show a column with the sum of periods"),
        OPT_CALLBACK_NOOPT('b', "branch-stack", &sort__branch_mode, "",
                    "use branch records for histogram filling", parse_branch_mode),
+       OPT_STRING(0, "objdump", &objdump_path, "path",
+                  "objdump binary to use for disassembly and annotations"),
        OPT_END()
        };
 
index 3a282c0..51ef69c 100644 (file)
@@ -17,6 +17,7 @@
 #include <pthread.h>
 
 const char     *disassembler_style;
+const char     *objdump_path;
 
 static struct ins *ins__find(const char *name);
 static int disasm_line__parse(char *line, char **namep, char **rawp);
@@ -820,9 +821,10 @@ fallback:
                 dso, dso->long_name, sym, sym->name);
 
        snprintf(command, sizeof(command),
-                "objdump %s%s --start-address=0x%016" PRIx64
+                "%s %s%s --start-address=0x%016" PRIx64
                 " --stop-address=0x%016" PRIx64
                 " -d %s %s -C %s|grep -v %s|expand",
+                objdump_path ? objdump_path : "objdump",
                 disassembler_style ? "-M " : "",
                 disassembler_style ? disassembler_style : "",
                 map__rip_2objdump(map, sym->start),
index 78a5692..a6d6bc5 100644 (file)
@@ -152,5 +152,6 @@ int symbol__tui_annotate(struct symbol *sym, struct map *map, int evidx,
 #endif
 
 extern const char      *disassembler_style;
+extern const char      *objdump_path;
 
 #endif /* __PERF_ANNOTATE_H */