perf annotate: Move objdump_path to struct annotation_options

One more step in grouping annotation options.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: https://lkml.kernel.org/n/tip-sogzdhugoavm6fyw60jnb0vs@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
上级 cd0cccba
...@@ -189,7 +189,7 @@ static int perf_env__lookup_binutils_path(struct perf_env *env, ...@@ -189,7 +189,7 @@ static int perf_env__lookup_binutils_path(struct perf_env *env,
return -1; return -1;
} }
int perf_env__lookup_objdump(struct perf_env *env) int perf_env__lookup_objdump(struct perf_env *env, const char **path)
{ {
/* /*
* For live mode, env->arch will be NULL and we can use * For live mode, env->arch will be NULL and we can use
...@@ -198,5 +198,5 @@ int perf_env__lookup_objdump(struct perf_env *env) ...@@ -198,5 +198,5 @@ int perf_env__lookup_objdump(struct perf_env *env)
if (env->arch == NULL) if (env->arch == NULL)
return 0; return 0;
return perf_env__lookup_binutils_path(env, "objdump", &objdump_path); return perf_env__lookup_binutils_path(env, "objdump", path);
} }
...@@ -4,8 +4,6 @@ ...@@ -4,8 +4,6 @@
#include "../util/env.h" #include "../util/env.h"
extern const char *objdump_path; int perf_env__lookup_objdump(struct perf_env *env, const char **path);
int perf_env__lookup_objdump(struct perf_env *env);
#endif /* ARCH_PERF_COMMON_H */ #endif /* ARCH_PERF_COMMON_H */
...@@ -388,8 +388,9 @@ static int __cmd_annotate(struct perf_annotate *ann) ...@@ -388,8 +388,9 @@ static int __cmd_annotate(struct perf_annotate *ann)
goto out; goto out;
} }
if (!objdump_path) { if (!ann->opts.objdump_path) {
ret = perf_env__lookup_objdump(&session->header.env); ret = perf_env__lookup_objdump(&session->header.env,
&ann->opts.objdump_path);
if (ret) if (ret)
goto out; goto out;
} }
...@@ -521,7 +522,7 @@ int cmd_annotate(int argc, const char **argv) ...@@ -521,7 +522,7 @@ int cmd_annotate(int argc, const char **argv)
"Display raw encoding of assembly instructions (default)"), "Display raw encoding of assembly instructions (default)"),
OPT_STRING('M', "disassembler-style", &annotate.opts.disassembler_style, "disassembler style", OPT_STRING('M', "disassembler-style", &annotate.opts.disassembler_style, "disassembler style",
"Specify disassembler style (e.g. -M intel for intel syntax)"), "Specify disassembler style (e.g. -M intel for intel syntax)"),
OPT_STRING(0, "objdump", &objdump_path, "path", OPT_STRING(0, "objdump", &annotate.opts.objdump_path, "path",
"objdump binary to use for disassembly and annotations"), "objdump binary to use for disassembly and annotations"),
OPT_BOOLEAN(0, "group", &symbol_conf.event_group, OPT_BOOLEAN(0, "group", &symbol_conf.event_group,
"Show event group information together"), "Show event group information together"),
......
...@@ -1094,7 +1094,7 @@ int cmd_report(int argc, const char **argv) ...@@ -1094,7 +1094,7 @@ int cmd_report(int argc, const char **argv)
parse_branch_mode), parse_branch_mode),
OPT_BOOLEAN(0, "branch-history", &branch_call_mode, OPT_BOOLEAN(0, "branch-history", &branch_call_mode,
"add last branch records to call history"), "add last branch records to call history"),
OPT_STRING(0, "objdump", &objdump_path, "path", OPT_STRING(0, "objdump", &report.annotation_opts.objdump_path, "path",
"objdump binary to use for disassembly and annotations"), "objdump binary to use for disassembly and annotations"),
OPT_BOOLEAN(0, "demangle", &symbol_conf.demangle, OPT_BOOLEAN(0, "demangle", &symbol_conf.demangle,
"Disable symbol demangling"), "Disable symbol demangling"),
......
...@@ -1077,8 +1077,9 @@ static int __cmd_top(struct perf_top *top) ...@@ -1077,8 +1077,9 @@ static int __cmd_top(struct perf_top *top)
if (top->session == NULL) if (top->session == NULL)
return -1; return -1;
if (!objdump_path) { if (!top->annotation_opts.objdump_path) {
ret = perf_env__lookup_objdump(&top->session->header.env); ret = perf_env__lookup_objdump(&top->session->header.env,
&top->annotation_opts.objdump_path);
if (ret) if (ret)
goto out_delete; goto out_delete;
} }
...@@ -1347,7 +1348,7 @@ int cmd_top(int argc, const char **argv) ...@@ -1347,7 +1348,7 @@ int cmd_top(int argc, const char **argv)
"Display raw encoding of assembly instructions (default)"), "Display raw encoding of assembly instructions (default)"),
OPT_BOOLEAN(0, "demangle-kernel", &symbol_conf.demangle_kernel, OPT_BOOLEAN(0, "demangle-kernel", &symbol_conf.demangle_kernel,
"Enable kernel symbol demangling"), "Enable kernel symbol demangling"),
OPT_STRING(0, "objdump", &objdump_path, "path", OPT_STRING(0, "objdump", &top.annotation_opts.objdump_path, "path",
"objdump binary to use for disassembly and annotations"), "objdump binary to use for disassembly and annotations"),
OPT_STRING('M', "disassembler-style", &top.annotation_opts.disassembler_style, "disassembler style", OPT_STRING('M', "disassembler-style", &top.annotation_opts.disassembler_style, "disassembler style",
"Specify disassembler style (e.g. -M intel for intel syntax)"), "Specify disassembler style (e.g. -M intel for intel syntax)"),
......
...@@ -2338,7 +2338,8 @@ do_annotate(struct hist_browser *browser, struct popup_action *act) ...@@ -2338,7 +2338,8 @@ do_annotate(struct hist_browser *browser, struct popup_action *act)
struct hist_entry *he; struct hist_entry *he;
int err; int err;
if (!objdump_path && perf_env__lookup_objdump(browser->env)) if (!browser->annotation_opts->objdump_path &&
perf_env__lookup_objdump(browser->env, &browser->annotation_opts->objdump_path))
return 0; return 0;
notes = symbol__annotation(act->ms.sym); notes = symbol__annotation(act->ms.sym);
......
...@@ -51,7 +51,6 @@ struct annotation_options annotation__default_options = { ...@@ -51,7 +51,6 @@ struct annotation_options annotation__default_options = {
.offset_level = ANNOTATION__OFFSET_JUMP_TARGETS, .offset_level = ANNOTATION__OFFSET_JUMP_TARGETS,
}; };
const char *objdump_path;
static regex_t file_lineno; static regex_t file_lineno;
static struct ins_ops *ins__find(struct arch *arch, const char *name); static struct ins_ops *ins__find(struct arch *arch, const char *name);
...@@ -1657,7 +1656,7 @@ static int symbol__disassemble(struct symbol *sym, struct annotate_args *args) ...@@ -1657,7 +1656,7 @@ static int symbol__disassemble(struct symbol *sym, struct annotate_args *args)
"%s %s%s --start-address=0x%016" PRIx64 "%s %s%s --start-address=0x%016" PRIx64
" --stop-address=0x%016" PRIx64 " --stop-address=0x%016" PRIx64
" -l -d %s %s -C \"%s\" 2>/dev/null|grep -v \"%s:\"|expand", " -l -d %s %s -C \"%s\" 2>/dev/null|grep -v \"%s:\"|expand",
objdump_path ? objdump_path : "objdump", opts->objdump_path ?: "objdump",
opts->disassembler_style ? "-M " : "", opts->disassembler_style ? "-M " : "",
opts->disassembler_style ?: "", opts->disassembler_style ?: "",
map__rip_2objdump(map, sym->start), map__rip_2objdump(map, sym->start),
......
...@@ -80,6 +80,7 @@ struct annotation_options { ...@@ -80,6 +80,7 @@ struct annotation_options {
int min_pcnt; int min_pcnt;
int max_lines; int max_lines;
int context; int context;
const char *objdump_path;
const char *disassembler_style; const char *disassembler_style;
}; };
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册