diff options
author | Frederic Weisbecker <fweisbec@gmail.com> | 2009-11-10 22:51:05 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-11-11 01:30:18 -0500 |
commit | 4778d2e4f410c6eea32f594cb2be9590bcb28b84 (patch) | |
tree | 99625c6a532d83606e0d6c8ec7c812d5d5047e50 /tools/perf/util/header.c | |
parent | 57f395a7eabb913d3605d7392be5bdb0837c9f3d (diff) |
perf tools: Read the build-ids from the header layer
Keep the build-ids reading implementation in the data mapping
but move its call to the headers so that we have a better
control on it (offset seeking, size passing, etc..).
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Hitoshi Mitake <mitake@dcl.info.waseda.ac.jp>
LKML-Reference: <1257911467-28276-4-git-send-email-fweisbec@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'tools/perf/util/header.c')
-rw-r--r-- | tools/perf/util/header.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c index 2f702c23f71a..915b56edbf02 100644 --- a/tools/perf/util/header.c +++ b/tools/perf/util/header.c | |||
@@ -9,6 +9,8 @@ | |||
9 | #include "../perf.h" | 9 | #include "../perf.h" |
10 | #include "trace-event.h" | 10 | #include "trace-event.h" |
11 | #include "symbol.h" | 11 | #include "symbol.h" |
12 | #include "data_map.h" | ||
13 | #include "debug.h" | ||
12 | 14 | ||
13 | /* | 15 | /* |
14 | * Create new perf.data header attribute: | 16 | * Create new perf.data header attribute: |
@@ -322,6 +324,14 @@ static void perf_header__adds_read(struct perf_header *self, int fd) | |||
322 | trace_report(fd); | 324 | trace_report(fd); |
323 | lseek(fd, trace_sec.offset + trace_sec.size, SEEK_SET); | 325 | lseek(fd, trace_sec.offset + trace_sec.size, SEEK_SET); |
324 | } | 326 | } |
327 | |||
328 | if (perf_header__has_feat(self, HEADER_BUILD_ID)) { | ||
329 | struct stat input_stat; | ||
330 | |||
331 | fstat(fd, &input_stat); | ||
332 | if (perf_header__read_build_ids(self, fd, input_stat.st_size)) | ||
333 | pr_debug("failed to read buildids, continuing...\n"); | ||
334 | } | ||
325 | }; | 335 | }; |
326 | 336 | ||
327 | struct perf_header *perf_header__read(int fd) | 337 | struct perf_header *perf_header__read(int fd) |
@@ -382,14 +392,14 @@ struct perf_header *perf_header__read(int fd) | |||
382 | 392 | ||
383 | memcpy(&self->adds_features, &f_header.adds_features, sizeof(f_header.adds_features)); | 393 | memcpy(&self->adds_features, &f_header.adds_features, sizeof(f_header.adds_features)); |
384 | 394 | ||
385 | perf_header__adds_read(self, fd); | ||
386 | |||
387 | self->event_offset = f_header.event_types.offset; | 395 | self->event_offset = f_header.event_types.offset; |
388 | self->event_size = f_header.event_types.size; | 396 | self->event_size = f_header.event_types.size; |
389 | 397 | ||
390 | self->data_offset = f_header.data.offset; | 398 | self->data_offset = f_header.data.offset; |
391 | self->data_size = f_header.data.size; | 399 | self->data_size = f_header.data.size; |
392 | 400 | ||
401 | perf_header__adds_read(self, fd); | ||
402 | |||
393 | lseek(fd, self->data_offset, SEEK_SET); | 403 | lseek(fd, self->data_offset, SEEK_SET); |
394 | 404 | ||
395 | self->frozen = 1; | 405 | self->frozen = 1; |