* [PATCH] perf: introduce new two options for objdump. @ 2015-01-29 13:03 Martin Liška 2015-05-19 14:08 ` Arnaldo Carvalho de Melo 0 siblings, 1 reply; 10+ messages in thread From: Martin Liška @ 2015-01-29 13:03 UTC (permalink / raw) To: a.p.zijlstra, paulus, mingo, acme; +Cc: linux-kernel Newly introduced options usedfull for off-box usage: --objdump-prefix: specify prefix to add to the absolute paths where objdump looks for source files. --objdump-prefix-strip: indicate how many initial directory names to strip off the hardwired absolute paths, passed to objdump. It has no effect without --objdump-prefix. Signed-off-by: Martin Liska <mliska@suse.cz> --- tools/perf/Documentation/perf-annotate.txt | 6 ++++++ tools/perf/Documentation/perf-report.txt | 6 ++++++ tools/perf/Documentation/perf-top.txt | 10 ++++++++++ tools/perf/builtin-annotate.c | 5 +++++ tools/perf/builtin-report.c | 5 +++++ tools/perf/builtin-top.c | 5 +++++ tools/perf/util/annotate.c | 8 +++++++- tools/perf/util/annotate.h | 2 ++ 8 files changed, 46 insertions(+), 1 deletion(-) diff --git a/tools/perf/Documentation/perf-annotate.txt b/tools/perf/Documentation/perf-annotate.txt index e9cd39a..4d2a5be 100644 --- a/tools/perf/Documentation/perf-annotate.txt +++ b/tools/perf/Documentation/perf-annotate.txt @@ -90,6 +90,12 @@ OPTIONS --objdump=<path>:: Path to objdump binary. +--objdump-prefix=<path>:: + Specify prefix to add to the absolute paths where objdump looks for source files. + +--objdump-prefix-strip=<level>:: + Indicate how many initial directory names to strip off the hardwired absolute paths, passed to objdump. It has no effect without --objdump-prefix. + --skip-missing:: Skip symbols that cannot be annotated. diff --git a/tools/perf/Documentation/perf-report.txt b/tools/perf/Documentation/perf-report.txt index dd7cccd..8e1ed80 100644 --- a/tools/perf/Documentation/perf-report.txt +++ b/tools/perf/Documentation/perf-report.txt @@ -279,6 +279,12 @@ OPTIONS --objdump=<path>:: Path to objdump binary. +--objdump-prefix=<path>:: + Specify prefix to add to the absolute paths where objdump looks for source files. + +--objdump-prefix-strip=<level>:: + Indicate how many initial directory names to strip off the hardwired absolute paths, passed to objdump. It has no effect without --objdump-prefix. + --group:: Show event group information together. diff --git a/tools/perf/Documentation/perf-top.txt b/tools/perf/Documentation/perf-top.txt index 3265b10..6e71045 100644 --- a/tools/perf/Documentation/perf-top.txt +++ b/tools/perf/Documentation/perf-top.txt @@ -157,6 +157,16 @@ Default is to monitor all CPUS. --asm-raw:: Show raw instruction encoding of assembly instructions. +--objdump=<path>:: + Path to objdump binary. + +--objdump-prefix=<path>:: + Specify prefix to add to the absolute paths where objdump looks for source files. + +--objdump-prefix-strip=<level>:: + Indicate how many initial directory names to strip off the hardwired absolute paths, passed to objdump. It has no effect without --objdump-prefix. + + -g:: Enables call-graph (stack chain/backtrace) recording. diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c index 747f861..25b84b1 100644 --- a/tools/perf/builtin-annotate.c +++ b/tools/perf/builtin-annotate.c @@ -322,6 +322,11 @@ int cmd_annotate(int argc, const char **argv, const char *prefix __maybe_unused) "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_STRING(0, "objdump-prefix", &objdump_prefix_path, "path", + "prefix to the absolute paths where objdump looks for source files"), + OPT_STRING(0, "objdump-prefix-strip", &objdump_prefix_strip, "level", + "Indicate how many initial directory names to strip off the hardwired " + "absolute paths, passed to objdump."), OPT_BOOLEAN(0, "group", &symbol_conf.event_group, "Show event group information together"), OPT_END() diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c index 072ae8a..c4f2c2f 100644 --- a/tools/perf/builtin-report.c +++ b/tools/perf/builtin-report.c @@ -712,6 +712,11 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused) "add last branch records to call history"), OPT_STRING(0, "objdump", &objdump_path, "path", "objdump binary to use for disassembly and annotations"), + OPT_STRING(0, "objdump-prefix", &objdump_prefix_path, "path", + "prefix to the absolute paths where objdump looks for source files"), + OPT_STRING(0, "objdump-prefix-strip", &objdump_prefix_strip, "level", + "Indicate how many initial directory names to strip off the hardwired " + "absolute paths, passed to objdump."), OPT_BOOLEAN(0, "demangle", &symbol_conf.demangle, "Disable symbol demangling"), OPT_BOOLEAN(0, "demangle-kernel", &symbol_conf.demangle_kernel, diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c index 616f0fc..ac70949 100644 --- a/tools/perf/builtin-top.c +++ b/tools/perf/builtin-top.c @@ -1147,6 +1147,11 @@ int cmd_top(int argc, const char **argv, const char *prefix __maybe_unused) "Enable kernel symbol demangling"), OPT_STRING(0, "objdump", &objdump_path, "path", "objdump binary to use for disassembly and annotations"), + OPT_STRING(0, "objdump-prefix", &objdump_prefix_path, "path", + "prefix to the absolute paths where objdump looks for source files"), + OPT_STRING(0, "objdump-prefix-strip", &objdump_prefix_strip, "level", + "Indicate how many initial directory names to strip off the hardwired " + "absolute paths, passed to objdump."), OPT_STRING('M', "disassembler-style", &disassembler_style, "disassembler style", "Specify disassembler style (e.g. -M intel for intel syntax)"), OPT_STRING('u', "uid", &target->uid_str, "user", "user to profile"), diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c index 79999ce..ec62c0b 100644 --- a/tools/perf/util/annotate.c +++ b/tools/perf/util/annotate.c @@ -23,6 +23,8 @@ const char *disassembler_style; const char *objdump_path; +const char *objdump_prefix_path; +const char *objdump_prefix_strip; static regex_t file_lineno; static struct ins *ins__find(const char *name); @@ -1001,12 +1003,16 @@ fallback: } snprintf(command, sizeof(command), - "%s %s%s --start-address=0x%016" PRIx64 + "%s %s%s %s%s %s%s --start-address=0x%016" PRIx64 " --stop-address=0x%016" PRIx64 " -l -d %s %s -C %s 2>/dev/null|grep -v %s|expand", objdump_path ? objdump_path : "objdump", disassembler_style ? "-M " : "", disassembler_style ? disassembler_style : "", + objdump_prefix_path ? "--prefix=" : "", + objdump_prefix_path ? objdump_prefix_path : "", + objdump_prefix_strip ? "--prefix-strip=" : "", + objdump_prefix_strip ? objdump_prefix_strip : "", map__rip_2objdump(map, sym->start), map__rip_2objdump(map, sym->end), symbol_conf.annotate_asm_raw ? "" : "--no-show-raw", diff --git a/tools/perf/util/annotate.h b/tools/perf/util/annotate.h index cadbdc9..fd9782e 100644 --- a/tools/perf/util/annotate.h +++ b/tools/perf/util/annotate.h @@ -168,5 +168,7 @@ static inline int symbol__tui_annotate(struct symbol *sym __maybe_unused, #endif extern const char *disassembler_style; +extern const char *objdump_prefix_path; +extern const char *objdump_prefix_strip; #endif /* __PERF_ANNOTATE_H */ -- 2.1.2 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH] perf: introduce new two options for objdump. 2015-01-29 13:03 [PATCH] perf: introduce new two options for objdump Martin Liška @ 2015-05-19 14:08 ` Arnaldo Carvalho de Melo 2015-05-19 14:29 ` David Ahern 0 siblings, 1 reply; 10+ messages in thread From: Arnaldo Carvalho de Melo @ 2015-05-19 14:08 UTC (permalink / raw) To: Martin Liška; +Cc: a.p.zijlstra, paulus, mingo, linux-kernel Em Thu, Jan 29, 2015 at 02:03:46PM +0100, Martin Liška escreveu: > Newly introduced options usedfull for off-box usage: New useful options for off-box usage: > --objdump-prefix: specify prefix to add to the absolute paths > where objdump looks for source files. > --objdump-prefix-strip: indicate how many initial directory names > to strip off the hardwired absolute paths, passed to objdump. > It has no effect without --objdump-prefix. Does this, for instance, allows one looking at source code + assembly with debuginfo packages? Is that a usecase you tested this against? Anyway, sorry for the delay in processing this, fell thru the cracks ;-\ Can you please respin this on top of my current perf/core, at: git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git Thanks a lot! - Arnaldo > Signed-off-by: Martin Liska <mliska@suse.cz> > > --- > tools/perf/Documentation/perf-annotate.txt | 6 ++++++ > tools/perf/Documentation/perf-report.txt | 6 ++++++ > tools/perf/Documentation/perf-top.txt | 10 ++++++++++ > tools/perf/builtin-annotate.c | 5 +++++ > tools/perf/builtin-report.c | 5 +++++ > tools/perf/builtin-top.c | 5 +++++ > tools/perf/util/annotate.c | 8 +++++++- > tools/perf/util/annotate.h | 2 ++ > 8 files changed, 46 insertions(+), 1 deletion(-) > > diff --git a/tools/perf/Documentation/perf-annotate.txt b/tools/perf/Documentation/perf-annotate.txt > index e9cd39a..4d2a5be 100644 > --- a/tools/perf/Documentation/perf-annotate.txt > +++ b/tools/perf/Documentation/perf-annotate.txt > @@ -90,6 +90,12 @@ OPTIONS > --objdump=<path>:: > Path to objdump binary. > +--objdump-prefix=<path>:: > + Specify prefix to add to the absolute paths where objdump looks for source files. > + > +--objdump-prefix-strip=<level>:: > + Indicate how many initial directory names to strip off the hardwired absolute paths, passed to objdump. It has no effect without --objdump-prefix. > + > --skip-missing:: > Skip symbols that cannot be annotated. > diff --git a/tools/perf/Documentation/perf-report.txt b/tools/perf/Documentation/perf-report.txt > index dd7cccd..8e1ed80 100644 > --- a/tools/perf/Documentation/perf-report.txt > +++ b/tools/perf/Documentation/perf-report.txt > @@ -279,6 +279,12 @@ OPTIONS > --objdump=<path>:: > Path to objdump binary. > +--objdump-prefix=<path>:: > + Specify prefix to add to the absolute paths where objdump looks for source files. > + > +--objdump-prefix-strip=<level>:: > + Indicate how many initial directory names to strip off the hardwired absolute paths, passed to objdump. It has no effect without --objdump-prefix. > + > --group:: > Show event group information together. > diff --git a/tools/perf/Documentation/perf-top.txt b/tools/perf/Documentation/perf-top.txt > index 3265b10..6e71045 100644 > --- a/tools/perf/Documentation/perf-top.txt > +++ b/tools/perf/Documentation/perf-top.txt > @@ -157,6 +157,16 @@ Default is to monitor all CPUS. > --asm-raw:: > Show raw instruction encoding of assembly instructions. > +--objdump=<path>:: > + Path to objdump binary. > + > +--objdump-prefix=<path>:: > + Specify prefix to add to the absolute paths where objdump looks for source files. > + > +--objdump-prefix-strip=<level>:: > + Indicate how many initial directory names to strip off the hardwired absolute paths, passed to objdump. It has no effect without --objdump-prefix. > + > + > -g:: > Enables call-graph (stack chain/backtrace) recording. > diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c > index 747f861..25b84b1 100644 > --- a/tools/perf/builtin-annotate.c > +++ b/tools/perf/builtin-annotate.c > @@ -322,6 +322,11 @@ int cmd_annotate(int argc, const char **argv, const char *prefix __maybe_unused) > "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_STRING(0, "objdump-prefix", &objdump_prefix_path, "path", > + "prefix to the absolute paths where objdump looks for source files"), > + OPT_STRING(0, "objdump-prefix-strip", &objdump_prefix_strip, "level", > + "Indicate how many initial directory names to strip off the hardwired " > + "absolute paths, passed to objdump."), > OPT_BOOLEAN(0, "group", &symbol_conf.event_group, > "Show event group information together"), > OPT_END() > diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c > index 072ae8a..c4f2c2f 100644 > --- a/tools/perf/builtin-report.c > +++ b/tools/perf/builtin-report.c > @@ -712,6 +712,11 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused) > "add last branch records to call history"), > OPT_STRING(0, "objdump", &objdump_path, "path", > "objdump binary to use for disassembly and annotations"), > + OPT_STRING(0, "objdump-prefix", &objdump_prefix_path, "path", > + "prefix to the absolute paths where objdump looks for source files"), > + OPT_STRING(0, "objdump-prefix-strip", &objdump_prefix_strip, "level", > + "Indicate how many initial directory names to strip off the hardwired " > + "absolute paths, passed to objdump."), > OPT_BOOLEAN(0, "demangle", &symbol_conf.demangle, > "Disable symbol demangling"), > OPT_BOOLEAN(0, "demangle-kernel", &symbol_conf.demangle_kernel, > diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c > index 616f0fc..ac70949 100644 > --- a/tools/perf/builtin-top.c > +++ b/tools/perf/builtin-top.c > @@ -1147,6 +1147,11 @@ int cmd_top(int argc, const char **argv, const char *prefix __maybe_unused) > "Enable kernel symbol demangling"), > OPT_STRING(0, "objdump", &objdump_path, "path", > "objdump binary to use for disassembly and annotations"), > + OPT_STRING(0, "objdump-prefix", &objdump_prefix_path, "path", > + "prefix to the absolute paths where objdump looks for source files"), > + OPT_STRING(0, "objdump-prefix-strip", &objdump_prefix_strip, "level", > + "Indicate how many initial directory names to strip off the hardwired " > + "absolute paths, passed to objdump."), > OPT_STRING('M', "disassembler-style", &disassembler_style, "disassembler style", > "Specify disassembler style (e.g. -M intel for intel syntax)"), > OPT_STRING('u', "uid", &target->uid_str, "user", "user to profile"), > diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c > index 79999ce..ec62c0b 100644 > --- a/tools/perf/util/annotate.c > +++ b/tools/perf/util/annotate.c > @@ -23,6 +23,8 @@ > const char *disassembler_style; > const char *objdump_path; > +const char *objdump_prefix_path; > +const char *objdump_prefix_strip; > static regex_t file_lineno; > static struct ins *ins__find(const char *name); > @@ -1001,12 +1003,16 @@ fallback: > } > snprintf(command, sizeof(command), > - "%s %s%s --start-address=0x%016" PRIx64 > + "%s %s%s %s%s %s%s --start-address=0x%016" PRIx64 > " --stop-address=0x%016" PRIx64 > " -l -d %s %s -C %s 2>/dev/null|grep -v %s|expand", > objdump_path ? objdump_path : "objdump", > disassembler_style ? "-M " : "", > disassembler_style ? disassembler_style : "", > + objdump_prefix_path ? "--prefix=" : "", > + objdump_prefix_path ? objdump_prefix_path : "", > + objdump_prefix_strip ? "--prefix-strip=" : "", > + objdump_prefix_strip ? objdump_prefix_strip : "", > map__rip_2objdump(map, sym->start), > map__rip_2objdump(map, sym->end), > symbol_conf.annotate_asm_raw ? "" : "--no-show-raw", > diff --git a/tools/perf/util/annotate.h b/tools/perf/util/annotate.h > index cadbdc9..fd9782e 100644 > --- a/tools/perf/util/annotate.h > +++ b/tools/perf/util/annotate.h > @@ -168,5 +168,7 @@ static inline int symbol__tui_annotate(struct symbol *sym __maybe_unused, > #endif > extern const char *disassembler_style; > +extern const char *objdump_prefix_path; > +extern const char *objdump_prefix_strip; > #endif /* __PERF_ANNOTATE_H */ > -- > 2.1.2 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] perf: introduce new two options for objdump. 2015-05-19 14:08 ` Arnaldo Carvalho de Melo @ 2015-05-19 14:29 ` David Ahern 2015-05-19 14:33 ` Arnaldo Carvalho de Melo 0 siblings, 1 reply; 10+ messages in thread From: David Ahern @ 2015-05-19 14:29 UTC (permalink / raw) To: Arnaldo Carvalho de Melo, Martin Liška Cc: a.p.zijlstra, paulus, mingo, linux-kernel On 5/19/15 8:08 AM, Arnaldo Carvalho de Melo wrote: > Em Thu, Jan 29, 2015 at 02:03:46PM +0100, Martin Liška escreveu: >> Newly introduced options usedfull for off-box usage: > > New useful options for off-box usage: > >> --objdump-prefix: specify prefix to add to the absolute paths >> where objdump looks for source files. >> --objdump-prefix-strip: indicate how many initial directory names >> to strip off the hardwired absolute paths, passed to objdump. >> It has no effect without --objdump-prefix. > > Does this, for instance, allows one looking at source code + assembly > with debuginfo packages? Is that a usecase you tested this against? > > Anyway, sorry for the delay in processing this, fell thru the cracks ;-\ > > Can you please respin this on top of my current perf/core, at: > > git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git > > Thanks a lot! Perhaps it should be generalized a bit? Right now we have symfs for the location of the tree for binaries. What about a srcfs for a source tree? ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] perf: introduce new two options for objdump. 2015-05-19 14:29 ` David Ahern @ 2015-05-19 14:33 ` Arnaldo Carvalho de Melo 2015-05-20 13:02 ` Martin Liška 0 siblings, 1 reply; 10+ messages in thread From: Arnaldo Carvalho de Melo @ 2015-05-19 14:33 UTC (permalink / raw) To: David Ahern; +Cc: Martin Liška, a.p.zijlstra, paulus, mingo, linux-kernel Em Tue, May 19, 2015 at 08:29:58AM -0600, David Ahern escreveu: > On 5/19/15 8:08 AM, Arnaldo Carvalho de Melo wrote: > >Em Thu, Jan 29, 2015 at 02:03:46PM +0100, Martin Liška escreveu: > >>Newly introduced options usedfull for off-box usage: > > New useful options for off-box usage: > >> --objdump-prefix: specify prefix to add to the absolute paths > >> where objdump looks for source files. > >> --objdump-prefix-strip: indicate how many initial directory names > >> to strip off the hardwired absolute paths, passed to objdump. > >> It has no effect without --objdump-prefix. > >Does this, for instance, allows one looking at source code + assembly > >with debuginfo packages? Is that a usecase you tested this against? > >Anyway, sorry for the delay in processing this, fell thru the cracks ;-\ > >Can you please respin this on top of my current perf/core, at: > >git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git > Perhaps it should be generalized a bit? Right now we have symfs for the > location of the tree for binaries. What about a srcfs for a source tree? That is a good idea indeed. - Arnaldo ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] perf: introduce new two options for objdump. 2015-05-19 14:33 ` Arnaldo Carvalho de Melo @ 2015-05-20 13:02 ` Martin Liška 2015-05-20 13:05 ` Arnaldo Carvalho de Melo 0 siblings, 1 reply; 10+ messages in thread From: Martin Liška @ 2015-05-20 13:02 UTC (permalink / raw) To: Arnaldo Carvalho de Melo, David Ahern Cc: a.p.zijlstra, paulus, mingo, linux-kernel [-- Attachment #1: Type: text/plain, Size: 1952 bytes --] On 05/19/2015 04:33 PM, Arnaldo Carvalho de Melo wrote: > Em Tue, May 19, 2015 at 08:29:58AM -0600, David Ahern escreveu: >> On 5/19/15 8:08 AM, Arnaldo Carvalho de Melo wrote: >>> Em Thu, Jan 29, 2015 at 02:03:46PM +0100, Martin Liška escreveu: >>>> Newly introduced options usedfull for off-box usage: > >>> New useful options for off-box usage: > >>>> --objdump-prefix: specify prefix to add to the absolute paths >>>> where objdump looks for source files. >>>> --objdump-prefix-strip: indicate how many initial directory names >>>> to strip off the hardwired absolute paths, passed to objdump. >>>> It has no effect without --objdump-prefix. > >>> Does this, for instance, allows one looking at source code + assembly >>> with debuginfo packages? Is that a usecase you tested this against? > >>> Anyway, sorry for the delay in processing this, fell thru the cracks ;-\ > >>> Can you please respin this on top of my current perf/core, at: > >>> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git > >> Perhaps it should be generalized a bit? Right now we have symfs for the >> location of the tree for binaries. What about a srcfs for a source tree? > > That is a good idea indeed. > > - Arnaldo > Hello. I was motivated to be able to annotate source code, realized out-of-box. More precisely, on a machine A I run perf record, I moved the report file to machine B and I use these options to annotate source code. Let's consider source code location Machine A: P1=/a/b/c/d/source-files Machine B: P2=/x/y/z/source-files Using just a single option (--objdump-prefix) works, but one how to place source code on machine B to: /a/b/c/d/x/y/z/source-files That's quite cumbersome, thus adding second option, one can strip '/a/b/c/d', with --objdump-prefix-strip=4. Still, no ideal, but it's quite flexible. A new 'srcfs' can used as --objdump-prefix, am I right? Respun version of patch is attached. Thanks, Martin [-- Attachment #2: perf-introduce-new-two-options-for-objump-v2.patch --] [-- Type: text/x-patch, Size: 6447 bytes --] diff --git a/tools/perf/Documentation/perf-annotate.txt b/tools/perf/Documentation/perf-annotate.txt index e9cd39a..4d2a5be 100644 --- a/tools/perf/Documentation/perf-annotate.txt +++ b/tools/perf/Documentation/perf-annotate.txt @@ -90,6 +90,12 @@ OPTIONS --objdump=<path>:: Path to objdump binary. +--objdump-prefix=<path>:: + Specify prefix to add to the absolute paths where objdump looks for source files. + +--objdump-prefix-strip=<level>:: + Indicate how many initial directory names to strip off the hardwired absolute paths, passed to objdump. It has no effect without --objdump-prefix. + --skip-missing:: Skip symbols that cannot be annotated. diff --git a/tools/perf/Documentation/perf-report.txt b/tools/perf/Documentation/perf-report.txt index c33b69f..2b3cb21 100644 --- a/tools/perf/Documentation/perf-report.txt +++ b/tools/perf/Documentation/perf-report.txt @@ -286,6 +286,12 @@ OPTIONS --objdump=<path>:: Path to objdump binary. +--objdump-prefix=<path>:: + Specify prefix to add to the absolute paths where objdump looks for source files. + +--objdump-prefix-strip=<level>:: + Indicate how many initial directory names to strip off the hardwired absolute paths, passed to objdump. It has no effect without --objdump-prefix. + --group:: Show event group information together. diff --git a/tools/perf/Documentation/perf-top.txt b/tools/perf/Documentation/perf-top.txt index 9e5b07eb..2f269e9 100644 --- a/tools/perf/Documentation/perf-top.txt +++ b/tools/perf/Documentation/perf-top.txt @@ -157,6 +157,16 @@ Default is to monitor all CPUS. --asm-raw:: Show raw instruction encoding of assembly instructions. +--objdump=<path>:: + Path to objdump binary. + +--objdump-prefix=<path>:: + Specify prefix to add to the absolute paths where objdump looks for source files. + +--objdump-prefix-strip=<level>:: + Indicate how many initial directory names to strip off the hardwired absolute paths, passed to objdump. It has no effect without --objdump-prefix. + + -g:: Enables call-graph (stack chain/backtrace) recording. diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c index b57a027..9f0690d 100644 --- a/tools/perf/builtin-annotate.c +++ b/tools/perf/builtin-annotate.c @@ -324,6 +324,11 @@ int cmd_annotate(int argc, const char **argv, const char *prefix __maybe_unused) "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_STRING(0, "objdump-prefix", &objdump_prefix_path, "path", + "prefix to the absolute paths where objdump looks for source files"), + OPT_STRING(0, "objdump-prefix-strip", &objdump_prefix_strip, "level", + "Indicate how many initial directory names to strip off the hardwired " + "absolute paths, passed to objdump."), OPT_BOOLEAN(0, "group", &symbol_conf.event_group, "Show event group information together"), OPT_END() diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c index 56025d9..3328fb8 100644 --- a/tools/perf/builtin-report.c +++ b/tools/perf/builtin-report.c @@ -715,6 +715,11 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused) "add last branch records to call history"), OPT_STRING(0, "objdump", &objdump_path, "path", "objdump binary to use for disassembly and annotations"), + OPT_STRING(0, "objdump-prefix", &objdump_prefix_path, "path", + "prefix to the absolute paths where objdump looks for source files"), + OPT_STRING(0, "objdump-prefix-strip", &objdump_prefix_strip, "level", + "Indicate how many initial directory names to strip off the hardwired " + "absolute paths, passed to objdump."), OPT_BOOLEAN(0, "demangle", &symbol_conf.demangle, "Disable symbol demangling"), OPT_BOOLEAN(0, "demangle-kernel", &symbol_conf.demangle_kernel, diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c index 6b98742..24bdb08 100644 --- a/tools/perf/builtin-top.c +++ b/tools/perf/builtin-top.c @@ -1150,6 +1150,11 @@ int cmd_top(int argc, const char **argv, const char *prefix __maybe_unused) "Enable kernel symbol demangling"), OPT_STRING(0, "objdump", &objdump_path, "path", "objdump binary to use for disassembly and annotations"), + OPT_STRING(0, "objdump-prefix", &objdump_prefix_path, "path", + "prefix to the absolute paths where objdump looks for source files"), + OPT_STRING(0, "objdump-prefix-strip", &objdump_prefix_strip, "level", + "Indicate how many initial directory names to strip off the hardwired " + "absolute paths, passed to objdump."), OPT_STRING('M', "disassembler-style", &disassembler_style, "disassembler style", "Specify disassembler style (e.g. -M intel for intel syntax)"), OPT_STRING('u', "uid", &target->uid_str, "user", "user to profile"), diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c index 7f5bdfc..c5373f4 100644 --- a/tools/perf/util/annotate.c +++ b/tools/perf/util/annotate.c @@ -23,6 +23,8 @@ const char *disassembler_style; const char *objdump_path; +const char *objdump_prefix_path; +const char *objdump_prefix_strip; static regex_t file_lineno; static struct ins *ins__find(const char *name); @@ -1039,12 +1041,16 @@ fallback: } snprintf(command, sizeof(command), - "%s %s%s --start-address=0x%016" PRIx64 + "%s %s%s %s%s %s%s --start-address=0x%016" PRIx64 " --stop-address=0x%016" PRIx64 " -l -d %s %s -C %s 2>/dev/null|grep -v %s|expand", objdump_path ? objdump_path : "objdump", disassembler_style ? "-M " : "", disassembler_style ? disassembler_style : "", + objdump_prefix_path ? "--prefix=" : "", + objdump_prefix_path ? objdump_prefix_path : "", + objdump_prefix_strip ? "--prefix-strip=" : "", + objdump_prefix_strip ? objdump_prefix_strip : "", map__rip_2objdump(map, sym->start), map__rip_2objdump(map, sym->end), symbol_conf.annotate_asm_raw ? "" : "--no-show-raw", diff --git a/tools/perf/util/annotate.h b/tools/perf/util/annotate.h index cadbdc9..fd9782e 100644 --- a/tools/perf/util/annotate.h +++ b/tools/perf/util/annotate.h @@ -168,5 +168,7 @@ static inline int symbol__tui_annotate(struct symbol *sym __maybe_unused, #endif extern const char *disassembler_style; +extern const char *objdump_prefix_path; +extern const char *objdump_prefix_strip; #endif /* __PERF_ANNOTATE_H */ ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH] perf: introduce new two options for objdump. 2015-05-20 13:02 ` Martin Liška @ 2015-05-20 13:05 ` Arnaldo Carvalho de Melo 2015-06-01 11:10 ` Martin Liška 0 siblings, 1 reply; 10+ messages in thread From: Arnaldo Carvalho de Melo @ 2015-05-20 13:05 UTC (permalink / raw) To: Martin Liška; +Cc: David Ahern, a.p.zijlstra, paulus, mingo, linux-kernel Em Wed, May 20, 2015 at 03:02:01PM +0200, Martin Liška escreveu: > On 05/19/2015 04:33 PM, Arnaldo Carvalho de Melo wrote: > >Em Tue, May 19, 2015 at 08:29:58AM -0600, David Ahern escreveu: > >>On 5/19/15 8:08 AM, Arnaldo Carvalho de Melo wrote: > >>>Em Thu, Jan 29, 2015 at 02:03:46PM +0100, Martin Liška escreveu: > >>>>Newly introduced options usedfull for off-box usage: > > > >>> New useful options for off-box usage: > > > >>>> --objdump-prefix: specify prefix to add to the absolute paths > >>>> where objdump looks for source files. > >>>> --objdump-prefix-strip: indicate how many initial directory names > >>>> to strip off the hardwired absolute paths, passed to objdump. > >>>> It has no effect without --objdump-prefix. > > > >>>Does this, for instance, allows one looking at source code + assembly > >>>with debuginfo packages? Is that a usecase you tested this against? > > > >>>Anyway, sorry for the delay in processing this, fell thru the cracks ;-\ > > > >>>Can you please respin this on top of my current perf/core, at: > > > >>>git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git > > > >>Perhaps it should be generalized a bit? Right now we have symfs for the > >>location of the tree for binaries. What about a srcfs for a source tree? > > > >That is a good idea indeed. > > > >- Arnaldo > > > > Hello. > > I was motivated to be able to annotate source code, realized out-of-box. More precisely, on a machine A > I run perf record, I moved the report file to machine B and I use these options to annotate source code. > > Let's consider source code location > > Machine A: > P1=/a/b/c/d/source-files > > Machine B: > P2=/x/y/z/source-files > > Using just a single option (--objdump-prefix) works, but one how to place source code on machine B to: > /a/b/c/d/x/y/z/source-files > > That's quite cumbersome, thus adding second option, one can strip '/a/b/c/d', with --objdump-prefix-strip=4. > Still, no ideal, but it's quite flexible. A new 'srcfs' can used as --objdump-prefix, am I right? I guess so, and yeah, the feature implemented in your patch has value, thanks for collaborating! It is just that it may fit better as a complement to the --symfs stuff, that is also for off-box analysis: --symfs=<directory>:: Look for files with symbols relative to this directory. > Respun version of patch is attached. Thanks, will wait for further discussion before applying, - Arnaldo > Thanks, > Martin > > diff --git a/tools/perf/Documentation/perf-annotate.txt b/tools/perf/Documentation/perf-annotate.txt > index e9cd39a..4d2a5be 100644 > --- a/tools/perf/Documentation/perf-annotate.txt > +++ b/tools/perf/Documentation/perf-annotate.txt > @@ -90,6 +90,12 @@ OPTIONS > --objdump=<path>:: > Path to objdump binary. > > +--objdump-prefix=<path>:: > + Specify prefix to add to the absolute paths where objdump looks for source files. > + > +--objdump-prefix-strip=<level>:: > + Indicate how many initial directory names to strip off the hardwired absolute paths, passed to objdump. It has no effect without --objdump-prefix. > + > --skip-missing:: > Skip symbols that cannot be annotated. > > diff --git a/tools/perf/Documentation/perf-report.txt b/tools/perf/Documentation/perf-report.txt > index c33b69f..2b3cb21 100644 > --- a/tools/perf/Documentation/perf-report.txt > +++ b/tools/perf/Documentation/perf-report.txt > @@ -286,6 +286,12 @@ OPTIONS > --objdump=<path>:: > Path to objdump binary. > > +--objdump-prefix=<path>:: > + Specify prefix to add to the absolute paths where objdump looks for source files. > + > +--objdump-prefix-strip=<level>:: > + Indicate how many initial directory names to strip off the hardwired absolute paths, passed to objdump. It has no effect without --objdump-prefix. > + > --group:: > Show event group information together. > > diff --git a/tools/perf/Documentation/perf-top.txt b/tools/perf/Documentation/perf-top.txt > index 9e5b07eb..2f269e9 100644 > --- a/tools/perf/Documentation/perf-top.txt > +++ b/tools/perf/Documentation/perf-top.txt > @@ -157,6 +157,16 @@ Default is to monitor all CPUS. > --asm-raw:: > Show raw instruction encoding of assembly instructions. > > +--objdump=<path>:: > + Path to objdump binary. > + > +--objdump-prefix=<path>:: > + Specify prefix to add to the absolute paths where objdump looks for source files. > + > +--objdump-prefix-strip=<level>:: > + Indicate how many initial directory names to strip off the hardwired absolute paths, passed to objdump. It has no effect without --objdump-prefix. > + > + > -g:: > Enables call-graph (stack chain/backtrace) recording. > > diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c > index b57a027..9f0690d 100644 > --- a/tools/perf/builtin-annotate.c > +++ b/tools/perf/builtin-annotate.c > @@ -324,6 +324,11 @@ int cmd_annotate(int argc, const char **argv, const char *prefix __maybe_unused) > "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_STRING(0, "objdump-prefix", &objdump_prefix_path, "path", > + "prefix to the absolute paths where objdump looks for source files"), > + OPT_STRING(0, "objdump-prefix-strip", &objdump_prefix_strip, "level", > + "Indicate how many initial directory names to strip off the hardwired " > + "absolute paths, passed to objdump."), > OPT_BOOLEAN(0, "group", &symbol_conf.event_group, > "Show event group information together"), > OPT_END() > diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c > index 56025d9..3328fb8 100644 > --- a/tools/perf/builtin-report.c > +++ b/tools/perf/builtin-report.c > @@ -715,6 +715,11 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused) > "add last branch records to call history"), > OPT_STRING(0, "objdump", &objdump_path, "path", > "objdump binary to use for disassembly and annotations"), > + OPT_STRING(0, "objdump-prefix", &objdump_prefix_path, "path", > + "prefix to the absolute paths where objdump looks for source files"), > + OPT_STRING(0, "objdump-prefix-strip", &objdump_prefix_strip, "level", > + "Indicate how many initial directory names to strip off the hardwired " > + "absolute paths, passed to objdump."), > OPT_BOOLEAN(0, "demangle", &symbol_conf.demangle, > "Disable symbol demangling"), > OPT_BOOLEAN(0, "demangle-kernel", &symbol_conf.demangle_kernel, > diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c > index 6b98742..24bdb08 100644 > --- a/tools/perf/builtin-top.c > +++ b/tools/perf/builtin-top.c > @@ -1150,6 +1150,11 @@ int cmd_top(int argc, const char **argv, const char *prefix __maybe_unused) > "Enable kernel symbol demangling"), > OPT_STRING(0, "objdump", &objdump_path, "path", > "objdump binary to use for disassembly and annotations"), > + OPT_STRING(0, "objdump-prefix", &objdump_prefix_path, "path", > + "prefix to the absolute paths where objdump looks for source files"), > + OPT_STRING(0, "objdump-prefix-strip", &objdump_prefix_strip, "level", > + "Indicate how many initial directory names to strip off the hardwired " > + "absolute paths, passed to objdump."), > OPT_STRING('M', "disassembler-style", &disassembler_style, "disassembler style", > "Specify disassembler style (e.g. -M intel for intel syntax)"), > OPT_STRING('u', "uid", &target->uid_str, "user", "user to profile"), > diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c > index 7f5bdfc..c5373f4 100644 > --- a/tools/perf/util/annotate.c > +++ b/tools/perf/util/annotate.c > @@ -23,6 +23,8 @@ > > const char *disassembler_style; > const char *objdump_path; > +const char *objdump_prefix_path; > +const char *objdump_prefix_strip; > static regex_t file_lineno; > > static struct ins *ins__find(const char *name); > @@ -1039,12 +1041,16 @@ fallback: > } > > snprintf(command, sizeof(command), > - "%s %s%s --start-address=0x%016" PRIx64 > + "%s %s%s %s%s %s%s --start-address=0x%016" PRIx64 > " --stop-address=0x%016" PRIx64 > " -l -d %s %s -C %s 2>/dev/null|grep -v %s|expand", > objdump_path ? objdump_path : "objdump", > disassembler_style ? "-M " : "", > disassembler_style ? disassembler_style : "", > + objdump_prefix_path ? "--prefix=" : "", > + objdump_prefix_path ? objdump_prefix_path : "", > + objdump_prefix_strip ? "--prefix-strip=" : "", > + objdump_prefix_strip ? objdump_prefix_strip : "", > map__rip_2objdump(map, sym->start), > map__rip_2objdump(map, sym->end), > symbol_conf.annotate_asm_raw ? "" : "--no-show-raw", > diff --git a/tools/perf/util/annotate.h b/tools/perf/util/annotate.h > index cadbdc9..fd9782e 100644 > --- a/tools/perf/util/annotate.h > +++ b/tools/perf/util/annotate.h > @@ -168,5 +168,7 @@ static inline int symbol__tui_annotate(struct symbol *sym __maybe_unused, > #endif > > extern const char *disassembler_style; > +extern const char *objdump_prefix_path; > +extern const char *objdump_prefix_strip; > > #endif /* __PERF_ANNOTATE_H */ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] perf: introduce new two options for objdump. 2015-05-20 13:05 ` Arnaldo Carvalho de Melo @ 2015-06-01 11:10 ` Martin Liška 2015-06-01 12:54 ` Arnaldo Carvalho de Melo 0 siblings, 1 reply; 10+ messages in thread From: Martin Liška @ 2015-06-01 11:10 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: David Ahern, a.p.zijlstra, paulus, mingo, linux-kernel On 05/20/2015 03:05 PM, Arnaldo Carvalho de Melo wrote: > Em Wed, May 20, 2015 at 03:02:01PM +0200, Martin Liška escreveu: >> On 05/19/2015 04:33 PM, Arnaldo Carvalho de Melo wrote: >>> Em Tue, May 19, 2015 at 08:29:58AM -0600, David Ahern escreveu: >>>> On 5/19/15 8:08 AM, Arnaldo Carvalho de Melo wrote: >>>>> Em Thu, Jan 29, 2015 at 02:03:46PM +0100, Martin Liška escreveu: >>>>>> Newly introduced options usedfull for off-box usage: >>> >>>>> New useful options for off-box usage: >>> >>>>>> --objdump-prefix: specify prefix to add to the absolute paths >>>>>> where objdump looks for source files. >>>>>> --objdump-prefix-strip: indicate how many initial directory names >>>>>> to strip off the hardwired absolute paths, passed to objdump. >>>>>> It has no effect without --objdump-prefix. >>> >>>>> Does this, for instance, allows one looking at source code + assembly >>>>> with debuginfo packages? Is that a usecase you tested this against? >>> >>>>> Anyway, sorry for the delay in processing this, fell thru the cracks ;-\ >>> >>>>> Can you please respin this on top of my current perf/core, at: >>> >>>>> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git >>> >>>> Perhaps it should be generalized a bit? Right now we have symfs for the >>>> location of the tree for binaries. What about a srcfs for a source tree? >>> >>> That is a good idea indeed. >>> >>> - Arnaldo >>> >> >> Hello. >> >> I was motivated to be able to annotate source code, realized out-of-box. More precisely, on a machine A >> I run perf record, I moved the report file to machine B and I use these options to annotate source code. >> >> Let's consider source code location >> >> Machine A: >> P1=/a/b/c/d/source-files >> >> Machine B: >> P2=/x/y/z/source-files >> >> Using just a single option (--objdump-prefix) works, but one how to place source code on machine B to: >> /a/b/c/d/x/y/z/source-files >> >> That's quite cumbersome, thus adding second option, one can strip '/a/b/c/d', with --objdump-prefix-strip=4. >> Still, no ideal, but it's quite flexible. A new 'srcfs' can used as --objdump-prefix, am I right? > > I guess so, and yeah, the feature implemented in your patch has value, > thanks for collaborating! It is just that it may fit better as a > complement to the --symfs stuff, that is also for off-box analysis: > > --symfs=<directory>:: > Look for files with symbols relative to this directory. > >> Respun version of patch is attached. > > Thanks, will wait for further discussion before applying, > > - Arnaldo Hello Arnaldo. Are we going to wait any longer? It looks there's no discussion effort in this thread ;) Thanks, Martin > >> Thanks, >> Martin >> > >> diff --git a/tools/perf/Documentation/perf-annotate.txt b/tools/perf/Documentation/perf-annotate.txt >> index e9cd39a..4d2a5be 100644 >> --- a/tools/perf/Documentation/perf-annotate.txt >> +++ b/tools/perf/Documentation/perf-annotate.txt >> @@ -90,6 +90,12 @@ OPTIONS >> --objdump=<path>:: >> Path to objdump binary. >> >> +--objdump-prefix=<path>:: >> + Specify prefix to add to the absolute paths where objdump looks for source files. >> + >> +--objdump-prefix-strip=<level>:: >> + Indicate how many initial directory names to strip off the hardwired absolute paths, passed to objdump. It has no effect without --objdump-prefix. >> + >> --skip-missing:: >> Skip symbols that cannot be annotated. >> >> diff --git a/tools/perf/Documentation/perf-report.txt b/tools/perf/Documentation/perf-report.txt >> index c33b69f..2b3cb21 100644 >> --- a/tools/perf/Documentation/perf-report.txt >> +++ b/tools/perf/Documentation/perf-report.txt >> @@ -286,6 +286,12 @@ OPTIONS >> --objdump=<path>:: >> Path to objdump binary. >> >> +--objdump-prefix=<path>:: >> + Specify prefix to add to the absolute paths where objdump looks for source files. >> + >> +--objdump-prefix-strip=<level>:: >> + Indicate how many initial directory names to strip off the hardwired absolute paths, passed to objdump. It has no effect without --objdump-prefix. >> + >> --group:: >> Show event group information together. >> >> diff --git a/tools/perf/Documentation/perf-top.txt b/tools/perf/Documentation/perf-top.txt >> index 9e5b07eb..2f269e9 100644 >> --- a/tools/perf/Documentation/perf-top.txt >> +++ b/tools/perf/Documentation/perf-top.txt >> @@ -157,6 +157,16 @@ Default is to monitor all CPUS. >> --asm-raw:: >> Show raw instruction encoding of assembly instructions. >> >> +--objdump=<path>:: >> + Path to objdump binary. >> + >> +--objdump-prefix=<path>:: >> + Specify prefix to add to the absolute paths where objdump looks for source files. >> + >> +--objdump-prefix-strip=<level>:: >> + Indicate how many initial directory names to strip off the hardwired absolute paths, passed to objdump. It has no effect without --objdump-prefix. >> + >> + >> -g:: >> Enables call-graph (stack chain/backtrace) recording. >> >> diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c >> index b57a027..9f0690d 100644 >> --- a/tools/perf/builtin-annotate.c >> +++ b/tools/perf/builtin-annotate.c >> @@ -324,6 +324,11 @@ int cmd_annotate(int argc, const char **argv, const char *prefix __maybe_unused) >> "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_STRING(0, "objdump-prefix", &objdump_prefix_path, "path", >> + "prefix to the absolute paths where objdump looks for source files"), >> + OPT_STRING(0, "objdump-prefix-strip", &objdump_prefix_strip, "level", >> + "Indicate how many initial directory names to strip off the hardwired " >> + "absolute paths, passed to objdump."), >> OPT_BOOLEAN(0, "group", &symbol_conf.event_group, >> "Show event group information together"), >> OPT_END() >> diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c >> index 56025d9..3328fb8 100644 >> --- a/tools/perf/builtin-report.c >> +++ b/tools/perf/builtin-report.c >> @@ -715,6 +715,11 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused) >> "add last branch records to call history"), >> OPT_STRING(0, "objdump", &objdump_path, "path", >> "objdump binary to use for disassembly and annotations"), >> + OPT_STRING(0, "objdump-prefix", &objdump_prefix_path, "path", >> + "prefix to the absolute paths where objdump looks for source files"), >> + OPT_STRING(0, "objdump-prefix-strip", &objdump_prefix_strip, "level", >> + "Indicate how many initial directory names to strip off the hardwired " >> + "absolute paths, passed to objdump."), >> OPT_BOOLEAN(0, "demangle", &symbol_conf.demangle, >> "Disable symbol demangling"), >> OPT_BOOLEAN(0, "demangle-kernel", &symbol_conf.demangle_kernel, >> diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c >> index 6b98742..24bdb08 100644 >> --- a/tools/perf/builtin-top.c >> +++ b/tools/perf/builtin-top.c >> @@ -1150,6 +1150,11 @@ int cmd_top(int argc, const char **argv, const char *prefix __maybe_unused) >> "Enable kernel symbol demangling"), >> OPT_STRING(0, "objdump", &objdump_path, "path", >> "objdump binary to use for disassembly and annotations"), >> + OPT_STRING(0, "objdump-prefix", &objdump_prefix_path, "path", >> + "prefix to the absolute paths where objdump looks for source files"), >> + OPT_STRING(0, "objdump-prefix-strip", &objdump_prefix_strip, "level", >> + "Indicate how many initial directory names to strip off the hardwired " >> + "absolute paths, passed to objdump."), >> OPT_STRING('M', "disassembler-style", &disassembler_style, "disassembler style", >> "Specify disassembler style (e.g. -M intel for intel syntax)"), >> OPT_STRING('u', "uid", &target->uid_str, "user", "user to profile"), >> diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c >> index 7f5bdfc..c5373f4 100644 >> --- a/tools/perf/util/annotate.c >> +++ b/tools/perf/util/annotate.c >> @@ -23,6 +23,8 @@ >> >> const char *disassembler_style; >> const char *objdump_path; >> +const char *objdump_prefix_path; >> +const char *objdump_prefix_strip; >> static regex_t file_lineno; >> >> static struct ins *ins__find(const char *name); >> @@ -1039,12 +1041,16 @@ fallback: >> } >> >> snprintf(command, sizeof(command), >> - "%s %s%s --start-address=0x%016" PRIx64 >> + "%s %s%s %s%s %s%s --start-address=0x%016" PRIx64 >> " --stop-address=0x%016" PRIx64 >> " -l -d %s %s -C %s 2>/dev/null|grep -v %s|expand", >> objdump_path ? objdump_path : "objdump", >> disassembler_style ? "-M " : "", >> disassembler_style ? disassembler_style : "", >> + objdump_prefix_path ? "--prefix=" : "", >> + objdump_prefix_path ? objdump_prefix_path : "", >> + objdump_prefix_strip ? "--prefix-strip=" : "", >> + objdump_prefix_strip ? objdump_prefix_strip : "", >> map__rip_2objdump(map, sym->start), >> map__rip_2objdump(map, sym->end), >> symbol_conf.annotate_asm_raw ? "" : "--no-show-raw", >> diff --git a/tools/perf/util/annotate.h b/tools/perf/util/annotate.h >> index cadbdc9..fd9782e 100644 >> --- a/tools/perf/util/annotate.h >> +++ b/tools/perf/util/annotate.h >> @@ -168,5 +168,7 @@ static inline int symbol__tui_annotate(struct symbol *sym __maybe_unused, >> #endif >> >> extern const char *disassembler_style; >> +extern const char *objdump_prefix_path; >> +extern const char *objdump_prefix_strip; >> >> #endif /* __PERF_ANNOTATE_H */ > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] perf: introduce new two options for objdump. 2015-06-01 11:10 ` Martin Liška @ 2015-06-01 12:54 ` Arnaldo Carvalho de Melo 2015-06-01 13:58 ` Martin Liška 0 siblings, 1 reply; 10+ messages in thread From: Arnaldo Carvalho de Melo @ 2015-06-01 12:54 UTC (permalink / raw) To: Martin Liška; +Cc: David Ahern, a.p.zijlstra, paulus, mingo, linux-kernel Em Mon, Jun 01, 2015 at 01:10:06PM +0200, Martin Liška escreveu: > On 05/20/2015 03:05 PM, Arnaldo Carvalho de Melo wrote: > > Em Wed, May 20, 2015 at 03:02:01PM +0200, Martin Liška escreveu: > >> On 05/19/2015 04:33 PM, Arnaldo Carvalho de Melo wrote: > >>> Em Tue, May 19, 2015 at 08:29:58AM -0600, David Ahern escreveu: <SNIP> > >>>> Perhaps it should be generalized a bit? Right now we have symfs for the > >>>> location of the tree for binaries. What about a srcfs for a source tree? > >>> > >>> That is a good idea indeed. > >> > >> I was motivated to be able to annotate source code, realized out-of-box. More precisely, on a machine A > >> I run perf record, I moved the report file to machine B and I use these options to annotate source code. <SNIP> > > I guess so, and yeah, the feature implemented in your patch has value, > > thanks for collaborating! It is just that it may fit better as a > > complement to the --symfs stuff, that is also for off-box analysis: > > --symfs=<directory>:: > > Look for files with symbols relative to this directory. > > Thanks, will wait for further discussion before applying, > Are we going to wait any longer? It looks there's no discussion effort in this thread ;) I was waiting for you to follow thru on David's suggestion. - Arnaldo ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] perf: introduce new two options for objdump. 2015-06-01 12:54 ` Arnaldo Carvalho de Melo @ 2015-06-01 13:58 ` Martin Liška 2015-06-01 14:17 ` Arnaldo Carvalho de Melo 0 siblings, 1 reply; 10+ messages in thread From: Martin Liška @ 2015-06-01 13:58 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: David Ahern, a.p.zijlstra, paulus, mingo, linux-kernel On 06/01/2015 02:54 PM, Arnaldo Carvalho de Melo wrote: > Em Mon, Jun 01, 2015 at 01:10:06PM +0200, Martin Liška escreveu: >> On 05/20/2015 03:05 PM, Arnaldo Carvalho de Melo wrote: >>> Em Wed, May 20, 2015 at 03:02:01PM +0200, Martin Liška escreveu: >>>> On 05/19/2015 04:33 PM, Arnaldo Carvalho de Melo wrote: >>>>> Em Tue, May 19, 2015 at 08:29:58AM -0600, David Ahern escreveu: > > <SNIP> > >>>>>> Perhaps it should be generalized a bit? Right now we have symfs for the >>>>>> location of the tree for binaries. What about a srcfs for a source tree? >>>>> >>>>> That is a good idea indeed. >>>> >>>> I was motivated to be able to annotate source code, realized out-of-box. More precisely, on a machine A >>>> I run perf record, I moved the report file to machine B and I use these options to annotate source code. > > <SNIP> > >>> I guess so, and yeah, the feature implemented in your patch has value, >>> thanks for collaborating! It is just that it may fit better as a >>> complement to the --symfs stuff, that is also for off-box analysis: > >>> --symfs=<directory>:: >>> Look for files with symbols relative to this directory. > >>> Thanks, will wait for further discussion before applying, > >> Are we going to wait any longer? It looks there's no discussion effort in this thread ;) > > I was waiting for you to follow thru on David's suggestion. > > - Arnaldo > Ah, I see. My answer what kind of that a single new option is no going to enough. As explained in my previous post, one needs to cut N components of a path and append a different path. I would follow option names starting with --objdump prefix. Thanks, Martin ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] perf: introduce new two options for objdump. 2015-06-01 13:58 ` Martin Liška @ 2015-06-01 14:17 ` Arnaldo Carvalho de Melo 0 siblings, 0 replies; 10+ messages in thread From: Arnaldo Carvalho de Melo @ 2015-06-01 14:17 UTC (permalink / raw) To: Martin Liška; +Cc: David Ahern, a.p.zijlstra, paulus, mingo, linux-kernel Em Mon, Jun 01, 2015 at 03:58:16PM +0200, Martin Liška escreveu: > On 06/01/2015 02:54 PM, Arnaldo Carvalho de Melo wrote: > > Em Mon, Jun 01, 2015 at 01:10:06PM +0200, Martin Liška escreveu: > >> On 05/20/2015 03:05 PM, Arnaldo Carvalho de Melo wrote: > >>> Em Wed, May 20, 2015 at 03:02:01PM +0200, Martin Liška escreveu: > >>>> On 05/19/2015 04:33 PM, Arnaldo Carvalho de Melo wrote: > >>>>> Em Tue, May 19, 2015 at 08:29:58AM -0600, David Ahern escreveu: > > > > <SNIP> > > > >>>>>> Perhaps it should be generalized a bit? Right now we have symfs for the > >>>>>> location of the tree for binaries. What about a srcfs for a source tree? > >>>>> > >>>>> That is a good idea indeed. > >>>> > >>>> I was motivated to be able to annotate source code, realized out-of-box. More precisely, on a machine A > >>>> I run perf record, I moved the report file to machine B and I use these options to annotate source code. > > > > <SNIP> > > > >>> I guess so, and yeah, the feature implemented in your patch has value, > >>> thanks for collaborating! It is just that it may fit better as a > >>> complement to the --symfs stuff, that is also for off-box analysis: > > > >>> --symfs=<directory>:: > >>> Look for files with symbols relative to this directory. > > > >>> Thanks, will wait for further discussion before applying, > > > >> Are we going to wait any longer? It looks there's no discussion effort in this thread ;) > > > > I was waiting for you to follow thru on David's suggestion. > Ah, I see. > My answer what kind of that a single new option is no going to enough. As explained in my previous > post, one needs to cut N components of a path and append a different path. > > I would follow option names starting with --objdump prefix. David, do you agree? - Arnaldo ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2015-06-01 14:18 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2015-01-29 13:03 [PATCH] perf: introduce new two options for objdump Martin Liška 2015-05-19 14:08 ` Arnaldo Carvalho de Melo 2015-05-19 14:29 ` David Ahern 2015-05-19 14:33 ` Arnaldo Carvalho de Melo 2015-05-20 13:02 ` Martin Liška 2015-05-20 13:05 ` Arnaldo Carvalho de Melo 2015-06-01 11:10 ` Martin Liška 2015-06-01 12:54 ` Arnaldo Carvalho de Melo 2015-06-01 13:58 ` Martin Liška 2015-06-01 14:17 ` Arnaldo Carvalho de Melo
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).