Re: [PATCH] compiler-gcc.h: Disable __retain on gcc-11
From: Tony Ambardar
Date: Mon Sep 30 2024 - 19:50:42 EST
Hello Geert,
On Tue, Sep 24, 2024 at 08:30:30PM +0200, Geert Uytterhoeven wrote:
> Hi Miguel,
>
> On Tue, Sep 24, 2024 at 7:21 PM Miguel Ojeda
> <miguel.ojeda.sandonis@xxxxxxxxx> wrote:
> > On Tue, Sep 24, 2024 at 3:55 PM Geert Uytterhoeven
> > <geert+renesas@xxxxxxxxx> wrote:
> > > All my gcc-11 compilers (Ubuntu 11.4.0-1ubuntu1~22.04) claim to support
> > > the __retain__ attribute, but only riscv64-linux-gnu-gcc-11 and
> > > x86_64-linux-gnu-gcc-11 (not x86_64-linux-gnux32-gcc-11!) actually do.
> > > The arm-linux-gnueabi-gcc-11.5.0 compiler from kernel.org crosstool
> > > fails in the same way:
[snip]
> What's your definition of "all"? ;-)
>
> 1. All compilers available on Ubuntu 22.04LTS:
>
> aarch64-linux-gnu-gcc-11
> alpha-linux-gnu-gcc-11
> arm-linux-gnueabi-gcc-11
> arm-linux-gnueabihf-gcc-11
> hppa64-linux-gnu-gcc-11
> hppa-linux-gnu-gcc-11
> i686-linux-gnu-gcc-11
> m68k-linux-gnu-gcc-11
> powerpc64le-linux-gnu-gcc-11
> powerpc64-linux-gnu-gcc-11
> powerpc-linux-gnu-gcc-11
> riscv64-linux-gnu-gcc-11
> s390x-linux-gnu-gcc-11
> sh4-linux-gnu-gcc-11
> sparc64-linux-gnu-gcc-11
> x86_64-linux-gnu-gcc-11
> x86_64-linux-gnux32-gcc-11
>
> 2. A few from kernel.org crosstool:
>
> ia64-linux-gcc-11.1.0
> sh2eb-linux-muslfdpic-gcc-11.2.0
> arm-linux-gnueabi-gcc-11.5.0
>
> 3. A compiler from the J-Core folks:
>
> sh2eb-linux-muslfdpic-gcc-11.2.0
>
Thank you for testing the gcc-11 edge so thoroughly. For my testing, I
used a handful of gcc versions across 9 to 13, but ironically only
tried gcc 11 on x86_64 (which works... :-\ ).
> > > +#if GCC_VERSION < 120000
> > > +#undef __retain
> > > +#define __retain
> > > +#endif
> >
> > Should this go into the conditional in `compiler_types.h` instead? And
> > perhaps the `__has__attribute` test removed for GCC?
>
> AFAIK, the gcc-specifics are in compiler-gcc.h...
>
Right, I agree it's best left there.
> > Even if we keep it here, I think at least a comment there should be
> > added, since it says GCC >= 11 supports it, which can be confusing if
> > one is not aware of this other thing in this file.
>
> Fair enough....
Yes, some clarifying text would be helpful e.g.
"Optional: only supported since gcc >= 11 (partial), clang >= 13"
Otherwise LGTM, so:
Reviewed-by: Tony Ambardar <tony.ambardar@xxxxxxxxx>
>
> Gr{oetje,eeting}s,
>
> Geert
>
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx
>
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
> -- Linus Torvalds