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]>

Reply via email to