On Thu, Apr 23, 2026 at 9:34 AM Josh Poimboeuf <[email protected]> wrote: > > On Thu, Apr 23, 2026 at 10:32:31AM +0200, Peter Zijlstra wrote: > > On Wed, Apr 22, 2026 at 09:03:45PM -0700, Josh Poimboeuf wrote: > > > In find_reloc_by_dest_range(), hash collisions can cause a high-offset > > > relocation to appear when probing a low-offset hash bucket. > > > > > > Only return early when the best match found so far genuinely belongs to > > > the current bucket (its offset is within the bucket's stride range). > > > Otherwise, continue scanning later buckets which may contain > > > lower-offset matches. > > > > Maybe mention (and or add a comment to the function) that in case of > > multiple matches in the given range, it will return the lowest address > > one. > > > > Acked-by: Peter Zijlstra (Intel) <[email protected]> > > diff --git a/tools/objtool/elf.c b/tools/objtool/elf.c > index c4cb371e72b2..af2841b8e095 100644 > --- a/tools/objtool/elf.c > +++ b/tools/objtool/elf.c > @@ -347,8 +347,9 @@ void iterate_sym_by_name(const struct elf *elf, const > char *name, > } > } > > +/* If there are multiple matches, return the first one in the range */ > struct reloc *find_reloc_by_dest_range(const struct elf *elf, struct section > *sec, > - unsigned long offset, unsigned int len) > + unsigned long offset, unsigned int len) > { > struct reloc *reloc, *r = NULL; > struct section *rsec;
Acked-by: Song Liu <[email protected]>

