On 7/1/24 4:09 PM, Warner Losh wrote:
On Mon, Jul 1, 2024, 3:53 PM John Baldwin <j...@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 <i...@freebsd.org>
AuthorDate: 2024-06-20 23:02:56 +0000
Commit:     Warner Losh <i...@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.

So we don't support building the base system with lang/gcc, only
devel/freebsd-gccX (which has a local patch to add printf0 support).
The only question might be, do we support using __printf0like for things
that aren't in the base system that could be built with lang/gcc.  If so,
we might need to guard this somehow.  I'm not sure though that we care
about random software not in base using a FreeBSD-specific keyword from
<sys/cdefs.h>.

--
John Baldwin


Reply via email to