From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS22989 209.51.188.0/24 X-Spam-Status: No, score=-3.7 required=3.0 tests=AWL,BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id A6B361F63E for ; Sun, 29 Jan 2023 23:06:51 +0000 (UTC) Authentication-Results: dcvr.yhbt.net; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=clisp.org header.i=@clisp.org header.a=rsa-sha256 header.s=strato-dkim-0002 header.b=Ij3+SUfb; dkim-atps=neutral Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pMGkz-0007jQ-2f; Sun, 29 Jan 2023 18:06:41 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pMGkw-0007jI-RR for bug-gnulib@gnu.org; Sun, 29 Jan 2023 18:06:39 -0500 Received: from mo4-p00-ob.smtp.rzone.de ([85.215.255.22]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pMGkt-0003vU-Eh for bug-gnulib@gnu.org; Sun, 29 Jan 2023 18:06:38 -0500 ARC-Seal: i=1; a=rsa-sha256; t=1675033592; cv=none; d=strato.com; s=strato-dkim-0002; b=oK9U4T3w4DXkK6myblfwhUmqEeB9XRX3AUjh4hwHIatRPLvdEHYfz2y7HGezg5ga85 Av2uevm3yogQcYpQ2uZ91ZOFs7X8X+AWcR/zpKSlgDpl3Io1u85bzDRVKe5VT2ZG6JlG JXS3YdmlDcFhyFKEU0rYiNglvEhXLgxpmVnw/QV3GeRj6hcmMlYEo2XPbn5f8wRjjTBt yFwYnyTRO1Q8wCr4d+2DnCE744tFHWT3H/dqfKaydCVJD13BUCzEoqT/0Oc/EL19SiwD vWE1BJOCE4m/j91Da6ymjS4yqSMSth1M/d6sSXbO9SedLMJtL9dGTDjpBa69CdKtj0FS jqFA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1675033592; s=strato-dkim-0002; d=strato.com; h=Message-ID:Date:Subject:To:From:Cc:Date:From:Subject:Sender; bh=MkdN3/u201da2/s4AUemHNCYQq/XO7n4xB9bBSU9tdo=; b=L6LhBlq8I5710ShT/IKzuWM4CzSqFws2iROWUB+9gDJTfEKvkcRvkXYH9fYaUdt3fU X4Zbhnj0xzPW4qR8snyOICST2mTCCaYnP4evTPOBk8aN8tX3wg+VTUK2bnV9FciUCsLl eeBgork40lsqFHEyD6t/n8lIWVpbNqYZGtfwVBC9jThOfTnQ2eVpv078D+Y54f9oV2PR JpQ23DCNYmEfbaR6gyYQNpwyofGPcLeXq5C3mo0HL9T3CF4wBRnRF4nmVYyIKFJCnn/u RiSqSjFE7Wuzo0MjFzbCi1BPX11d3WWhz1ImtQlE3vGik7usL9SVOi7IcH8nUI8S7wFa Azbw== ARC-Authentication-Results: i=1; strato.com; arc=none; dkim=none X-RZG-CLASS-ID: mo00 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1675033592; s=strato-dkim-0002; d=clisp.org; h=Message-ID:Date:Subject:To:From:Cc:Date:From:Subject:Sender; bh=MkdN3/u201da2/s4AUemHNCYQq/XO7n4xB9bBSU9tdo=; b=Ij3+SUfbj9KRKoaLGWRIfjrlvz4k2G3MbMFgv2wk9LF5a4sH7FV2BZ/AfD3NJ5M8d8 BfxPvLwu4dqn4QqdoLvdabxC05VO/a93yvQRIMhS3GwDli9WIF6ptjErVWSnPjn0I9Wy 9Q543c9aEJPYJN+4UkleboD9KlD6N4XhyDMl3mdJmHmYZ1aY/CUXP7fMWnXc3CjHbMFm zOOoyiq9PLZtdofLj1fdI1Tgejay3j4NHk9s0B/XHnNad6jBOgcIMFlkYNTiVnvyIvC4 QfitHURSYorbhcBRs5TA+y1ZhvLd78UCxJ1hmCJYjtKLhWi4YHMrKJt+HwDap1ICvmT+ AnEA== X-RZG-AUTH: ":Ln4Re0+Ic/6oZXR1YgKryK8brlshOcZlIWs+iCP5vnk6shH0WWb0LN8XZoH94zq68+3cfpOS1Pcwp3/R2fQOQEOD67VjyRdMyQ==" Received: from nimes.localnet by smtp.strato.de (RZmta 49.2.2 AUTH) with ESMTPSA id 098542z0TN6WPo9 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Mon, 30 Jan 2023 00:06:32 +0100 (CET) From: Bruno Haible To: bug-gnulib@gnu.org Subject: Fix compilation errors with CC="clang -D_FORTIFY_SOURCE=2" on Android Date: Mon, 30 Jan 2023 00:06:31 +0100 Message-ID: <4215786.ePpL0Tn3zg@nimes> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="nextPart3623077.1LmfcAHgr1" Content-Transfer-Encoding: 7Bit Received-SPF: none client-ip=85.215.255.22; envelope-from=bruno@clisp.org; helo=mo4-p00-ob.smtp.rzone.de X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: bug-gnulib@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gnulib discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnulib-bounces+normalperson=yhbt.net@gnu.org Sender: bug-gnulib-bounces+normalperson=yhbt.net@gnu.org This is a multi-part message in MIME format. --nextPart3623077.1LmfcAHgr1 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" On Android, clang does not define _FORTIFY_SOURCE by default, but the Android NDK sets CC to something like "clang -D_FORTIFY_SOURCE=2". Then, we see compilation errors, such as clang -ferror-limit=0 -D_FORTIFY_SOURCE=2 -DHAVE_CONFIG_H -DEXEEXT=\"\" -DEXEEXT=\"\" -DNO_XMALLOC -DEXEEXT=\"\" -I. -I../../gllib -I.. -DGNULIB_STRICT_CHECKING=1 -I/data/data/com.termux/files/home/local/include -Wall -fvisibility=hidden -O2 -c -o strverscmp.o ../../gllib/strverscmp.c In file included from ../../gllib/strverscmp.c:26: In file included from ./string.h:41: In file included from /data/data/com.termux/files/usr/include/string.h:187: /data/data/com.termux/files/usr/include/bits/fortify/string.h:95:47: error: use of undeclared identifier '__USE_FORTIFY_LEVEL' __clang_error_if(__bos_unevaluated_le(__bos(dst), __builtin_strlen(src)), ^ ../../gllib/cdefs.h:144:48: note: expanded from macro '__bos' #define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1) ^ In file included from ../../gllib/strverscmp.c:26: In file included from ./string.h:41: In file included from /data/data/com.termux/files/usr/include/string.h:187: /data/data/com.termux/files/usr/include/bits/fortify/string.h:95:47: error: use of undeclared identifier '__USE_FORTIFY_LEVEL' ../../gllib/cdefs.h:144:48: note: expanded from macro '__bos' #define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1) ^ Find the full list of errors from a Gnulib testdir attached. The cause is that Android has its own framework for defining fortified variants of the string operations, and like glibc it uses macros named '__bos' and '__bos0'. But these macros have different definitions in Android than in glibc. Using the glibc definition on Android leads to trouble (because it references an undefined variable __USE_FORTIFY_LEVEL). And undefining these macros after use leads to trouble as well (namely, link errors for the undefined function '__bos0'). So, gnulib's cdefs.h and libc-config.h needs to avoid fiddling with the Fortify stuff when used in Gnulib. The Gnulib modules that use libc-config, namely canonicalize-lgpl fnmatch glibc-internal/dynarray glibc-internal/scratch_buffer glob, glob-h mktime nstrftime random, random_r strverscmp tempname are unlikely to ever use this Fortify stuff. This patch fixes the compilation errors. The use of __GNULIB_CDEFS has a precedent; I therefore don't expect that it will trigger resistence during the next merge back into glibc. 2023-01-29 Bruno Haible Fix compilation errors with CC="clang -D_FORTIFY_SOURCE=2" on Android. Reported by Alexey Rochev in . * lib/cdefs.h (__bos, __bos0, __glibc_objsize0, __glibc_objsize, __glibc_safe_len_cond, __glibc_unsigned_or_positive, __glibc_safe_or_unknown_len, __glibc_unsafe_len, __glibc_fortify, __glibc_fortify_n): Don't define these macros in Gnulib. * lib/libc-config.h: Don't undefine these macros in Gnulib. diff --git a/lib/cdefs.h b/lib/cdefs.h index 09a3d19b23..412f036ce3 100644 --- a/lib/cdefs.h +++ b/lib/cdefs.h @@ -140,32 +140,37 @@ #endif +/* Gnulib avoids these definitions, as they don't work on non-glibc platforms. + In particular, __bos and __bos0 are defined differently in the Android libc. + */ +#ifndef __GNULIB_CDEFS + /* Fortify support. */ -#define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1) -#define __bos0(ptr) __builtin_object_size (ptr, 0) +# define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1) +# define __bos0(ptr) __builtin_object_size (ptr, 0) /* Use __builtin_dynamic_object_size at _FORTIFY_SOURCE=3 when available. */ -#if __USE_FORTIFY_LEVEL == 3 && (__glibc_clang_prereq (9, 0) \ - || __GNUC_PREREQ (12, 0)) -# define __glibc_objsize0(__o) __builtin_dynamic_object_size (__o, 0) -# define __glibc_objsize(__o) __builtin_dynamic_object_size (__o, 1) -#else -# define __glibc_objsize0(__o) __bos0 (__o) -# define __glibc_objsize(__o) __bos (__o) -#endif +# if __USE_FORTIFY_LEVEL == 3 && (__glibc_clang_prereq (9, 0) \ + || __GNUC_PREREQ (12, 0)) +# define __glibc_objsize0(__o) __builtin_dynamic_object_size (__o, 0) +# define __glibc_objsize(__o) __builtin_dynamic_object_size (__o, 1) +# else +# define __glibc_objsize0(__o) __bos0 (__o) +# define __glibc_objsize(__o) __bos (__o) +# endif /* Compile time conditions to choose between the regular, _chk and _chk_warn variants. These conditions should get evaluated to constant and optimized away. */ -#define __glibc_safe_len_cond(__l, __s, __osz) ((__l) <= (__osz) / (__s)) -#define __glibc_unsigned_or_positive(__l) \ +# define __glibc_safe_len_cond(__l, __s, __osz) ((__l) <= (__osz) / (__s)) +# define __glibc_unsigned_or_positive(__l) \ ((__typeof (__l)) 0 < (__typeof (__l)) -1 \ || (__builtin_constant_p (__l) && (__l) > 0)) /* Length is known to be safe at compile time if the __L * __S <= __OBJSZ condition can be folded to a constant and if it is true, or unknown (-1) */ -#define __glibc_safe_or_unknown_len(__l, __s, __osz) \ +# define __glibc_safe_or_unknown_len(__l, __s, __osz) \ ((__osz) == (__SIZE_TYPE__) -1 \ || (__glibc_unsigned_or_positive (__l) \ && __builtin_constant_p (__glibc_safe_len_cond ((__SIZE_TYPE__) (__l), \ @@ -175,7 +180,7 @@ /* Conversely, we know at compile time that the length is unsafe if the __L * __S <= __OBJSZ condition can be folded to a constant and if it is false. */ -#define __glibc_unsafe_len(__l, __s, __osz) \ +# define __glibc_unsafe_len(__l, __s, __osz) \ (__glibc_unsigned_or_positive (__l) \ && __builtin_constant_p (__glibc_safe_len_cond ((__SIZE_TYPE__) (__l), \ __s, __osz)) \ @@ -184,7 +189,7 @@ /* Fortify function f. __f_alias, __f_chk and __f_chk_warn must be declared. */ -#define __glibc_fortify(f, __l, __s, __osz, ...) \ +# define __glibc_fortify(f, __l, __s, __osz, ...) \ (__glibc_safe_or_unknown_len (__l, __s, __osz) \ ? __ ## f ## _alias (__VA_ARGS__) \ : (__glibc_unsafe_len (__l, __s, __osz) \ @@ -194,13 +199,16 @@ /* Fortify function f, where object size argument passed to f is the number of elements and not total size. */ -#define __glibc_fortify_n(f, __l, __s, __osz, ...) \ +# define __glibc_fortify_n(f, __l, __s, __osz, ...) \ (__glibc_safe_or_unknown_len (__l, __s, __osz) \ ? __ ## f ## _alias (__VA_ARGS__) \ : (__glibc_unsafe_len (__l, __s, __osz) \ ? __ ## f ## _chk_warn (__VA_ARGS__, (__osz) / (__s)) \ : __ ## f ## _chk (__VA_ARGS__, (__osz) / (__s)))) \ +#endif + + #if __GNUC_PREREQ (4,3) # define __warnattr(msg) __attribute__((__warning__ (msg))) # define __errordecl(name, msg) \ diff --git a/lib/libc-config.h b/lib/libc-config.h index 1d28e58c97..5f5ad01037 100644 --- a/lib/libc-config.h +++ b/lib/libc-config.h @@ -137,8 +137,6 @@ # undef __attribute_returns_twice__ # undef __attribute_used__ # undef __attribute_warn_unused_result__ -# undef __bos -# undef __bos0 # undef __errordecl # undef __extension__ # undef __extern_always_inline @@ -147,21 +145,13 @@ # undef __fortified_attr_access # undef __fortify_function # undef __glibc_c99_flexarr_available -# undef __glibc_fortify -# undef __glibc_fortify_n # undef __glibc_has_attribute # undef __glibc_has_builtin # undef __glibc_has_extension # undef __glibc_likely # undef __glibc_macro_warning # undef __glibc_macro_warning1 -# undef __glibc_objsize -# undef __glibc_objsize0 -# undef __glibc_safe_len_cond -# undef __glibc_safe_or_unknown_len # undef __glibc_unlikely -# undef __glibc_unsafe_len -# undef __glibc_unsigned_or_positive # undef __inline # undef __ptr_t # undef __restrict @@ -170,6 +160,18 @@ # undef __va_arg_pack_len # undef __warnattr # undef __wur +# ifndef __GNULIB_CDEFS +# undef __bos +# undef __bos0 +# undef __glibc_fortify +# undef __glibc_fortify_n +# undef __glibc_objsize +# undef __glibc_objsize0 +# undef __glibc_safe_len_cond +# undef __glibc_safe_or_unknown_len +# undef __glibc_unsafe_len +# undef __glibc_unsigned_or_positive +# endif /* Include our copy of glibc . */ # include --nextPart3623077.1LmfcAHgr1 Content-Disposition: attachment; filename="android-errors.log.gz" Content-Transfer-Encoding: base64 Content-Type: application/gzip; name="android-errors.log.gz" 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 /x/uabY+ePALAA== --nextPart3623077.1LmfcAHgr1--