Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 24 Jun 2024 15:24:05 +0000 (UTC)
From:      Pedro Giffuni <pfg@freebsd.org>
To:        Warner Losh <imp@bsdimp.com>
Cc:        "src-committers@freebsd.org" <src-committers@freebsd.org>,  "dev-commits-src-all@freebsd.org" <dev-commits-src-all@freebsd.org>,  "dev-commits-src-main@freebsd.org" <dev-commits-src-main@freebsd.org>,  Warner Losh <imp@freebsd.org>
Subject:   Re: git: d5c01e1124ff - main - cdefs.h: Remove pre gcc 5.0 support
Message-ID:  <62379069.705510.1719242645494@mail.yahoo.com>
In-Reply-To: <CANCZdfornovuQ4zJMxBqbgdEO7rZu9pF1LyoyKRiuadCyKi02w@mail.gmail.com>
References:  <202406210241.45L2fQZA057110@gitrepo.freebsd.org> <111875645.165697.1719082066518@mail.yahoo.com> <CANCZdfornovuQ4zJMxBqbgdEO7rZu9pF1LyoyKRiuadCyKi02w@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
------=_Part_705509_2096953705.1719242645490
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

 I do welcome the cleanup, of course, just I would have defined GCC 4.2 as =
the breaking point instead of 5.0.
Due basically to the licensing issues, GCC 4.2 became a natural reference f=
or GCC versions.=C2=A0 At some point there were vendors actually shipping F=
reeBSD with GCC 4.2, and it was not a huge cost to keep GCC versions above =
4.2 properly discriminated.
But then you are right that it doesn't really matter that much. At least th=
e alloc_size attributes are only defined for the FORTIFY_SOURCE in some lin=
ux libc implementation that I looked at. We define them unconditionally but=
 I don't recall them being useful.
Just my $0.02.
Pedro.
    On Sunday, June 23, 2024 at 06:45:42 PM GMT-5, Warner Losh <imp@bsdimp.=
com> wrote: =20
=20
 Indeed. But none of the ones that I removed are affected by this quirk sin=
ce they are true for clang all versions.
Warner
On Sat, Jun 22, 2024 at 12:47=E2=80=AFPM Pedro Giffuni <pfg@freebsd.org> wr=
ote:

 It was long ago when I last touched this but FWIW ...

clang used to report itself as GCC 4.2 and kept it's GCC extension support =
level consistent with that version so these version numbers were relevant.
Pedro.
    On Thursday, June 20, 2024 at 09:41:34 PM GMT-5, Warner Losh <imp@freeb=
sd.org> wrote: =20
=20
 The branch main has been updated by imp:

URL: https://cgit.FreeBSD.org/src/commit/?id=3Dd5c01e1124ffa4adb2513e7e8d70=
8d7072dbfc75

commit d5c01e1124ffa4adb2513e7e8d708d7072dbfc75
Author:=C2=A0 =C2=A0 Warner Losh <imp@FreeBSD.org>
AuthorDate: 2024-06-20 23:03:15 +0000
Commit:=C2=A0 =C2=A0 Warner Losh <imp@FreeBSD.org>
CommitDate: 2024-06-21 02:41:09 +0000

=C2=A0 =C2=A0 cdefs.h: Remove pre gcc 5.0 support
=C2=A0 =C2=A0=20
=C2=A0 =C2=A0 Reviewed by:=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 brooks
=C2=A0 =C2=A0 Differential Revision:=C2=A0 https://reviews.freebsd.org/D456=
56
=C2=A0 =C2=A0 Sponsored by:=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Netflix
---
 sys/sys/cdefs.h | 54 -----------------------------------------------------=
-
 1 file changed, 54 deletions(-)

diff --git a/sys/sys/cdefs.h b/sys/sys/cdefs.h
index a6ecdca5d8b9..43d179b82020 100644
--- a/sys/sys/cdefs.h
+++ b/sys/sys/cdefs.h
@@ -164,18 +164,9 @@
 #define=C2=A0=C2=A0=C2=A0 __aligned(x)=C2=A0=C2=A0=C2=A0 __attribute__((__=
aligned__(x)))
 #define=C2=A0=C2=A0=C2=A0 __section(x)=C2=A0=C2=A0=C2=A0 __attribute__((__=
section__(x)))
 #define=C2=A0=C2=A0=C2=A0 __writeonly=C2=A0=C2=A0=C2=A0 __unused
-#if __GNUC_PREREQ__(4, 3) || __has_attribute(__alloc_size__)
 #define=C2=A0=C2=A0=C2=A0 __alloc_size(x)=C2=A0=C2=A0=C2=A0 __attribute__(=
