diff options
author | Adrian Hunter <adrian.hunter@intel.com> | 2013-10-09 08:01:12 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2013-10-14 09:29:00 -0400 |
commit | afba19d9dc8eba66ea26901708cf99354c637786 (patch) | |
tree | 3b96f6610f8b776d4a4f9836205321bda4b143fd /tools/perf/util/symbol.h | |
parent | 52afdaf9f0c6a35e154ba42ac9510044e16d75ec (diff) |
perf symbols: Workaround objdump difficulties with kcore
The objdump tool fails to annotate module symbols when looking at kcore.
Workaround this by extracting object code from kcore and putting it in a
temporary file for objdump to use instead.
The temporary file is created to look like kcore but contains only the
function being disassembled.
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Namhyung Kim <namhyung@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1381320078-16497-3-git-send-email-adrian.hunter@intel.com
[ Renamed 'index' to 'idx' to avoid shadowing string.h's 'index' in Fedora 12,
Replace local with variable length with malloc/free to fix build in Fedora 12 ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/util/symbol.h')
-rw-r--r-- | tools/perf/util/symbol.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/tools/perf/util/symbol.h b/tools/perf/util/symbol.h index 2d3eb43ab9f9..fb107e13e925 100644 --- a/tools/perf/util/symbol.h +++ b/tools/perf/util/symbol.h | |||
@@ -256,4 +256,18 @@ typedef int (*mapfn_t)(u64 start, u64 len, u64 pgoff, void *data); | |||
256 | int file__read_maps(int fd, bool exe, mapfn_t mapfn, void *data, | 256 | int file__read_maps(int fd, bool exe, mapfn_t mapfn, void *data, |
257 | bool *is_64_bit); | 257 | bool *is_64_bit); |
258 | 258 | ||
259 | #define PERF_KCORE_EXTRACT "/tmp/perf-kcore-XXXXXX" | ||
260 | |||
261 | struct kcore_extract { | ||
262 | char *kcore_filename; | ||
263 | u64 addr; | ||
264 | u64 offs; | ||
265 | u64 len; | ||
266 | char extract_filename[sizeof(PERF_KCORE_EXTRACT)]; | ||
267 | int fd; | ||
268 | }; | ||
269 | |||
270 | int kcore_extract__create(struct kcore_extract *kce); | ||
271 | void kcore_extract__delete(struct kcore_extract *kce); | ||
272 | |||
259 | #endif /* __PERF_SYMBOL */ | 273 | #endif /* __PERF_SYMBOL */ |