Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 2 Jul 2024 11:44:03 -0400
From:      John Baldwin <jhb@FreeBSD.org>
To:        Warner Losh <imp@bsdimp.com>
Cc:        Warner Losh <imp@freebsd.org>, src-committers <src-committers@freebsd.org>, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org
Subject:   Re: git: 67d1a1cd9e77 - main - cdefs.h: Remove support for pre gcc 4.0
Message-ID:  <df672d3e-8b34-478a-b2a7-1ed7fece0b9b@FreeBSD.org>
In-Reply-To: <CANCZdfrrLWW=JSZ_%2BJcZkbyXnz4Av6dbqn2RBZRyh=8=R6n4zQ@mail.gmail.com>
References:  <202406210241.45L2fOkP057010@gitrepo.freebsd.org> <4ecc814d-5df1-4db8-b9e0-4919895c5e6a@FreeBSD.org> <CANCZdfrrLWW=JSZ_%2BJcZkbyXnz4Av6dbqn2RBZRyh=8=R6n4zQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 7/1/24 4:09 PM, Warner Losh wrote:
> 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.

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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?df672d3e-8b34-478a-b2a7-1ed7fece0b9b>