(__alloc_size__(x)))
 #define=C2=A0=C2=A0=C2=A0 __alloc_size2(n, x)=C2=A0=C2=A0=C2=A0 __attribut=
e__((__alloc_size__(n, x)))
-#else
-#define=C2=A0=C2=A0=C2=A0 __alloc_size(x)
-#define=C2=A0=C2=A0=C2=A0 __alloc_size2(n, x)
-#endif
-#if __GNUC_PREREQ__(4, 9) || __has_attribute(__alloc_align__)
 #define=C2=A0=C2=A0=C2=A0 __alloc_align(x)=C2=A0=C2=A0=C2=A0 __attribute__=
((__alloc_align__(x)))
-#else
-#define=C2=A0=C2=A0=C2=A0 __alloc_align(x)
-#endif
=20
 /*
=C2=A0 * Keywords added in C11.
@@ -199,15 +190,6 @@
 #define=C2=A0=C2=A0=C2=A0 _Alignof(x)=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0=
 __alignof(x)
 #endif
=20
-#if !defined(__cplusplus) && !__has_extension(c_atomic) && \
-=C2=A0=C2=A0=C2=A0 !__has_extension(cxx_atomic) && !__GNUC_PREREQ__(4, 7)
-/*
- * No native support for _Atomic(). Place object in structure to prevent
- * most forms of direct non-atomic access.
- */
-#define=C2=A0=C2=A0=C2=A0 _Atomic(T)=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =
struct { T volatile __val; }
-#endif
-
 #if defined(__cplusplus) && __cplusplus >=3D 201103L
 #define=C2=A0=C2=A0=C2=A0 _Noreturn=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 [=
[noreturn]]
 #else
@@ -218,15 +200,6 @@
 #if (defined(__cplusplus) && __cplusplus >=3D 201103L) || \
=C2=A0 =C2=A0 __has_extension(cxx_static_assert)
 #define=C2=A0=C2=A0=C2=A0 _Static_assert(x, y)=C2=A0=C2=A0=C2=A0 static_as=
sert(x, y)
-#elif __GNUC_PREREQ__(4,6) && !defined(__cplusplus)
-/* Nothing, gcc 4.6 and higher has _Static_assert built-in */
-#elif defined(__COUNTER__)
-#define=C2=A0=C2=A0=C2=A0 _Static_assert(x, y)=C2=A0=C2=A0=C2=A0 __Static_=
assert(x, __COUNTER__)
-#define=C2=A0=C2=A0=C2=A0 __Static_assert(x, y)=C2=A0=C2=A0=C2=A0 ___Stati=
c_assert(x, y)
-#define=C2=A0=C2=A0=C2=A0 ___Static_assert(x, y)=C2=A0=C2=A0=C2=A0 typedef=
 char __assert_ ## y[(x) ? 1 : -1] \
-=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=
=A0 __unused
-#else
-#define=C2=A0=C2=A0=C2=A0 _Static_assert(x, y)=C2=A0=C2=A0=C2=A0 struct __=
hack
 #endif
 #endif
=20
@@ -276,7 +249,6 @@
=C2=A0 * void bar(int myArray[__min_size(10)]);
=C2=A0 */
 #if !defined(__cplusplus) && \
-=C2=A0 =C2=A0 (defined(__clang__) || __GNUC_PREREQ__(4, 6)) && \
=C2=A0 =C2=A0 (!defined(__STDC_VERSION__) || (__STDC_VERSION__ >=3D 199901)=
)
 #define __min_size(x)=C2=A0=C2=A0=C2=A0 static (x)
 #else
@@ -302,17 +274,9 @@
 #define=C2=A0=C2=A0=C2=A0 __result_use_or_ignore_check
 #endif /* !__clang__ */
=20
-#if __GNUC_PREREQ__(4, 1)
 #define=C2=A0=C2=A0=C2=A0 __returns_twice=C2=A0=C2=A0=C2=A0 __attribute__(=
(__returns_twice__))
-#else
-#define=C2=A0=C2=A0=C2=A0 __returns_twice
-#endif
=20
-#if __GNUC_PREREQ__(4, 6) || __has_builtin(__builtin_unreachable)
 #define=C2=A0=C2=A0=C2=A0 __unreachable()=C2=A0=C2=A0=C2=A0 __builtin_unre=
achable()
-#else
-#define=C2=A0=C2=A0=C2=A0 __unreachable()=C2=A0=C2=A0=C2=A0 ((void)0)
-#endif
=20
 #if !defined(__STRICT_ANSI__) || __STDC_VERSION__ >=3D 199901
 #define=C2=A0=C2=A0=C2=A0 __LONG_LONG_SUPPORTED
