From nobody Sun Jun 23 23:45:27 2024 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4W6nlm2Hwkz5PFby for ; Sun, 23 Jun 2024 23:45:40 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: from mail-pj1-x1032.google.com (mail-pj1-x1032.google.com [IPv6:2607:f8b0:4864:20::1032]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4W6nll4gsNz4kRy for ; Sun, 23 Jun 2024 23:45:39 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Authentication-Results: mx1.freebsd.org; dkim=pass header.d=bsdimp-com.20230601.gappssmtp.com header.s=20230601 header.b=oFR3KgmH; dmarc=none; spf=none (mx1.freebsd.org: domain of wlosh@bsdimp.com has no SPF policy when checking 2607:f8b0:4864:20::1032) smtp.mailfrom=wlosh@bsdimp.com Received: by mail-pj1-x1032.google.com with SMTP id 98e67ed59e1d1-2c7dff0f4e4so2917493a91.2 for ; Sun, 23 Jun 2024 16:45:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bsdimp-com.20230601.gappssmtp.com; s=20230601; t=1719186338; x=1719791138; darn=freebsd.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=ob8kW93XwGqaOI81aUoHcamPlZCftJPrYPDGQyv4+4c=; b=oFR3KgmHDCHYRh4n4oguS2D/upvaa5d9G3C1hkDjlAdId3yu6q3CmeOUSBIITzx/tA c1TX7JJSGxHzMj+bQvYLiBO7mPb25aA0hkQC/wjrjmAHs7IfquezQMS88AnpvPxG+4YW GEIXQqKoHcHtULeEXuOVQ33eot7xjjq3QO6rXsZ1FGTgCoccPvC+JJSPn2OJQT0FBVXX 0Hd/QVW6HvHZ0Fuh2yPkBxWh8QpP5tb7kDZXUvIZf0SrnfAY80cKkBdxF/IH0N2+YtMB gNVApcLnIG89grOBdc+X5WxlPXlrGMsw3jFmvazSU3wXKtbASxvDL5tIHXr+0DQWmmTo MLCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719186338; x=1719791138; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=ob8kW93XwGqaOI81aUoHcamPlZCftJPrYPDGQyv4+4c=; b=jmsFs5Rc6SFAgT3OyAX2UPgYVHfwQn2tx+CGwFUPGD8fZ+Eft0hPVG1Uxyj11GgCLr zomV4A6NneN1sr7BBRbzSexG4Lsf5JQVyw1j9+XCoRLTfR0LSbuiVf0Lj3dWqkOgrhJ0 uHeb0GQjRGm/AYcZPRT/1vLyTEY/YE9I1io+ehi0s0vUtghFrZNhOzKKytBV3UEzXnPr zWz/Dut8YYkoZD/TWJ0LlK92XrwJJr3Q0K2lxQlYBIBJjq7XZhZFk9UjnljLMcZ+0IYP gZjEiWL4kV3nKsxLQLA7croF+nf9bLpUHq4SFvEfH8oe1uW4MCc5S+sEbg1siGPtpj+I MmLQ== X-Forwarded-Encrypted: i=1; AJvYcCUAIGJgHexN+xQ8w6PM7q+4mBdS2sgK0NHZvwnObrvfaH7S+ybY5zhCzJKiQImS1/qK6P2Z2SEhq6S8t8dAwQ5++xnjSuZG/IwolpLMchk6Rg== X-Gm-Message-State: AOJu0Ywq17T9yhTOb+Ao5b4zv9VhFK9UdzhQbyBv13OyamfnvGLLx3wk kzVY13EtAJC0PcTwBRfvg3sAFbNGeiR2BWzgtoi6Tm8j7cSDqn759mwDcYW5SwFfQSnpr8fXG5c j5ADJUt8K75HJZYSsDAF7vIs8d+NBb5Na5x1oSA== X-Google-Smtp-Source: AGHT+IGCBDgmZ7GmA6tgmHyG62HROZBP2FIYZVtGRws4RFspKGHyX4b7WrCStFq9G2u20nJW0N/uXv6wSJCypTDKz/Q= X-Received: by 2002:a17:90b:4c41:b0:2c3:213b:d0b1 with SMTP id 98e67ed59e1d1-2c86127e2a8mr1942516a91.5.1719186338163; Sun, 23 Jun 2024 16:45:38 -0700 (PDT) List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 References: <202406210241.45L2fQZA057110@gitrepo.freebsd.org> <111875645.165697.1719082066518@mail.yahoo.com> In-Reply-To: <111875645.165697.1719082066518@mail.yahoo.com> From: Warner Losh Date: Sun, 23 Jun 2024 17:45:27 -0600 Message-ID: Subject: Re: git: d5c01e1124ff - main - cdefs.h: Remove pre gcc 5.0 support To: Pedro Giffuni Cc: "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" , Warner Losh Content-Type: multipart/alternative; boundary="000000000000fd48f8061b97429d" X-Spamd-Bar: -- X-Spamd-Result: default: False [-2.99 / 15.00]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_SHORT(-0.99)[-0.994]; FORGED_SENDER(0.30)[imp@bsdimp.com,wlosh@bsdimp.com]; R_DKIM_ALLOW(-0.20)[bsdimp-com.20230601.gappssmtp.com:s=20230601]; MIME_GOOD(-0.10)[multipart/alternative,text/plain]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US]; RCVD_COUNT_ONE(0.00)[1]; MIME_TRACE(0.00)[0:+,1:+,2:~]; TO_DN_SOME(0.00)[]; TO_DN_EQ_ADDR_SOME(0.00)[]; MISSING_XM_UA(0.00)[]; RCVD_IN_DNSWL_NONE(0.00)[2607:f8b0:4864:20::1032:from]; MLMMJ_DEST(0.00)[dev-commits-src-main@freebsd.org]; RCPT_COUNT_FIVE(0.00)[5]; R_SPF_NA(0.00)[no SPF record]; FROM_NEQ_ENVFROM(0.00)[imp@bsdimp.com,wlosh@bsdimp.com]; FROM_HAS_DN(0.00)[]; DMARC_NA(0.00)[bsdimp.com]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCVD_TLS_LAST(0.00)[]; PREVIOUSLY_DELIVERED(0.00)[dev-commits-src-main@freebsd.org]; ARC_NA(0.00)[]; DKIM_TRACE(0.00)[bsdimp-com.20230601.gappssmtp.com:+] X-Rspamd-Queue-Id: 4W6nll4gsNz4kRy --000000000000fd48f8061b97429d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Indeed. But none of the ones that I removed are affected by this quirk since they are true for clang all versions. Warner On Sat, Jun 22, 2024 at 12:47=E2=80=AFPM Pedro Giffuni 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 suppor= t > 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@freebsd.org> wrote: > > > The branch main has been updated by imp: > > URL: > https://cgit.FreeBSD.org/src/commit/?id=3Dd5c01e1124ffa4adb2513e7e8d708d7= 072dbfc75 > > commit d5c01e1124ffa4adb2513e7e8d708d7072dbfc75 > Author: Warner Losh > AuthorDate: 2024-06-20 23:03:15 +0000 > Commit: Warner Losh > CommitDate: 2024-06-21 02:41:09 +0000 > > cdefs.h: Remove pre gcc 5.0 support > > Reviewed by: brooks > Differential Revision: https://reviews.freebsd.org/D45656 > Sponsored by: 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 __aligned(x) __attribute__((__aligned__(x))) > #define __section(x) __attribute__((__section__(x))) > #define __writeonly __unused > -#if __GNUC_PREREQ__(4, 3) || __has_attribute(__alloc_size__) > #define __alloc_size(x) __attribute__((__alloc_size__(x))) > #define __alloc_size2(n, x) __attribute__((__alloc_size__(n, x))) > -#else > -#define __alloc_size(x) > -#define __alloc_size2(n, x) > -#endif > -#if __GNUC_PREREQ__(4, 9) || __has_attribute(__alloc_align__) > #define __alloc_align(x) __attribute__((__alloc_align__(x))) > -#else > -#define __alloc_align(x) > -#endif > > /* > * Keywords added in C11. > @@ -199,15 +190,6 @@ > #define _Alignof(x) __alignof(x) > #endif > > -#if !defined(__cplusplus) && !__has_extension(c_atomic) && \ > - !__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 _Atomic(T) struct { T volatile __val; } > -#endif > - > #if defined(__cplusplus) && __cplusplus >=3D 201103L > #define _Noreturn [[noreturn]] > #else > @@ -218,15 +200,6 @@ > #if (defined(__cplusplus) && __cplusplus >=3D 201103L) || \ > __has_extension(cxx_static_assert) > #define _Static_assert(x, y) static_assert(x, y) > -#elif __GNUC_PREREQ__(4,6) && !defined(__cplusplus) > -/* Nothing, gcc 4.6 and higher has _Static_assert built-in */ > -#elif defined(__COUNTER__) > -#define _Static_assert(x, y) __Static_assert(x, __COUNTER__) > -#define __Static_assert(x, y) ___Static_assert(x, y) > -#define ___Static_assert(x, y) typedef char __assert_ ## y[(x) ? 1 > : -1] \ > - __unused > -#else > -#define _Static_assert(x, y) struct __hack > #endif > #endif > > @@ -276,7 +249,6 @@ > * void bar(int myArray[__min_size(10)]); > */ > #if !defined(__cplusplus) && \ > - (defined(__clang__) || __GNUC_PREREQ__(4, 6)) && \ > (!defined(__STDC_VERSION__) || (__STDC_VERSION__ >=3D 199901)) > #define __min_size(x) static (x) > #else > @@ -302,17 +274,9 @@ > #define __result_use_or_ignore_check > #endif /* !__clang__ */ > > -#if __GNUC_PREREQ__(4, 1) > #define __returns_twice __attribute__((__returns_twice__)) > -#else > -#define __returns_twice > -#endif > > -#if __GNUC_PREREQ__(4, 6) || __has_builtin(__builtin_unreachable) > #define __unreachable() __builtin_unreachable() > -#else > -#define __unreachable() ((void)0) > -#endif > > #if !defined(__STRICT_ANSI__) || __STDC_VERSION__ >=3D 199901 > #define __LONG_LONG_SUPPORTED > @@ -353,33 +317,15 @@ > #define __predict_true(exp) __builtin_expect((exp), 1) > #define __predict_false(exp) __builtin_expect((exp), 0) > > -#if __GNUC_PREREQ__(4, 0) > #define __null_sentinel __attribute__((__sentinel__)) > #define __exported __attribute__((__visibility__("default"))) > #define __hidden __attribute__((__visibility__("hidden"))) > -#else > -#define __null_sentinel > -#define __exported > -#define __hidden > -#endif > > /* > * We define this here since , , and > * require it. > */ > -#if __GNUC_PREREQ__(4, 1) > #define __offsetof(type, field) __builtin_offsetof(type, field) > -#else > -#ifndef __cplusplus > -#define __offsetof(type, field) \ > - ((__size_t)(__uintptr_t)((const volatile void *)&((type *)0)->field)= ) > -#else > -#define __offsetof(type, field) \ > - (__offsetof__ (reinterpret_cast <__size_t> \ > - (&reinterpret_cast \ > - (static_cast (0)->field)))) > -#endif > -#endif > #define __rangeof(type, start, end) \ > (__offsetof(type, end) - __offsetof(type, start)) > > --000000000000fd48f8061b97429d Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Indeed. But none of the ones that I removed are affected b= y this quirk since they are true for clang all versions.

