diff options
author | Ingo Molnar <mingo@kernel.org> | 2016-11-25 12:12:41 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2016-11-25 12:12:41 -0500 |
commit | 2471cece40d61b0035360338569d338f9dea6099 (patch) | |
tree | 809f1d14defbc82fc6a957597b8b0bcb6600faed /tools/perf/ui/browsers/annotate.c | |
parent | 47414424c53a70eceb0fc6e0a35a31a2b763d5b2 (diff) | |
parent | 4708bbda5cb2f6cdc331744597527143f46394d5 (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.c | 18 |
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 | ||
244 | static bool disasm_line__is_valid_jump(struct disasm_line *dl, struct symbol *sym) | 244 | static 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))) { |