@@ -353,33 +317,15 @@
 #define=C2=A0=C2=A0=C2=A0 __predict_true(exp)=C2=A0 =C2=A0 __builtin_expec=
t((exp), 1)
 #define=C2=A0=C2=A0=C2=A0 __predict_false(exp)=C2=A0 =C2=A0 __builtin_expe=
ct((exp), 0)
=20
-#if __GNUC_PREREQ__(4, 0)
 #define=C2=A0=C2=A0=C2=A0 __null_sentinel=C2=A0=C2=A0=C2=A0 __attribute__(=
(__sentinel__))
 #define=C2=A0=C2=A0=C2=A0 __exported=C2=A0=C2=A0=C2=A0 __attribute__((__vi=
sibility__("default")))
 #define=C2=A0=C2=A0=C2=A0 __hidden=C2=A0=C2=A0=C2=A0 __attribute__((__visi=
bility__("hidden")))
-#else
-#define=C2=A0=C2=A0=C2=A0 __null_sentinel
-#define=C2=A0=C2=A0=C2=A0 __exported
-#define=C2=A0=C2=A0=C2=A0 __hidden
-#endif
=20
 /*
=C2=A0 * We define this here since <stddef.h>, <sys/queue.h>, and <sys/type=
s.h>
=C2=A0 * require it.
=C2=A0 */
-#if __GNUC_PREREQ__(4, 1)
 #define=C2=A0=C2=A0=C2=A0 __offsetof(type, field)=C2=A0=C2=A0=C2=A0 __buil=
tin_offsetof(type, field)
-#else
-#ifndef __cplusplus
-#define=C2=A0=C2=A0=C2=A0 __offsetof(type, field) \
-=C2=A0=C2=A0=C2=A0 ((__size_t)(__uintptr_t)((const volatile void *)&((type=
 *)0)->field))
-#else
-#define=C2=A0=C2=A0=C2=A0 __offsetof(type, field)=C2=A0=C2=A0=C2=A0 =C2=A0=
=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 \
-=C2=A0 (__offsetof__ (reinterpret_cast <__size_t>=C2=A0=C2=A0=C2=A0 =C2=A0=
=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 \
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (&reinterpret_cast=
 <const volatile char &>=C2=A0=C2=A0=C2=A0 \
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (static_cas=
t<type *> (0)->field))))
-#endif
-#endif
 #define=C2=A0=C2=A0=C2=A0 __rangeof(type, start, end) \
 =C2=A0=C2=A0=C2=A0 (__offsetof(type, end) - __offsetof(type, start))
=20
 =20
 =20
------=_Part_705509_2096953705.1719242645490
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<html><head></head><body><div class=3D"ydp79c36634yahoo-style-wrap" style=
=3D"font-family:Helvetica Neue, Helvetica, Arial, sans-serif;font-size:16px=
;"><div></div>
        <div dir=3D"ltr" data-setdir=3D"false"><div><div dir=3D"ltr" data-s=
etdir=3D"false" style=3D"color: rgb(0, 0, 0); font-family: Helvetica Neue, =
Helvetica, Arial, sans-serif; font-size: 16px; outline: none !important;"><=
span style=3D"outline: none !important;">I do welcome the cleanup, of cours=
e, just I would have defined GCC 4.2 as the breaking point instead of 5.0.<=
/span></div><div><br></div></div></div><div dir=3D"ltr" data-setdir=3D"fals=
e">Due basically to the licensing issues, GCC 4.2 became a natural referenc=
e for GCC versions.&nbsp; At some point there were vendors actually shippin=
g FreeBSD with GCC 4.2, and i<span><span style=3D"color: rgb(0, 0, 0); font=
-family: Helvetica Neue, Helvetica, Arial, sans-serif; font-size: 16px;">t =
was not a huge cost to keep GCC versions above 4.2 properly discriminated.<=
/span></span></div><div dir=3D"ltr" data-setdir=3D"false"><span><span style=
=3D"color: rgb(0, 0, 0); font-family: Helvetica Neue, Helvetica, Arial, san=
s-serif; font-size: 16px;"><br></span></span></div><div dir=3D"ltr" data-se=
tdir=3D"false"><span><span style=3D"color: rgb(0, 0, 0); font-family: Helve=
tica Neue, Helvetica, Arial, sans-serif; font-size: 16px;">But then you are=
 right that it doesn't really matter that much. At least the alloc_size att=
