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. 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 <imp@bsdimp.com> 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 <<a shape=3D"rect" href=3D"mailto:pfg@freebsd.org" rel=3D"nofollow" ta= rget=3D"_blank">pfg@freebsd.org</a>> 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 <<a shape=3D"rect" href=3D"mailto:imp@freebsd.org" rel=3D"nofo= llow" target=3D"_blank">imp@freebsd.org</a>> 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: Warner= Losh <<a shape=3D"rect" href=3D"mailto:imp@FreeBSD.org" rel=3D"nofollow= " target=3D"_blank">imp@FreeBSD.org</a>><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: Warner Losh <<a shape=3D"rect" href= =3D"mailto:imp@FreeBSD.org" rel=3D"nofollow" target=3D"_blank">imp@FreeBSD.= org</a>><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"> cdefs.h: Remove pre gcc 5.0 support<b= r clear=3D"none"></div><div dir=3D"ltr"> <br clear=3D"none"></= div><div dir=3D"ltr"> Reviewed by: = brooks<br clear=3D"none"></div><div dir=3D"ltr"> = Differential Revision: <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"> Spon= sored by: 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 &n= bsp; __aligned(x) __attribute__((__aligned__(x)))<b= r clear=3D"none"></div><div dir=3D"ltr"> #define __sectio= n(x) __attribute__((__section__(x)))<br clear=3D"none"></= div><div dir=3D"ltr"> #define __writeonly &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 __alloc_size(x) __attrib= ute__((__alloc_size__(x)))<br clear=3D"none"></div><div dir=3D"ltr"> #defin= e __alloc_size2(n, x) __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 __alloc_size(= x)<br clear=3D"none"></div><div dir=3D"ltr">-#define __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 = ; __alloc_align(x) __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 __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"> * 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 _Alignof(x) &nb= sp; __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) && !__has_extension(c_atomic) &= ;& \<br clear=3D"none"></div><div dir=3D"ltr">- !__ha= s_extension(cxx_atomic) && !__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 _Atomic(T) &nbs= p; 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) && __cplusplus= >=3D 201103L<br clear=3D"none"></div><div dir=3D"ltr"> #define &nb= sp; _Noreturn [[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) && __cplusplus >=3D 201103L) || \<br clea= r=3D"none"></div><div dir=3D"ltr"> __has_extension(cxx_static= _assert)<br clear=3D"none"></div><div dir=3D"ltr"> #define  = ; _Static_assert(x, y) static_assert(x, y)<br clear=3D"no= ne"></div><div dir=3D"ltr">-#elif __GNUC_PREREQ__(4,6) && !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 _Static_assert(x, y) __Stat= ic_assert(x, __COUNTER__)<br clear=3D"none"></div><div dir=3D"ltr">-#define= __Static_assert(x, y) ___Static_assert= (x, y)<br clear=3D"none"></div><div dir=3D"ltr">-#define = ___Static_assert(x, y) typedef char __assert_ ## y[(x) ? = 1 : -1] \<br clear=3D"none"></div><div dir=3D"ltr">- &nbs= p; __unused<br clear=3D"n= one"></div><div dir=3D"ltr">-#else<br clear=3D"none"></div><div dir=3D"ltr"= >-#define _Static_assert(x, y) 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"> * void bar(int myArray[__min_size(10)]);<br = clear=3D"none"></div><div dir=3D"ltr"> */<br clear=3D"none"></div><di= v dir=3D"ltr"> #if !defined(__cplusplus) && \<br clear=3D"none"></d= iv><div dir=3D"ltr">- (defined(__clang__) || __GNUC_PREREQ__(4= , 6)) && \<br clear=3D"none"></div><div dir=3D"ltr"> = (!defined(__STDC_VERSION__) || (__STDC_VERSION__ >=3D 199901))<br clear= =3D"none"></div><div dir=3D"ltr"> #define __min_size(x) 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 __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; __returns_twice __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 __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 __unreachable() __builtin_= unreachable()<br clear=3D"none"></div><div dir=3D"ltr">-#else<br clear=3D"n= one"></div><div dir=3D"ltr">-#define __unreachable() = ; ((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__ >=3D 199901<= br clear=3D"none"></div><div dir=3D"ltr"> #define __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 __pr= edict_true(exp) __builtin_expect((exp), 1)<br clear=3D"none">= </div><div dir=3D"ltr"> #define __predict_false(exp) = ; __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 __null_sen= tinel __attribute__((__sentinel__))<br clear=3D"none"></d= iv><div dir=3D"ltr"> #define __exported = __attribute__((__visibility__("default")))<br clear=3D"none"></div><div di= r=3D"ltr"> #define __hidden __attribute= __((__visibility__("hidden")))<br clear=3D"none"></div><div dir=3D"ltr">-#e= lse<br clear=3D"none"></div><div dir=3D"ltr">-#define __n= ull_sentinel<br clear=3D"none"></div><div dir=3D"ltr">-#define &= nbsp; __exported<br clear=3D"none"></div><div dir=3D"ltr">-#define &nb= sp; __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"> * We define this here= since <stddef.h>, <sys/queue.h>, and <sys/types.h><br cl= ear=3D"none"></div><div dir=3D"ltr"> * require it.<br clear=3D"none">= </div><div dir=3D"ltr"> */<br clear=3D"none"></div><div dir=3D"ltr">-= #if __GNUC_PREREQ__(4, 1)<br clear=3D"none"></div><div dir=3D"ltr"> #define= __offsetof(type, field) __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 __offsetof(type, field) \<br= clear=3D"none"></div><div dir=3D"ltr">- ((__size_t)(__ui= ntptr_t)((const volatile void *)&((type *)0)->field))<br clear=3D"no= ne"></div><div dir=3D"ltr">-#else<br clear=3D"none"></div><div dir=3D"ltr">= -#define __offsetof(type, field) = \<br = clear=3D"none"></div><div dir=3D"ltr">- (__offsetof__ (reinterpret_ca= st <__size_t> = \<br clear=3D"none"></div><div dir=3D"ltr">- &n= bsp; (&reinterpret_cast <const volatile char &= amp;> \<br clear=3D"none"></div><div dir=3D"ltr">-&nbs= p; (static_cast<= type *> (0)->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 __rangeof(type, start, end) \<= br clear=3D"none"></div><div dir=3D"ltr"> (__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>