diff options
Diffstat (limited to 'tools/perf/builtin-buildid-list.c')
| -rw-r--r-- | tools/perf/builtin-buildid-list.c | 31 | 
1 files changed, 7 insertions, 24 deletions
diff --git a/tools/perf/builtin-buildid-list.c b/tools/perf/builtin-buildid-list.c index 1e99ac80691..d0675c02f81 100644 --- a/tools/perf/builtin-buildid-list.c +++ b/tools/perf/builtin-buildid-list.c @@ -8,6 +8,7 @@   */  #include "builtin.h"  #include "perf.h" +#include "util/build-id.h"  #include "util/cache.h"  #include "util/debug.h"  #include "util/parse-options.h" @@ -16,6 +17,7 @@  static char const *input_name = "perf.data";  static int force; +static bool with_hits;  static const char * const buildid_list_usage[] = {  	"perf buildid-list [<options>]", @@ -23,6 +25,7 @@ static const char * const buildid_list_usage[] = {  };  static const struct option options[] = { +	OPT_BOOLEAN('H', "with-hits", &with_hits, "Show only DSOs with hits"),  	OPT_STRING('i', "input", &input_name, "file",  		    "input file name"),  	OPT_BOOLEAN('f', "force", &force, "don't complain, do it"), @@ -31,26 +34,6 @@ static const struct option options[] = {  	OPT_END()  }; -static int perf_file_section__process_buildids(struct perf_file_section *self, -					       int feat, int fd) -{ -	if (feat != HEADER_BUILD_ID) -		return 0; - -	if (lseek(fd, self->offset, SEEK_SET) < 0) { -		pr_warning("Failed to lseek to %Ld offset for buildids!\n", -			   self->offset); -		return -1; -	} - -	if (perf_header__read_build_ids(fd, self->offset, self->size)) { -		pr_warning("Failed to read buildids!\n"); -		return -1; -	} - -	return 0; -} -  static int __cmd_buildid_list(void)  {  	int err = -1; @@ -60,10 +43,10 @@ static int __cmd_buildid_list(void)  	if (session == NULL)  		return -1; -	err = perf_header__process_sections(&session->header, session->fd, -				         perf_file_section__process_buildids); -	if (err >= 0) -		dsos__fprintf_buildid(stdout); +	if (with_hits) +		perf_session__process_events(session, &build_id__mark_dso_hit_ops); + +	dsos__fprintf_buildid(stdout, with_hits);  	perf_session__delete(session);  	return err;  |