ributes are only defined for the FORTIFY_SOURCE in some linux libc implemen=
tation that I looked at. We define them unconditionally but I don't recall =
them being useful.</span></span></div><div dir=3D"ltr" data-setdir=3D"false=
"><span><div><div><br></div><div><div dir=3D"ltr" data-setdir=3D"false">Jus=
t my $0.02.</div></div></div></span></div><div dir=3D"ltr" data-setdir=3D"f=
alse"><br></div><div dir=3D"ltr" data-setdir=3D"false"><span><span style=3D=
"color: rgb(0, 0, 0); font-family: Helvetica Neue, Helvetica, Arial, sans-s=
erif; font-size: 16px;">Pedro.</span></span></div><div><br></div>
       =20
        </div><div id=3D"ydp834b9de9yahoo_quoted_9244353655" class=3D"ydp83=
4b9de9yahoo_quoted">
            <div style=3D"font-family:'Helvetica Neue', Helvetica, Arial, s=
ans-serif;font-size:13px;color:#26282a;">
               =20
                <div>
                        On Sunday, June 23, 2024 at 06:45:42 PM GMT-5, Warn=
er Losh &lt;imp@bsdimp.com&gt; wrote:
                    </div>
                    <div><br></div>
                    <div><br></div>
               =20
               =20
                <div><div id=3D"ydp834b9de9yiv0721428442"><div><div dir=3D"=
ltr">Indeed. But none of the ones that I removed are affected by this quirk=
 since they are true for clang all versions.<div><br clear=3D"none"></div><=
div>Warner</div></div><br clear=3D"none"><div id=3D"ydp834b9de9yiv072142844=
2yqt79096" class=3D"ydp834b9de9yiv0721428442yqt7173260478"><div class=3D"yd=
p834b9de9yiv0721428442gmail_quote"><div dir=3D"ltr" class=3D"ydp834b9de9yiv=
0721428442gmail_attr">On Sat, Jun 22, 2024 at 12:47=E2=80=AFPM Pedro Giffun=
i &lt;<a shape=3D"rect" href=3D"mailto:pfg@freebsd.org" rel=3D"nofollow" ta=
rget=3D"_blank">pfg@freebsd.org</a>&gt; wrote:<br clear=3D"none"></div><blo=
ckquote style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204=
,204);padding-left:1ex;" class=3D"ydp834b9de9yiv0721428442gmail_quote"><div=
><div style=3D"font-family:Helvetica, Arial, sans-serif;font-size:16px;"><d=
iv></div>
        <div dir=3D"ltr">It was long ago when I last touched this but FWIW =
...<br clear=3D"none"></div><div dir=3D"ltr"><br clear=3D"none"></div><div =
dir=3D"ltr">clang used to report itself as GCC 4.2 and kept it's GCC extens=
ion support level consistent with that version so these version numbers wer=
e relevant.</div><div dir=3D"ltr"><br clear=3D"none"></div><div dir=3D"ltr"=
>Pedro.</div><div><br clear=3D"none"></div>
       =20
        </div><div id=3D"ydp834b9de9yiv0721428442m_160829819354664847ydp305=
8622eyahoo_quoted_9708121018">
            <div style=3D"font-family:Helvetica, Arial, sans-serif;font-siz=
e:13px;color:rgb(38,40,42);">
               =20
                <div>
                        On Thursday, June 20, 2024 at 09:41:34 PM GMT-5, Wa=
rner Losh &lt;<a shape=3D"rect" href=3D"mailto:imp@freebsd.org" rel=3D"nofo=
llow" target=3D"_blank">imp@freebsd.org</a>&gt; wrote:
                    </div>
                    <div><br clear=3D"none"></div>
                    <div><br clear=3D"none"></div>
               =20
               =20
                <div><div dir=3D"ltr">The branch main has been updated by i=
mp:<br clear=3D"none"></div><div dir=3D"ltr"><br clear=3D"none"></div><div =
dir=3D"ltr">URL: <a shape=3D"rect" href=3D"https://cgit.FreeBSD.org/src/com=
mit/?id=3Dd5c01e1124ffa4adb2513e7e8d708d7072dbfc75" rel=3D"nofollow" target=
=3D"_blank">https://cgit.FreeBSD.org/src/commit/?id=3Dd5c01e1124ffa4adb2513=
e7e8d708d7072dbfc75</a><br clear=3D"none"></div><div dir=3D"ltr"><br clear=
=3D"none"></div><div dir=3D"ltr">commit d5c01e1124ffa4adb2513e7e8d708d7072d=
bfc75<br clear=3D"none"></div><div dir=3D"ltr">Author:&nbsp; &nbsp;  Warner=
 Losh &lt;<a shape=3D"rect" href=3D"mailto:imp@FreeBSD.org" rel=3D"nofollow=
