From patchwork Wed May 8 15:07:06 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Romain Naour X-Patchwork-Id: 1097083 Return-Path: X-Original-To: incoming-buildroot@patchwork.ozlabs.org Delivered-To: patchwork-incoming-buildroot@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=busybox.net (client-ip=140.211.166.136; helo=silver.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="FX5xooCX"; dkim-atps=neutral Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 44zfwT224Wz9s4Y for ; Thu, 9 May 2019 01:07:37 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 9953730D67; Wed, 8 May 2019 15:07:34 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id AA9dqdX7Ec7k; Wed, 8 May 2019 15:07:29 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by silver.osuosl.org (Postfix) with ESMTP id 8FA4D227F8; Wed, 8 May 2019 15:07:29 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by ash.osuosl.org (Postfix) with ESMTP id 1FC681BF25F for ; Wed, 8 May 2019 15:07:29 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 1A8681FE0A for ; Wed, 8 May 2019 15:07:29 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id GFuc5klIQ5qi for ; Wed, 8 May 2019 15:07:27 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by silver.osuosl.org (Postfix) with ESMTPS id A06A122650 for ; Wed, 8 May 2019 15:07:26 +0000 (UTC) Received: by mail-wr1-f68.google.com with SMTP id l2so27689847wrb.9 for ; Wed, 08 May 2019 08:07:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=fQEt5zDPxSTSu6b3F0vgj452jx3C82A6cvMYQg6xkJE=; b=FX5xooCX3D+1RSV27egO2MYkaACD/43imaHVaROUiHo0xnADBWkRHC+OA6tXZSKeBM xpbHu6lq5f0mP0JUNS795tsAZGziTbob5HJQll1CQYD19zbTLnOlaHNo+mc2WeDFCsYq qd7SxMlcP9PBvghaHAwZRdcgbLcfN/VtyZLEWqQZ+nex8drjBmUmI7wDyu2KTRj/6m0M 9V1qJiuBePBFB+c5bH7hca1pyC/IeWLxYZtxraq9YqTYS63PekE/S4dXa40oFDQJuxnB wQsJpqP2PCbjdolWwk5Vuk4Yn6l1Ekk8sqZ1EShyYZwQigQuK84XuxKSLtV5S9bYX52o muBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=fQEt5zDPxSTSu6b3F0vgj452jx3C82A6cvMYQg6xkJE=; b=WWKZw+gW04McFcfxTcsgFr5uDeFusO2jIqv6hbiHiDpwWPIyDl38xJmhwq3N9dGClB gXdQmUMXrgPGPNwMPUCXVZzZXVZL0NbwVMvjyVubsRp6WW5YqQ7zRvP3jaObcVAViLC4 eWqT6uQ7AAzThsOV+JtUj42ZeZ/Occ6zOPhOAPRpdtfhWpxvlgGLaSqnOwOYWeGv3Ylv M/JCAo70vNtYPIsqLIdWcTrdgEVyXBa36LI4FxYc6Y7G1bLaJfMLDJJQML2NoOw1eVIp yJfT7JX7Ta+GaTGbWubhcXoyLu+v7w6IDKL5X3eUZ/V0G42ESVCrb8Vcg+c1W6a3EpiD 7Yuw== X-Gm-Message-State: APjAAAVe34+1b9OrynwAj75nk5bJJObEsgKeQ9YqjUbrlaNciyzZOo8c JHBd+6SLAOfffaeeNlI1a7N5/R0x X-Google-Smtp-Source: APXvYqzHxu+EvE5gdoiluyWRMVVgeB8Qqlnm8xIFmwfa3KAZ4rkbP/UrdSLIYvspesRW7bPDARmzcw== X-Received: by 2002:adf:bac9:: with SMTP id w9mr27500673wrg.256.1557328044783; Wed, 08 May 2019 08:07:24 -0700 (PDT) Received: from localhost.localdomain (2a01cb0589880c008a3268f7cbc0fc5c.ipv6.abo.wanadoo.fr. [2a01:cb05:8988:c00:8a32:68f7:cbc0:fc5c]) by smtp.gmail.com with ESMTPSA id o6sm36315359wrh.55.2019.05.08.08.07.23 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 08 May 2019 08:07:23 -0700 (PDT) From: Romain Naour To: buildroot@buildroot.org Date: Wed, 8 May 2019 17:07:06 +0200 Message-Id: <20190508150720.27946-2-romain.naour@gmail.com> X-Mailer: git-send-email 2.14.5 In-Reply-To: <20190508150720.27946-1-romain.naour@gmail.com> References: <20190508150720.27946-1-romain.naour@gmail.com> Subject: [Buildroot] [PATCH v2 01/15] package/glibc/arc: fix build issue with gcc-9.1 X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Evgeniy Didin , Romain Naour , Alexey Brodkin , Eugeniy Paltsev MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" Backport from upstream [1] to fix build issue with glibc arc-2018.09-release (based on glibc 2.28) and gcc 9.1 [2]] Using glibc arc-2.29-2019.02.08 or the upcoming arc-2019.03 release include this patch. The upstream patch [1] modify mostly x86_64 files, but also two generic headers where the new __attribute_copy__() macro is defined *and* used to complement existing attribute-related macros. So, it is not much the x86_64 part we're interested in, but the generic two headers, which changes percolate to the various functions via the various attribute macros... [1] https://sourceware.org/git/?p=glibc.git;a=commit;h=1626a1cfcd6ba1cc64721be1036c2873211d499b [2] https://gitlab.com/kubu93/toolchains-builder/-/jobs/205435682 Signed-off-by: Romain Naour Cc: Alexey Brodkin Cc: Evgeniy Didin Cc: Eugeniy Paltsev --- v2: remove x86_64 part of the backported patch (Yann). commit log (Yann) --- ...0001-Add-support-for-GCC-9-attribute-copy.patch | 160 +++++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 package/glibc/arc-2018.09-release/0001-Add-support-for-GCC-9-attribute-copy.patch diff --git a/package/glibc/arc-2018.09-release/0001-Add-support-for-GCC-9-attribute-copy.patch b/package/glibc/arc-2018.09-release/0001-Add-support-for-GCC-9-attribute-copy.patch new file mode 100644 index 0000000000..0c0a8a9337 --- /dev/null +++ b/package/glibc/arc-2018.09-release/0001-Add-support-for-GCC-9-attribute-copy.patch @@ -0,0 +1,160 @@ +From 3e0c7985c9535304d87af3ad728f5f6d34557f0d Mon Sep 17 00:00:00 2001 +From: Martin Sebor +Date: Fri, 9 Nov 2018 17:24:12 -0700 +Subject: [PATCH] Add support for GCC 9 attribute copy. + +GCC 9 has gained an enhancement to help detect attribute mismatches +between alias declarations and their targets. It consists of a new +warning, -Wattribute-alias, an enhancement to an existing warning, +-Wmissing-attributes, and a new attribute called copy. + +The purpose of the warnings is to help identify either possible bugs +(an alias declared with more restrictive attributes than its target +promises) or optimization or diagnostic opportunities (an alias target +missing some attributes that it could be declared with that might +benefit analysis and code generation). The purpose of the new +attribute is to easily apply (almost) the same set of attributes +to one declaration as those already present on another. + +As expected (and intended) the enhancement triggers warnings for +many alias declarations in Glibc code. This change, tested on +x86_64-linux, avoids all instances of the new warnings by making +use of the attribute where appropriate. To fully benefit from +the enhancement Glibc will need to be compiled with + -Wattribute-alias=2 and remaining warnings reviewed and dealt with +(there are a couple of thousand but most should be straightforward +to deal with). + +ChangeLog: + + * include/libc-symbols.h (__attribute_copy__): Define macro unless + it's already defined. + (_strong_alias): Use __attribute_copy__. + (_weak_alias, __hidden_ver1, __hidden_nolink2): Same. + * misc/sys/cdefs.h (__attribute_copy__): New macro. + * sysdeps/x86_64/multiarch/memchr.c (memchr): Use __attribute_copy__. + * sysdeps/x86_64/multiarch/memcmp.c (memcmp): Same. + * sysdeps/x86_64/multiarch/mempcpy.c (mempcpy): Same. + * sysdeps/x86_64/multiarch/memset.c (memset): Same. + * sysdeps/x86_64/multiarch/stpcpy.c (stpcpy): Same. + * sysdeps/x86_64/multiarch/strcat.c (strcat): Same. + * sysdeps/x86_64/multiarch/strchr.c (strchr): Same. + * sysdeps/x86_64/multiarch/strcmp.c (strcmp): Same. + * sysdeps/x86_64/multiarch/strcpy.c (strcpy): Same. + * sysdeps/x86_64/multiarch/strcspn.c (strcspn): Same. + * sysdeps/x86_64/multiarch/strlen.c (strlen): Same. + * sysdeps/x86_64/multiarch/strncmp.c (strncmp): Same. + * sysdeps/x86_64/multiarch/strncpy.c (strncpy): Same. + * sysdeps/x86_64/multiarch/strnlen.c (strnlen): Same. + * sysdeps/x86_64/multiarch/strpbrk.c (strpbrk): Same. + * sysdeps/x86_64/multiarch/strrchr.c (strrchr): Same. + * sysdeps/x86_64/multiarch/strspn.c (strspn): Same. + +Using glibc arc-2.29-2019.02.08 or the upcoming arc-2019.03 release include this patch. + +[1] https://sourceware.org/git/?p=glibc.git;a=commit;h=1626a1cfcd6ba1cc64721be1036c2873211d499b +[2] https://gitlab.com/kubu93/toolchains-builder/-/jobs/205435682 + +Signed-off-by: Romain Naour +[Romain: + - Backport from upstream [1] to fix build issue with glibc arc-2018.09-release + (based on glibc 2.28) and gcc 9.1 [2] + - Also drop the x86-64 related hunks to avoid confusion. +] +Cc: Alexey Brodkin +Cc: Evgeniy Didin +Cc: Eugeniy Paltsev +--- + include/libc-symbols.h | 20 +++++++++++++++----- + misc/sys/cdefs.h | 10 ++++++++++ + 2 files changed, 25 insertions(+), 5 deletions(-) + +diff --git a/include/libc-symbols.h b/include/libc-symbols.h +index 8b9273c13a..e71a479e84 100644 +--- a/include/libc-symbols.h ++++ b/include/libc-symbols.h +@@ -125,6 +125,11 @@ + # define ASM_LINE_SEP ; + #endif + ++#ifndef __attribute_copy__ ++/* Provide an empty definition when cdefs.h is not included. */ ++# define __attribute_copy__(arg) ++#endif ++ + #ifndef __ASSEMBLER__ + /* GCC understands weak symbols and aliases; use its interface where + possible, instead of embedded assembly language. */ +@@ -132,7 +137,8 @@ + /* Define ALIASNAME as a strong alias for NAME. */ + # define strong_alias(name, aliasname) _strong_alias(name, aliasname) + # define _strong_alias(name, aliasname) \ +- extern __typeof (name) aliasname __attribute__ ((alias (#name))); ++ extern __typeof (name) aliasname __attribute__ ((alias (#name))) \ ++ __attribute_copy__ (name); + + /* This comes between the return type and function name in + a function definition to make that definition weak. */ +@@ -143,14 +149,16 @@ + If weak aliases are not available, this defines a strong alias. */ + # define weak_alias(name, aliasname) _weak_alias (name, aliasname) + # define _weak_alias(name, aliasname) \ +- extern __typeof (name) aliasname __attribute__ ((weak, alias (#name))); ++ extern __typeof (name) aliasname __attribute__ ((weak, alias (#name))) \ ++ __attribute_copy__ (name); + + /* Same as WEAK_ALIAS, but mark symbol as hidden. */ + # define weak_hidden_alias(name, aliasname) \ + _weak_hidden_alias (name, aliasname) + # define _weak_hidden_alias(name, aliasname) \ + extern __typeof (name) aliasname \ +- __attribute__ ((weak, alias (#name), __visibility__ ("hidden"))); ++ __attribute__ ((weak, alias (#name), __visibility__ ("hidden"))) \ ++ __attribute_copy__ (name); + + /* Declare SYMBOL as weak undefined symbol (resolved to 0 if not defined). */ + # define weak_extern(symbol) _weak_extern (weak symbol) +@@ -532,7 +540,8 @@ for linking") + # define __hidden_ver1(local, internal, name) \ + extern __typeof (name) __EI_##name __asm__(__hidden_asmname (#internal)); \ + extern __typeof (name) __EI_##name \ +- __attribute__((alias (__hidden_asmname (#local)))) ++ __attribute__((alias (__hidden_asmname (#local)))) \ ++ __attribute_copy__ (name) + # define hidden_ver(local, name) __hidden_ver1(local, __GI_##name, name); + # define hidden_data_ver(local, name) hidden_ver(local, name) + # define hidden_def(name) __hidden_ver1(__GI_##name, name, name); +@@ -545,7 +554,8 @@ for linking") + # define __hidden_nolink1(local, internal, name, version) \ + __hidden_nolink2 (local, internal, name, version) + # define __hidden_nolink2(local, internal, name, version) \ +- extern __typeof (name) internal __attribute__ ((alias (#local))); \ ++ extern __typeof (name) internal __attribute__ ((alias (#local))) \ ++ __attribute_copy__ (name); \ + __hidden_nolink3 (local, internal, #name "@" #version) + # define __hidden_nolink3(local, internal, vername) \ + __asm__ (".symver " #internal ", " vername); +diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h +index 3f6fe3cc85..8d585680a6 100644 +--- a/misc/sys/cdefs.h ++++ b/misc/sys/cdefs.h +@@ -431,6 +431,16 @@ + # define __attribute_nonstring__ + #endif + ++/* Undefine (also defined in libc-symbols.h). */ ++#undef __attribute_copy__ ++#if __GNUC_PREREQ (9, 0) ++/* Copies attributes from the declaration or type referenced by ++ the argument. */ ++# define __attribute_copy__(arg) __attribute__ ((__copy__ (arg))) ++#else ++# define __attribute_copy__(arg) ++#endif ++ + #if (!defined _Static_assert && !defined __cplusplus \ + && (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) < 201112 \ + && (!__GNUC_PREREQ (4, 6) || defined __STRICT_ANSI__)) +-- +2.14.5 +