Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 65f2ed2b authored by Arnaldo Carvalho de Melo's avatar Arnaldo Carvalho de Melo Committed by Ingo Molnar
Browse files

perf report: Print the map table just after samples for which no map was found



If -vv is used just the map table will be printed, -vvv will
print the symbol table too, with it we can see that we have a
bug where some samples are not being resolved to a map when we
get them in the perf.data stream, but after we have it all
processed, we can find the right map, some reordering probably
is happening.

Upcoming patches will provide ways to ask for most PERF_SAMPLE_
conditional samples to be taken for !PERF_RECORD_SAMPLE events
too, then we'll be able to ask for PERF_SAMPLE_TIME and
PERF_SAMPLE_CPU to help diagnose this.

Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
Cc: Frédéric Weisbecker <fweisbec@gmail.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Paul Mackerras <paulus@samba.org>
LKML-Reference: <1268161097-17761-1-git-send-email-acme@infradead.org>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent cbbc79a5
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -655,6 +655,11 @@ size_t perf_session__fprintf_hists(struct rb_root *hists,
		}
		ret += hist_entry__fprintf(h, pair, show_displacement,
					   displacement, fp, session_total);
		if (h->map == NULL && verbose > 1) {
			__map_groups__fprintf_maps(&h->thread->mg,
						   MAP__FUNCTION, fp);
			fprintf(fp, "%.10s end\n", graph_dotted_line);
		}
	}

	free(rem_sq_bracket);
+3 −3
Original line number Diff line number Diff line
@@ -79,7 +79,7 @@ int thread__comm_len(struct thread *self)
	return self->comm_len;
}

static size_t __map_groups__fprintf_maps(struct map_groups *self,
size_t __map_groups__fprintf_maps(struct map_groups *self,
				  enum map_type type, FILE *fp)
{
	size_t printed = fprintf(fp, "%s:\n", map_type__name[type]);
@@ -89,7 +89,7 @@ static size_t __map_groups__fprintf_maps(struct map_groups *self,
		struct map *pos = rb_entry(nd, struct map, rb_node);
		printed += fprintf(fp, "Map:");
		printed += map__fprintf(pos, fp);
		if (verbose > 1) {
		if (verbose > 2) {
			printed += dso__fprintf(pos->dso, type, fp);
			printed += fprintf(fp, "--\n");
		}
+3 −0
Original line number Diff line number Diff line
@@ -10,6 +10,9 @@ struct map_groups {
	struct list_head	removed_maps[MAP__NR_TYPES];
};

size_t __map_groups__fprintf_maps(struct map_groups *self,
				  enum map_type type, FILE *fp);

struct thread {
	struct rb_node		rb_node;
	struct map_groups	mg;