" target=3D"_blank">imp@FreeBSD.org</a>&gt;<br clear=3D"none"></div><div di=
r=3D"ltr">AuthorDate: 2024-06-20 23:03:15 +0000<br clear=3D"none"></div><di=
v dir=3D"ltr">Commit:&nbsp; &nbsp;  Warner Losh &lt;<a shape=3D"rect" href=
=3D"mailto:imp@FreeBSD.org" rel=3D"nofollow" target=3D"_blank">imp@FreeBSD.=
org</a>&gt;<br clear=3D"none"></div><div dir=3D"ltr">CommitDate: 2024-06-21=
 02:41:09 +0000<br clear=3D"none"></div><div dir=3D"ltr"><br clear=3D"none"=
></div><div dir=3D"ltr">&nbsp; &nbsp; cdefs.h: Remove pre gcc 5.0 support<b=
r clear=3D"none"></div><div dir=3D"ltr">&nbsp; &nbsp; <br clear=3D"none"></=
div><div dir=3D"ltr">&nbsp; &nbsp; Reviewed by:&nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; brooks<br clear=3D"none"></div><div dir=3D"ltr">&nbsp; &nbsp;=
 Differential Revision:&nbsp; <a shape=3D"rect" href=3D"https://reviews.fre=
ebsd.org/D45656" rel=3D"nofollow" target=3D"_blank">https://reviews.freebsd=
.org/D45656</a><br clear=3D"none"></div><div dir=3D"ltr">&nbsp; &nbsp; Spon=
sored by:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  Netflix<br clear=3D"none"></di=
v><div dir=3D"ltr">---<br clear=3D"none"></div><div dir=3D"ltr"> sys/sys/cd=
efs.h | 54 ------------------------------------------------------<br clear=
=3D"none"></div><div dir=3D"ltr"> 1 file changed, 54 deletions(-)<br clear=
=3D"none"></div><div dir=3D"ltr"><br clear=3D"none"></div><div dir=3D"ltr">=
diff --git a/sys/sys/cdefs.h b/sys/sys/cdefs.h<br clear=3D"none"></div><div=
 dir=3D"ltr">index a6ecdca5d8b9..43d179b82020 100644<br clear=3D"none"></di=
