From patchwork Sun Nov 9 21:52:52 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alejandro Colomar X-Patchwork-Id: 123838 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 13EA53858419 for ; Sun, 9 Nov 2025 21:57:02 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 13EA53858419 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20201202 header.b=KJaH3JeL X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from sea.source.kernel.org (sea.source.kernel.org [172.234.252.31]) by sourceware.org (Postfix) with ESMTPS id 351623858408 for ; Sun, 9 Nov 2025 21:52:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 351623858408 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=kernel.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=kernel.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 351623858408 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=172.234.252.31 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1762725175; cv=none; b=oFZv4GSEDKYSRyC5zAOLMM6Wz+i3Gr3td3vIZhzRuFnVGWUnrlOTHSSZg4SdhUZnY5VF27kg9zr91hg0H4xlEboTOBRSLKwtKbC1TZYknIffPqBUFv1n0Xn98titNilz+rSl2dewaHMtnVNaZt/O5JZpAqHNrAfj6JZQ2Qgoido= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1762725175; c=relaxed/simple; bh=ryk34h/G9BAPCwHlcB95FoxIIHczOzmgJ4vb7Fe+rLw=; h=DKIM-Signature:Date:From:To:Subject:Message-ID:MIME-Version; b=gY7M8Y8QmxOW4YyYG2bGgwx5nhPCBvzdZFCbg/5Pa4/w0QJKrQCRMIBrneSC5JgXDBsQXPk9n/OK0fWw+KWjdvOXZweIrP4ojwMXSX/Yc0lvAP1pRjWyfkEp/Bveh2GKoxDOXTMZYC/qyttV8EC72/puBGLvigYKc7CKjC57RE8= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 351623858408 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id 977EF43711 for ; Sun, 9 Nov 2025 21:52:54 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C7EC2C4CEF7; Sun, 9 Nov 2025 21:52:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762725174; bh=ryk34h/G9BAPCwHlcB95FoxIIHczOzmgJ4vb7Fe+rLw=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=KJaH3JeL/lrEZCdZ+AR6JbgS7i7OpXvtDtnMKmBZZsBZONY3xtcUMSJdwwg5ZBWZq z+eT+FdJ+AUu8/Mori8gfZ9WtnIOTWqzTpeyW25zX8W5wJVFGVqykchfVDB98/slDy htmSjd7lP5aXOH6iRTk/KkqENrgtepTUbZBnfQF7wXmW6ySgzQutwZtOgUC3x9dnc7 mVpBkQXJTUcK9d6DIFXuDhU7/HUfGtcOK7Vaue932B/lOYzmD/Jzv2DvVaPIPmwWrC L1q4yk/xoPD61PoqxPmo1ZVQkaMTF67tAirRfvQyt+Yd+TQMBXS+dLw2v6tti+GuRz oT/1lq8jE7EVg== Date: Sun, 9 Nov 2025 22:52:52 +0100 From: Alejandro Colomar To: libc-alpha@sourceware.org Cc: Alejandro Colomar Subject: [PATCH v1 03/35] Assume __GNUC__ >= 3 Message-ID: <4c323fe589e0fc9f2efe6e67f4d3e00cac342a98.1762725057.git.alx@kernel.org> X-Mailer: git-send-email 2.51.0 References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_NUMSUBJECT, KAM_SHORT, RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces~patchwork=sourceware.org@sourceware.org Signed-off-by: Alejandro Colomar --- assert/assert.h | 13 +--- dlfcn/dlfcn.h | 4 - include/features.h | 2 +- include/intprops.h | 7 -- include/libc-symbols.h | 14 ---- malloc/obstack.h | 4 - math/complex.h | 7 -- math/tgmath.h | 5 -- misc/sys/cdefs.h | 78 +------------------ posix/bits/cpu-set.h | 24 ------ posix/regex.h | 10 --- posix/sys/types.h | 4 - socket/sys/socket.h | 2 +- sysdeps/unix/sysv/linux/riscv/sys/hwprobe.h | 2 +- sysdeps/unix/sysv/linux/s390/bits/typesizes.h | 5 -- timezone/private.h | 13 +--- 16 files changed, 10 insertions(+), 184 deletions(-) diff --git a/assert/assert.h b/assert/assert.h index 273bf7f35c..32ef0634cc 100644 --- a/assert/assert.h +++ b/assert/assert.h @@ -34,7 +34,7 @@ #define _ASSERT_H 1 #include -#if defined __cplusplus && __GNUC_PREREQ (2,95) +#if defined __cplusplus # define __ASSERT_VOID_CAST static_cast #else # define __ASSERT_VOID_CAST (void) @@ -128,20 +128,11 @@ __END_DECLS : __assert_perror_fail ((errnum), __FILE__, __LINE__, __ASSERT_FUNCTION)) # endif -/* Version 2.4 and later of GCC define a magical variable `__PRETTY_FUNCTION__' +/* GCC defines a magical variable `__PRETTY_FUNCTION__' which contains the name of the function currently being defined. - This is broken in G++ before version 2.6. C9x has a similar variable called __func__, but prefer the GCC one since it demangles C++ function names. */ -# if defined __cplusplus ? __GNUC_PREREQ (2, 6) : __GNUC_PREREQ (2, 4) # define __ASSERT_FUNCTION __extension__ __PRETTY_FUNCTION__ -# else -# if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L -# define __ASSERT_FUNCTION __func__ -# else -# define __ASSERT_FUNCTION ((const char *) 0) -# endif -# endif #endif /* NDEBUG. */ diff --git a/dlfcn/dlfcn.h b/dlfcn/dlfcn.h index bc73180a20..e266f1ab00 100644 --- a/dlfcn/dlfcn.h +++ b/dlfcn/dlfcn.h @@ -185,7 +185,6 @@ typedef struct { size_t dls_size; /* Size in bytes of the whole buffer. */ unsigned int dls_cnt; /* Number of elements in `dls_serpath'. */ -# if __GNUC_PREREQ (3, 0) /* The zero-length array avoids an unwanted array subscript check by the compiler, while the surrounding anonymous union preserves the historic size of the type. At the time of writing, GNU C does @@ -195,9 +194,6 @@ typedef struct Dl_serpath dls_serpath[0]; /* Actually longer, dls_cnt elements. */ Dl_serpath __dls_serpath_pad[1]; }; -# else - Dl_serpath dls_serpath[1]; /* Actually longer, dls_cnt elements. */ -# endif } Dl_serinfo; struct dl_find_object diff --git a/include/features.h b/include/features.h index 877d4c7aa8..7d8095c682 100644 --- a/include/features.h +++ b/include/features.h @@ -534,7 +534,7 @@ #endif /* !ASSEMBLER */ /* Decide whether we can define 'extern inline' functions in headers. */ -#if __GNUC_PREREQ (2, 7) && defined __OPTIMIZE__ \ +#if defined __OPTIMIZE__ \ && !defined __OPTIMIZE_SIZE__ && !defined __NO_INLINE__ \ && defined __extern_inline && !(defined __clang__ && defined _LIBC) # define __USE_EXTERN_INLINES 1 diff --git a/include/intprops.h b/include/intprops.h index 126d661156..377706ac3d 100644 --- a/include/intprops.h +++ b/include/intprops.h @@ -84,14 +84,7 @@ /* Does the __typeof__ keyword work? This could be done by 'configure', but for now it's easier to do it by hand. */ -#if (2 <= __GNUC__ \ - || (4 <= __clang_major__) \ - || (1210 <= __IBMC__ && defined __IBM__TYPEOF__) \ - || (0x5110 <= __SUNPRO_C && !__STDC__)) # define _GL_HAVE___TYPEOF__ 1 -#else -# define _GL_HAVE___TYPEOF__ 0 -#endif /* Return 1 if the integer type or expression T might be signed. Return 0 if it is definitely unsigned. T must not be a bit-field expression. diff --git a/include/libc-symbols.h b/include/libc-symbols.h index 2f9453e0d7..1f59b69ecf 100644 --- a/include/libc-symbols.h +++ b/include/libc-symbols.h @@ -813,11 +813,7 @@ for linking") /* Define as a marker that can be attached to declarations that might not be used. This helps to reduce warnings, such as from GCC -Wunused-parameter. */ -#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) # define _GL_UNUSED __attribute__ ((__unused__)) -#else -# define _GL_UNUSED -#endif /* gcc supports the "unused" attribute on possibly unused labels, and g++ has since version 4.5. Note to support C++ as well as C, @@ -829,19 +825,9 @@ for linking") # define _GL_UNUSED_LABEL #endif -/* The __pure__ attribute was added in gcc 2.96. */ -#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) # define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) -#else -# define _GL_ATTRIBUTE_PURE /* empty */ -#endif -/* The __const__ attribute was added in gcc 2.95. */ -#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) # define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) -#else -# define _GL_ATTRIBUTE_CONST /* empty */ -#endif #endif /* !_ISOMAC */ #endif /* libc-symbols.h */ diff --git a/malloc/obstack.h b/malloc/obstack.h index 43457353c3..5b913047e3 100644 --- a/malloc/obstack.h +++ b/malloc/obstack.h @@ -257,10 +257,6 @@ extern int obstack_exit_failure; #define obstack_memory_used(h) _obstack_memory_used (h) -# if ! (2 < __GNUC__ + (8 <= __GNUC_MINOR__)) -# define __extension__ -# endif - /* For GNU C, if not -traditional, we can define these macros to compute all args only once without using a global variable. diff --git a/math/complex.h b/math/complex.h index c925c5c0a3..2e542eb1e0 100644 --- a/math/complex.h +++ b/math/complex.h @@ -33,13 +33,6 @@ __BEGIN_DECLS -/* We might need to add support for more compilers here. But since ISO - C99 is out hopefully all maintained compilers will soon provide the data - types `float complex' and `double complex'. */ -#if __GNUC_PREREQ (2, 7) && !__GNUC_PREREQ (2, 97) -# define _Complex __complex__ -#endif - #define complex _Complex /* Narrowest imaginary unit. This depends on the floating-point diff --git a/math/tgmath.h b/math/tgmath.h index 0d830a713b..098760071f 100644 --- a/math/tgmath.h +++ b/math/tgmath.h @@ -49,8 +49,6 @@ #define __HAVE_BUILTIN_TGMATH __GNUC_PREREQ (8, 0) #define __HAVE_BUILTIN_TGMATH_C23 __GNUC_PREREQ (13, 0) -#if __GNUC_PREREQ (2, 7) - /* Certain cases of narrowing macros only need to call a single function so cannot use __builtin_tgmath and do not need any complicated logic. */ @@ -791,9 +789,6 @@ (F ## f64 (X, Y, Z)) # endif # endif -#else -# error "Unsupported compiler; you cannot use " -#endif /* Unary functions defined for real and complex values. */ diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h index 71e2ec92d5..da6ef07a4a 100644 --- a/misc/sys/cdefs.h +++ b/misc/sys/cdefs.h @@ -79,7 +79,7 @@ # define __NTH(fct) __attribute__ ((__nothrow__ __LEAF)) fct # define __NTHNL(fct) __attribute__ ((__nothrow__)) fct # else -# if defined __cplusplus && (__GNUC_PREREQ (2,8) || __clang_major__ >= 4) +# if defined __cplusplus # if __cplusplus >= 201103L # define __THROW noexcept (true) # else @@ -360,16 +360,11 @@ #if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L && !defined __HP_cc # define __flexarr [] # define __glibc_c99_flexarr_available 1 -#elif __GNUC_PREREQ (2,97) || defined __clang__ -/* GCC 2.97 and clang support C99 flexible array members as an extension, +#else +/* GCC and clang support C99 flexible array members as an extension, even when in C89 mode or compiling C++ (any version). */ # define __flexarr [] # define __glibc_c99_flexarr_available 1 -#else -/* Pre-2.97 GCC did not support C99 flexible arrays but did have - an equivalent extension with slightly different notation. */ -# define __flexarr [0] -# define __glibc_c99_flexarr_available 1 #endif @@ -406,14 +401,7 @@ #define __REDIRECT_FORTIFY_NTH __REDIRECT_NTH #endif -/* At some point during the gcc 2.96 development the `malloc' attribute - for functions was introduced. We don't want to use it unconditionally - (although this would be possible) since it generates warnings. */ -#if __GNUC_PREREQ (2,96) || __glibc_has_attribute (__malloc__) # define __attribute_malloc__ __attribute__ ((__malloc__)) -#else -# define __attribute_malloc__ /* Ignore */ -#endif /* Tell the compiler which arguments to an allocation function indicate the size of the allocation. */ @@ -433,27 +421,12 @@ # define __attribute_alloc_align__(param) /* Ignore. */ #endif -/* At some point during the gcc 2.96 development the `pure' attribute - for functions was introduced. We don't want to use it unconditionally - (although this would be possible) since it generates warnings. */ -#if __GNUC_PREREQ (2,96) || __glibc_has_attribute (__pure__) # define __attribute_pure__ __attribute__ ((__pure__)) -#else -# define __attribute_pure__ /* Ignore */ -#endif /* This declaration tells the compiler that the value is constant. */ -#if __GNUC_PREREQ (2,5) || __glibc_has_attribute (__const__) # define __attribute_const__ __attribute__ ((__const__)) -#else -# define __attribute_const__ /* Ignore */ -#endif -#if __GNUC_PREREQ (2,7) || __glibc_has_attribute (__unused__) # define __attribute_maybe_unused__ __attribute__ ((__unused__)) -#else -# define __attribute_maybe_unused__ /* Ignore */ -#endif /* At some point during the gcc 3.1 development the `used' attribute for functions was introduced. We don't want to use it unconditionally @@ -484,28 +457,13 @@ # define __attribute_deprecated_msg__(msg) __attribute_deprecated__ #endif -/* At some point during the gcc 2.8 development the `format_arg' attribute - for functions was introduced. We don't want to use it unconditionally - (although this would be possible) since it generates warnings. - If several `format_arg' attributes are given for the same function, in +/* If several `format_arg' attributes are given for the same function, in gcc-3.0 and older, all but the last one are ignored. In newer gccs, all designated arguments are considered. */ -#if __GNUC_PREREQ (2,8) || __glibc_has_attribute (__format_arg__) # define __attribute_format_arg__(x) __attribute__ ((__format_arg__ (x))) -#else -# define __attribute_format_arg__(x) /* Ignore */ -#endif -/* At some point during the gcc 2.97 development the `strfmon' format - attribute for functions was introduced. We don't want to use it - unconditionally (although this would be possible) since it - generates warnings. */ -#if __GNUC_PREREQ (2,97) || __glibc_has_attribute (__format__) # define __attribute_format_strfmon__(a,b) \ __attribute__ ((__format__ (__strfmon__, a, b))) -#else -# define __attribute_format_strfmon__(a,b) /* Ignore */ -#endif /* The nonnull function attribute marks pointer parameters that must not be NULL. This has the name __nonnull in glibc, @@ -600,25 +558,6 @@ # define __va_arg_pack_len() __builtin_va_arg_pack_len () #endif -/* It is possible to compile containing GCC extensions even if GCC is - run in pedantic mode if the uses are carefully marked using the - `__extension__' keyword. But this is not generally available before - version 2.8. */ -#if !(__GNUC_PREREQ (2,8) || defined __clang__) -# define __extension__ /* Ignore */ -#endif - -/* __restrict is known in EGCS 1.2 and above, and in clang. - It works also in C++ mode (outside of arrays), but only when spelled - as '__restrict', not 'restrict'. */ -#if !(__GNUC_PREREQ (2,92) || __clang_major__ >= 3) -# if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L -# define __restrict restrict -# else -# define __restrict /* Ignore */ -# endif -#endif - /* ISO C99 also allows to declare arrays as non-overlapping. The syntax is array_name[restrict] GCC 3.1 and clang support this. @@ -629,23 +568,14 @@ # define __restrict_arr /* Not supported in old GCC. */ #endif -#if (__GNUC__ >= 3) || __glibc_has_builtin (__builtin_expect) # define __glibc_unlikely(cond) __builtin_expect ((cond), 0) # define __glibc_likely(cond) __builtin_expect ((cond), 1) -#else -# define __glibc_unlikely(cond) (cond) -# define __glibc_likely(cond) (cond) -#endif #if (!defined _Noreturn \ && (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) < 201112 \ && !(__GNUC_PREREQ (4,7) \ || (3 < __clang_major__ + (5 <= __clang_minor__)))) -# if __GNUC_PREREQ (2,8) # define _Noreturn __attribute__ ((__noreturn__)) -# else -# define _Noreturn -# endif #endif #if __GNUC_PREREQ (8, 0) diff --git a/posix/bits/cpu-set.h b/posix/bits/cpu-set.h index 9dc2d31fa7..c76a6de436 100644 --- a/posix/bits/cpu-set.h +++ b/posix/bits/cpu-set.h @@ -42,19 +42,8 @@ typedef struct } cpu_set_t; /* Access functions for CPU masks. */ -#if __GNUC_PREREQ (2, 91) # define __CPU_ZERO_S(setsize, cpusetp) \ do __builtin_memset (cpusetp, '\0', setsize); while (0) -#else -# define __CPU_ZERO_S(setsize, cpusetp) \ - do { \ - size_t __i; \ - size_t __imax = (setsize) / sizeof (__cpu_mask); \ - __cpu_mask *__bits = (cpusetp)->__bits; \ - for (__i = 0; __i < __imax; ++__i) \ - __bits[__i] = 0; \ - } while (0) -#endif #define __CPU_SET_S(cpu, setsize, cpusetp) \ (__extension__ \ ({ size_t __cpu = (cpu); \ @@ -80,21 +69,8 @@ typedef struct #define __CPU_COUNT_S(setsize, cpusetp) \ __sched_cpucount (setsize, cpusetp) -#if __GNUC_PREREQ (2, 91) # define __CPU_EQUAL_S(setsize, cpusetp1, cpusetp2) \ (__builtin_memcmp (cpusetp1, cpusetp2, setsize) == 0) -#else -# define __CPU_EQUAL_S(setsize, cpusetp1, cpusetp2) \ - (__extension__ \ - ({ const __cpu_mask *__arr1 = (cpusetp1)->__bits; \ - const __cpu_mask *__arr2 = (cpusetp2)->__bits; \ - size_t __imax = (setsize) / sizeof (__cpu_mask); \ - size_t __i; \ - for (__i = 0; __i < __imax; ++__i) \ - if (__arr1[__i] != __arr2[__i]) \ - break; \ - __i == __imax; })) -#endif #define __CPU_OP_S(setsize, destset, srcset1, srcset2, op) \ (__extension__ \ diff --git a/posix/regex.h b/posix/regex.h index a7b66a2bfb..4facb457b1 100644 --- a/posix/regex.h +++ b/posix/regex.h @@ -643,17 +643,7 @@ extern int re_exec (const char *); 'configure' might #define 'restrict' to those words, so pick a different name. */ #ifndef _Restrict_ -# if defined __restrict \ - || 2 < __GNUC__ + (95 <= __GNUC_MINOR__) \ - || __clang_major__ >= 3 # define _Restrict_ __restrict -# else -# if 199901L <= __STDC_VERSION__ || defined restrict -# define _Restrict_ restrict -# else -# define _Restrict_ -# endif -# endif #endif /* For the ISO C99 syntax array_name[restrict] diff --git a/posix/sys/types.h b/posix/sys/types.h index ab3037a9da..30e0e88928 100644 --- a/posix/sys/types.h +++ b/posix/sys/types.h @@ -160,11 +160,7 @@ typedef __uint16_t u_int16_t; typedef __uint32_t u_int32_t; typedef __uint64_t u_int64_t; -#if __GNUC_PREREQ (2, 7) typedef int register_t __attribute__ ((__mode__ (__word__))); -#else -typedef int register_t; -#endif /* Some code from BIND tests this macro to see if the types above are defined. */ diff --git a/socket/sys/socket.h b/socket/sys/socket.h index e72f5e722e..905bf167bd 100644 --- a/socket/sys/socket.h +++ b/socket/sys/socket.h @@ -54,7 +54,7 @@ enum uses with any of the listed types to be allowed without complaint. G++ 2.7 does not support transparent unions so there we want the old-style declaration, too. */ -#if defined __cplusplus || !__GNUC_PREREQ (2, 7) || !defined __USE_GNU +#if defined __cplusplus || !defined __USE_GNU # define __SOCKADDR_ARG struct sockaddr *__restrict # define __CONST_SOCKADDR_ARG const struct sockaddr * #else diff --git a/sysdeps/unix/sysv/linux/riscv/sys/hwprobe.h b/sysdeps/unix/sysv/linux/riscv/sys/hwprobe.h index 40415aae80..2cbc736a25 100644 --- a/sysdeps/unix/sysv/linux/riscv/sys/hwprobe.h +++ b/sysdeps/unix/sysv/linux/riscv/sys/hwprobe.h @@ -64,7 +64,7 @@ struct riscv_hwprobe { __BEGIN_DECLS -#if defined __cplusplus || !__GNUC_PREREQ (2, 7) +#if defined __cplusplus # define __RISCV_HWPROBE_CPUS_TYPE cpu_set_t * #else /* The fourth argument to __riscv_hwprobe should be a null pointer or a diff --git a/sysdeps/unix/sysv/linux/s390/bits/typesizes.h b/sysdeps/unix/sysv/linux/s390/bits/typesizes.h index 3ad7986ba6..8d290d6e09 100644 --- a/sysdeps/unix/sysv/linux/s390/bits/typesizes.h +++ b/sysdeps/unix/sysv/linux/s390/bits/typesizes.h @@ -57,13 +57,8 @@ #define __TIMER_T_TYPE void * #define __BLKSIZE_T_TYPE __SLONGWORD_TYPE #define __FSID_T_TYPE struct { int __val[2]; } -#if __GNUC__ <= 2 -/* Compatibility with g++ 2.95.x. */ -#define __SSIZE_T_TYPE __SWORD_TYPE -#else /* size_t is unsigned long int on s390 -m31. */ #define __SSIZE_T_TYPE __SLONGWORD_TYPE -#endif #define __SYSCALL_SLONG_TYPE __SLONGWORD_TYPE #define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE #define __CPU_MASK_TYPE __ULONGWORD_TYPE diff --git a/timezone/private.h b/timezone/private.h index 278cf25a0b..c7150f349b 100644 --- a/timezone/private.h +++ b/timezone/private.h @@ -523,11 +523,7 @@ typedef unsigned long uintmax_t; # endif #endif #ifndef ATTRIBUTE_MAYBE_UNUSED -# if 2 < __GNUC__ + (7 <= __GNUC_MINOR__) # define ATTRIBUTE_MAYBE_UNUSED __attribute__((unused)) -# else -# define ATTRIBUTE_MAYBE_UNUSED /* empty */ -# endif #endif #if HAVE___HAS_C_ATTRIBUTE @@ -538,10 +534,8 @@ typedef unsigned long uintmax_t; #ifndef ATTRIBUTE_NORETURN # if 201112 <= __STDC_VERSION__ # define ATTRIBUTE_NORETURN _Noreturn -# elif 2 < __GNUC__ + (8 <= __GNUC_MINOR__) -# define ATTRIBUTE_NORETURN __attribute__((noreturn)) # else -# define ATTRIBUTE_NORETURN /* empty */ +# define ATTRIBUTE_NORETURN __attribute__((noreturn)) # endif #endif @@ -557,13 +551,8 @@ typedef unsigned long uintmax_t; /* GCC attributes that are useful in tzcode. __attribute__((pure)) is stricter than [[reproducible]], so the latter is an adequate substitute in non-GCC C23 platforms. */ -#if __GNUC__ < 3 -# define ATTRIBUTE_FORMAT(spec) /* empty */ -# define ATTRIBUTE_PURE ATTRIBUTE_REPRODUCIBLE -#else # define ATTRIBUTE_FORMAT(spec) __attribute__((format spec)) # define ATTRIBUTE_PURE __attribute__((pure)) -#endif /* Avoid GCC bug 114833 . Remove this macro and its uses when the bug is fixed in a GCC release,