diff options
| author | Zecheng Li <zecheng@google.com> | 2025-10-13 18:16:01 +0000 |
|---|---|---|
| committer | Namhyung Kim <namhyung@kernel.org> | 2025-10-21 06:02:49 -0700 |
| commit | 109218718de2f7173fabdd507cc6786e79ad1690 (patch) | |
| tree | 231e059e420dfea754ad5c098764c19099597e66 /tools/perf/util/annotate-data.h | |
| parent | 1f4cc4ae3f8ae661bae3722e973a0f5be650fcbf (diff) | |
perf annotate: Save pointer offset in stack state
The tracked pointer offset was not being preserved in the stack state,
which could lead to incorrect type analysis. This change adds a
ptr_offset field to the type_state_stack struct and passes it to
set_stack_state and findnew_stack_state to ensure the offset is
preserved after the pointer is loaded from a stack location. It improves
the type annotation coverage and quality.
Signed-off-by: Zecheng Li <zecheng@google.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Diffstat (limited to 'tools/perf/util/annotate-data.h')
| -rw-r--r-- | tools/perf/util/annotate-data.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/tools/perf/util/annotate-data.h b/tools/perf/util/annotate-data.h index 14655b76db65..869307c7f130 100644 --- a/tools/perf/util/annotate-data.h +++ b/tools/perf/util/annotate-data.h @@ -191,6 +191,8 @@ struct type_state_stack { struct list_head list; Dwarf_Die type; int offset; + /* pointer offset, saves tsr->offset on the stack state */ + int ptr_offset; int size; bool compound; u8 kind; @@ -247,9 +249,10 @@ int annotated_data_type__get_member_name(struct annotated_data_type *adt, bool has_reg_type(struct type_state *state, int reg); struct type_state_stack *findnew_stack_state(struct type_state *state, int offset, u8 kind, - Dwarf_Die *type_die); + Dwarf_Die *type_die, + int ptr_offset); void set_stack_state(struct type_state_stack *stack, int offset, u8 kind, - Dwarf_Die *type_die); + Dwarf_Die *type_die, int ptr_offset); struct type_state_stack *find_stack_state(struct type_state *state, int offset); bool get_global_var_type(Dwarf_Die *cu_die, struct data_loc_info *dloc, |