v><div dir=3D"ltr">--- a/sys/sys/cdefs.h<br clear=3D"none"></div><div dir=
=3D"ltr">+++ b/sys/sys/cdefs.h<br clear=3D"none"></div><div dir=3D"ltr">@@ =
-164,18 +164,9 @@<br clear=3D"none"></div><div dir=3D"ltr"> #define&nbsp;&n=
bsp;&nbsp; __aligned(x)&nbsp;&nbsp;&nbsp; __attribute__((__aligned__(x)))<b=
r clear=3D"none"></div><div dir=3D"ltr"> #define&nbsp;&nbsp;&nbsp; __sectio=
n(x)&nbsp;&nbsp;&nbsp; __attribute__((__section__(x)))<br clear=3D"none"></=
div><div dir=3D"ltr"> #define&nbsp;&nbsp;&nbsp; __writeonly&nbsp;&nbsp;&nbs=
p; __unused<br clear=3D"none"></div><div dir=3D"ltr">-#if __GNUC_PREREQ__(4=
, 3) || __has_attribute(__alloc_size__)<br clear=3D"none"></div><div dir=3D=
"ltr"> #define&nbsp;&nbsp;&nbsp; __alloc_size(x)&nbsp;&nbsp;&nbsp; __attrib=
ute__((__alloc_size__(x)))<br clear=3D"none"></div><div dir=3D"ltr"> #defin=
e&nbsp;&nbsp;&nbsp; __alloc_size2(n, x)&nbsp;&nbsp;&nbsp; __attribute__((__=
alloc_size__(n, x)))<br clear=3D"none"></div><div dir=3D"ltr">-#else<br cle=
ar=3D"none"></div><div dir=3D"ltr">-#define&nbsp;&nbsp;&nbsp; __alloc_size(=
x)<br clear=3D"none"></div><div dir=3D"ltr">-#define&nbsp;&nbsp;&nbsp; __al=
loc_size2(n, x)<br clear=3D"none"></div><div dir=3D"ltr">-#endif<br clear=
=3D"none"></div><div dir=3D"ltr">-#if __GNUC_PREREQ__(4, 9) || __has_attrib=
ute(__alloc_align__)<br clear=3D"none"></div><div dir=3D"ltr"> #define&nbsp=
;&nbsp;&nbsp; __alloc_align(x)&nbsp;&nbsp;&nbsp; __attribute__((__alloc_ali=
gn__(x)))<br clear=3D"none"></div><div dir=3D"ltr">-#else<br clear=3D"none"=
></div><div dir=3D"ltr">-#define&nbsp;&nbsp;&nbsp; __alloc_align(x)<br clea=
r=3D"none"></div><div dir=3D"ltr">-#endif<br clear=3D"none"></div><div dir=
=3D"ltr"> <br clear=3D"none"></div><div dir=3D"ltr"> /*<br clear=3D"none"><=
/div><div dir=3D"ltr">&nbsp; * Keywords added in C11.<br clear=3D"none"></d=
iv><div dir=3D"ltr">@@ -199,15 +190,6 @@<br clear=3D"none"></div><div dir=
=3D"ltr"> #define&nbsp;&nbsp;&nbsp; _Alignof(x)&nbsp;&nbsp;&nbsp; &nbsp;&nb=
sp;&nbsp; __alignof(x)<br clear=3D"none"></div><div dir=3D"ltr"> #endif<br =
clear=3D"none"></div><div dir=3D"ltr"> <br clear=3D"none"></div><div dir=3D=
"ltr">-#if !defined(__cplusplus) &amp;&amp; !__has_extension(c_atomic) &amp=
;&amp; \<br clear=3D"none"></div><div dir=3D"ltr">-&nbsp;&nbsp;&nbsp; !__ha=
s_extension(cxx_atomic) &amp;&amp; !__GNUC_PREREQ__(4, 7)<br clear=3D"none"=
></div><div dir=3D"ltr">-/*<br clear=3D"none"></div><div dir=3D"ltr">- * No=
 native support for _Atomic(). Place object in structure to prevent<br clea=
r=3D"none"></div><div dir=3D"ltr">- * most forms of direct non-atomic acces=
s.<br clear=3D"none"></div><div dir=3D"ltr">- */<br clear=3D"none"></div><d=
iv dir=3D"ltr">-#define&nbsp;&nbsp;&nbsp; _Atomic(T)&nbsp;&nbsp;&nbsp; &nbs=
p;&nbsp;&nbsp; struct { T volatile __val; }<br clear=3D"none"></div><div di=
r=3D"ltr">-#endif<br clear=3D"none"></div><div dir=3D"ltr">-<br clear=3D"no=
ne"></div><div dir=3D"ltr"> #if defined(__cplusplus) &amp;&amp; __cplusplus=
 &gt;=3D 201103L<br clear=3D"none"></div><div dir=3D"ltr"> #define&nbsp;&nb=
sp;&nbsp; _Noreturn&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [[noreturn]]<br cl=
ear=3D"none"></div><div dir=3D"ltr"> #else<br clear=3D"none"></div><div dir=
=3D"ltr">@@ -218,15 +200,6 @@<br clear=3D"none"></div><div dir=3D"ltr"> #if=
 (defined(__cplusplus) &amp;&amp; __cplusplus &gt;=3D 201103L) || \<br clea=
