perf script: Use fallbacks for branch stacks
authorAdrian Hunter <adrian.hunter@intel.com>
Tue, 6 Nov 2018 21:07:12 +0000 (23:07 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 9 Jan 2019 16:38:42 +0000 (17:38 +0100)
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>
tools/perf/builtin-script.c
tools/perf/util/scripting-engines/trace-event-python.c

index ba481d7..6c1e7ce 100644 (file)
@@ -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);
 
index dfc6093..05d95de 100644 (file)
@@ -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));