perf script: Use fallbacks for branch stacks
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>
This commit is contained in:
parent
225f99e0c8
commit
692d0e6332
|
@ -724,8 +724,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);
|
||||
|
@ -771,8 +771,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)) {
|
||||
|
@ -816,11 +816,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 New Issue