r=3D"none"></div><div dir=3D"ltr">&nbsp; &nbsp;  __has_extension(cxx_static=
_assert)<br clear=3D"none"></div><div dir=3D"ltr"> #define&nbsp;&nbsp;&nbsp=
; _Static_assert(x, y)&nbsp;&nbsp;&nbsp; static_assert(x, y)<br clear=3D"no=
ne"></div><div dir=3D"ltr">-#elif __GNUC_PREREQ__(4,6) &amp;&amp; !defined(=
__cplusplus)<br clear=3D"none"></div><div dir=3D"ltr">-/* Nothing, gcc 4.6 =
and higher has _Static_assert built-in */<br clear=3D"none"></div><div dir=
=3D"ltr">-#elif defined(__COUNTER__)<br clear=3D"none"></div><div dir=3D"lt=
r">-#define&nbsp;&nbsp;&nbsp; _Static_assert(x, y)&nbsp;&nbsp;&nbsp; __Stat=
ic_assert(x, __COUNTER__)<br clear=3D"none"></div><div dir=3D"ltr">-#define=
&nbsp;&nbsp;&nbsp; __Static_assert(x, y)&nbsp;&nbsp;&nbsp; ___Static_assert=
(x, y)<br clear=3D"none"></div><div dir=3D"ltr">-#define&nbsp;&nbsp;&nbsp; =
___Static_assert(x, y)&nbsp;&nbsp;&nbsp; typedef char __assert_ ## y[(x) ? =
1 : -1] \<br clear=3D"none"></div><div dir=3D"ltr">-&nbsp;&nbsp;&nbsp; &nbs=
p;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; __unused<br clear=3D"n=
one"></div><div dir=3D"ltr">-#else<br clear=3D"none"></div><div dir=3D"ltr"=
>-#define&nbsp;&nbsp;&nbsp; _Static_assert(x, y)&nbsp;&nbsp;&nbsp; struct _=
_hack<br clear=3D"none"></div><div dir=3D"ltr"> #endif<br clear=3D"none"></=
div><div dir=3D"ltr"> #endif<br clear=3D"none"></div><div dir=3D"ltr"> <br =
clear=3D"none"></div><div dir=3D"ltr">@@ -276,7 +249,6 @@<br clear=3D"none"=
></div><div dir=3D"ltr">&nbsp; * void bar(int myArray[__min_size(10)]);<br =
clear=3D"none"></div><div dir=3D"ltr">&nbsp; */<br clear=3D"none"></div><di=
v dir=3D"ltr"> #if !defined(__cplusplus) &amp;&amp; \<br clear=3D"none"></d=
iv><div dir=3D"ltr">-&nbsp; &nbsp; (defined(__clang__) || __GNUC_PREREQ__(4=
, 6)) &amp;&amp; \<br clear=3D"none"></div><div dir=3D"ltr">&nbsp; &nbsp;  =
(!defined(__STDC_VERSION__) || (__STDC_VERSION__ &gt;=3D 199901))<br clear=
=3D"none"></div><div dir=3D"ltr"> #define __min_size(x)&nbsp;&nbsp;&nbsp; s=
tatic (x)<br clear=3D"none"></div><div dir=3D"ltr"> #else<br clear=3D"none"=
></div><div dir=3D"ltr">@@ -302,17 +274,9 @@<br clear=3D"none"></div><div d=
ir=3D"ltr"> #define&nbsp;&nbsp;&nbsp; __result_use_or_ignore_check<br clear=
=3D"none"></div><div dir=3D"ltr"> #endif /* !__clang__ */<br clear=3D"none"=
></div><div dir=3D"ltr"> <br clear=3D"none"></div><div dir=3D"ltr">-#if __G=
NUC_PREREQ__(4, 1)<br clear=3D"none"></div><div dir=3D"ltr"> #define&nbsp;&=
nbsp;&nbsp; __returns_twice&nbsp;&nbsp;&nbsp; __attribute__((__returns_twic=
e__))<br clear=3D"none"></div><div dir=3D"ltr">-#else<br clear=3D"none"></d=
iv><div dir=3D"ltr">-#define&nbsp;&nbsp;&nbsp; __returns_twice<br clear=3D"=
none"></div><div dir=3D"ltr">-#endif<br clear=3D"none"></div><div dir=3D"lt=
r"> <br clear=3D"none"></div><div dir=3D"ltr">-#if __GNUC_PREREQ__(4, 6) ||=
 __has_builtin(__builtin_unreachable)<br clear=3D"none"></div><div dir=3D"l=
tr"> #define&nbsp;&nbsp;&nbsp; __unreachable()&nbsp;&nbsp;&nbsp; __builtin_=
unreachable()<br clear=3D"none"></div><div dir=3D"ltr">-#else<br clear=3D"n=
one"></div><div dir=3D"ltr">-#define&nbsp;&nbsp;&nbsp; __unreachable()&nbsp=
;&nbsp;&nbsp; ((void)0)<br clear=3D"none"></div><div dir=3D"ltr">-#endif<br=
 clear=3D"none"></div><div dir=3D"ltr"> <br clear=3D"none"></div><div dir=
=3D"ltr"> #if !defined(__STRICT_ANSI__) || __STDC_VERSION__ &gt;=3D 199901<=
br clear=3D"none"></div><div dir=3D"ltr"> #define&nbsp;&nbsp;&nbsp; __LONG_=
LONG_SUPPORTED<br clear=3D"none"></div><div dir=3D"ltr">@@ -353,33 +317,15 =
@@<br clear=3D"none"></div><div dir=3D"ltr"> #define&nbsp;&nbsp;&nbsp; __pr=
edict_true(exp)&nbsp; &nbsp;  __builtin_expect((exp), 1)<br clear=3D"none">=
</div><div dir=3D"ltr"> #define&nbsp;&nbsp;&nbsp; __predict_false(exp)&nbsp=
; &nbsp; __builtin_expect((exp), 0)<br clear=3D"none"></div><div dir=3D"ltr=
"> <br clear=3D"none"></div><div dir=3D"ltr">-#if __GNUC_PREREQ__(4, 0)<br =
clear=3D"none"></div><div dir=3D"ltr"> #define&nbsp;&nbsp;&nbsp; __null_sen=
tinel&nbsp;&nbsp;&nbsp; __attribute__((__sentinel__))<br clear=3D"none"></d=
iv><div dir=3D"ltr"> #define&nbsp;&nbsp;&nbsp; __exported&nbsp;&nbsp;&nbsp;=
 __attribute__((__visibility__("default")))<br clear=3D"none"></div><div di=
