Commit eac05af2 authored by Stefano Sanfilippo's avatar Stefano Sanfilippo Committed by Arnaldo Carvalho de Melo

perf jit: Do not assume pgoff is zero

When calculating .eh_frame_hdr base and LUT offsets do not always assume
that pgoff is zero.

The assumption is false for DSOs built from the jitdump by perf inject,
because the ELF header did not exist in memory at sampling time.
Signed-off-by: default avatarStefano Sanfilippo <ssanfilippo@chromium.org>
Signed-off-by: default avatarRoss McIlroy <rmcilroy@chromium.org>
Reviewed-by: default avatarStephane Eranian <eranian@google.com>
Cc: Anton Blanchard <anton@ozlabs.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/1476356383-30100-6-git-send-email-eranian@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 7354ec7a
...@@ -357,8 +357,8 @@ find_proc_info(unw_addr_space_t as, unw_word_t ip, unw_proc_info_t *pi, ...@@ -357,8 +357,8 @@ find_proc_info(unw_addr_space_t as, unw_word_t ip, unw_proc_info_t *pi,
di.format = UNW_INFO_FORMAT_REMOTE_TABLE; di.format = UNW_INFO_FORMAT_REMOTE_TABLE;
di.start_ip = map->start; di.start_ip = map->start;
di.end_ip = map->end; di.end_ip = map->end;
di.u.rti.segbase = map->start + segbase; di.u.rti.segbase = map->start + segbase - map->pgoff;
di.u.rti.table_data = map->start + table_data; di.u.rti.table_data = map->start + table_data - map->pgoff;
di.u.rti.table_len = fde_count * sizeof(struct table_entry) di.u.rti.table_len = fde_count * sizeof(struct table_entry)
/ sizeof(unw_word_t); / sizeof(unw_word_t);
ret = dwarf_search_unwind_table(as, ip, &di, pi, ret = dwarf_search_unwind_table(as, ip, &di, pi,
......
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