mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 20:51:03 +02:00
perf tools: Support --prefix/--prefix-strip
The objdump utility has useful --prefix / --prefix-strip options to allow changing source code file names hardcoded into executables' debug info. Add options to 'perf report', 'perf top' and 'perf annotate', which are then passed to objdump. $ mkdir foo $ echo 'main() { for (;;); }' > foo/foo.c $ gcc -g foo/foo.c foo/foo.c:1:1: warning: return type defaults to ‘int’ [-Wimplicit-int] 1 | main() { for (;;); } | ^~~~ $ perf record ./a.out ^C[ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.230 MB perf.data (5721 samples) ] $ mv foo bar $ perf annotate <does not show source code> $ perf annotate --prefix=/home/ak/lsrc/git/bar --prefix-strip=5 <does show source code> Signed-off-by: Andi Kleen <ak@linux.intel.com> Tested-by: Jiri Olsa <jolsa@redhat.com> LPU-Reference: 20200107210444.214071-1-andi@firstfloor.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
committed by
Arnaldo Carvalho de Melo
parent
aa9d1f8334
commit
3b0b16bf8c
@@ -1966,14 +1966,20 @@ static int symbol__disassemble(struct symbol *sym, struct annotate_args *args)
|
||||
err = asprintf(&command,
|
||||
"%s %s%s --start-address=0x%016" PRIx64
|
||||
" --stop-address=0x%016" PRIx64
|
||||
" -l -d %s %s -C \"$1\"",
|
||||
" -l -d %s %s %s %c%s%c %s%s -C \"$1\"",
|
||||
opts->objdump_path ?: "objdump",
|
||||
opts->disassembler_style ? "-M " : "",
|
||||
opts->disassembler_style ?: "",
|
||||
map__rip_2objdump(map, sym->start),
|
||||
map__rip_2objdump(map, sym->end),
|
||||
opts->show_asm_raw ? "" : "--no-show-raw-insn",
|
||||
opts->annotate_src ? "-S" : "");
|
||||
opts->annotate_src ? "-S" : "",
|
||||
opts->prefix ? "--prefix " : "",
|
||||
opts->prefix ? '"' : ' ',
|
||||
opts->prefix ?: "",
|
||||
opts->prefix ? '"' : ' ',
|
||||
opts->prefix_strip ? "--prefix-strip=" : "",
|
||||
opts->prefix_strip ?: "");
|
||||
|
||||
if (err < 0) {
|
||||
pr_err("Failure allocating memory for the command to run\n");
|
||||
@@ -3204,3 +3210,12 @@ out:
|
||||
free(str1);
|
||||
return err;
|
||||
}
|
||||
|
||||
int annotate_check_args(struct annotation_options *args)
|
||||
{
|
||||
if (args->prefix_strip && !args->prefix) {
|
||||
pr_err("--prefix-strip requires --prefix\n");
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user