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: Adrian 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: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
39dad822b7
commit
307dbd3836
2 changed files with 14 additions and 14 deletions
|
@ -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);
|
||||
|
||||
|
|
|
@ -494,14 +494,14 @@ 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,
|
||||
br->entries[i].from, &al);
|
||||
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,
|
||||
br->entries[i].to, &al);
|
||||
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",
|
||||
_PyUnicode_FromString(dsoname));
|
||||
|
@ -576,14 +576,14 @@ static PyObject *python_process_brstacksym(struct perf_sample *sample,
|
|||
if (!pyelem)
|
||||
Py_FatalError("couldn't create Python dictionary");
|
||||
|
||||
thread__find_symbol(thread, sample->cpumode,
|
||||
br->entries[i].from, &al);
|
||||
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,
|
||||
br->entries[i].to, &al);
|
||||
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",
|
||||
_PyUnicode_FromString(bf));
|
||||
|
|
Loading…
Reference in a new issue