perf unwind: Use 'struct map_symbol' in 'struct unwind_entry'
A message that is not in the archive (sent off-list or not yet received): [email protected]
The following commit has been merged into the perf/core branch of tip:
Commit-ID: c1529738f5eb5fe7c472e0374ad7954d52566df9 Gitweb: https://git.kernel.org/tip/c1529738f5eb5fe7c472e0374ad7954d52566df9 Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Mon, 04 Nov 2019 11:58:21 -03:00 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitterDate: Tue, 12 Nov 2019 08:20:53 -03:00
perf unwind: Use 'struct map_symbol' in 'struct unwind_entry'
To help in passing that info around to callchain routines that, for the same reason, are moving to use 'struct map_symbol'.
Cc Adrian Hunter <[email protected]>
Cc Andi Kleen <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Namhyung Kim <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/perf/tests/dwarf-unwind.c | 2 +- tools/perf/util/machine.c | 17 +++++++++-------- tools/perf/util/unwind-libdw.c | 6 +++--- tools/perf/util/unwind-libunwind-local.c | 6 +++--- tools/perf/util/unwind.h | 8 +++----- 5 files changed, 19 insertions(+), 20 deletions(-)
tools/perf/tests/dwarf-unwind.c +1 -1
@@ -59,7 +59,7 @@ int test_dwarf_unwind__krava_1(struct thread *thread);static int unwind_entry (struct unwind_entry *entry,void *arg) {unsigned long *cnt = (unsigned long *) arg; -char *symbol = entry->sym ? entry->sym->name :NULL ; +char *symbol = entry->ms.sym ? entry->ms.sym->name :NULL ;static const char *funcs[MAX_STACK ] = {"test__arch_unwind_sample" ,"test_dwarf_unwind__thread" ,
tools/perf/util/machine.c +9 -8
@@ -2448,9 +2448,10 @@ check_calls:return 0 ; } -static int append_inlines (struct callchain_cursor *cursor, -struct map *map,struct symbol *sym,u64 ip) +static int append_inlines (struct callchain_cursor *cursor,struct map_symbol *ms,u64 ip) { +struct symbol *sym = ms->sym; +struct map *map = ms->map;struct inline_node *inline_node;struct inline_list *ilist;u64 addr;
@@ -2488,22 +2489,22 @@ static int unwind_entry(struct unwind_entry *entry, void *arg)const char *srcline =NULL ;u64 addr = entry->ip; -if (symbol_conf.hide_unresolved && entry->sym ==NULL ) +if (symbol_conf.hide_unresolved && entry->ms.sym ==NULL )return 0 ; -if (append_inlines (cursor, entry->map, entry->sym, entry->ip) ==0 ) +if (append_inlines (cursor, &entry->ms, entry->ip) ==0 )return 0 ;/* * Convert entry->ip from a virtual address to an offset in * its corresponding binary. */ -if (entry->map) - addr =map__map_ip (entry->map, entry->ip); +if (entry->ms.map) + addr =map__map_ip (entry->ms.map, entry->ip); - srcline =callchain_srcline (entry->map, entry->sym, addr); + srcline =callchain_srcline (entry->ms.map, entry->ms.sym, addr);return callchain_cursor_append (cursor, entry->ip, - entry->map, entry->sym, + entry->ms.map, entry->ms.sym, false,NULL ,0 ,0 ,0 , srcline); }
tools/perf/util/unwind-libdw.c +3 -3
@@ -80,9 +80,9 @@ static int entry(u64 ip, struct unwind_info *ui)if (__report_module (&al, ip, ui))return -1 ; - e->ip = ip; - e->map = al.map; - e->sym = al.sym; + e->ip = ip; + e->ms.map = al.map; + e->ms.sym = al.sym; pr_debug("unwind: %s:ip = 0x%" PRIx64 " (0x%" PRIx64 ")\n", al.sym ? al.sym->name : "''",
tools/perf/util/unwind-libunwind-local.c +3 -3
@@ -575,9 +575,9 @@ static int entry(u64 ip, struct thread *thread,struct unwind_entry e;struct addr_location al; - e.sym =thread__find_symbol (thread,PERF_RECORD_MISC_USER , ip, &al); - e.ip = ip; - e.map = al.map; + e.ms.sym =thread__find_symbol (thread,PERF_RECORD_MISC_USER , ip, &al); + e.ip = ip; + e.ms.map = al.map; pr_debug("unwind: %s:ip = 0x%" PRIx64 " (0x%" PRIx64 ")\n", al.sym ? al.sym->name : "''",
tools/perf/util/unwind.h +3 -5
@@ -4,17 +4,15 @@#include <linux/compiler.h> #include <linux/types.h> +#include "util/map_symbol.h" -struct map ;struct map_groups ;struct perf_sample ; -struct symbol ;struct thread ;struct unwind_entry { -struct map *map; -struct symbol *sym; -u64 ip; +struct map_symbol ms; +u64 ip; };typedef int (*unwind_entry_cb_t )(struct unwind_entry *entry,void *arg);