perf: Support setting the disassembler style
Add -M option to report/annotate to pass directly to objdump. This
allows to use -M intel for intel style disassembler syntax, which is
useful for people who are very used to the Intel syntax.
Link: http://lkml.kernel.org/r/1316122302-24306-2-git-send-email-andi@firstfloor.org
[committer note: Add missing Documentation bits, fixup conflicts with 3e6a2a7
]
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Stephane Eranian <eranian@google.com>
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
33e49ea70d
commit
f69b64f73e
|
@ -83,6 +83,9 @@ OPTIONS
|
||||||
--symfs=<directory>::
|
--symfs=<directory>::
|
||||||
Look for files with symbols relative to this directory.
|
Look for files with symbols relative to this directory.
|
||||||
|
|
||||||
|
-M::
|
||||||
|
--disassembler-style=:: Set disassembler style for objdump.
|
||||||
|
|
||||||
SEE ALSO
|
SEE ALSO
|
||||||
--------
|
--------
|
||||||
linkperf:perf-record[1], linkperf:perf-report[1]
|
linkperf:perf-record[1], linkperf:perf-report[1]
|
||||||
|
|
|
@ -134,6 +134,9 @@ OPTIONS
|
||||||
CPUs are specified with -: 0-2. Default is to report samples on all
|
CPUs are specified with -: 0-2. Default is to report samples on all
|
||||||
CPUs.
|
CPUs.
|
||||||
|
|
||||||
|
-M::
|
||||||
|
--disassembler-style=:: Set disassembler style for objdump.
|
||||||
|
|
||||||
SEE ALSO
|
SEE ALSO
|
||||||
--------
|
--------
|
||||||
linkperf:perf-stat[1]
|
linkperf:perf-stat[1]
|
||||||
|
|
|
@ -273,6 +273,8 @@ static const struct option options[] = {
|
||||||
"Interleave source code with assembly code (default)"),
|
"Interleave source code with assembly code (default)"),
|
||||||
OPT_BOOLEAN('0', "asm-raw", &symbol_conf.annotate_asm_raw,
|
OPT_BOOLEAN('0', "asm-raw", &symbol_conf.annotate_asm_raw,
|
||||||
"Display raw encoding of assembly instructions (default)"),
|
"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_END()
|
OPT_END()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -487,6 +487,8 @@ static const struct option options[] = {
|
||||||
OPT_STRING(0, "symfs", &symbol_conf.symfs, "directory",
|
OPT_STRING(0, "symfs", &symbol_conf.symfs, "directory",
|
||||||
"Look for files with symbols relative to this directory"),
|
"Look for files with symbols relative to this directory"),
|
||||||
OPT_STRING('c', "cpu", &cpu_list, "cpu", "list of cpus to profile"),
|
OPT_STRING('c', "cpu", &cpu_list, "cpu", "list of cpus to profile"),
|
||||||
|
OPT_STRING('M', "disassembler-style", &disassembler_style, "disassembler style",
|
||||||
|
"Specify disassembler style (e.g. -M intel for intel syntax)"),
|
||||||
OPT_END()
|
OPT_END()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,8 @@
|
||||||
#include "annotate.h"
|
#include "annotate.h"
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
|
|
||||||
|
const char *disassembler_style;
|
||||||
|
|
||||||
int symbol__annotate_init(struct map *map __used, struct symbol *sym)
|
int symbol__annotate_init(struct map *map __used, struct symbol *sym)
|
||||||
{
|
{
|
||||||
struct annotation *notes = symbol__annotation(sym);
|
struct annotation *notes = symbol__annotation(sym);
|
||||||
|
@ -323,9 +325,11 @@ fallback:
|
||||||
dso, dso->long_name, sym, sym->name);
|
dso, dso->long_name, sym, sym->name);
|
||||||
|
|
||||||
snprintf(command, sizeof(command),
|
snprintf(command, sizeof(command),
|
||||||
"objdump --start-address=0x%016" PRIx64
|
"objdump %s%s --start-address=0x%016" PRIx64
|
||||||
" --stop-address=0x%016" PRIx64
|
" --stop-address=0x%016" PRIx64
|
||||||
" -d %s %s -C %s|grep -v %s|expand",
|
" -d %s %s -C %s|grep -v %s|expand",
|
||||||
|
disassembler_style ? "-M " : "",
|
||||||
|
disassembler_style ? disassembler_style : "",
|
||||||
map__rip_2objdump(map, sym->start),
|
map__rip_2objdump(map, sym->start),
|
||||||
map__rip_2objdump(map, sym->end),
|
map__rip_2objdump(map, sym->end),
|
||||||
symbol_conf.annotate_asm_raw ? "" : "--no-show-raw",
|
symbol_conf.annotate_asm_raw ? "" : "--no-show-raw",
|
||||||
|
|
|
@ -100,4 +100,6 @@ int symbol__tui_annotate(struct symbol *sym, struct map *map, int evidx,
|
||||||
int refresh);
|
int refresh);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
extern const char *disassembler_style;
|
||||||
|
|
||||||
#endif /* __PERF_ANNOTATE_H */
|
#endif /* __PERF_ANNOTATE_H */
|
||||||
|
|
Loading…
Reference in New Issue