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

From: John Baldwin <jhb_at_FreeBSD.org>
Date: Mon, 01 Jul 2024 21:53:09 UTC
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).

-- 
John Baldwin