Re: [PATCH bpf] bpf: Fix BTF_ID symbol generation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Sep 15, 2023 at 9:25 AM Nick Desaulniers
<ndesaulniers@xxxxxxxxxx> wrote:
>
> On Fri, Sep 15, 2023 at 3:32 AM Jiri Olsa <jolsa@xxxxxxxxxx> wrote:
> >
> > Marcus and Nick reported issue where BTF_ID macro generates same
> > symbol in separate objects and that breaks final vmlinux link.
> >
> > Adding __LINE__ number suffix to make BTF_ID symbol more unique,
> > which is not real fix, but it would help for now and meanwhile
> > we can work on better solution as suggested by Andrii in [2].
> >
> > [1] https://github.com/ClangBuiltLinux/linux/issues/1913
> > [2] https://lore.kernel.org/bpf/ZQQVr35crUtN1quS@krava/T/#m64d7c29c407d6adf0e7b420359958b3aafa7bf69
> > Reported-by: Marcus Seyfarth <m.seyfarth@xxxxxxxxx>
> > Reported-by: Nick Desaulniers <ndesaulniers@xxxxxxxxxx>
> > Signed-off-by: Jiri Olsa <jolsa@xxxxxxxxxx>
> > ---
> >  include/linux/btf_ids.h | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/include/linux/btf_ids.h b/include/linux/btf_ids.h
> > index a3462a9b8e18..a9cb10b0e2e9 100644
> > --- a/include/linux/btf_ids.h
> > +++ b/include/linux/btf_ids.h
> > @@ -49,7 +49,7 @@ word                                                  \
> >         ____BTF_ID(symbol, word)
> >
> >  #define __ID(prefix) \
> > -       __PASTE(prefix, __COUNTER__)
> > +       __PASTE(__PASTE(prefix, __COUNTER__), __LINE__)
>
> I think __COUNTER__ and __LINE__ both expand to string literals; you

ah, no I was wrong.

But this change needs to go into tools/include/linux/btf_ids.h, too.

I'll wrap that up in my v3.

> can avoid another expansion via __PASTE by just putting them adjacent,
> like so:
> https://github.com/ClangBuiltLinux/linux/issues/1913#issuecomment-1710794319
> I'll send that as a v2 and link back to your v1.
>
> >
> >  /*
> >   * The BTF_ID defines unique symbol for each ID pointing
> > --
> > 2.41.0
> >
>
>
> --
> Thanks,
> ~Nick Desaulniers



-- 
Thanks,
~Nick Desaulniers





[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux