diff options
Diffstat (limited to 'tools/perf/builtin-buildid-list.c')
| -rw-r--r-- | tools/perf/builtin-buildid-list.c | 21 | 
1 files changed, 12 insertions, 9 deletions
diff --git a/tools/perf/builtin-buildid-list.c b/tools/perf/builtin-buildid-list.c index a82d99fec83..e74366a1321 100644 --- a/tools/perf/builtin-buildid-list.c +++ b/tools/perf/builtin-buildid-list.c @@ -44,23 +44,26 @@ static int filename__fprintf_build_id(const char *name, FILE *fp)  	return fprintf(fp, "%s\n", sbuild_id);  } +static bool dso__skip_buildid(struct dso *dso, int with_hits) +{ +	return with_hits && !dso->hit; +} +  static int perf_session__list_build_ids(bool force, bool with_hits)  {  	struct perf_session *session;  	symbol__elf_init(); - -	session = perf_session__new(input_name, O_RDONLY, force, false, -				    &build_id__mark_dso_hit_ops); -	if (session == NULL) -		return -1; -  	/*  	 * See if this is an ELF file first:  	 */ -	if (filename__fprintf_build_id(session->filename, stdout)) +	if (filename__fprintf_build_id(input_name, stdout))  		goto out; +	session = perf_session__new(input_name, O_RDONLY, force, false, +				    &build_id__mark_dso_hit_ops); +	if (session == NULL) +		return -1;  	/*  	 * in pipe-mode, the only way to get the buildids is to parse  	 * the record stream. Buildids are stored as RECORD_HEADER_BUILD_ID @@ -68,9 +71,9 @@ static int perf_session__list_build_ids(bool force, bool with_hits)  	if (with_hits || session->fd_pipe)  		perf_session__process_events(session, &build_id__mark_dso_hit_ops); -	perf_session__fprintf_dsos_buildid(session, stdout, with_hits); -out: +	perf_session__fprintf_dsos_buildid(session, stdout, dso__skip_buildid, with_hits);  	perf_session__delete(session); +out:  	return 0;  }  |