Re: git: 67d1a1cd9e77 - main - cdefs.h: Remove support for pre gcc 4.0

From: Warner Losh <imp_at_bsdimp.com>
Date: Mon, 01 Jul 2024 23:09:24 UTC
On Mon, Jul 1, 2024, 3:53 PM John Baldwin <jhb@freebsd.org> wrote:

> On 6/20/24 7:41 PM, Warner Losh wrote:
> > The branch main has been updated by imp:
> >
> > URL:
> https://cgit.FreeBSD.org/src/commit/?id=67d1a1cd9e772e2ef94003579f4fbc271d38be7d
> >
> > commit 67d1a1cd9e772e2ef94003579f4fbc271d38be7d
> > Author:     Warner Losh <imp@FreeBSD.org>
> > AuthorDate: 2024-06-20 23:02:56 +0000
> > Commit:     Warner Losh <imp@FreeBSD.org>
> > CommitDate: 2024-06-21 02:41:08 +0000
> >
> >      cdefs.h: Remove support for pre gcc 4.0
> >
> >      All supported compilers support the gcc 3 attribute extensions.
> Remove
> >      the #else clauses for this. Also, latter-day pcc compilers also
> define
> >      __GNUC__, so there's not need to also test for __PCC__.
> >
> >      Reviewed by:            brooks
> >      Differential Revision:  https://reviews.freebsd.org/D45654
> >      Sponsored by:           Netflix
> > ---
> >   sys/sys/cdefs.h | 42 ++++--------------------------------------
> >   1 file changed, 4 insertions(+), 38 deletions(-)
> >
> > diff --git a/sys/sys/cdefs.h b/sys/sys/cdefs.h
> > index 88019819eb35..a6ecdca5d8b9 100644
> > --- a/sys/sys/cdefs.h
> > +++ b/sys/sys/cdefs.h
> > @@ -408,15 +389,10 @@
> >    * assign pointer x to a local variable, to check that its type is
> >    * compatible with member m.
> >    */
> > -#if __GNUC_PREREQ__(3, 1)
> >   #define     __containerof(x, s, m) ({
>      \
> >       const volatile __typeof(((s *)0)->m) *__x = (x);                \
> >       __DEQUALIFY(s *, (const volatile char *)__x - __offsetof(s, m));\
> >   })
> > -#else
> > -#define      __containerof(x, s, m)
>       \
> > -     __DEQUALIFY(s *, (const volatile char *)(x) - __offsetof(s, m))
> > -#endif
> >
> >   /*
> >    * Compiler-dependent macros to declare that functions take printf-like
> > @@ -434,14 +410,8 @@
> >   #define     __strftimelike(fmtarg, firstvararg) \
> >           __attribute__((__format__ (__strftime__, fmtarg, firstvararg)))
> >
> > -/* Compiler-dependent macros that rely on FreeBSD-specific extensions.
> */
> > -#if defined(__FreeBSD_cc_version) && __FreeBSD_cc_version >= 300001 && \
> > -    defined(__GNUC__)
> >   #define     __printf0like(fmtarg, firstvararg) \
> >           __attribute__((__format__ (__printf0__, fmtarg, firstvararg)))
> > -#else
> > -#define      __printf0like(fmtarg, firstvararg)
> > -#endif
>
> Does this still work with external GCC?  I didn't think printf0 was
> supported
> by external GCC (or maybe I had to readd it in the port and that's what I
> remember).  Ah, yes, printf0 is a local patch in the devel/freebsd-gccX
> ports, but is not available in stock GCC (e.g. lang/gcc does not support
> it).
>

Ah. That would explain why it just worked for me. That's what I tested
with. Clang also seemed happy with it. But that was the in tree clang. Is
there a similar issue? Gnuc is defined for both.

Warner

-- 
> John Baldwin
>
>