Warner

On Sat, Jun 22, 2024 at 12:47=E2=80=AFPM Pedro Giffuni <pfg@freebsd.org> wrote:
It was long ago when I last touched this but FWIW = ...

clang used to repo= rt itself as GCC 4.2 and kept it's GCC extension support level consiste= nt with that version so these version numbers were relevant.

Pedro.

=20
=20
On Thursday, June 20, 2024 at 09:41:34 PM GMT-5, Wa= rner Losh <imp@free= bsd.org> wrote:


=20 =20
The branch main has been updated by i= mp:


commit d5c01e1124ffa4adb2513e7e8d708d7072db= fc75
Author:=C2=A0 =C2=A0 Warner Losh <imp@FreeBSD= .org>
AuthorDate: 2024-06-20 23:03:15 +000= 0
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
=C2=A0 =C2=A0 Reviewed by:=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 brooks
=C2=A0 =C2=A0 Differential R= evision:=C2=A0 https://reviews.freebsd.org/D45656
=C2=A0 =C2=A0 Sponsored by:=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = Netflix
---
sys/sys/cd= efs.h | 54 ------------------------------------------------------
=
1 file changed, 54 deletions(-)

diff --git a/sys/sys/cdefs.h b/sys/sys/cdefs.h<= br>
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 __attri= bute__((__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_attr= ibute(__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 __attribute__((__alloc_size__(n, x)))
-= #else
-#define=C2=A0=C2=A0=C2=A0 __alloc_size(x)<= br>
-#define=C2=A0=C2=A0=C2=A0 __alloc_size2(n, x)
-#endif
-#if __GNUC_PRERE= Q__(4, 9) || __has_attribute(__alloc_align__)
#d= efine=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

/*
<= div dir=3D"ltr">=C2=A0 * Keywords added in C11.
@= @ -199,15 +190,6 @@
#define=C2=A0=C2=A0=C2=A0 _A= lignof(x)=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 __alignof(x)
#endif

-#= if !defined(__cplusplus) && !__has_extension(c_atomic) && \=
-=C2=A0=C2=A0=C2=A0 !__has_extension(cxx_atomic)= && !__GNUC_PREREQ__(4, 7)
-/*
<= div dir=3D"ltr">- * No native support for _Atomic(). Place object in struct= ure to prevent
- * most forms of direct non-atomi= c 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) && __cp= lusplus >=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 _St= atic_assert(x, y)=C2=A0=C2=A0=C2=A0 static_assert(x, y)
-#elif __GNUC_PREREQ__(4,6) && !defined(__cplusplus)
-/* Nothing, gcc 4.6 and higher has _Static_assert bui= lt-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 ___Static_assert= (x, y)
-#define=C2=A0=C2=A0=C2=A0 ___Static_asser= t(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
<= div dir=3D"ltr">-#define=C2=A0=C2=A0=C2=A0 _Static_assert(x, y)=C2=A0=C2=A0= =C2=A0 struct __hack
#endif
#endif

@@ -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_VERS= ION__ >=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__ */

-#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

-#if __GNUC_PREREQ__(4, 6) || __has_builti= n(__builtin_unreachable)
#define=C2=A0=C2=A0=C2= =A0 __unreachable()=C2=A0=C2=A0=C2=A0 __builtin_unreachable()
-#else
-#define=C2=A0=C2=A0=C2=A0 __= unreachable()=C2=A0=C2=A0=C2=A0 ((void)0)
-#endif=

#if !defined(__STRI= CT_ANSI__) || __STDC_VERSION__ >=3D 199901
#d= efine=C2=A0=C2=A0=C2=A0 __LONG_LONG_SUPPORTED
@@ = -353,33 +317,15 @@
#define=C2=A0=C2=A0=C2=A0 __p= redict_true(exp)=C2=A0 =C2=A0 __builtin_expect((exp), 1)
#define=C2=A0=C2=A0=C2=A0 __predict_false(exp)=C2=A0 =C2=A0 __bui= ltin_expect((exp), 0)

-#if __GNUC_PREREQ__(4, 0)
#define=C2=A0=C2=A0= =C2=A0 __null_sentinel=C2=A0=C2=A0=C2=A0 __attribute__((__sentinel__))
<= /div>
#define=C2=A0=C2=A0=C2=A0 __exported=C2=A0=C2=A0=C2= =A0 __attribute__((__visibility__("default")))
#define=C2=A0=C2=A0=C2=A0 __hidden=C2=A0=C2=A0=C2=A0 __attribute_= _((__visibility__("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
-#en= dif

/*
=C2=A0 * We define this here since <stddef.h>, <sys/q= ueue.h>, and <sys/types.h>
=C2=A0 * requ= ire it.
=C2=A0 */
-#if = __GNUC_PREREQ__(4, 1)
#define=C2=A0=C2=A0=C2=A0 = __offsetof(type, field)=C2=A0=C2=A0=C2=A0 __builtin_offsetof(type, field)<= br>
-#else
-#ifndef __cplus= plus
-#define=C2=A0=C2=A0=C2=A0 __offsetof(type, = field) \
-=C2=A0=C2=A0=C2=A0 ((__size_t)(__uintpt= r_t)((const volatile void *)&((type *)0)->field))
-#else
-#define=C2=A0=C2=A0=C2=A0 __offs= etof(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 vo= latile 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_cast<ty= pe *> (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))
=
--000000000000fd48f8061b97429d--