[PATCH V3 3/4] Add map pgoff to python dictionary based on MAPPING_TYPE
Steve Clevenger
scclevenger at os.amperecomputing.com
Tue Aug 27 22:09:21 PDT 2024
All, I discovered a merge problem to perf-tools-next. V4 is submitted.
Steve C.
On 8/27/2024 6:50 PM, Steve Clevenger wrote:
> Add map_pgoff parameter to python dictionary so it can be seen by the
> python script, arm-cs-trace-disasm.py. map_pgoff is forced to zero in
> the dictionary if file type is MAPPING_TYPE__IDENTITY. Otherwise, the
> map_pgoff value is directly added to the dictionary.
>
> Signed-off-by: Steve Clevenger <scclevenger at os.amperecomputing.com>
> ---
> .../util/scripting-engines/trace-event-python.c | 13 ++++++++++---
> 1 file changed, 10 insertions(+), 3 deletions(-)
>
> diff --git a/tools/perf/util/scripting-engines/trace-event-python.c b/tools/perf/util/scripting-engines/trace-event-python.c
> index 6971dd6c231f..74b66692e3a3 100644
> --- a/tools/perf/util/scripting-engines/trace-event-python.c
> +++ b/tools/perf/util/scripting-engines/trace-event-python.c
> @@ -798,7 +798,8 @@ static int set_regs_in_dict(PyObject *dict,
> static void set_sym_in_dict(PyObject *dict, struct addr_location *al,
> const char *dso_field, const char *dso_bid_field,
> 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];
>
> @@ -814,6 +815,12 @@ static void set_sym_in_dict(PyObject *dict, struct addr_location *al,
> PyLong_FromUnsignedLong(map__start(al->map)));
> pydict_set_item_string_decref(dict, dso_map_end,
> PyLong_FromUnsignedLong(map__end(al->map)));
> + if (al->map->mapping_type == MAPPING_TYPE__DSO)
> + pydict_set_item_string_decref(dict, map_pgoff,
> + PyLong_FromUnsignedLongLong(al->map->pgoff));
> + else
> + pydict_set_item_string_decref(dict, map_pgoff,
> + PyLong_FromUnsignedLongLong(0));
> }
> if (al->sym) {
> pydict_set_item_string_decref(dict, sym_field,
> @@ -900,8 +907,8 @@ static PyObject *get_perf_sample_dict(struct perf_sample *sample,
> pydict_set_item_string_decref(dict, "comm",
> _PyUnicode_FromString(thread__comm_str(al->thread)));
> 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);
>
> brstack = python_process_brstack(sample, al->thread);
More information about the linux-arm-kernel
mailing list