lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 01 Jun 2015 13:10:06 +0200 From: Martin Liška <mliska@...e.cz> To: Arnaldo Carvalho de Melo <acme@...nel.org> CC: David Ahern <dsahern@...il.com>, a.p.zijlstra@...llo.nl, paulus@...ba.org, mingo@...hat.com, linux-kernel@...r.kernel.org Subject: Re: [PATCH] perf: introduce new two options for objdump. 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 */ > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists