diff options
Diffstat (limited to 'tools/perf/builtin-buildid-list.c')
-rw-r--r-- | tools/perf/builtin-buildid-list.c | 53 |
1 files changed, 27 insertions, 26 deletions
diff --git a/tools/perf/builtin-buildid-list.c b/tools/perf/builtin-buildid-list.c index cb690a65bf0..52480467e9f 100644 --- a/tools/perf/builtin-buildid-list.c +++ b/tools/perf/builtin-buildid-list.c | |||
@@ -18,7 +18,7 @@ | |||
18 | 18 | ||
19 | #include <libelf.h> | 19 | #include <libelf.h> |
20 | 20 | ||
21 | static char const *input_name = "perf.data"; | 21 | static const char *input_name; |
22 | static bool force; | 22 | static bool force; |
23 | static bool show_kernel; | 23 | static bool show_kernel; |
24 | static bool with_hits; | 24 | static bool with_hits; |
@@ -39,24 +39,6 @@ static const struct option options[] = { | |||
39 | OPT_END() | 39 | OPT_END() |
40 | }; | 40 | }; |
41 | 41 | ||
42 | static int perf_session__list_build_ids(void) | ||
43 | { | ||
44 | struct perf_session *session; | ||
45 | |||
46 | session = perf_session__new(input_name, O_RDONLY, force, false, | ||
47 | &build_id__mark_dso_hit_ops); | ||
48 | if (session == NULL) | ||
49 | return -1; | ||
50 | |||
51 | if (with_hits) | ||
52 | perf_session__process_events(session, &build_id__mark_dso_hit_ops); | ||
53 | |||
54 | perf_session__fprintf_dsos_buildid(session, stdout, with_hits); | ||
55 | |||
56 | perf_session__delete(session); | ||
57 | return 0; | ||
58 | } | ||
59 | |||
60 | static int sysfs__fprintf_build_id(FILE *fp) | 42 | static int sysfs__fprintf_build_id(FILE *fp) |
61 | { | 43 | { |
62 | u8 kallsyms_build_id[BUILD_ID_SIZE]; | 44 | u8 kallsyms_build_id[BUILD_ID_SIZE]; |
@@ -85,17 +67,36 @@ static int filename__fprintf_build_id(const char *name, FILE *fp) | |||
85 | return fprintf(fp, "%s\n", sbuild_id); | 67 | return fprintf(fp, "%s\n", sbuild_id); |
86 | } | 68 | } |
87 | 69 | ||
88 | static int __cmd_buildid_list(void) | 70 | static int perf_session__list_build_ids(void) |
89 | { | 71 | { |
90 | if (show_kernel) | 72 | struct perf_session *session; |
91 | return sysfs__fprintf_build_id(stdout); | ||
92 | 73 | ||
93 | elf_version(EV_CURRENT); | 74 | elf_version(EV_CURRENT); |
75 | |||
76 | session = perf_session__new(input_name, O_RDONLY, force, false, | ||
77 | &build_id__mark_dso_hit_ops); | ||
78 | if (session == NULL) | ||
79 | return -1; | ||
80 | |||
94 | /* | 81 | /* |
95 | * See if this is an ELF file first: | 82 | * See if this is an ELF file first: |
96 | */ | 83 | */ |
97 | if (filename__fprintf_build_id(input_name, stdout)) | 84 | if (filename__fprintf_build_id(session->filename, stdout)) |
98 | return 0; | 85 | goto out; |
86 | |||
87 | if (with_hits) | ||
88 | perf_session__process_events(session, &build_id__mark_dso_hit_ops); | ||
89 | |||
90 | perf_session__fprintf_dsos_buildid(session, stdout, with_hits); | ||
91 | out: | ||
92 | perf_session__delete(session); | ||
93 | return 0; | ||
94 | } | ||
95 | |||
96 | static int __cmd_buildid_list(void) | ||
97 | { | ||
98 | if (show_kernel) | ||
99 | return sysfs__fprintf_build_id(stdout); | ||
99 | 100 | ||
100 | return perf_session__list_build_ids(); | 101 | return perf_session__list_build_ids(); |
101 | } | 102 | } |