aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/ui/browsers/annotate.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2016-11-25 12:12:41 -0500
committerIngo Molnar <mingo@kernel.org>2016-11-25 12:12:41 -0500
commit2471cece40d61b0035360338569d338f9dea6099 (patch)
tree809f1d14defbc82fc6a957597b8b0bcb6600faed /tools/perf/ui/browsers/annotate.c
parent47414424c53a70eceb0fc6e0a35a31a2b763d5b2 (diff)
parent4708bbda5cb2f6cdc331744597527143f46394d5 (diff)
Merge tag 'perf-core-for-mingo-20161125' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core
Pull perf/core improvements and fixes from Arnaldo Carvalho de Melo: New features: - Improve ARM support in the annotation code, affecting 'perf annotate', 'perf report' and live annotation in 'perf top' (Kim Phillips) - Initial support for PowerPC in the annotation code (Ravi Bangoria) - Skip repetitive scheduler function on the top of the stack in 'perf sched timehist' (Namhyung Kim) Fixes: - Fix maps resolution in libbpf (Eric Leblond) - Get the kernel signature via /proc/version_signature, available on Ubuntu systems, to make sure BPF proggies works, as the one provided via 'uname -r' doesn't (Wang Nan) - Fix segfault in 'perf record' when running with suid and kptr_restrict is 1 (Wang Nan) Infrastructure changes: - Support per-arch instruction tables, kept via a static or dynamic table (Arnaldo Carvalho de Melo) Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'tools/perf/ui/browsers/annotate.c')
-rw-r--r--tools/perf/ui/browsers/annotate.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/tools/perf/ui/browsers/annotate.c b/tools/perf/ui/browsers/annotate.c
index e6e9f7d80dbd..cee0eee31ce6 100644
--- a/tools/perf/ui/browsers/annotate.c
+++ b/tools/perf/ui/browsers/annotate.c
@@ -213,17 +213,17 @@ static void annotate_browser__write(struct ui_browser *browser, void *entry, int
213 ui_browser__write_nstring(browser, bf, printed); 213 ui_browser__write_nstring(browser, bf, printed);
214 if (change_color) 214 if (change_color)
215 ui_browser__set_color(browser, color); 215 ui_browser__set_color(browser, color);
216 if (dl->ins && dl->ins->ops->scnprintf) { 216 if (dl->ins.ops && dl->ins.ops->scnprintf) {
217 if (ins__is_jump(dl->ins)) { 217 if (ins__is_jump(&dl->ins)) {
218 bool fwd = dl->ops.target.offset > (u64)dl->offset; 218 bool fwd = dl->ops.target.offset > (u64)dl->offset;
219 219
220 ui_browser__write_graph(browser, fwd ? SLSMG_DARROW_CHAR : 220 ui_browser__write_graph(browser, fwd ? SLSMG_DARROW_CHAR :
221 SLSMG_UARROW_CHAR); 221 SLSMG_UARROW_CHAR);
222 SLsmg_write_char(' '); 222 SLsmg_write_char(' ');
223 } else if (ins__is_call(dl->ins)) { 223 } else if (ins__is_call(&dl->ins)) {
224 ui_browser__write_graph(browser, SLSMG_RARROW_CHAR); 224 ui_browser__write_graph(browser, SLSMG_RARROW_CHAR);
225 SLsmg_write_char(' '); 225 SLsmg_write_char(' ');
226 } else if (ins__is_ret(dl->ins)) { 226 } else if (ins__is_ret(&dl->ins)) {
227 ui_browser__write_graph(browser, SLSMG_LARROW_CHAR); 227 ui_browser__write_graph(browser, SLSMG_LARROW_CHAR);
228 SLsmg_write_char(' '); 228 SLsmg_write_char(' ');
229 } else { 229 } else {
@@ -243,7 +243,7 @@ static void annotate_browser__write(struct ui_browser *browser, void *entry, int
243 243
244static bool disasm_line__is_valid_jump(struct disasm_line *dl, struct symbol *sym) 244static bool disasm_line__is_valid_jump(struct disasm_line *dl, struct symbol *sym)
245{ 245{
246 if (!dl || !dl->ins || !ins__is_jump(dl->ins) 246 if (!dl || !dl->ins.ops || !ins__is_jump(&dl->ins)
247 || !disasm_line__has_offset(dl) 247 || !disasm_line__has_offset(dl)
248 || dl->ops.target.offset >= symbol__size(sym)) 248 || dl->ops.target.offset >= symbol__size(sym))
249 return false; 249 return false;
@@ -492,7 +492,7 @@ static bool annotate_browser__callq(struct annotate_browser *browser,
492 }; 492 };
493 char title[SYM_TITLE_MAX_SIZE]; 493 char title[SYM_TITLE_MAX_SIZE];
494 494
495 if (!ins__is_call(dl->ins)) 495 if (!ins__is_call(&dl->ins))
496 return false; 496 return false;
497 497
498 if (map_groups__find_ams(&target) || 498 if (map_groups__find_ams(&target) ||
@@ -545,7 +545,7 @@ static bool annotate_browser__jump(struct annotate_browser *browser)
545 struct disasm_line *dl = browser->selection; 545 struct disasm_line *dl = browser->selection;
546 s64 idx; 546 s64 idx;
547 547
548 if (!ins__is_jump(dl->ins)) 548 if (!ins__is_jump(&dl->ins))
549 return false; 549 return false;
550 550
551 dl = annotate_browser__find_offset(browser, dl->ops.target.offset, &idx); 551 dl = annotate_browser__find_offset(browser, dl->ops.target.offset, &idx);
@@ -841,9 +841,9 @@ show_help:
841 ui_helpline__puts("Huh? No selection. Report to linux-kernel@vger.kernel.org"); 841 ui_helpline__puts("Huh? No selection. Report to linux-kernel@vger.kernel.org");
842 else if (browser->selection->offset == -1) 842 else if (browser->selection->offset == -1)
843 ui_helpline__puts("Actions are only available for assembly lines."); 843 ui_helpline__puts("Actions are only available for assembly lines.");
844 else if (!browser->selection->ins) 844 else if (!browser->selection->ins.ops)
845 goto show_sup_ins; 845 goto show_sup_ins;
846 else if (ins__is_ret(browser->selection->ins)) 846 else if (ins__is_ret(&browser->selection->ins))
847 goto out; 847 goto out;
848 else if (!(annotate_browser__jump(browser) || 848 else if (!(annotate_browser__jump(browser) ||
849 annotate_browser__callq(browser, evsel, hbt))) { 849 annotate_browser__callq(browser, evsel, hbt))) {