diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-05-27 18:23:47 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-05-27 18:23:47 -0400 |
commit | c5617b200ac52e35f7e8cf05a17b0a2d50f6b3e9 (patch) | |
tree | 40d5e99660c77c5791392d349a93113c044dbf14 /tools/perf/util/build-id.c | |
parent | cad719d86e9dbd06634eaba6401e022c8101d6b2 (diff) | |
parent | 49c177461bfbedeccbab22bf3905db2f9da7f1c3 (diff) |
Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (61 commits)
tracing: Add __used annotation to event variable
perf, trace: Fix !x86 build bug
perf report: Support multiple events on the TUI
perf annotate: Fix up usage of the build id cache
x86/mmiotrace: Remove redundant instruction prefix checks
perf annotate: Add TUI interface
perf tui: Remove annotate from popup menu after failure
perf report: Don't start the TUI if -D is used
perf: Fix getline undeclared
perf: Optimize perf_tp_event_match()
perf: Remove more code from the fastpath
perf: Optimize the !vmalloc backed buffer
perf: Optimize perf_output_copy()
perf: Fix wakeup storm for RO mmap()s
perf-record: Share per-cpu buffers
perf-record: Remove -M
perf: Ensure that IOC_OUTPUT isn't used to create multi-writer buffers
perf, trace: Optimize tracepoints by using per-tracepoint-per-cpu hlist to track events
perf, trace: Optimize tracepoints by removing IRQ-disable from perf/tracepoint interaction
perf tui: Allow disabling the TUI on a per command basis in ~/.perfconfig
...
Diffstat (limited to 'tools/perf/util/build-id.c')
-rw-r--r-- | tools/perf/util/build-id.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/tools/perf/util/build-id.c b/tools/perf/util/build-id.c index 0f60a3906808..70c5cf87d020 100644 --- a/tools/perf/util/build-id.c +++ b/tools/perf/util/build-id.c | |||
@@ -6,6 +6,8 @@ | |||
6 | * Copyright (C) 2009, 2010 Red Hat Inc. | 6 | * Copyright (C) 2009, 2010 Red Hat Inc. |
7 | * Copyright (C) 2009, 2010 Arnaldo Carvalho de Melo <acme@redhat.com> | 7 | * Copyright (C) 2009, 2010 Arnaldo Carvalho de Melo <acme@redhat.com> |
8 | */ | 8 | */ |
9 | #include "util.h" | ||
10 | #include <stdio.h> | ||
9 | #include "build-id.h" | 11 | #include "build-id.h" |
10 | #include "event.h" | 12 | #include "event.h" |
11 | #include "symbol.h" | 13 | #include "symbol.h" |
@@ -37,3 +39,23 @@ struct perf_event_ops build_id__mark_dso_hit_ops = { | |||
37 | .mmap = event__process_mmap, | 39 | .mmap = event__process_mmap, |
38 | .fork = event__process_task, | 40 | .fork = event__process_task, |
39 | }; | 41 | }; |
42 | |||
43 | char *dso__build_id_filename(struct dso *self, char *bf, size_t size) | ||
44 | { | ||
45 | char build_id_hex[BUILD_ID_SIZE * 2 + 1]; | ||
46 | const char *home; | ||
47 | |||
48 | if (!self->has_build_id) | ||
49 | return NULL; | ||
50 | |||
51 | build_id__sprintf(self->build_id, sizeof(self->build_id), build_id_hex); | ||
52 | home = getenv("HOME"); | ||
53 | if (bf == NULL) { | ||
54 | if (asprintf(&bf, "%s/%s/.build-id/%.2s/%s", home, | ||
55 | DEBUG_CACHE_DIR, build_id_hex, build_id_hex + 2) < 0) | ||
56 | return NULL; | ||
57 | } else | ||
58 | snprintf(bf, size, "%s/%s/.build-id/%.2s/%s", home, | ||
59 | DEBUG_CACHE_DIR, build_id_hex, build_id_hex + 2); | ||
60 | return bf; | ||
61 | } | ||