perf script: Use fallbacks for branch stacks
authorAdrian Hunter <adrian.hunter@intel.com>
Tue, 6 Nov 2018 21:07:12 +0000 (23:07 +0200)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 17 Dec 2018 17:54:18 +0000 (14:54 -0300)
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>
tools/perf/builtin-script.c
tools/perf/util/scripting-engines/trace-event-python.c

index 04913136bac95f5d4635947d9cf915e82449ef53..3ea98fe72f7f5d7400a19c61fd6049523fc14718 100644 (file)
@@ -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);
 
index 69aa93d4ee9917a7014eb7c527cb810695eb1e72..0c4b050f6fc22bbb48c5b8f0f2053628dcc52ec7 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));