From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from khan.localnet (unknown [185.44.68.223]) by sourceware.org (Postfix) with ESMTPS id 68FE73857344 for ; Fri, 6 May 2022 18:10:17 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 68FE73857344 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=void-ptr.info Authentication-Results: sourceware.org; spf=none smtp.mailfrom=khan.localnet Received: from ptr by khan.localnet with local (Exim 4.94-23-08f2e6366) (envelope-from ) id 1nn2PA-0002wF-5E; Fri, 06 May 2022 21:10:16 +0300 Date: Fri, 6 May 2022 21:10:16 +0300 From: Petr Ovtchenkov To: elfutils-devel@sourceware.org Subject: _FORTIFY_SOURCE=3 fail for gcc 12/glibc 2.35 Message-ID: <20220506181016.59b7c7f5@khan.localnet> X-Mailer: Claws Mail 3.17.6 (GTK+ 2.24.32; x86_64-unknown-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Sender: Petr Ovtchenkov X-Spam-Status: No, score=-3488.2 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, KAM_INFOUSMEBIZ, KAM_LAZY_DOMAIN_SECURITY, KAM_NUMSUBJECT, KAM_SHORT, KHOP_HELO_FCRDNS, MAY_BE_FORGED, NO_DNS_FOR_FROM, RDNS_DYNAMIC, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: elfutils-devel@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Elfutils-devel mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 May 2022 18:10:18 -0000 Hi, _FORTIFY_SOURCE=3D3 fail to compile with gcc 12/glibc 2.35. Used: (GCC) 12.0.1 20220504 (prerelease) glibc ec5b79aac768 (release/2.35/master) In file included from ..../x86_64-unknown-linux-gnu/usr/include/features.h:= 490, from .../x86_64-unknown-linux-gnu/usr/include/assert.h:35, from elf_getarsym.c:34: In function =E2=80=98pread=E2=80=99, inlined from =E2=80=98pread_retry=E2=80=99 at ../lib/system.h:188:21, inlined from =E2=80=98read_number_entries=E2=80=99 at elf_getarsym.c:63= :21, inlined from =E2=80=98elf_getarsym=E2=80=99 at elf_getarsym.c:172:11: ..../x86_64-unknown-linux-gnu/usr/include/bits/unistd.h:74:10: error: =E2= =80=98__pread_alias=E2=80=99 specified size between 9223372036854775813 and= 18446744073709551615 exceeds maximum object size 9223372036854775807 [-Wer= ror=3Dstringop-overflow=3D] 74 | return __glibc_fortify (pread, __nbytes, sizeof (char), | ^~~~~~~~~~~~~~~ elf_getarsym.c: In function =E2=80=98elf_getarsym=E2=80=99: elf_getarsym.c:56:5: note: destination object allocated here 56 | } u; | ^ ..../x86_64-unknown-linux-gnu/usr/include/bits/unistd.h:50:16: note: in a c= all to function =E2=80=98__pread_alias=E2=80=99 declared with attribute =E2= =80=98access (write_only, 2, 3)=E2=80=99 50 | extern ssize_t __REDIRECT (__pread_alias, | ^~~~~~~~~~ In file included from ..../x86_64-unknown-linux-gnu/usr/include/features.h:= 490, from ..../x86_64-unknown-linux-gnu/usr/include/assert.h:35, from elf_getarsym.c:34: In function =E2=80=98pread=E2=80=99, inlined from =E2=80=98pread_retry=E2=80=99 at ../lib/system.h:188:21, inlined from =E2=80=98read_number_entries=E2=80=99 at elf_getarsym.c:63= :21, inlined from =E2=80=98elf_getarsym=E2=80=99 at elf_getarsym.c:172:11: .../x86_64-unknown-linux-gnu/usr/include/bits/unistd.h:74:10: error: =E2=80= =98__pread_alias=E2=80=99 specified size between 9223372036854775813 and 18= 446744073709551615 exceeds maximum object size 9223372036854775807 [-Werror= =3Dstringop-overflow=3D] 74 | return __glibc_fortify (pread, __nbytes, sizeof (char), | ^~~~~~~~~~~~~~~ elf_getarsym.c: In function =E2=80=98elf_getarsym=E2=80=99: elf_getarsym.c:56:5: note: destination object allocated here 56 | } u; | ^ .../x86_64-unknown-linux-gnu/usr/include/bits/unistd.h:50:16: note: in a ca= ll to function =E2=80=98__pread_alias=E2=80=99 declared with attribute =E2= =80=98access (write_only, 2, 3)=E2=80=99 50 | extern ssize_t __REDIRECT (__pread_alias, Lower level (_FORTIFY_SOURCE=3D2) compiled fine. Tricks similar to suggested in https://gcc.gnu.org/bugzilla/show_bug.cgi?id= =3D91397 not help: warning disappear only when I set wrong condition if (w >=3D sizeof(u)) __builtin_unreachable(); (should be w > sizeof(u)). -- - ptr