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 <[email protected]>
> 
> ---
>  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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to