From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1791) id 9BCF83851C34; Tue, 30 Aug 2022 11:47:39 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9BCF83851C34 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1661860059; bh=kBoeceGq1L5LST5OOLVoGzmXQVMwqsTwX/KRNFiQ1Dc=; h=From:To:Subject:Date:From; b=eI+6dXwINMI6AuqZc0EW/QB+xQOgtfIRjJLpLINxvd7du+ZG6YStL53SNjNefEwwq jPdlJGKjr574CO7OnOoQ9pq4pmkwTJlgrXuTwVn/WPEmziiCUX6NUsgrmzvQIEcDtj hT30xKKh61D6hzeakmHwXyzqPCbEdgMeZft4Tz5U= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Adhemerval Zanella To: glibc-cvs@sourceware.org Subject: [glibc] posix: Fix macro expansion producing 'defined' has undefined behavior X-Act-Checkin: glibc X-Git-Author: Adhemerval Zanella X-Git-Refname: refs/heads/master X-Git-Oldrev: 6c4ee1aba17f1e71b9ec856479260de9d362fdb6 X-Git-Newrev: ddcf5a9170a0db5055259118f3090debab248126 Message-Id: <20220830114739.9BCF83851C34@sourceware.org> Date: Tue, 30 Aug 2022 11:47:39 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=ddcf5a9170a0db5055259118f3090debab248126 commit ddcf5a9170a0db5055259118f3090debab248126 Author: Adhemerval Zanella Date: Wed Mar 9 18:22:46 2022 -0300 posix: Fix macro expansion producing 'defined' has undefined behavior The NEED_CHECK_SPEC is defined as: #define NEED_CHECK_SPEC \ (!defined _XBS5_ILP32_OFF32 || !defined _XBS5_ILP32_OFFBIG \ || !defined _XBS5_LP64_OFF64 || !defined _XBS5_LPBIG_OFFBIG \ || !defined _POSIX_V6_ILP32_OFF32 || !defined _POSIX_V6_ILP32_OFFBIG \ || !defined _POSIX_V6_LP64_OFF64 || !defined _POSIX_V6_LPBIG_OFFBIG \ || !defined _POSIX_V7_ILP32_OFF32 || !defined _POSIX_V7_ILP32_OFFBIG \ || !defined _POSIX_V7_LP64_OFF64 || !defined _POSIX_V7_LPBIG_OFFBIG) Which is undefined behavior accordingly to C Standard (Preprocessing directives, p4). Checked on x86_64-linux-gnu. Diff: --- sysdeps/posix/sysconf.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/sysdeps/posix/sysconf.c b/sysdeps/posix/sysconf.c index f760bf4e2b..c29b70ad80 100644 --- a/sysdeps/posix/sysconf.c +++ b/sysdeps/posix/sysconf.c @@ -37,13 +37,17 @@ #define NEED_SPEC_ARRAY 0 #include -#define NEED_CHECK_SPEC \ - (!defined _XBS5_ILP32_OFF32 || !defined _XBS5_ILP32_OFFBIG \ +#if !defined _XBS5_ILP32_OFF32 || !defined _XBS5_ILP32_OFFBIG \ || !defined _XBS5_LP64_OFF64 || !defined _XBS5_LPBIG_OFFBIG \ || !defined _POSIX_V6_ILP32_OFF32 || !defined _POSIX_V6_ILP32_OFFBIG \ || !defined _POSIX_V6_LP64_OFF64 || !defined _POSIX_V6_LPBIG_OFFBIG \ || !defined _POSIX_V7_ILP32_OFF32 || !defined _POSIX_V7_ILP32_OFFBIG \ - || !defined _POSIX_V7_LP64_OFF64 || !defined _POSIX_V7_LPBIG_OFFBIG) + || !defined _POSIX_V7_LP64_OFF64 || !defined _POSIX_V7_LPBIG_OFFBIG +# define NEED_CHECK_SPEC 1 +#else +# define NEED_CHECK_SPEC 0 +#endif + #if NEED_CHECK_SPEC static long int __sysconf_check_spec (const char *spec); #endif