Commit b49a8fe5 authored by Namhyung Kim's avatar Namhyung Kim Committed by Arnaldo Carvalho de Melo

perf callchain: Honor hide_unresolved

If user requested to hide unresolved entries, skip unresolved callchains
as well as hist entries.
Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
Acked-by: default avatarJiri Olsa <jolsa@kernel.org>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Kan Liang <kan.liang@intel.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1448521700-32062-3-git-send-email-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent a95a49fa
...@@ -45,7 +45,6 @@ struct report { ...@@ -45,7 +45,6 @@ struct report {
struct perf_tool tool; struct perf_tool tool;
struct perf_session *session; struct perf_session *session;
bool use_tui, use_gtk, use_stdio; bool use_tui, use_gtk, use_stdio;
bool hide_unresolved;
bool dont_use_callchains; bool dont_use_callchains;
bool show_full_info; bool show_full_info;
bool show_threads; bool show_threads;
...@@ -146,7 +145,7 @@ static int process_sample_event(struct perf_tool *tool, ...@@ -146,7 +145,7 @@ static int process_sample_event(struct perf_tool *tool,
struct hist_entry_iter iter = { struct hist_entry_iter iter = {
.evsel = evsel, .evsel = evsel,
.sample = sample, .sample = sample,
.hide_unresolved = rep->hide_unresolved, .hide_unresolved = symbol_conf.hide_unresolved,
.add_entry_cb = hist_iter__report_callback, .add_entry_cb = hist_iter__report_callback,
}; };
int ret = 0; int ret = 0;
...@@ -157,7 +156,7 @@ static int process_sample_event(struct perf_tool *tool, ...@@ -157,7 +156,7 @@ static int process_sample_event(struct perf_tool *tool,
return -1; return -1;
} }
if (rep->hide_unresolved && al.sym == NULL) if (symbol_conf.hide_unresolved && al.sym == NULL)
goto out_put; goto out_put;
if (rep->cpu_list && !test_bit(sample->cpu, rep->cpu_bitmap)) if (rep->cpu_list && !test_bit(sample->cpu, rep->cpu_bitmap))
...@@ -740,7 +739,7 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused) ...@@ -740,7 +739,7 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused)
OPT_STRING_NOEMPTY('t', "field-separator", &symbol_conf.field_sep, "separator", OPT_STRING_NOEMPTY('t', "field-separator", &symbol_conf.field_sep, "separator",
"separator for columns, no spaces will be added between " "separator for columns, no spaces will be added between "
"columns '.' is reserved."), "columns '.' is reserved."),
OPT_BOOLEAN('U', "hide-unresolved", &report.hide_unresolved, OPT_BOOLEAN('U', "hide-unresolved", &symbol_conf.hide_unresolved,
"Only display entries resolved to a symbol"), "Only display entries resolved to a symbol"),
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"),
......
...@@ -1618,6 +1618,8 @@ static int add_callchain_ip(struct thread *thread, ...@@ -1618,6 +1618,8 @@ static int add_callchain_ip(struct thread *thread,
} }
} }
if (symbol_conf.hide_unresolved && al.sym == NULL)
return 0;
return callchain_cursor_append(&callchain_cursor, al.addr, al.map, al.sym); return callchain_cursor_append(&callchain_cursor, al.addr, al.map, al.sym);
} }
...@@ -1872,6 +1874,9 @@ static int thread__resolve_callchain_sample(struct thread *thread, ...@@ -1872,6 +1874,9 @@ static int thread__resolve_callchain_sample(struct thread *thread,
static int unwind_entry(struct unwind_entry *entry, void *arg) static int unwind_entry(struct unwind_entry *entry, void *arg)
{ {
struct callchain_cursor *cursor = arg; struct callchain_cursor *cursor = arg;
if (symbol_conf.hide_unresolved && entry->sym == NULL)
return 0;
return callchain_cursor_append(cursor, entry->ip, return callchain_cursor_append(cursor, entry->ip,
entry->map, entry->sym); entry->map, entry->sym);
} }
......
...@@ -108,7 +108,8 @@ struct symbol_conf { ...@@ -108,7 +108,8 @@ struct symbol_conf {
show_hist_headers, show_hist_headers,
branch_callstack, branch_callstack,
has_filter, has_filter,
show_ref_callgraph; show_ref_callgraph,
hide_unresolved;
const char *vmlinux_name, const char *vmlinux_name,
*kallsyms_name, *kallsyms_name,
*source_prefix, *source_prefix,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment