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

Commit 307dbd38 authored by Adrian Hunter's avatar Adrian Hunter Committed by Greg Kroah-Hartman
Browse files

perf script: Use fallbacks for branch stacks



commit 692d0e63324d2954a0c63a812a8588e97023a295 upstream.

Branch stacks do not necessarily have the same cpumode as the 'ip'. Use
the fallback functions in those cases.

This patch depends on patch "perf tools: Add fallback functions for cases
where cpumode is insufficient".

Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: David S. Miller <davem@davemloft.net>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Leo Yan <leo.yan@linaro.org>
Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
Cc: stable@vger.kernel.org # 4.19
Link: http://lkml.kernel.org/r/20181106210712.12098-4-adrian.hunter@intel.com


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 39dad822
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -727,8 +727,8 @@ static int perf_sample__fprintf_brstack(struct perf_sample *sample,
		if (PRINT_FIELD(DSO)) {
			memset(&alf, 0, sizeof(alf));
			memset(&alt, 0, sizeof(alt));
			thread__find_map(thread, sample->cpumode, from, &alf);
			thread__find_map(thread, sample->cpumode, to, &alt);
			thread__find_map_fb(thread, sample->cpumode, from, &alf);
			thread__find_map_fb(thread, sample->cpumode, to, &alt);
		}

		printed += fprintf(fp, " 0x%"PRIx64, from);
@@ -774,8 +774,8 @@ static int perf_sample__fprintf_brstacksym(struct perf_sample *sample,
		from = br->entries[i].from;
		to   = br->entries[i].to;

		thread__find_symbol(thread, sample->cpumode, from, &alf);
		thread__find_symbol(thread, sample->cpumode, to, &alt);
		thread__find_symbol_fb(thread, sample->cpumode, from, &alf);
		thread__find_symbol_fb(thread, sample->cpumode, to, &alt);

		printed += symbol__fprintf_symname_offs(alf.sym, &alf, fp);
		if (PRINT_FIELD(DSO)) {
@@ -819,11 +819,11 @@ static int perf_sample__fprintf_brstackoff(struct perf_sample *sample,
		from = br->entries[i].from;
		to   = br->entries[i].to;

		if (thread__find_map(thread, sample->cpumode, from, &alf) &&
		if (thread__find_map_fb(thread, sample->cpumode, from, &alf) &&
		    !alf.map->dso->adjust_symbols)
			from = map__map_ip(alf.map, from);

		if (thread__find_map(thread, sample->cpumode, to, &alt) &&
		if (thread__find_map_fb(thread, sample->cpumode, to, &alt) &&
		    !alt.map->dso->adjust_symbols)
			to = map__map_ip(alt.map, to);

+8 −8
Original line number Diff line number Diff line
@@ -494,13 +494,13 @@ static PyObject *python_process_brstack(struct perf_sample *sample,
		pydict_set_item_string_decref(pyelem, "cycles",
		    PyLong_FromUnsignedLongLong(br->entries[i].flags.cycles));

		thread__find_map(thread, sample->cpumode,
		thread__find_map_fb(thread, sample->cpumode,
				    br->entries[i].from, &al);
		dsoname = get_dsoname(al.map);
		pydict_set_item_string_decref(pyelem, "from_dsoname",
					      _PyUnicode_FromString(dsoname));

		thread__find_map(thread, sample->cpumode,
		thread__find_map_fb(thread, sample->cpumode,
				    br->entries[i].to, &al);
		dsoname = get_dsoname(al.map);
		pydict_set_item_string_decref(pyelem, "to_dsoname",
@@ -576,13 +576,13 @@ static PyObject *python_process_brstacksym(struct perf_sample *sample,
		if (!pyelem)
			Py_FatalError("couldn't create Python dictionary");

		thread__find_symbol(thread, sample->cpumode,
		thread__find_symbol_fb(thread, sample->cpumode,
				       br->entries[i].from, &al);
		get_symoff(al.sym, &al, true, bf, sizeof(bf));
		pydict_set_item_string_decref(pyelem, "from",
					      _PyUnicode_FromString(bf));

		thread__find_symbol(thread, sample->cpumode,
		thread__find_symbol_fb(thread, sample->cpumode,
				       br->entries[i].to, &al);
		get_symoff(al.sym, &al, true, bf, sizeof(bf));
		pydict_set_item_string_decref(pyelem, "to",