Messages in this thread | | | Date | Thu, 9 May 2024 18:21:55 -0300 | From | Arnaldo Carvalho de Melo <> | Subject | Re: [PATCH] perf dwarf-aux: Fix build with HAVE_DWARF_CFI_SUPPORT |
| |
On Thu, May 09, 2024 at 10:11:36AM +0900, Masami Hiramatsu wrote: > On Wed, 8 May 2024 15:14:57 +0100 > James Clark <james.clark@arm.com> wrote: > > > check_allowed_ops() is used from both HAVE_DWARF_GETLOCATIONS_SUPPORT > > and HAVE_DWARF_CFI_SUPPORT sections, so move it into the right place so > > that it's available when either are defined. This shows up when doing > > a static cross compile for arm64: > > > > $ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- LDFLAGS="-static" \ > > EXTRA_PERFLIBS="-lexpat" > > > > util/dwarf-aux.c:1723:6: error: implicit declaration of function 'check_allowed_ops' > > > > Looks good to me. > > Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org> > > Thanks!
Thanks, applied to perf-tools-next,
- Arnaldo
> > Fixes: 55442cc2f22d ("perf dwarf-aux: Check allowed DWARF Ops") > > Signed-off-by: James Clark <james.clark@arm.com> > > --- > > tools/perf/util/dwarf-aux.c | 56 ++++++++++++++++++------------------- > > 1 file changed, 28 insertions(+), 28 deletions(-) > > > > diff --git a/tools/perf/util/dwarf-aux.c b/tools/perf/util/dwarf-aux.c > > index c0a492e65388..c9584563cd56 100644 > > --- a/tools/perf/util/dwarf-aux.c > > +++ b/tools/perf/util/dwarf-aux.c > > @@ -1215,6 +1215,34 @@ static int offset_from_dwarf_op(Dwarf_Op *op) > > } > > return -1; > > } > > + > > +static bool check_allowed_ops(Dwarf_Op *ops, size_t nops) > > +{ > > + /* The first op is checked separately */ > > + ops++; > > + nops--; > > + > > + /* > > + * It needs to make sure if the location expression matches to the given > > + * register and offset exactly. Thus it rejects any complex expressions > > + * and only allows a few of selected operators that doesn't change the > > + * location. > > + */ > > + while (nops) { > > + switch (ops->atom) { > > + case DW_OP_stack_value: > > + case DW_OP_deref_size: > > + case DW_OP_deref: > > + case DW_OP_piece: > > + break; > > + default: > > + return false; > > + } > > + ops++; > > + nops--; > > + } > > + return true; > > +} > > #endif /* HAVE_DWARF_GETLOCATIONS_SUPPORT || HAVE_DWARF_CFI_SUPPORT */ > > > > #ifdef HAVE_DWARF_GETLOCATIONS_SUPPORT > > @@ -1395,34 +1423,6 @@ static bool match_var_offset(Dwarf_Die *die_mem, struct find_var_data *data, > > return true; > > } > > > > -static bool check_allowed_ops(Dwarf_Op *ops, size_t nops) > > -{ > > - /* The first op is checked separately */ > > - ops++; > > - nops--; > > - > > - /* > > - * It needs to make sure if the location expression matches to the given > > - * register and offset exactly. Thus it rejects any complex expressions > > - * and only allows a few of selected operators that doesn't change the > > - * location. > > - */ > > - while (nops) { > > - switch (ops->atom) { > > - case DW_OP_stack_value: > > - case DW_OP_deref_size: > > - case DW_OP_deref: > > - case DW_OP_piece: > > - break; > > - default: > > - return false; > > - } > > - ops++; > > - nops--; > > - } > > - return true; > > -} > > - > > /* Only checks direct child DIEs in the given scope. */ > > static int __die_find_var_reg_cb(Dwarf_Die *die_mem, void *arg) > > { > > -- > > 2.34.1 > > > > > > > -- > Masami Hiramatsu (Google) <mhiramat@kernel.org>
| |