From patchwork Sat Nov 29 22:07:36 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Tauner X-Patchwork-Id: 125562 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 5309348FB42F for ; Sat, 29 Nov 2025 22:08:43 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5309348FB42F Authentication-Results: sourceware.org; dkim=pass (2048-bit key, secure) header.d=gmx.at header.i=stefan.tauner@gmx.at header.a=rsa-sha256 header.s=s31663417 header.b=OGIWNsIv X-Original-To: newlib@sourceware.org Delivered-To: newlib@sourceware.org Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) by sourceware.org (Postfix) with ESMTPS id E70D648F4A97 for ; Sat, 29 Nov 2025 22:08:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E70D648F4A97 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.at Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmx.at ARC-Filter: OpenARC Filter v1.0.0 sourceware.org E70D648F4A97 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=212.227.15.18 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1764454085; cv=none; b=mpvz1gehifLAPzEL+n8NyARpy4b5xSdIVX9ez40FT7FVvVF31b7lxRjJKn6dFg5oTzD8+K7cs77JaQEyCnkdEp0Gng+bQYNKiYO+vpfeNPyb2q0/RAQM+GWL0CWyzFDr0Dko29R/xsSNH2gA2qNBFGj/MI+d3sxZqLysUE6D9AQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1764454085; c=relaxed/simple; bh=z2Xkj00wo5becDvVPg+pggR6ckNs3crk1Tgojjvwuy0=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=WlXu4w5+zBBKldS/fK6Bo5vc0qpeND4bH3MBblDYuE/X0HPBfyWrLY9HdyQ1CKKVO2N+pDR7pj0ANoI4pI2ta1oMSR8/kdE4gcNhK2jsWgX+TQz6MneRrYqlFw8zvuyDy42LboM0pa8YRSK23enJtKAw+9gdKfUc0HdAgb6Xocc= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E70D648F4A97 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at; s=s31663417; t=1764454083; x=1765058883; i=stefan.tauner@gmx.at; bh=0mm8QH2vy6yuwzgBtM7Rdijk76LKCYs32dXNIIN9xcs=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-Id: MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=OGIWNsIvvk5b+oyzT1rLDJQ++KwKZ8rarqEJyd8itbeeiMG0o35Df3o37Wg3JrAT gF+fvqGf2T87StbfIB/TA9u7bv7+Ku7X0vVBYzcnCJ8QbGccnWy4v1J/OjErNhbCK RtTdvUtBsURH3Ip2ZPUI1ItCp9yoleC6sHthSCr+F06+jw40j8ARWSLyxW/KTWATi dlkg+JD77J13IhzApa791pkYeE/gT517KJfBS6BS1IZGbgyjHfZ0U5M1neiHcGdMQ W9dZNYkgwIEdGmvh+yXrFUBGgrgZEqMgmJRYOEA4hiu6gmQcsPh0O4pDZPD1ru03t M0jcgh5LfN2e8tMoCw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from legacy.lan ([62.178.213.17]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MsYv3-1wDIZk0zSF-00r5zG; Sat, 29 Nov 2025 23:08:03 +0100 From: Stefan Tauner To: newlib@sourceware.org Cc: Stefan Tauner Subject: [PATCH] features.h: Fix -Wundef problems Date: Sat, 29 Nov 2025 23:07:36 +0100 Message-Id: <20251129220736.377130-1-stefan.tauner@gmx.at> X-Mailer: git-send-email 2.39.5 MIME-Version: 1.0 X-Provags-ID: V03:K1:tAsRCZ79rcfekUoHYrcDudWwByBkmJ79XX3TpUDa+fD5+hsS4dv kXCHaiyhaA5BdLFk06CC788/I2s0a0f30FwC6BS2zs62gnvFE0uFtIi3dbtWPnpGM27K7h2 9fIdCs35cDkeEtoCjCxbbN5we0sm7ShIR/RvlkUO4GW/h00r+BLJEHOJKanK10cb5i5Hlky QN0/3dQklJTaJvac2yThg== UI-OutboundReport: notjunk:1;M01:P0:WYrJ7JMjO+0=;JIEiYG6GxEw/D/gvoYImFC46s5z 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 4oRlLfkRpTc5Xt+S3ZIpj2K/Rv0jc9RBssfzzo X-Spam-Status: No, score=-10.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_BLOCKED, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_NONE, SPF_PASS, TXREP, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on sourceware.org X-BeenThere: newlib@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Newlib mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: newlib-bounces~patchwork=sourceware.org@sourceware.org -Wundef warns if an undefined identifier is evaluated in an #if directive. This would be valid as they are replaced with 0. However, it is often an early warning sign and not intentional. To allow for enabling -Wundef even outside system directories (where compilers ignore such problems unless -Wsystem-headers is enabled) this patch adds the required defined() checks. glibc also has been supporting this for 10 years now: https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=f248238cf43bd751db29e6f151d6da7645337ff5 I have not exhaustively tested this but you can see the effect with something like the following (+ using -stdc= and/or -D...): echo | gcc -include newlib/libc/include/sys/features.h -Inewlib/libc/include/ -E - -Wundef Signed-off-by: Stefan Tauner --- newlib/libc/include/sys/features.h | 51 +++++++++++++++++------------- 1 file changed, 29 insertions(+), 22 deletions(-) diff --git a/newlib/libc/include/sys/features.h b/newlib/libc/include/sys/features.h index f0f5286ac..9dbdd5739 100644 --- a/newlib/libc/include/sys/features.h +++ b/newlib/libc/include/sys/features.h @@ -156,15 +156,15 @@ extern "C" { #if !defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE) && \ ((!defined(__STRICT_ANSI__) && !defined(_ANSI_SOURCE)) || \ - (_XOPEN_SOURCE - 0) >= 500) + (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE >= 500)) #define _POSIX_SOURCE 1 -#if !defined(_XOPEN_SOURCE) || (_XOPEN_SOURCE - 0) >= 700 +#if !defined(_XOPEN_SOURCE) || _XOPEN_SOURCE >= 700 #define _POSIX_C_SOURCE 200809L -#elif (_XOPEN_SOURCE - 0) >= 600 +#elif defined(_XOPEN_SOURCE) && _XOPEN_SOURCE >= 600 #define _POSIX_C_SOURCE 200112L -#elif (_XOPEN_SOURCE - 0) >= 500 +#elif defined(_XOPEN_SOURCE) && _XOPEN_SOURCE >= 500 #define _POSIX_C_SOURCE 199506L -#elif (_XOPEN_SOURCE - 0) < 500 +#elif defined(_XOPEN_SOURCE) && _XOPEN_SOURCE < 500 #define _POSIX_C_SOURCE 2 #endif #endif @@ -286,19 +286,24 @@ extern "C" { #endif #if defined(_ISOC23_SOURCE) || \ - (__STDC_VERSION__ - 0) > 201710L || (__cplusplus - 0) >= 202002L + (defined(__STDC_VERSION__) && __STDC_VERSION__ > 201710L) || \ + (defined(__cplusplus) && __cplusplus >= 202002L) #define __ISO_C_VISIBLE 2020 #elif defined(_ISOC11_SOURCE) || \ - (__STDC_VERSION__ - 0) >= 201112L || (__cplusplus - 0) >= 201103L + (defined(__STDC_VERSION__) && __STDC_VERSION__ > 201112L) || \ + (defined(__cplusplus) && __cplusplus >= 201103L) #define __ISO_C_VISIBLE 2011 -#elif defined(_ISOC99_SOURCE) || (_POSIX_C_SOURCE - 0) >= 200112L || \ - (__STDC_VERSION__ - 0) >= 199901L || defined(__cplusplus) +#elif defined(_ISOC99_SOURCE) || \ + (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200112L) || \ + (defined(__STDC_VERSION__) && __STDC_VERSION__ > 199901L) || \ + defined(__cplusplus) #define __ISO_C_VISIBLE 1999 #else #define __ISO_C_VISIBLE 1990 #endif -#if defined(_LARGEFILE_SOURCE) || (_XOPEN_SOURCE - 0) >= 500 +#if defined(_LARGEFILE_SOURCE) || \ + (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE >= 500) #define __LARGEFILE_VISIBLE 1 #else #define __LARGEFILE_VISIBLE 0 @@ -310,17 +315,18 @@ extern "C" { #define __MISC_VISIBLE 0 #endif -#if (_POSIX_C_SOURCE - 0) >= 202405L +#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 202405L #define __POSIX_VISIBLE 202405 -#elif (_POSIX_C_SOURCE - 0) >= 200809L +#elif defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200809L #define __POSIX_VISIBLE 200809 -#elif (_POSIX_C_SOURCE - 0) >= 200112L +#elif defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200112L #define __POSIX_VISIBLE 200112 -#elif (_POSIX_C_SOURCE - 0) >= 199506L +#elif defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 199506L #define __POSIX_VISIBLE 199506 -#elif (_POSIX_C_SOURCE - 0) >= 199309L +#elif defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 199309L #define __POSIX_VISIBLE 199309 -#elif (_POSIX_C_SOURCE - 0) >= 2 || defined(_XOPEN_SOURCE) +#elif (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 2) || \ + defined(_XOPEN_SOURCE) #define __POSIX_VISIBLE 199209 #elif defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) #define __POSIX_VISIBLE 199009 @@ -334,11 +340,11 @@ extern "C" { #define __SVID_VISIBLE 0 #endif -#if (_XOPEN_SOURCE - 0) >= 700 +#if defined(_XOPEN_SOURCE) && _XOPEN_SOURCE >= 700 #define __XSI_VISIBLE 700 -#elif (_XOPEN_SOURCE - 0) >= 600 +#elif defined(_XOPEN_SOURCE) && _XOPEN_SOURCE >= 600 #define __XSI_VISIBLE 600 -#elif (_XOPEN_SOURCE - 0) >= 500 +#elif defined(_XOPEN_SOURCE) && _XOPEN_SOURCE >= 500 #define __XSI_VISIBLE 500 #elif defined(_XOPEN_SOURCE) && defined(_XOPEN_SOURCE_EXTENDED) #define __XSI_VISIBLE 4 @@ -348,9 +354,10 @@ extern "C" { #define __XSI_VISIBLE 0 #endif -#if _FORTIFY_SOURCE > 0 && !defined(__cplusplus) && !defined(__lint__) && \ - (__OPTIMIZE__ > 0 || defined(__clang__)) && __GNUC_PREREQ__(4, 1) && \ - !defined(_LIBC) +#if defined(_FORTIFY_SOURCE) && _FORTIFY_SOURCE > 0 && \ + !defined(__cplusplus) && !defined(__lint__) && \ + (defined(__OPTIMIZE__) && __OPTIMIZE__ > 0 || defined(__clang__)) && \ + __GNUC_PREREQ__(4, 1) && !defined(_LIBC) # if _FORTIFY_SOURCE > 2 && defined(__has_builtin) # if __has_builtin(__builtin_dynamic_object_size) # define __SSP_FORTIFY_LEVEL 3