r=3D"ltr"> #define&nbsp;&nbsp;&nbsp; __hidden&nbsp;&nbsp;&nbsp; __attribute=
__((__visibility__("hidden")))<br clear=3D"none"></div><div dir=3D"ltr">-#e=
lse<br clear=3D"none"></div><div dir=3D"ltr">-#define&nbsp;&nbsp;&nbsp; __n=
ull_sentinel<br clear=3D"none"></div><div dir=3D"ltr">-#define&nbsp;&nbsp;&=
nbsp; __exported<br clear=3D"none"></div><div dir=3D"ltr">-#define&nbsp;&nb=
sp;&nbsp; __hidden<br clear=3D"none"></div><div dir=3D"ltr">-#endif<br clea=
r=3D"none"></div><div dir=3D"ltr"> <br clear=3D"none"></div><div dir=3D"ltr=
"> /*<br clear=3D"none"></div><div dir=3D"ltr">&nbsp; * We define this here=
 since &lt;stddef.h&gt;, &lt;sys/queue.h&gt;, and &lt;sys/types.h&gt;<br cl=
ear=3D"none"></div><div dir=3D"ltr">&nbsp; * require it.<br clear=3D"none">=
</div><div dir=3D"ltr">&nbsp; */<br clear=3D"none"></div><div dir=3D"ltr">-=
#if __GNUC_PREREQ__(4, 1)<br clear=3D"none"></div><div dir=3D"ltr"> #define=
&nbsp;&nbsp;&nbsp; __offsetof(type, field)&nbsp;&nbsp;&nbsp;  __builtin_off=
setof(type, field)<br clear=3D"none"></div><div dir=3D"ltr">-#else<br clear=
=3D"none"></div><div dir=3D"ltr">-#ifndef __cplusplus<br clear=3D"none"></d=
iv><div dir=3D"ltr">-#define&nbsp;&nbsp;&nbsp; __offsetof(type, field) \<br=
 clear=3D"none"></div><div dir=3D"ltr">-&nbsp;&nbsp;&nbsp; ((__size_t)(__ui=
ntptr_t)((const volatile void *)&amp;((type *)0)-&gt;field))<br clear=3D"no=
ne"></div><div dir=3D"ltr">-#else<br clear=3D"none"></div><div dir=3D"ltr">=
-#define&nbsp;&nbsp;&nbsp; __offsetof(type, field)&nbsp;&nbsp;&nbsp; &nbsp;=
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; \<br =
clear=3D"none"></div><div dir=3D"ltr">-&nbsp; (__offsetof__ (reinterpret_ca=
st &lt;__size_t&gt;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;=
 \<br clear=3D"none"></div><div dir=3D"ltr">-&nbsp; &nbsp; &nbsp; &nbsp; &n=
bsp; &nbsp; &nbsp; &nbsp;  (&amp;reinterpret_cast &lt;const volatile char &=
amp;&gt;&nbsp;&nbsp;&nbsp; \<br clear=3D"none"></div><div dir=3D"ltr">-&nbs=
p; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (static_cast&lt;=
type *&gt; (0)-&gt;field))))<br clear=3D"none"></div><div dir=3D"ltr">-#end=
if<br clear=3D"none"></div><div dir=3D"ltr">-#endif<br clear=3D"none"></div=
><div dir=3D"ltr"> #define&nbsp;&nbsp;&nbsp; __rangeof(type, start, end) \<=
br clear=3D"none"></div><div dir=3D"ltr"> &nbsp;&nbsp;&nbsp; (__offsetof(ty=
pe, end) - __offsetof(type, start))<br clear=3D"none"></div><div dir=3D"ltr=
"> <br clear=3D"none"></div></div>
            </div>
        </div></div></blockquote></div></div>
</div></div></div>
            </div>
        </div></body></html>
------=_Part_705509_2096953705.1719242645490--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?62379069.705510.1719242645494>