mirror of
https://github.com/torvalds/linux.git
synced 2024-11-27 06:31:52 +00:00
perf script cs_etm: Add map_pgoff to python dictionary
Extract map_pgoff parameter from the dictionary, and adjust start/end range passed to objdump based on the value. A zero start_addr is filtered to prevent output of dso address range check failures. This script repeatedly sees a zero value passed in for start_addr = cpu_data[str(cpu) + 'addr'] These zero values are not a new problem. The start_addr/stop_addr warning clutters the instruction trace output, hence this change. Signed-off-by: Steve Clevenger <scclevenger@os.amperecomputing.com> Reviewed-by: Leo Yan <leo.yan@arm.com> Cc: suzuki.poulose@arm.com Cc: james.clark@linaro.org Cc: mike.leach@linaro.org Cc: linux-arm-kernel@lists.infradead.org Cc: coresight@lists.linaro.org Cc: ilkka@os.amperecomputing.com Link: https://lore.kernel.org/r/8d9a1142dc58ffa34a000cb7b7a26055df0a37ec.1731027120.git.scclevenger@os.amperecomputing.com Signed-off-by: Namhyung Kim <namhyung@kernel.org>
This commit is contained in:
parent
62a6d092f1
commit
26ec3d7cc3
@ -793,7 +793,8 @@ static int set_regs_in_dict(PyObject *dict,
|
|||||||
static void set_sym_in_dict(PyObject *dict, struct addr_location *al,
|
static void set_sym_in_dict(PyObject *dict, struct addr_location *al,
|
||||||
const char *dso_field, const char *dso_bid_field,
|
const char *dso_field, const char *dso_bid_field,
|
||||||
const char *dso_map_start, const char *dso_map_end,
|
const char *dso_map_start, const char *dso_map_end,
|
||||||
const char *sym_field, const char *symoff_field)
|
const char *sym_field, const char *symoff_field,
|
||||||
|
const char *map_pgoff)
|
||||||
{
|
{
|
||||||
char sbuild_id[SBUILD_ID_SIZE];
|
char sbuild_id[SBUILD_ID_SIZE];
|
||||||
|
|
||||||
@ -809,6 +810,8 @@ static void set_sym_in_dict(PyObject *dict, struct addr_location *al,
|
|||||||
PyLong_FromUnsignedLong(map__start(al->map)));
|
PyLong_FromUnsignedLong(map__start(al->map)));
|
||||||
pydict_set_item_string_decref(dict, dso_map_end,
|
pydict_set_item_string_decref(dict, dso_map_end,
|
||||||
PyLong_FromUnsignedLong(map__end(al->map)));
|
PyLong_FromUnsignedLong(map__end(al->map)));
|
||||||
|
pydict_set_item_string_decref(dict, map_pgoff,
|
||||||
|
PyLong_FromUnsignedLongLong(map__pgoff(al->map)));
|
||||||
}
|
}
|
||||||
if (al->sym) {
|
if (al->sym) {
|
||||||
pydict_set_item_string_decref(dict, sym_field,
|
pydict_set_item_string_decref(dict, sym_field,
|
||||||
@ -895,7 +898,7 @@ static PyObject *get_perf_sample_dict(struct perf_sample *sample,
|
|||||||
pydict_set_item_string_decref(dict, "comm",
|
pydict_set_item_string_decref(dict, "comm",
|
||||||
_PyUnicode_FromString(thread__comm_str(al->thread)));
|
_PyUnicode_FromString(thread__comm_str(al->thread)));
|
||||||
set_sym_in_dict(dict, al, "dso", "dso_bid", "dso_map_start", "dso_map_end",
|
set_sym_in_dict(dict, al, "dso", "dso_bid", "dso_map_start", "dso_map_end",
|
||||||
"symbol", "symoff");
|
"symbol", "symoff", "map_pgoff");
|
||||||
|
|
||||||
pydict_set_item_string_decref(dict, "callchain", callchain);
|
pydict_set_item_string_decref(dict, "callchain", callchain);
|
||||||
|
|
||||||
@ -920,7 +923,7 @@ static PyObject *get_perf_sample_dict(struct perf_sample *sample,
|
|||||||
PyBool_FromLong(1));
|
PyBool_FromLong(1));
|
||||||
set_sym_in_dict(dict_sample, addr_al, "addr_dso", "addr_dso_bid",
|
set_sym_in_dict(dict_sample, addr_al, "addr_dso", "addr_dso_bid",
|
||||||
"addr_dso_map_start", "addr_dso_map_end",
|
"addr_dso_map_start", "addr_dso_map_end",
|
||||||
"addr_symbol", "addr_symoff");
|
"addr_symbol", "addr_symoff", "addr_map_pgoff");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sample->flags)
|
if (sample->flags)
|
||||||
|
Loading…
Reference in New Issue
Block a user