cross/gcc-*: upgrade to 10.2.0-r2

This commit is contained in:
Oliver Smith 2020-08-24 13:15:45 +02:00
parent aced152afc
commit d425719887
No known key found for this signature in database
GPG key ID: 5AE7F5513E0885CB
93 changed files with 2214 additions and 171 deletions

View file

@ -1,7 +1,7 @@
From 399f9e74a691ca6272d460d72d1b47afcad84752 Mon Sep 17 00:00:00 2001
From: Szabolcs Nagy <nsz@port70.net>
Date: Fri, 26 Jan 2018 20:32:50 +0000
Subject: [PATCH 01/28] posix_memalign
Subject: [PATCH 01/30] posix_memalign
---
gcc/config/i386/pmm_malloc.h | 9 +++++----

View file

@ -1,7 +1,7 @@
From 0e993b1b9a33910193862d76facf34bdbe58ed01 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 29 Mar 2013 08:59:00 +0400
Subject: [PATCH 02/28] gcc: poison-system-directories
Subject: [PATCH 02/30] gcc: poison-system-directories
Add /sw/include and /opt/include based on the original
zecke-no-host-includes.patch patch. The original patch checked for

View file

@ -1,7 +1,7 @@
From a35a55940c3402f8ebb510ec7d8bc67e85051277 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:45:49 +0000
Subject: [PATCH 03/28] Turn on -Wl,-z,relro,-z,now by default.
Subject: [PATCH 03/30] Turn on -Wl,-z,relro,-z,now by default.
---
gcc/doc/invoke.texi | 3 +++

View file

@ -1,7 +1,7 @@
From d2865d0a184ef59be8893dd34edf5037c4bf48f7 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:46:22 +0000
Subject: [PATCH 04/28] Turn on -D_FORTIFY_SOURCE=2 by default for C, C++,
Subject: [PATCH 04/30] Turn on -D_FORTIFY_SOURCE=2 by default for C, C++,
ObjC, ObjC++, if the optimization level is > 0
---

View file

@ -1,7 +1,7 @@
From 872e0a15a2b74cd6b6ba58e2e7e1605543ea36bd Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:46:56 +0000
Subject: [PATCH 05/28] On linux targets pass --as-needed by default to the
Subject: [PATCH 05/30] On linux targets pass --as-needed by default to the
linker, but always link the sanitizer libraries with --no-as-needed.
---

View file

@ -1,7 +1,7 @@
From 5e20872b8cc916cb457c63c6cd970c4fcba47bbb Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:47:43 +0000
Subject: [PATCH 06/28] Enable -Wformat and -Wformat-security by default.
Subject: [PATCH 06/30] Enable -Wformat and -Wformat-security by default.
---
gcc/c-family/c.opt | 4 ++--

View file

@ -1,7 +1,7 @@
From 1bcf7e30226852db956becebaffdfe2738923423 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:48:24 +0000
Subject: [PATCH 07/28] Enable -Wtrampolines by default.
Subject: [PATCH 07/30] Enable -Wtrampolines by default.
---
gcc/common.opt | 2 +-

View file

@ -1,7 +1,7 @@
From 23fd86ff34670873dd294bd87b93f45c3624903a Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:49:40 +0000
Subject: [PATCH 08/28] Disable ssp on -nostdlib, -nodefaultlibs and
Subject: [PATCH 08/30] Disable ssp on -nostdlib, -nodefaultlibs and
-ffreestanding Change the buffer size.
---

View file

@ -1,7 +1,7 @@
From d27d7936ecd9f357a3c6ee05e6548f8a68fdd4b7 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:50:33 +0000
Subject: [PATCH 09/28] Ensure that msgfmt doesn't encounter problems during
Subject: [PATCH 09/30] Ensure that msgfmt doesn't encounter problems during
gcc bootstrapping.
Solves error messages like the following:

View file

@ -1,7 +1,7 @@
From 2ec258d6d31e2c0c614c5086acee84a87768a67c Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:52:07 +0000
Subject: [PATCH 10/28] Don't declare asprintf if defined as a macro.
Subject: [PATCH 10/30] Don't declare asprintf if defined as a macro.
---
include/libiberty.h | 3 +++

View file

@ -1,7 +1,7 @@
From 4f6fd2272f57620da399d0f841fce12b9db3b2d1 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:53:00 +0000
Subject: [PATCH 11/28] libiberty: copy PIC objects during build process
Subject: [PATCH 11/30] libiberty: copy PIC objects during build process
---
libiberty/Makefile.in | 1 +

View file

@ -1,7 +1,7 @@
From cef5e0336cfdf4afd0e01fa9e562f686b234697a Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:53:36 +0000
Subject: [PATCH 12/28] libitm: disable FORTIFY
Subject: [PATCH 12/30] libitm: disable FORTIFY
---
libitm/configure.tgt | 10 ++++++++++

View file

@ -1,7 +1,7 @@
From d31721459e363e49dfe0a7797300864d9cef92f0 Mon Sep 17 00:00:00 2001
From: Szabolcs Nagy <nsz@port70.net>
Date: Sat, 24 Oct 2015 20:09:53 +0000
Subject: [PATCH 13/28] libgcc_s
Subject: [PATCH 13/30] libgcc_s
---
gcc/config/i386/i386-expand.c | 4 ++--

View file

@ -1,7 +1,7 @@
From f64f853eae3b390adbbc9b74a336d93918e6dca4 Mon Sep 17 00:00:00 2001
From: Szabolcs Nagy <nsz@port70.net>
Date: Sat, 7 Nov 2015 02:08:05 +0000
Subject: [PATCH 14/28] nopie
Subject: [PATCH 14/30] nopie
---
gcc/configure | 27 +++++++++++++++++++++++++++

View file

@ -1,7 +1,7 @@
From 37dace030c1402a8e6734a0fc59e18717ce1a2ef Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:57:09 +0000
Subject: [PATCH 15/28] libffi: use __linux__ instead of __gnu_linux__ for musl
Subject: [PATCH 15/30] libffi: use __linux__ instead of __gnu_linux__ for musl
---
libffi/src/closures.c | 2 +-

View file

@ -1,7 +1,7 @@
From 7fc386a2e629e859968da4eb4d0ff4983cb3b76f Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:57:51 +0000
Subject: [PATCH 16/28] dlang: update zlib binding
Subject: [PATCH 16/30] dlang: update zlib binding
---
libphobos/src/std/zlib.d | 266 ++++++++++++++++++++++++++++-----------

View file

@ -1,7 +1,7 @@
From ef5f7880cff27a2b92952ce53a207d5dd896923b Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:58:22 +0000
Subject: [PATCH 17/28] dlang: fix fcntl on mips, add libucontext dep
Subject: [PATCH 17/30] dlang: fix fcntl on mips, add libucontext dep
---
libphobos/configure.tgt | 1 +

View file

@ -1,7 +1,7 @@
From b675e0383262d6d702f5b732e4459d3e2c2a4891 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:59:16 +0000
Subject: [PATCH 18/28] ada: fix shared linking
Subject: [PATCH 18/30] ada: fix shared linking
---
gcc/ada/link.c | 12 ++++++------

View file

@ -1,7 +1,7 @@
From 0ea91dd6f8d856d5b589c2a3e95469fea06e7094 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:59:43 +0000
Subject: [PATCH 19/28] build: fix CXXFLAGS_FOR_BUILD passing
Subject: [PATCH 19/30] build: fix CXXFLAGS_FOR_BUILD passing
---
Makefile.in | 1 +

View file

@ -1,7 +1,7 @@
From 9684a815e1cbe854383c3c511e1d84d43c46ec94 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 07:00:17 +0000
Subject: [PATCH 20/28] libstdc++: futex: add time64 compatibility
Subject: [PATCH 20/30] libstdc++: futex: add time64 compatibility
---
libstdc++-v3/src/c++11/futex.cc | 8 ++++++++

View file

@ -1,7 +1,7 @@
From a0708ec975c01b049d254dc51179898966bf8a52 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 07:01:06 +0000
Subject: [PATCH 21/28] add fortify-headers paths
Subject: [PATCH 21/30] add fortify-headers paths
---
gcc/config/linux.h | 2 ++

View file

@ -1,7 +1,7 @@
From 740342a0e4b0b3af498964440918abba1a27ba33 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
Date: Fri, 21 Aug 2020 07:03:00 +0000
Subject: [PATCH 22/28] Alpine musl package provides libssp_nonshared.a. We
Subject: [PATCH 22/30] Alpine musl package provides libssp_nonshared.a. We
link to it unconditionally, as otherwise we get link failures if some objects
are -fstack-protector built and final link happens with -fno-stack-protector.
This seems to be the common case when bootstrapping gcc, the piepatches do

View file

@ -1,7 +1,7 @@
From 775adf35d6f34f61947fc28a2bdbfa7e881c40d5 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 07:03:42 +0000
Subject: [PATCH 23/28] DP: Use --push-state/--pop-state for gold as well when
Subject: [PATCH 23/30] DP: Use --push-state/--pop-state for gold as well when
linking libtsan.
---

View file

@ -1,7 +1,7 @@
From 717090cf538f765db1730956c512a43f2d52a802 Mon Sep 17 00:00:00 2001
From: Nils Andreas Svee <me@lochnair.net>
Date: Thu, 21 Dec 2017 03:14:33 +0100
Subject: [PATCH 24/28] Pure 64-bit MIPS
Subject: [PATCH 24/30] Pure 64-bit MIPS
---
gcc/config/mips/mips.h | 8 ++++----

View file

@ -1,7 +1,7 @@
From f73cf8d2f8f4eee71fc2ba850672e69f509a4486 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 07:04:40 +0000
Subject: [PATCH 25/28] use pure 64-bit configuration where appropriate
Subject: [PATCH 25/30] use pure 64-bit configuration where appropriate
---
gcc/config/aarch64/t-aarch64-linux | 2 +-

View file

@ -1,7 +1,7 @@
From 8472f6d0037dcd19c44b1e95d95fbf937b3823e6 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 07:05:41 +0000
Subject: [PATCH 26/28] always build libgcc_eh.a
Subject: [PATCH 26/30] always build libgcc_eh.a
highly inspired by:
http://landley.net/hg/aboriginal/file/7e0747a665ab/sources/patches/gcc-core-libgcceh.patch

View file

@ -1,7 +1,7 @@
From 4e1b3a26f558e7693853d3600ee677705e67406c Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 07:06:30 +0000
Subject: [PATCH 27/28] ada: libgnarl compatibility for musl
Subject: [PATCH 27/30] ada: libgnarl compatibility for musl
---
gcc/ada/libgnarl/s-osinte__linux.ads | 11 ------

View file

@ -1,7 +1,7 @@
From 5e3d7d2f1e2448b6c5eb207f9251c437629e43bc Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 07:07:48 +0000
Subject: [PATCH 28/28] ada: musl support fixes
Subject: [PATCH 28/30] ada: musl support fixes
---
gcc/ada/Makefile.rtl | 10 +++++-----

View file

@ -0,0 +1,520 @@
From d6599f89ba558ec2a68d4bc4af15cf3513218054 Mon Sep 17 00:00:00 2001
From: Richard Sandiford <richard.sandiford@arm.com>
Date: Mon, 3 Aug 2020 09:48:36 +0100
Subject: [PATCH 29/30] c: Fix bogus vector initialisation error [PR96377]
One of the problems in this PR was that if we had:
vector_type1 array[] = { vector_value1 };
process_init_element would only treat vector_value1 as initialising
a vector_type1 if they had the same TYPE_MAIN_VARIANT. This has
several problems:
(1) It gives confusing error messages if the vector types are
incompatible. (Tested by gcc.dg/pr96377-1.c.)
(2) It means that we reject code that should be valid with
-flax-vector-conversions. (Tested by gcc.dg/pr96377-2.c.)
(3) On arm and aarch64 targets, it means that we reject some
initializers that mix Advanced SIMD and standard GNU vectors.
These vectors have traditionally had different TYPE_MAIN_VARIANTs
because they have different mangling schemes. (Tested by
gcc.dg/pr96377-[3-6].c.)
(4) It means that we reject SVE initializers that should be valid.
(Tested by gcc.target/aarch64/sve/gnu_vectors_[34].c.)
(5) After r11-1741-g:31427b974ed7b7dd54e2 we reject:
arm_neon_type1 array[] = { k ^ arm_neon_value1 };
because applying the binary operator to arm_neon_value1 strips
the "Advanced SIMD type" attributes that were added in that patch.
Stripping the attributes is problematic for other reasons though,
so that still needs to be fixed separately.
g++.target/aarch64/sve/gnu_vectors_[34].C already pass.
gcc/c/
PR c/96377
* c-typeck.c (process_init_element): Split test for whether to
recurse into a record, union or array into...
(initialize_elementwise_p): ...this new function. Don't recurse
into a vector type if the initialization value is also a vector.
gcc/testsuite/
PR c/96377
* gcc.dg/pr96377-1.c: New test.
* gcc.dg/pr96377-2.c: Likewise.
* gcc.dg/pr96377-3.c: Likewise.
* gcc.dg/pr96377-4.c: Likewise.
* gcc.dg/pr96377-5.c: Likewise.
* gcc.dg/pr96377-6.c: Likewise.
* gcc.target/aarch64/pr96377-1.c: Likewise.
* gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c: Likewise.
* gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c: Likewise.
* g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C: Likewise.
* g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C: Likewise.
(cherry picked from commit 7d599ad27b9bcf5165f87710f1abc64bbabd06ae)
---
gcc/c/c-typeck.c | 59 ++++++++++++++-----
.../sve/acle/general-c++/gnu_vectors_3.C | 15 +++++
.../sve/acle/general-c++/gnu_vectors_4.C | 15 +++++
gcc/testsuite/gcc.dg/pr96377-1.c | 32 ++++++++++
gcc/testsuite/gcc.dg/pr96377-2.c | 31 ++++++++++
gcc/testsuite/gcc.dg/pr96377-3.c | 33 +++++++++++
gcc/testsuite/gcc.dg/pr96377-4.c | 32 ++++++++++
gcc/testsuite/gcc.dg/pr96377-5.c | 33 +++++++++++
gcc/testsuite/gcc.dg/pr96377-6.c | 32 ++++++++++
gcc/testsuite/gcc.target/aarch64/pr96377-1.c | 20 +++++++
.../sve/acle/general-c/gnu_vectors_3.c | 15 +++++
.../sve/acle/general-c/gnu_vectors_4.c | 15 +++++
12 files changed, 317 insertions(+), 15 deletions(-)
create mode 100644 gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C
create mode 100644 gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C
create mode 100644 gcc/testsuite/gcc.dg/pr96377-1.c
create mode 100644 gcc/testsuite/gcc.dg/pr96377-2.c
create mode 100644 gcc/testsuite/gcc.dg/pr96377-3.c
create mode 100644 gcc/testsuite/gcc.dg/pr96377-4.c
create mode 100644 gcc/testsuite/gcc.dg/pr96377-5.c
create mode 100644 gcc/testsuite/gcc.dg/pr96377-6.c
create mode 100644 gcc/testsuite/gcc.target/aarch64/pr96377-1.c
create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c
create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c
diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c
index eb4b641e6bb..58762f10a93 100644
--- a/gcc/c/c-typeck.c
+++ b/gcc/c/c-typeck.c
@@ -9910,6 +9910,47 @@ output_pending_init_elements (int all, struct obstack * braced_init_obstack)
goto retry;
}
+/* Expression VALUE coincides with the start of type TYPE in a braced
+ initializer. Return true if we should treat VALUE as initializing
+ the first element of TYPE, false if we should treat it as initializing
+ TYPE as a whole.
+
+ If the initializer is clearly invalid, the question becomes:
+ which choice gives the best error message? */
+
+static bool
+initialize_elementwise_p (tree type, tree value)
+{
+ if (type == error_mark_node || value == error_mark_node)
+ return false;
+
+ gcc_checking_assert (TYPE_MAIN_VARIANT (type) == type);
+
+ tree value_type = TREE_TYPE (value);
+ if (value_type == error_mark_node)
+ return false;
+
+ /* GNU vectors can be initialized elementwise. However, treat any
+ kind of vector value as initializing the vector type as a whole,
+ regardless of whether the value is a GNU vector. Such initializers
+ are valid if and only if they would have been valid in a non-braced
+ initializer like:
+
+ TYPE foo = VALUE;
+
+ so recursing into the vector type would be at best confusing or at
+ worst wrong. For example, when -flax-vector-conversions is in effect,
+ it's possible to initialize a V8HI from a V4SI, even though the vectors
+ have different element types and different numbers of elements. */
+ if (gnu_vector_type_p (type))
+ return !VECTOR_TYPE_P (value_type);
+
+ if (AGGREGATE_TYPE_P (type))
+ return type != TYPE_MAIN_VARIANT (value_type);
+
+ return false;
+}
+
/* Add one non-braced element to the current constructor level.
This adjusts the current position within the constructor's type.
This may also start or terminate implicit levels
@@ -10089,11 +10130,7 @@ process_init_element (location_t loc, struct c_expr value, bool implicit,
/* Otherwise, if we have come to a subaggregate,
and we don't have an element of its type, push into it. */
else if (value.value != NULL_TREE
- && value.value != error_mark_node
- && TYPE_MAIN_VARIANT (TREE_TYPE (value.value)) != fieldtype
- && (fieldcode == RECORD_TYPE || fieldcode == ARRAY_TYPE
- || fieldcode == UNION_TYPE
- || gnu_vector_type_p (fieldtype)))
+ && initialize_elementwise_p (fieldtype, value.value))
{
push_init_level (loc, 1, braced_init_obstack);
continue;
@@ -10181,11 +10218,7 @@ process_init_element (location_t loc, struct c_expr value, bool implicit,
/* Otherwise, if we have come to a subaggregate,
and we don't have an element of its type, push into it. */
else if (value.value != NULL_TREE
- && value.value != error_mark_node
- && TYPE_MAIN_VARIANT (TREE_TYPE (value.value)) != fieldtype
- && (fieldcode == RECORD_TYPE || fieldcode == ARRAY_TYPE
- || fieldcode == UNION_TYPE
- || gnu_vector_type_p (fieldtype)))
+ && initialize_elementwise_p (fieldtype, value.value))
{
push_init_level (loc, 1, braced_init_obstack);
continue;
@@ -10224,11 +10257,7 @@ process_init_element (location_t loc, struct c_expr value, bool implicit,
/* Otherwise, if we have come to a subaggregate,
and we don't have an element of its type, push into it. */
else if (value.value != NULL_TREE
- && value.value != error_mark_node
- && TYPE_MAIN_VARIANT (TREE_TYPE (value.value)) != elttype
- && (eltcode == RECORD_TYPE || eltcode == ARRAY_TYPE
- || eltcode == UNION_TYPE
- || gnu_vector_type_p (elttype)))
+ && initialize_elementwise_p (elttype, value.value))
{
push_init_level (loc, 1, braced_init_obstack);
continue;
diff --git a/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C b/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C
new file mode 100644
index 00000000000..e607d58d726
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C
@@ -0,0 +1,15 @@
+/* { dg-options "-msve-vector-bits=256" } */
+
+#include <arm_sve.h>
+
+typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
+typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
+
+void
+f (svuint8_t sve_u1, svint8_t sve_s1,
+ gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1)
+{
+ gnu_uint8_t arr1[] = { gnu_u1, sve_u1 };
+ gnu_uint8_t arr2[] = { gnu_s1 }; // { dg-error "cannot convert" }
+ gnu_uint8_t arr3[] = { sve_s1 }; // { dg-error "cannot convert" }
+}
diff --git a/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C b/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C
new file mode 100644
index 00000000000..ac4e0d12ff8
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C
@@ -0,0 +1,15 @@
+/* { dg-options "-msve-vector-bits=256 -flax-vector-conversions" } */
+
+#include <arm_sve.h>
+
+typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
+typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
+
+void
+f (svuint8_t sve_u1, svint8_t sve_s1,
+ gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1)
+{
+ gnu_uint8_t arr1[] = { gnu_u1, sve_u1 };
+ gnu_uint8_t arr2[] = { gnu_s1 };
+ gnu_uint8_t arr3[] = { sve_s1 };
+}
diff --git a/gcc/testsuite/gcc.dg/pr96377-1.c b/gcc/testsuite/gcc.dg/pr96377-1.c
new file mode 100644
index 00000000000..2bf3f816331
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr96377-1.c
@@ -0,0 +1,32 @@
+/* { dg-options "-fno-lax-vector-conversions" } */
+/* { dg-message "use '-flax-vector-conversions' to permit conversions" "" { target *-*-* } 0 } */
+
+typedef int v4si __attribute__((vector_size(16)));
+typedef short v8hi __attribute__((vector_size(16)));
+
+struct s { v8hi x; v4si y; };
+union u1 { v8hi x; v4si y; };
+union u2 { v4si s; v8hi y; };
+
+void
+foo (v4si i, v8hi h)
+{
+ struct s x1 = { i, i }; // { dg-error "incompatible types when initializing type '__vector" }
+ struct s x2 = { h, h }; // { dg-error "incompatible types" }
+ struct s x3 = { i, h }; // { dg-error "incompatible types" }
+ struct s x4 = { h, i };
+
+ union u1 y1 = { i }; // { dg-error "incompatible types" }
+ union u1 y2 = { h };
+ union u2 y3 = { i };
+ union u2 y4 = { h }; // { dg-error "incompatible types" }
+
+ v4si z1[] = { i, i };
+ v4si z2[] = { i, h }; // { dg-error "incompatible types" }
+ v4si z3[] = { h, i }; // { dg-error "incompatible types" }
+ v4si z4[] = { h, h }; // { dg-error "incompatible types" }
+ v8hi z5[] = { i, i }; // { dg-error "incompatible types" }
+ v8hi z6[] = { i, h }; // { dg-error "incompatible types" }
+ v8hi z7[] = { h, i }; // { dg-error "incompatible types" }
+ v8hi z8[] = { h, h };
+}
diff --git a/gcc/testsuite/gcc.dg/pr96377-2.c b/gcc/testsuite/gcc.dg/pr96377-2.c
new file mode 100644
index 00000000000..f58b06d9076
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr96377-2.c
@@ -0,0 +1,31 @@
+/* { dg-options "-flax-vector-conversions" } */
+
+typedef int v4si __attribute__((vector_size(16)));
+typedef short v8hi __attribute__((vector_size(16)));
+
+struct s { v8hi x; v4si y; };
+union u1 { v8hi x; v4si y; };
+union u2 { v4si s; v8hi y; };
+
+void
+foo (v4si i, v8hi h)
+{
+ struct s x1 = { i, i };
+ struct s x2 = { h, h };
+ struct s x3 = { i, h };
+ struct s x4 = { h, i };
+
+ union u1 y1 = { i };
+ union u1 y2 = { h };
+ union u2 y3 = { i };
+ union u2 y4 = { h };
+
+ v4si z1[] = { i, i };
+ v4si z2[] = { i, h };
+ v4si z3[] = { h, i };
+ v4si z4[] = { h, h };
+ v8hi z5[] = { i, i };
+ v8hi z6[] = { i, h };
+ v8hi z7[] = { h, i };
+ v8hi z8[] = { h, h };
+}
diff --git a/gcc/testsuite/gcc.dg/pr96377-3.c b/gcc/testsuite/gcc.dg/pr96377-3.c
new file mode 100644
index 00000000000..66dce01f277
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr96377-3.c
@@ -0,0 +1,33 @@
+/* { dg-do compile { target aarch64*-*-* } } */
+/* { dg-options "-fno-lax-vector-conversions" } */
+/* { dg-message "use '-flax-vector-conversions' to permit conversions" "" { target *-*-* } 0 } */
+
+typedef int v4si __attribute__((vector_size(16)));
+typedef short v8hi __attribute__((vector_size(16)));
+
+struct s { v8hi x; v4si y; };
+union u1 { v8hi x; v4si y; };
+union u2 { v4si s; v8hi y; };
+
+void
+foo (__Int32x4_t i, __Int16x8_t h)
+{
+ struct s x1 = { i, i }; // { dg-error "incompatible types when initializing type '__vector" }
+ struct s x2 = { h, h }; // { dg-error "incompatible types" }
+ struct s x3 = { i, h }; // { dg-error "incompatible types" }
+ struct s x4 = { h, i };
+
+ union u1 y1 = { i }; // { dg-error "incompatible types" }
+ union u1 y2 = { h };
+ union u2 y3 = { i };
+ union u2 y4 = { h }; // { dg-error "incompatible types" }
+
+ v4si z1[] = { i, i };
+ v4si z2[] = { i, h }; // { dg-error "incompatible types" }
+ v4si z3[] = { h, i }; // { dg-error "incompatible types" }
+ v4si z4[] = { h, h }; // { dg-error "incompatible types" }
+ v8hi z5[] = { i, i }; // { dg-error "incompatible types" }
+ v8hi z6[] = { i, h }; // { dg-error "incompatible types" }
+ v8hi z7[] = { h, i }; // { dg-error "incompatible types" }
+ v8hi z8[] = { h, h };
+}
diff --git a/gcc/testsuite/gcc.dg/pr96377-4.c b/gcc/testsuite/gcc.dg/pr96377-4.c
new file mode 100644
index 00000000000..f7aaf490031
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr96377-4.c
@@ -0,0 +1,32 @@
+/* { dg-do compile { target aarch64*-*-* } } */
+/* { dg-options "-flax-vector-conversions" } */
+
+typedef int v4si __attribute__((vector_size(16)));
+typedef short v8hi __attribute__((vector_size(16)));
+
+struct s { v8hi x; v4si y; };
+union u1 { v8hi x; v4si y; };
+union u2 { v4si s; v8hi y; };
+
+void
+foo (__Int32x4_t i, __Int16x8_t h)
+{
+ struct s x1 = { i, i };
+ struct s x2 = { h, h };
+ struct s x3 = { i, h };
+ struct s x4 = { h, i };
+
+ union u1 y1 = { i };
+ union u1 y2 = { h };
+ union u2 y3 = { i };
+ union u2 y4 = { h };
+
+ v4si z1[] = { i, i };
+ v4si z2[] = { i, h };
+ v4si z3[] = { h, i };
+ v4si z4[] = { h, h };
+ v8hi z5[] = { i, i };
+ v8hi z6[] = { i, h };
+ v8hi z7[] = { h, i };
+ v8hi z8[] = { h, h };
+}
diff --git a/gcc/testsuite/gcc.dg/pr96377-5.c b/gcc/testsuite/gcc.dg/pr96377-5.c
new file mode 100644
index 00000000000..3d0c24befa6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr96377-5.c
@@ -0,0 +1,33 @@
+/* { dg-do compile { target aarch64*-*-* } } */
+/* { dg-options "-fno-lax-vector-conversions" } */
+/* { dg-message "use '-flax-vector-conversions' to permit conversions" "" { target *-*-* } 0 } */
+
+typedef int v4si __attribute__((vector_size(16)));
+typedef short v8hi __attribute__((vector_size(16)));
+
+struct s { __Int16x8_t x; __Int32x4_t y; };
+union u1 { __Int16x8_t x; __Int32x4_t y; };
+union u2 { __Int32x4_t s; __Int16x8_t y; };
+
+void
+foo (v4si i, v8hi h)
+{
+ struct s x1 = { i, i }; // { dg-error "incompatible types when initializing type '__Int16x8_t" }
+ struct s x2 = { h, h }; // { dg-error "incompatible types" }
+ struct s x3 = { i, h }; // { dg-error "incompatible types" }
+ struct s x4 = { h, i };
+
+ union u1 y1 = { i }; // { dg-error "incompatible types" }
+ union u1 y2 = { h };
+ union u2 y3 = { i };
+ union u2 y4 = { h }; // { dg-error "incompatible types" }
+
+ v4si z1[] = { i, i };
+ v4si z2[] = { i, h }; // { dg-error "incompatible types" }
+ v4si z3[] = { h, i }; // { dg-error "incompatible types" }
+ v4si z4[] = { h, h }; // { dg-error "incompatible types" }
+ v8hi z5[] = { i, i }; // { dg-error "incompatible types" }
+ v8hi z6[] = { i, h }; // { dg-error "incompatible types" }
+ v8hi z7[] = { h, i }; // { dg-error "incompatible types" }
+ v8hi z8[] = { h, h };
+}
diff --git a/gcc/testsuite/gcc.dg/pr96377-6.c b/gcc/testsuite/gcc.dg/pr96377-6.c
new file mode 100644
index 00000000000..165327fa292
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr96377-6.c
@@ -0,0 +1,32 @@
+/* { dg-do compile { target aarch64*-*-* } } */
+/* { dg-options "-flax-vector-conversions" } */
+
+typedef int v4si __attribute__((vector_size(16)));
+typedef short v8hi __attribute__((vector_size(16)));
+
+struct s { __Int16x8_t x; __Int32x4_t y; };
+union u1 { __Int16x8_t x; __Int32x4_t y; };
+union u2 { __Int32x4_t s; __Int16x8_t y; };
+
+void
+foo (v4si i, v8hi h)
+{
+ struct s x1 = { i, i };
+ struct s x2 = { h, h };
+ struct s x3 = { i, h };
+ struct s x4 = { h, i };
+
+ union u1 y1 = { i };
+ union u1 y2 = { h };
+ union u2 y3 = { i };
+ union u2 y4 = { h };
+
+ v4si z1[] = { i, i };
+ v4si z2[] = { i, h };
+ v4si z3[] = { h, i };
+ v4si z4[] = { h, h };
+ v8hi z5[] = { i, i };
+ v8hi z6[] = { i, h };
+ v8hi z7[] = { h, i };
+ v8hi z8[] = { h, h };
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/pr96377-1.c b/gcc/testsuite/gcc.target/aarch64/pr96377-1.c
new file mode 100644
index 00000000000..51e3e36edfc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/pr96377-1.c
@@ -0,0 +1,20 @@
+/* { dg-options "" } */
+
+#include <arm_neon.h>
+
+struct aegis128_state {
+ uint8x16_t v[5];
+};
+
+void foo(const void *key, const void *iv, const void *const0, const void *const1)
+{
+ uint8x16_t k = vld1q_u8(key);
+ uint8x16_t kiv = k ^ vld1q_u8(iv);
+ struct aegis128_state st = {{
+ kiv,
+ vld1q_u8(const1),
+ vld1q_u8(const0),
+ k ^ vld1q_u8(const0),
+ k ^ vld1q_u8(const1),
+ }};
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c
new file mode 100644
index 00000000000..0f1a2b0e46b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c
@@ -0,0 +1,15 @@
+/* { dg-options "-msve-vector-bits=256" } */
+
+#include <arm_sve.h>
+
+typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
+typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
+
+void
+f (svuint8_t sve_u1, svint8_t sve_s1,
+ gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1)
+{
+ gnu_uint8_t arr1[] = { gnu_u1, sve_u1 };
+ gnu_uint8_t arr2[] = { gnu_s1 }; // { dg-error "incompatible types" }
+ gnu_uint8_t arr3[] = { sve_s1 }; // { dg-error "incompatible types" }
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c
new file mode 100644
index 00000000000..ac4e0d12ff8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c
@@ -0,0 +1,15 @@
+/* { dg-options "-msve-vector-bits=256 -flax-vector-conversions" } */
+
+#include <arm_sve.h>
+
+typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
+typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
+
+void
+f (svuint8_t sve_u1, svint8_t sve_s1,
+ gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1)
+{
+ gnu_uint8_t arr1[] = { gnu_u1, sve_u1 };
+ gnu_uint8_t arr2[] = { gnu_s1 };
+ gnu_uint8_t arr3[] = { sve_s1 };
+}
--
2.27.0

View file

@ -0,0 +1,157 @@
From 773021143288f5bf0dca1e3ee1f908f580f6fd9c Mon Sep 17 00:00:00 2001
From: Peter Bergner <bergner@linux.ibm.com>
Date: Thu, 13 Aug 2020 13:40:39 -0500
Subject: [PATCH 30/30] rs6000: ICE when using an MMA type as a function param
or return value [PR96506]
PR96506 shows a problem where we ICE on illegal usage, namely using MMA
types for function arguments and return values. The solution is to flag
these illegal usages as errors early, before we ICE.
2020-08-13 Peter Bergner <bergner@linux.ibm.com>
gcc/
PR target/96506
* config/rs6000/rs6000-call.c (rs6000_promote_function_mode): Disallow
MMA types as return values.
(rs6000_function_arg): Disallow MMA types as function arguments.
gcc/testsuite/
PR target/96506
* gcc.target/powerpc/pr96506.c: New test.
(cherry picked from commit 0ad7e730c142ef6cd0ddc1491a89a7f330caa887)
---
gcc/config/rs6000/rs6000-call.c | 34 ++++++++++-
gcc/testsuite/gcc.target/powerpc/pr96506.c | 66 ++++++++++++++++++++++
2 files changed, 99 insertions(+), 1 deletion(-)
create mode 100644 gcc/testsuite/gcc.target/powerpc/pr96506.c
diff --git a/gcc/config/rs6000/rs6000-call.c b/gcc/config/rs6000/rs6000-call.c
index 243601e90c1..37566780e54 100644
--- a/gcc/config/rs6000/rs6000-call.c
+++ b/gcc/config/rs6000/rs6000-call.c
@@ -6076,8 +6076,30 @@ machine_mode
rs6000_promote_function_mode (const_tree type ATTRIBUTE_UNUSED,
machine_mode mode,
int *punsignedp ATTRIBUTE_UNUSED,
- const_tree, int)
+ const_tree, int for_return)
{
+ /* Warning: this is a static local variable and not always NULL!
+ This function is called multiple times for the same function
+ and return value. PREV_FUNC is used to keep track of the
+ first time we encounter a function's return value in order
+ to not report an error with that return value multiple times. */
+ static struct function *prev_func = NULL;
+
+ /* We do not allow MMA types being used as return values. Only report
+ the invalid return value usage the first time we encounter it. */
+ if (for_return
+ && prev_func != cfun
+ && (mode == POImode || mode == PXImode))
+ {
+ /* Record we have now handled function CFUN, so the next time we
+ are called, we do not re-report the same error. */
+ prev_func = cfun;
+ if (TYPE_CANONICAL (type) != NULL_TREE)
+ type = TYPE_CANONICAL (type);
+ error ("invalid use of MMA type %qs as a function return value",
+ IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type))));
+ }
+
PROMOTE_MODE (mode, *punsignedp, type);
return mode;
@@ -7028,6 +7050,16 @@ rs6000_function_arg (cumulative_args_t cum_v, const function_arg_info &arg)
machine_mode elt_mode;
int n_elts;
+ /* We do not allow MMA types being used as function arguments. */
+ if (mode == POImode || mode == PXImode)
+ {
+ if (TYPE_CANONICAL (type) != NULL_TREE)
+ type = TYPE_CANONICAL (type);
+ error ("invalid use of MMA operand of type %qs as a function parameter",
+ IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type))));
+ return NULL_RTX;
+ }
+
/* Return a marker to indicate whether CR1 needs to set or clear the
bit that V.4 uses to say fp args were passed in registers.
Assume that we don't need the marker for software floating point,
diff --git a/gcc/testsuite/gcc.target/powerpc/pr96506.c b/gcc/testsuite/gcc.target/powerpc/pr96506.c
new file mode 100644
index 00000000000..b1b40c5a5c8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr96506.c
@@ -0,0 +1,66 @@
+/* PR target/96506 */
+/* { dg-do compile } */
+/* { dg-require-effective-target power10_ok } */
+/* { dg-options "-mdejagnu-cpu=power10 -O2" } */
+
+extern void bar0();
+extern void bar1();
+extern void bar2();
+extern void bar3();
+
+typedef __vector_pair vpair_t;
+typedef __vector_quad vquad_t;
+
+/* Verify we flag errors on the following. */
+
+void
+foo0 (void)
+{
+ __vector_pair v;
+ bar0 (v); /* { dg-error "invalid use of MMA operand of type .__vector_pair. as a function parameter" } */
+}
+
+void
+foo1 (void)
+{
+ vpair_t v;
+ bar1 (v); /* { dg-error "invalid use of MMA operand of type .__vector_pair. as a function parameter" } */
+}
+
+void
+foo2 (void)
+{
+ __vector_quad v;
+ bar2 (v); /* { dg-error "invalid use of MMA operand of type .__vector_quad. as a function parameter" } */
+}
+
+void
+foo3 (void)
+{
+ vquad_t v;
+ bar3 (v); /* { dg-error "invalid use of MMA operand of type .__vector_quad. as a function parameter" } */
+}
+
+__vector_pair
+foo4 (__vector_pair *src) /* { dg-error "invalid use of MMA type .__vector_pair. as a function return value" } */
+{
+ return *src;
+}
+
+vpair_t
+foo5 (vpair_t *src) /* { dg-error "invalid use of MMA type .__vector_pair. as a function return value" } */
+{
+ return *src;
+}
+
+__vector_quad
+foo6 (__vector_quad *src) /* { dg-error "invalid use of MMA type .__vector_quad. as a function return value" } */
+{
+ return *src;
+}
+
+vquad_t
+foo7 (vquad_t *src) /* { dg-error "invalid use of MMA type .__vector_quad. as a function return value" } */
+{
+ return *src;
+}
--
2.27.0

View file

@ -30,7 +30,7 @@ pkgver=10.2.0
[ "$CHOST" != "$CTARGET" ] && _target="-$CTARGET_ARCH" || _target=""
pkgname=gcc-aarch64
pkgrel=1
pkgrel=2
pkgdesc="Stage2 cross-compiler for aarch64"
url="https://gcc.gnu.org"
arch="x86_64"
@ -201,6 +201,8 @@ source="https://gcc.gnu.org/pub/gcc/releases/gcc-${_pkgbase:-$pkgver}/gcc-${_pkg
0026-always-build-libgcc_eh.a.patch
0027-ada-libgnarl-compatibility-for-musl.patch
0028-ada-musl-support-fixes.patch
0029-c-Fix-bogus-vector-initialisation-error-PR96377.patch
0030-rs6000-ICE-when-using-an-MMA-type-as-a-function-para.patch
"
# gcc-4.8-build-args.patch
@ -631,31 +633,33 @@ gnat() {
}
sha512sums="42ae38928bd2e8183af445da34220964eb690b675b1892bbeb7cd5bb62be499011ec9a93397dba5e2fb681afadfc6f2767d03b9035b44ba9be807187ae6dc65e gcc-10.2.0.tar.xz
5edc2dfe8e5d680c8c622b16943a1ec4e7f7db245e2fa4e54371962c048af1f074b1ed49f619f8abdf0eb97129d8b7198b4f16f06da794fe0fd6ce4d55f829fb 0001-posix_memalign.patch
bff1c9a08d32186b94660c42823babd63729b2a050e761c514c3f23c7eac2585ddc4f748df547915fb6b2fc098f3ecc2e8d9707f3aef9bb9c6103ba92ed5f906 0002-gcc-poison-system-directories.patch
7662cc8c6cd77a6cacb2899f4fb13d14495feb508bad9ee8ae0dd38ecddf8d45391ec636022913eece41661fbd5d336ac2130a5c08b2495eb5aff5501cff49a6 0003-Turn-on-Wl-z-relro-z-now-by-default.patch
26303e588f37c4208c3da962972b83759daa5abaf8eaf4da331a4cf1e3a90590ad56a7f8b766795bda7b6baa69aaa9c09864f297d376feacbe4ba08249da2d8d 0004-Turn-on-D_FORTIFY_SOURCE-2-by-default-for-C-C-ObjC-O.patch
4be2f8ab07e5ff2b018c633e057927446259b63cc65229f977c84b294820d1dbecc29c2e6167b3cb000a5995e7def64cd8191031ee2b2c2ec3e5b4ad70267083 0005-On-linux-targets-pass-as-needed-by-default-to-the-li.patch
e97e619874c0edb60d826669426f96b6f09b79849538415ee1a205345a574ea292de5f324925dd1c821859a3c4873a2392e11edcd6ac6b53f6d6d389b25ffe94 0006-Enable-Wformat-and-Wformat-security-by-default.patch
c3081e7b37dcb2e2b4381e6fcc2abfa066bb4adc3ad4bdd7bd1402a6a3ccc354bfcf713c6acb379001dd97e14e6bdc8eb2eeca6b1e45262bea3262d51394c0e6 0007-Enable-Wtrampolines-by-default.patch
cc602c71b0893b058021cd45d239c3e9f013f68cd56f642fcdad342456bae9ea08ddf0929a6c2e6e452987d1d8c4be97dfe0314d9107e01bf6403ce97e83a30f 0008-Disable-ssp-on-nostdlib-nodefaultlibs-and-ffreestand.patch
0bc96d3a2afd0499e01b47a8197f9a5ead04219d0674f0dea97a4654def7dca2c50d8c005d04558212d53e4ec9fcf2bf4a3286d7a12b24eba0134aa1197abfe1 0009-Ensure-that-msgfmt-doesn-t-encounter-problems-during.patch
2662eadcc54408f5c6596e24615a6771c046575a53b8aec65677fcaa699446021b8f3360efc7660d72bf004bffd98f9d4f9d64eba97dedcbb752bb3fffc5a048 0010-Don-t-declare-asprintf-if-defined-as-a-macro.patch
0003e594bbbf142d678f0f79fc03ff467276331a8c87016ecd5f9683abb14aea2550e6880995dd160dc92a3e4ec04e4b2323eda403d4fa8453c258c28bcc969e 0011-libiberty-copy-PIC-objects-during-build-process.patch
209f7cfb281c3c10af2b84e1542e9093bb0fb36171c7d12ce33b1d92a70388d0aae7b1bb22a613a59e352de62927a0f8e9d3a0b4729c12f8eebacc74d29ecfdd 0012-libitm-disable-FORTIFY.patch
e72ad6130dd5dd64ef34ff9f07cf23d310d0d530b272fa1bdc9459991dfb10eec64af3249f213d7f4393024d7d5111890f74679e1029ee0e97b1b6c12a708296 0013-libgcc_s.patch
16fa64460806a6456c8185cf703e7afdf87f55cf49256ed06fd1c098d97d69a3d1df715bb409984ebd275009495ac9ee01bc090580558d2ff569fa2dbbff5fa6 0014-nopie.patch
e054c819446d58e119570cca88a23f541c215c8e4a6eb65d194b97610046593981aaa306d74d39ad6868cb2a85da510dedefd0b729804e3b88a518e4a0897d20 0015-libffi-use-__linux__-instead-of-__gnu_linux__-for-mu.patch
1b70eae1dfb7b819555c51c51d88b9acd09f44d491bf09b265bed7027721c3a74628715fd1bbc537ba43071e98e6747e08ad117b78fedda19571d7a8f6e2c9db 0016-dlang-update-zlib-binding.patch
9f4cf47a2f4016cb6808f245159d9365134963765af41654d60c2f62d4622405f1d1041c3690d50a2db9501075ccc932efd32c739bb0d241af5b80829cb8bafe 0017-dlang-fix-fcntl-on-mips-add-libucontext-dep.patch
55ca9cc19376ac4ce333abdee700e185811455419da80b0f6d765d079aa1344073d09883add920530ad62a3b9c01c347f634931f3735cb021b81b8fd7229467c 0018-ada-fix-shared-linking.patch
b461122d5bc5778398c72bc02bef6ee344ba6c79b7ff9945f9d252559ad445b298e154d7c4784e22fc5cf9d299fc3a8cfc3c0e4d37f12b961148e0432ac4e434 0019-build-fix-CXXFLAGS_FOR_BUILD-passing.patch
61fdf02497bc5d90bdc1c9b2aa0294bbe1ab4285940dc840d94bda00b0c4dec342df639b11721e5569a6de47e53099928f1f1fb07ddcf3466535e8092b2af9a7 0020-libstdc-futex-add-time64-compatibility.patch
b40fb4f96693a7a0cec086c24f17ba5c8c416e67d76d468306b26895033ee326454a2b2d3028077b9f2187c545bff8c99e87d44298c179ccbc1f48f04ccc0889 0021-add-fortify-headers-paths.patch
7a7414d44a43260d7098bf24dacea6595fdaf42496ef1d176bb7a254da813c1faaf1ecfa6e1463af34c466f02cf2f8489dbfeae9bbfb070726d27da0330e4c59 0022-Alpine-musl-package-provides-libssp_nonshared.a.-We-.patch
7bd3b297a05df00a0c961c407d84c60b7dcf5150919a6ce8e6d5162bb82e5820ae938feec24dad62dca141b4ede302345b6e08e21f06dd9393bec7592a8aecf7 0023-DP-Use-push-state-pop-state-for-gold-as-well-when-li.patch
5c61dac5100dce45ad17f45e5e63e3f1e46173639384d7fb3c343e0b6a1e4c0ab39491d397c4445be63cf182f3bb79f7995cc8f89f70a61321dea24bf29cdd18 0024-Pure-64-bit-MIPS.patch
be8eee9edfe4e768ea4873b618a3431ae4502e933af343f80b623e38626c0e9187b73debd6773ae8dfbfb514ff0e4a18a5102e5fac4545e5de18f8e226e6b237 0025-use-pure-64-bit-configuration-where-appropriate.patch
2a2c89b3dfac37344bc17fbb9471b903cbdf4332c71bb20942587acccf962a42d58d2535cc0d90a0f6cddc8f6db1328c6b9f158aecbff99a92f9fa0e0683c0a7 0026-always-build-libgcc_eh.a.patch
739e9d58875c291af82ca9d7509f52679a01704beb4f003e3ace1cd1ae2aede5763243e34c2c73be13bd1dd46539f50d3b7c7a293686b0c6158d3069d377009e 0027-ada-libgnarl-compatibility-for-musl.patch
69f330f91a3354753e9283e804f18257c3e7a51f368defe4a704d20c2a00fd6d6cb62f4d7931ca886dd7dffeaf59fa9beaf36c19ebd3d25cdebfefc884d64c02 0028-ada-musl-support-fixes.patch"
ee2d344e912ebaddf71d53ff674ca7ea7837ee65f982a8f088339fd05261e441aace6087f7f936d32b502bff7e375094f48cb90562ab7734c57e1750d3fe2029 0001-posix_memalign.patch
deaf3ba25614df18b2b9b04244bcc9278c16d98f6fdeac17f7e2c0567be7c2836ab6d21fc9d8f779c672022d25fc278327d6d0d637bc200fadbb8d913ef95581 0002-gcc-poison-system-directories.patch
eb80ea94e008e33b97c8c0d47e74d639897a13357abbd130e9bff4ae30349b8f788acbaf4caa61f23022a86841c431b8bb639c536aab548dc735470a7c7ccfcf 0003-Turn-on-Wl-z-relro-z-now-by-default.patch
6cbc39dd24f7b4316b6e69940bf7c9f3ae889e8156f9c7dd72c8335e55a2a44d6fade37954296451b588bf8fc065514d4916ad527042b8f9a86d6e0d706e3c9c 0004-Turn-on-D_FORTIFY_SOURCE-2-by-default-for-C-C-ObjC-O.patch
e8c75aef864e5852fc78bfd7949232fc58b40a743d7c04a122ee6e021ee99f72edcff6efbf74e0eedc9405faf81d01208867b0571c4dc8cb44b9a03d1d25fbde 0005-On-linux-targets-pass-as-needed-by-default-to-the-li.patch
d5b3d40e1c4828d16684137487f64bf0b4b892fabc403f975f37d481a22647f923a3524a12714898937abdfbf875411e50b522134535f8d1852f103310aef5a3 0006-Enable-Wformat-and-Wformat-security-by-default.patch
e568a17fb3348964c0d21e7d67ffeae4f2f0dfd3f2986aaf9cec86c685c13f0c830dfc019b6bd7fe58b8635e5b8fca7ad992a92210f2be285b8cac6467c33a78 0007-Enable-Wtrampolines-by-default.patch
fd47150c72138d47a9faafe8586e84456e09a4ca0ed1ba9be7b5b2a351b1ca2d17b238beaa42c88888402d181933ff68cef0a91f0c3bd26d374706cf71726bbd 0008-Disable-ssp-on-nostdlib-nodefaultlibs-and-ffreestand.patch
820be83d93ff5b8d8fc69cdeccec0c6ac2544ee6cce43ae35e6829222791733a1c0b2232fb5a7ad93ab9e6cd677f077d01a4f9dec7aa9c38b013f74aa6c74fc3 0009-Ensure-that-msgfmt-doesn-t-encounter-problems-during.patch
5be4c0ad27e3b86c06dcaefe34ee1271cb53ded3de9802bc1a8571497240ca870e22534f77adb52dc4556eb4861b94a6c9a39cf6a2e84ef62ee88a04a4a01868 0010-Don-t-declare-asprintf-if-defined-as-a-macro.patch
5024309e549b7e4a94f2af8bd727144bd27cf8b7cdcbb537a30f3dac28543697c214438da7af491e43cb90daac46344b7b0466729d5c4209ca8a3a0d5a7d027c 0011-libiberty-copy-PIC-objects-during-build-process.patch
c0ebc205f6598edbe6d68b8a287c36ef80826b864e5b92b37f64e7a21ab7048cae67dd5650cd3d1399beb890753ad96e898a94c52d13b3ca7b266a15fed043ca 0012-libitm-disable-FORTIFY.patch
4a4fae02231f49142ab90d4f3dcd093c13032781ff1659f6aca62da13f8c676e2ec9dcdd2e7959ec62835e13c515be9bd7a2e35d3c06768d44d9e1185cb40dac 0013-libgcc_s.patch
9c513a30146364ecd899ca26a27019ea1ba353e8e409e0becb50d2a051022b701586b9276a4f118dbdd131c4882a04cad4188219bb10aa36d7b0bbe2eb2ceb03 0014-nopie.patch
aec141251c3abae35b4dc3ecd3778e332fa5596282fea1fd08c8d5350d8a8740568910236ce8d38c5662232fa5412313cb0a1c7a46c79a5b5e2c643871bf643b 0015-libffi-use-__linux__-instead-of-__gnu_linux__-for-mu.patch
d3fc4ea6918b4c4ce57eb45437f88ec3982bd5c8e17d282003e195dc705e0c84996ec140151b2b2371917595d2d62f30a2cb4676150c1bc8b8fd3b8fb85ecbe9 0016-dlang-update-zlib-binding.patch
4ebf845f41c7a8ba5bfa624c8e1527eb0f15a48d6a8bd151435037bd4b9d71f955ac9b60ab453c0315d592e92f194be92b9c3fca40ed533d64c0a1995c3ad4be 0017-dlang-fix-fcntl-on-mips-add-libucontext-dep.patch
2ca085382a03d269a2f48ec49601328cec7c53eb69856ee55aea11610293c206e8881043030d2295f49a08a5897c9eb9a6126a5ae65edbd967e17e34dadfb2d8 0018-ada-fix-shared-linking.patch
307a1ac2a6cea20c900b7bef2d5d7ad98c2b8cc45bdb2a6adbf151f3228d5de2670c75ddf48e4d3c9ceb7ed42852e24be534773551bc050ad10005faaee2600c 0019-build-fix-CXXFLAGS_FOR_BUILD-passing.patch
d01d0031d97fa42363bd3fb0c0dda9b26e7f06660294f0ceec55624f6564f2ce372b9a255683c67d79dfa18fb8551416c04766debc2e1b9c587ef381eef64f0b 0020-libstdc-futex-add-time64-compatibility.patch
e9eb5ff439cff4a22abaa7b9e27a176b51e1e1f4361fd829bd26e4b5ffc0e4583b1d6728b1510991b069b42f0aae8a2e698f85edecb1d792e4c7e10079507de8 0021-add-fortify-headers-paths.patch
beb7aa26a3731855be2521495186af52d4764973f2bc1ad44554332e867fe52fa37bcb5747395e44ae0011413e702054a60a754ad81dd88bbf97e3c7c718f356 0022-Alpine-musl-package-provides-libssp_nonshared.a.-We-.patch
ac3288b7840e5cf2500608773f40e604798b30fcb885c9fec7ba0bcc4bcfd374211faa26e82fcf4669bf624d5ccb0bdc747897759be77af3621b8b3bb08bff85 0023-DP-Use-push-state-pop-state-for-gold-as-well-when-li.patch
7e953227e0d3f1105a754f3fdefbaaca0b106d337c5bcc9b6394712d7f47173f96906517030b508d5a57611cc637848f2e59aec92313b39f1e2221bd98729826 0024-Pure-64-bit-MIPS.patch
12eaad6a8781e76f38bc4ba5c8cd09cfe0a0b95c0cde83fe58dc10bdec542fe43389f2c84bd313629c45af8ed3ffd46cc4478f5a4152ea1eb8d4b8276ede499c 0025-use-pure-64-bit-configuration-where-appropriate.patch
73a649ac371f4a5da68c5f0b88010080efd7deaee29765ef7a299fd1654b5ccdbfee88c59e5d37ae55e37cf6fa218d989e411c04b17e0fd94268ed65d7dcd4bf 0026-always-build-libgcc_eh.a.patch
59d9e0a5f39ad68b8bb1365f7c97a54ca4751cdad01ead8184fd897d8a13156145976a8b5b9856be154c053d6ba11eaad1e5662e7ddda9ba6d2811340df61cba 0027-ada-libgnarl-compatibility-for-musl.patch
8207323c530929517c799b24b1a7ba39c07bbb0e6770f878f1d66088ae16667e7706c9402ac04fe5eb6447a6ad12b548cc7e7612c5b217cd24e7d00094d2a28f 0028-ada-musl-support-fixes.patch
b90f7ad074b6183a4afc6be65349b8bf94b78d1c259d5be9877c16e3de95222fb6905cba7eb6ee4fe1e564ed20bf183c6815bd087896b6b0376656a841736fc1 0029-c-Fix-bogus-vector-initialisation-error-PR96377.patch
39a66708fb7ab4a72e1973749e32c22484e8e6c0afde6a59a645f2536c71cea86c8de2f0448621d53888293121344e84a24617400fae849282df57e0f5ddc21d 0030-rs6000-ICE-when-using-an-MMA-type-as-a-function-para.patch"

View file

@ -1,7 +1,7 @@
From 399f9e74a691ca6272d460d72d1b47afcad84752 Mon Sep 17 00:00:00 2001
From: Szabolcs Nagy <nsz@port70.net>
Date: Fri, 26 Jan 2018 20:32:50 +0000
Subject: [PATCH 01/28] posix_memalign
Subject: [PATCH 01/30] posix_memalign
---
gcc/config/i386/pmm_malloc.h | 9 +++++----

View file

@ -1,7 +1,7 @@
From 0e993b1b9a33910193862d76facf34bdbe58ed01 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 29 Mar 2013 08:59:00 +0400
Subject: [PATCH 02/28] gcc: poison-system-directories
Subject: [PATCH 02/30] gcc: poison-system-directories
Add /sw/include and /opt/include based on the original
zecke-no-host-includes.patch patch. The original patch checked for

View file

@ -1,7 +1,7 @@
From a35a55940c3402f8ebb510ec7d8bc67e85051277 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:45:49 +0000
Subject: [PATCH 03/28] Turn on -Wl,-z,relro,-z,now by default.
Subject: [PATCH 03/30] Turn on -Wl,-z,relro,-z,now by default.
---
gcc/doc/invoke.texi | 3 +++

View file

@ -1,7 +1,7 @@
From d2865d0a184ef59be8893dd34edf5037c4bf48f7 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:46:22 +0000
Subject: [PATCH 04/28] Turn on -D_FORTIFY_SOURCE=2 by default for C, C++,
Subject: [PATCH 04/30] Turn on -D_FORTIFY_SOURCE=2 by default for C, C++,
ObjC, ObjC++, if the optimization level is > 0
---

View file

@ -1,7 +1,7 @@
From 872e0a15a2b74cd6b6ba58e2e7e1605543ea36bd Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:46:56 +0000
Subject: [PATCH 05/28] On linux targets pass --as-needed by default to the
Subject: [PATCH 05/30] On linux targets pass --as-needed by default to the
linker, but always link the sanitizer libraries with --no-as-needed.
---

View file

@ -1,7 +1,7 @@
From 5e20872b8cc916cb457c63c6cd970c4fcba47bbb Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:47:43 +0000
Subject: [PATCH 06/28] Enable -Wformat and -Wformat-security by default.
Subject: [PATCH 06/30] Enable -Wformat and -Wformat-security by default.
---
gcc/c-family/c.opt | 4 ++--

View file

@ -1,7 +1,7 @@
From 1bcf7e30226852db956becebaffdfe2738923423 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:48:24 +0000
Subject: [PATCH 07/28] Enable -Wtrampolines by default.
Subject: [PATCH 07/30] Enable -Wtrampolines by default.
---
gcc/common.opt | 2 +-

View file

@ -1,7 +1,7 @@
From 23fd86ff34670873dd294bd87b93f45c3624903a Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:49:40 +0000
Subject: [PATCH 08/28] Disable ssp on -nostdlib, -nodefaultlibs and
Subject: [PATCH 08/30] Disable ssp on -nostdlib, -nodefaultlibs and
-ffreestanding Change the buffer size.
---

View file

@ -1,7 +1,7 @@
From d27d7936ecd9f357a3c6ee05e6548f8a68fdd4b7 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:50:33 +0000
Subject: [PATCH 09/28] Ensure that msgfmt doesn't encounter problems during
Subject: [PATCH 09/30] Ensure that msgfmt doesn't encounter problems during
gcc bootstrapping.
Solves error messages like the following:

View file

@ -1,7 +1,7 @@
From 2ec258d6d31e2c0c614c5086acee84a87768a67c Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:52:07 +0000
Subject: [PATCH 10/28] Don't declare asprintf if defined as a macro.
Subject: [PATCH 10/30] Don't declare asprintf if defined as a macro.
---
include/libiberty.h | 3 +++

View file

@ -1,7 +1,7 @@
From 4f6fd2272f57620da399d0f841fce12b9db3b2d1 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:53:00 +0000
Subject: [PATCH 11/28] libiberty: copy PIC objects during build process
Subject: [PATCH 11/30] libiberty: copy PIC objects during build process
---
libiberty/Makefile.in | 1 +

View file

@ -1,7 +1,7 @@
From cef5e0336cfdf4afd0e01fa9e562f686b234697a Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:53:36 +0000
Subject: [PATCH 12/28] libitm: disable FORTIFY
Subject: [PATCH 12/30] libitm: disable FORTIFY
---
libitm/configure.tgt | 10 ++++++++++

View file

@ -1,7 +1,7 @@
From d31721459e363e49dfe0a7797300864d9cef92f0 Mon Sep 17 00:00:00 2001
From: Szabolcs Nagy <nsz@port70.net>
Date: Sat, 24 Oct 2015 20:09:53 +0000
Subject: [PATCH 13/28] libgcc_s
Subject: [PATCH 13/30] libgcc_s
---
gcc/config/i386/i386-expand.c | 4 ++--

View file

@ -1,7 +1,7 @@
From f64f853eae3b390adbbc9b74a336d93918e6dca4 Mon Sep 17 00:00:00 2001
From: Szabolcs Nagy <nsz@port70.net>
Date: Sat, 7 Nov 2015 02:08:05 +0000
Subject: [PATCH 14/28] nopie
Subject: [PATCH 14/30] nopie
---
gcc/configure | 27 +++++++++++++++++++++++++++

View file

@ -1,7 +1,7 @@
From 37dace030c1402a8e6734a0fc59e18717ce1a2ef Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:57:09 +0000
Subject: [PATCH 15/28] libffi: use __linux__ instead of __gnu_linux__ for musl
Subject: [PATCH 15/30] libffi: use __linux__ instead of __gnu_linux__ for musl
---
libffi/src/closures.c | 2 +-

View file

@ -1,7 +1,7 @@
From 7fc386a2e629e859968da4eb4d0ff4983cb3b76f Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:57:51 +0000
Subject: [PATCH 16/28] dlang: update zlib binding
Subject: [PATCH 16/30] dlang: update zlib binding
---
libphobos/src/std/zlib.d | 266 ++++++++++++++++++++++++++++-----------

View file

@ -1,7 +1,7 @@
From ef5f7880cff27a2b92952ce53a207d5dd896923b Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:58:22 +0000
Subject: [PATCH 17/28] dlang: fix fcntl on mips, add libucontext dep
Subject: [PATCH 17/30] dlang: fix fcntl on mips, add libucontext dep
---
libphobos/configure.tgt | 1 +

View file

@ -1,7 +1,7 @@
From b675e0383262d6d702f5b732e4459d3e2c2a4891 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:59:16 +0000
Subject: [PATCH 18/28] ada: fix shared linking
Subject: [PATCH 18/30] ada: fix shared linking
---
gcc/ada/link.c | 12 ++++++------

View file

@ -1,7 +1,7 @@
From 0ea91dd6f8d856d5b589c2a3e95469fea06e7094 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:59:43 +0000
Subject: [PATCH 19/28] build: fix CXXFLAGS_FOR_BUILD passing
Subject: [PATCH 19/30] build: fix CXXFLAGS_FOR_BUILD passing
---
Makefile.in | 1 +

View file

@ -1,7 +1,7 @@
From 9684a815e1cbe854383c3c511e1d84d43c46ec94 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 07:00:17 +0000
Subject: [PATCH 20/28] libstdc++: futex: add time64 compatibility
Subject: [PATCH 20/30] libstdc++: futex: add time64 compatibility
---
libstdc++-v3/src/c++11/futex.cc | 8 ++++++++

View file

@ -1,7 +1,7 @@
From a0708ec975c01b049d254dc51179898966bf8a52 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 07:01:06 +0000
Subject: [PATCH 21/28] add fortify-headers paths
Subject: [PATCH 21/30] add fortify-headers paths
---
gcc/config/linux.h | 2 ++

View file

@ -1,7 +1,7 @@
From 740342a0e4b0b3af498964440918abba1a27ba33 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
Date: Fri, 21 Aug 2020 07:03:00 +0000
Subject: [PATCH 22/28] Alpine musl package provides libssp_nonshared.a. We
Subject: [PATCH 22/30] Alpine musl package provides libssp_nonshared.a. We
link to it unconditionally, as otherwise we get link failures if some objects
are -fstack-protector built and final link happens with -fno-stack-protector.
This seems to be the common case when bootstrapping gcc, the piepatches do

View file

@ -1,7 +1,7 @@
From 775adf35d6f34f61947fc28a2bdbfa7e881c40d5 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 07:03:42 +0000
Subject: [PATCH 23/28] DP: Use --push-state/--pop-state for gold as well when
Subject: [PATCH 23/30] DP: Use --push-state/--pop-state for gold as well when
linking libtsan.
---

View file

@ -1,7 +1,7 @@
From 717090cf538f765db1730956c512a43f2d52a802 Mon Sep 17 00:00:00 2001
From: Nils Andreas Svee <me@lochnair.net>
Date: Thu, 21 Dec 2017 03:14:33 +0100
Subject: [PATCH 24/28] Pure 64-bit MIPS
Subject: [PATCH 24/30] Pure 64-bit MIPS
---
gcc/config/mips/mips.h | 8 ++++----

View file

@ -1,7 +1,7 @@
From f73cf8d2f8f4eee71fc2ba850672e69f509a4486 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 07:04:40 +0000
Subject: [PATCH 25/28] use pure 64-bit configuration where appropriate
Subject: [PATCH 25/30] use pure 64-bit configuration where appropriate
---
gcc/config/aarch64/t-aarch64-linux | 2 +-

View file

@ -1,7 +1,7 @@
From 8472f6d0037dcd19c44b1e95d95fbf937b3823e6 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 07:05:41 +0000
Subject: [PATCH 26/28] always build libgcc_eh.a
Subject: [PATCH 26/30] always build libgcc_eh.a
highly inspired by:
http://landley.net/hg/aboriginal/file/7e0747a665ab/sources/patches/gcc-core-libgcceh.patch

View file

@ -1,7 +1,7 @@
From 4e1b3a26f558e7693853d3600ee677705e67406c Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 07:06:30 +0000
Subject: [PATCH 27/28] ada: libgnarl compatibility for musl
Subject: [PATCH 27/30] ada: libgnarl compatibility for musl
---
gcc/ada/libgnarl/s-osinte__linux.ads | 11 ------

View file

@ -1,7 +1,7 @@
From 5e3d7d2f1e2448b6c5eb207f9251c437629e43bc Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 07:07:48 +0000
Subject: [PATCH 28/28] ada: musl support fixes
Subject: [PATCH 28/30] ada: musl support fixes
---
gcc/ada/Makefile.rtl | 10 +++++-----

View file

@ -0,0 +1,520 @@
From d6599f89ba558ec2a68d4bc4af15cf3513218054 Mon Sep 17 00:00:00 2001
From: Richard Sandiford <richard.sandiford@arm.com>
Date: Mon, 3 Aug 2020 09:48:36 +0100
Subject: [PATCH 29/30] c: Fix bogus vector initialisation error [PR96377]
One of the problems in this PR was that if we had:
vector_type1 array[] = { vector_value1 };
process_init_element would only treat vector_value1 as initialising
a vector_type1 if they had the same TYPE_MAIN_VARIANT. This has
several problems:
(1) It gives confusing error messages if the vector types are
incompatible. (Tested by gcc.dg/pr96377-1.c.)
(2) It means that we reject code that should be valid with
-flax-vector-conversions. (Tested by gcc.dg/pr96377-2.c.)
(3) On arm and aarch64 targets, it means that we reject some
initializers that mix Advanced SIMD and standard GNU vectors.
These vectors have traditionally had different TYPE_MAIN_VARIANTs
because they have different mangling schemes. (Tested by
gcc.dg/pr96377-[3-6].c.)
(4) It means that we reject SVE initializers that should be valid.
(Tested by gcc.target/aarch64/sve/gnu_vectors_[34].c.)
(5) After r11-1741-g:31427b974ed7b7dd54e2 we reject:
arm_neon_type1 array[] = { k ^ arm_neon_value1 };
because applying the binary operator to arm_neon_value1 strips
the "Advanced SIMD type" attributes that were added in that patch.
Stripping the attributes is problematic for other reasons though,
so that still needs to be fixed separately.
g++.target/aarch64/sve/gnu_vectors_[34].C already pass.
gcc/c/
PR c/96377
* c-typeck.c (process_init_element): Split test for whether to
recurse into a record, union or array into...
(initialize_elementwise_p): ...this new function. Don't recurse
into a vector type if the initialization value is also a vector.
gcc/testsuite/
PR c/96377
* gcc.dg/pr96377-1.c: New test.
* gcc.dg/pr96377-2.c: Likewise.
* gcc.dg/pr96377-3.c: Likewise.
* gcc.dg/pr96377-4.c: Likewise.
* gcc.dg/pr96377-5.c: Likewise.
* gcc.dg/pr96377-6.c: Likewise.
* gcc.target/aarch64/pr96377-1.c: Likewise.
* gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c: Likewise.
* gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c: Likewise.
* g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C: Likewise.
* g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C: Likewise.
(cherry picked from commit 7d599ad27b9bcf5165f87710f1abc64bbabd06ae)
---
gcc/c/c-typeck.c | 59 ++++++++++++++-----
.../sve/acle/general-c++/gnu_vectors_3.C | 15 +++++
.../sve/acle/general-c++/gnu_vectors_4.C | 15 +++++
gcc/testsuite/gcc.dg/pr96377-1.c | 32 ++++++++++
gcc/testsuite/gcc.dg/pr96377-2.c | 31 ++++++++++
gcc/testsuite/gcc.dg/pr96377-3.c | 33 +++++++++++
gcc/testsuite/gcc.dg/pr96377-4.c | 32 ++++++++++
gcc/testsuite/gcc.dg/pr96377-5.c | 33 +++++++++++
gcc/testsuite/gcc.dg/pr96377-6.c | 32 ++++++++++
gcc/testsuite/gcc.target/aarch64/pr96377-1.c | 20 +++++++
.../sve/acle/general-c/gnu_vectors_3.c | 15 +++++
.../sve/acle/general-c/gnu_vectors_4.c | 15 +++++
12 files changed, 317 insertions(+), 15 deletions(-)
create mode 100644 gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C
create mode 100644 gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C
create mode 100644 gcc/testsuite/gcc.dg/pr96377-1.c
create mode 100644 gcc/testsuite/gcc.dg/pr96377-2.c
create mode 100644 gcc/testsuite/gcc.dg/pr96377-3.c
create mode 100644 gcc/testsuite/gcc.dg/pr96377-4.c
create mode 100644 gcc/testsuite/gcc.dg/pr96377-5.c
create mode 100644 gcc/testsuite/gcc.dg/pr96377-6.c
create mode 100644 gcc/testsuite/gcc.target/aarch64/pr96377-1.c
create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c
create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c
diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c
index eb4b641e6bb..58762f10a93 100644
--- a/gcc/c/c-typeck.c
+++ b/gcc/c/c-typeck.c
@@ -9910,6 +9910,47 @@ output_pending_init_elements (int all, struct obstack * braced_init_obstack)
goto retry;
}
+/* Expression VALUE coincides with the start of type TYPE in a braced
+ initializer. Return true if we should treat VALUE as initializing
+ the first element of TYPE, false if we should treat it as initializing
+ TYPE as a whole.
+
+ If the initializer is clearly invalid, the question becomes:
+ which choice gives the best error message? */
+
+static bool
+initialize_elementwise_p (tree type, tree value)
+{
+ if (type == error_mark_node || value == error_mark_node)
+ return false;
+
+ gcc_checking_assert (TYPE_MAIN_VARIANT (type) == type);
+
+ tree value_type = TREE_TYPE (value);
+ if (value_type == error_mark_node)
+ return false;
+
+ /* GNU vectors can be initialized elementwise. However, treat any
+ kind of vector value as initializing the vector type as a whole,
+ regardless of whether the value is a GNU vector. Such initializers
+ are valid if and only if they would have been valid in a non-braced
+ initializer like:
+
+ TYPE foo = VALUE;
+
+ so recursing into the vector type would be at best confusing or at
+ worst wrong. For example, when -flax-vector-conversions is in effect,
+ it's possible to initialize a V8HI from a V4SI, even though the vectors
+ have different element types and different numbers of elements. */
+ if (gnu_vector_type_p (type))
+ return !VECTOR_TYPE_P (value_type);
+
+ if (AGGREGATE_TYPE_P (type))
+ return type != TYPE_MAIN_VARIANT (value_type);
+
+ return false;
+}
+
/* Add one non-braced element to the current constructor level.
This adjusts the current position within the constructor's type.
This may also start or terminate implicit levels
@@ -10089,11 +10130,7 @@ process_init_element (location_t loc, struct c_expr value, bool implicit,
/* Otherwise, if we have come to a subaggregate,
and we don't have an element of its type, push into it. */
else if (value.value != NULL_TREE
- && value.value != error_mark_node
- && TYPE_MAIN_VARIANT (TREE_TYPE (value.value)) != fieldtype
- && (fieldcode == RECORD_TYPE || fieldcode == ARRAY_TYPE
- || fieldcode == UNION_TYPE
- || gnu_vector_type_p (fieldtype)))
+ && initialize_elementwise_p (fieldtype, value.value))
{
push_init_level (loc, 1, braced_init_obstack);
continue;
@@ -10181,11 +10218,7 @@ process_init_element (location_t loc, struct c_expr value, bool implicit,
/* Otherwise, if we have come to a subaggregate,
and we don't have an element of its type, push into it. */
else if (value.value != NULL_TREE
- && value.value != error_mark_node
- && TYPE_MAIN_VARIANT (TREE_TYPE (value.value)) != fieldtype
- && (fieldcode == RECORD_TYPE || fieldcode == ARRAY_TYPE
- || fieldcode == UNION_TYPE
- || gnu_vector_type_p (fieldtype)))
+ && initialize_elementwise_p (fieldtype, value.value))
{
push_init_level (loc, 1, braced_init_obstack);
continue;
@@ -10224,11 +10257,7 @@ process_init_element (location_t loc, struct c_expr value, bool implicit,
/* Otherwise, if we have come to a subaggregate,
and we don't have an element of its type, push into it. */
else if (value.value != NULL_TREE
- && value.value != error_mark_node
- && TYPE_MAIN_VARIANT (TREE_TYPE (value.value)) != elttype
- && (eltcode == RECORD_TYPE || eltcode == ARRAY_TYPE
- || eltcode == UNION_TYPE
- || gnu_vector_type_p (elttype)))
+ && initialize_elementwise_p (elttype, value.value))
{
push_init_level (loc, 1, braced_init_obstack);
continue;
diff --git a/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C b/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C
new file mode 100644
index 00000000000..e607d58d726
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C
@@ -0,0 +1,15 @@
+/* { dg-options "-msve-vector-bits=256" } */
+
+#include <arm_sve.h>
+
+typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
+typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
+
+void
+f (svuint8_t sve_u1, svint8_t sve_s1,
+ gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1)
+{
+ gnu_uint8_t arr1[] = { gnu_u1, sve_u1 };
+ gnu_uint8_t arr2[] = { gnu_s1 }; // { dg-error "cannot convert" }
+ gnu_uint8_t arr3[] = { sve_s1 }; // { dg-error "cannot convert" }
+}
diff --git a/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C b/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C
new file mode 100644
index 00000000000..ac4e0d12ff8
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C
@@ -0,0 +1,15 @@
+/* { dg-options "-msve-vector-bits=256 -flax-vector-conversions" } */
+
+#include <arm_sve.h>
+
+typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
+typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
+
+void
+f (svuint8_t sve_u1, svint8_t sve_s1,
+ gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1)
+{
+ gnu_uint8_t arr1[] = { gnu_u1, sve_u1 };
+ gnu_uint8_t arr2[] = { gnu_s1 };
+ gnu_uint8_t arr3[] = { sve_s1 };
+}
diff --git a/gcc/testsuite/gcc.dg/pr96377-1.c b/gcc/testsuite/gcc.dg/pr96377-1.c
new file mode 100644
index 00000000000..2bf3f816331
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr96377-1.c
@@ -0,0 +1,32 @@
+/* { dg-options "-fno-lax-vector-conversions" } */
+/* { dg-message "use '-flax-vector-conversions' to permit conversions" "" { target *-*-* } 0 } */
+
+typedef int v4si __attribute__((vector_size(16)));
+typedef short v8hi __attribute__((vector_size(16)));
+
+struct s { v8hi x; v4si y; };
+union u1 { v8hi x; v4si y; };
+union u2 { v4si s; v8hi y; };
+
+void
+foo (v4si i, v8hi h)
+{
+ struct s x1 = { i, i }; // { dg-error "incompatible types when initializing type '__vector" }
+ struct s x2 = { h, h }; // { dg-error "incompatible types" }
+ struct s x3 = { i, h }; // { dg-error "incompatible types" }
+ struct s x4 = { h, i };
+
+ union u1 y1 = { i }; // { dg-error "incompatible types" }
+ union u1 y2 = { h };
+ union u2 y3 = { i };
+ union u2 y4 = { h }; // { dg-error "incompatible types" }
+
+ v4si z1[] = { i, i };
+ v4si z2[] = { i, h }; // { dg-error "incompatible types" }
+ v4si z3[] = { h, i }; // { dg-error "incompatible types" }
+ v4si z4[] = { h, h }; // { dg-error "incompatible types" }
+ v8hi z5[] = { i, i }; // { dg-error "incompatible types" }
+ v8hi z6[] = { i, h }; // { dg-error "incompatible types" }
+ v8hi z7[] = { h, i }; // { dg-error "incompatible types" }
+ v8hi z8[] = { h, h };
+}
diff --git a/gcc/testsuite/gcc.dg/pr96377-2.c b/gcc/testsuite/gcc.dg/pr96377-2.c
new file mode 100644
index 00000000000..f58b06d9076
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr96377-2.c
@@ -0,0 +1,31 @@
+/* { dg-options "-flax-vector-conversions" } */
+
+typedef int v4si __attribute__((vector_size(16)));
+typedef short v8hi __attribute__((vector_size(16)));
+
+struct s { v8hi x; v4si y; };
+union u1 { v8hi x; v4si y; };
+union u2 { v4si s; v8hi y; };
+
+void
+foo (v4si i, v8hi h)
+{
+ struct s x1 = { i, i };
+ struct s x2 = { h, h };
+ struct s x3 = { i, h };
+ struct s x4 = { h, i };
+
+ union u1 y1 = { i };
+ union u1 y2 = { h };
+ union u2 y3 = { i };
+ union u2 y4 = { h };
+
+ v4si z1[] = { i, i };
+ v4si z2[] = { i, h };
+ v4si z3[] = { h, i };
+ v4si z4[] = { h, h };
+ v8hi z5[] = { i, i };
+ v8hi z6[] = { i, h };
+ v8hi z7[] = { h, i };
+ v8hi z8[] = { h, h };
+}
diff --git a/gcc/testsuite/gcc.dg/pr96377-3.c b/gcc/testsuite/gcc.dg/pr96377-3.c
new file mode 100644
index 00000000000..66dce01f277
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr96377-3.c
@@ -0,0 +1,33 @@
+/* { dg-do compile { target aarch64*-*-* } } */
+/* { dg-options "-fno-lax-vector-conversions" } */
+/* { dg-message "use '-flax-vector-conversions' to permit conversions" "" { target *-*-* } 0 } */
+
+typedef int v4si __attribute__((vector_size(16)));
+typedef short v8hi __attribute__((vector_size(16)));
+
+struct s { v8hi x; v4si y; };
+union u1 { v8hi x; v4si y; };
+union u2 { v4si s; v8hi y; };
+
+void
+foo (__Int32x4_t i, __Int16x8_t h)
+{
+ struct s x1 = { i, i }; // { dg-error "incompatible types when initializing type '__vector" }
+ struct s x2 = { h, h }; // { dg-error "incompatible types" }
+ struct s x3 = { i, h }; // { dg-error "incompatible types" }
+ struct s x4 = { h, i };
+
+ union u1 y1 = { i }; // { dg-error "incompatible types" }
+ union u1 y2 = { h };
+ union u2 y3 = { i };
+ union u2 y4 = { h }; // { dg-error "incompatible types" }
+
+ v4si z1[] = { i, i };
+ v4si z2[] = { i, h }; // { dg-error "incompatible types" }
+ v4si z3[] = { h, i }; // { dg-error "incompatible types" }
+ v4si z4[] = { h, h }; // { dg-error "incompatible types" }
+ v8hi z5[] = { i, i }; // { dg-error "incompatible types" }
+ v8hi z6[] = { i, h }; // { dg-error "incompatible types" }
+ v8hi z7[] = { h, i }; // { dg-error "incompatible types" }
+ v8hi z8[] = { h, h };
+}
diff --git a/gcc/testsuite/gcc.dg/pr96377-4.c b/gcc/testsuite/gcc.dg/pr96377-4.c
new file mode 100644
index 00000000000..f7aaf490031
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr96377-4.c
@@ -0,0 +1,32 @@
+/* { dg-do compile { target aarch64*-*-* } } */
+/* { dg-options "-flax-vector-conversions" } */
+
+typedef int v4si __attribute__((vector_size(16)));
+typedef short v8hi __attribute__((vector_size(16)));
+
+struct s { v8hi x; v4si y; };
+union u1 { v8hi x; v4si y; };
+union u2 { v4si s; v8hi y; };
+
+void
+foo (__Int32x4_t i, __Int16x8_t h)
+{
+ struct s x1 = { i, i };
+ struct s x2 = { h, h };
+ struct s x3 = { i, h };
+ struct s x4 = { h, i };
+
+ union u1 y1 = { i };
+ union u1 y2 = { h };
+ union u2 y3 = { i };
+ union u2 y4 = { h };
+
+ v4si z1[] = { i, i };
+ v4si z2[] = { i, h };
+ v4si z3[] = { h, i };
+ v4si z4[] = { h, h };
+ v8hi z5[] = { i, i };
+ v8hi z6[] = { i, h };
+ v8hi z7[] = { h, i };
+ v8hi z8[] = { h, h };
+}
diff --git a/gcc/testsuite/gcc.dg/pr96377-5.c b/gcc/testsuite/gcc.dg/pr96377-5.c
new file mode 100644
index 00000000000..3d0c24befa6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr96377-5.c
@@ -0,0 +1,33 @@
+/* { dg-do compile { target aarch64*-*-* } } */
+/* { dg-options "-fno-lax-vector-conversions" } */
+/* { dg-message "use '-flax-vector-conversions' to permit conversions" "" { target *-*-* } 0 } */
+
+typedef int v4si __attribute__((vector_size(16)));
+typedef short v8hi __attribute__((vector_size(16)));
+
+struct s { __Int16x8_t x; __Int32x4_t y; };
+union u1 { __Int16x8_t x; __Int32x4_t y; };
+union u2 { __Int32x4_t s; __Int16x8_t y; };
+
+void
+foo (v4si i, v8hi h)
+{
+ struct s x1 = { i, i }; // { dg-error "incompatible types when initializing type '__Int16x8_t" }
+ struct s x2 = { h, h }; // { dg-error "incompatible types" }
+ struct s x3 = { i, h }; // { dg-error "incompatible types" }
+ struct s x4 = { h, i };
+
+ union u1 y1 = { i }; // { dg-error "incompatible types" }
+ union u1 y2 = { h };
+ union u2 y3 = { i };
+ union u2 y4 = { h }; // { dg-error "incompatible types" }
+
+ v4si z1[] = { i, i };
+ v4si z2[] = { i, h }; // { dg-error "incompatible types" }
+ v4si z3[] = { h, i }; // { dg-error "incompatible types" }
+ v4si z4[] = { h, h }; // { dg-error "incompatible types" }
+ v8hi z5[] = { i, i }; // { dg-error "incompatible types" }
+ v8hi z6[] = { i, h }; // { dg-error "incompatible types" }
+ v8hi z7[] = { h, i }; // { dg-error "incompatible types" }
+ v8hi z8[] = { h, h };
+}
diff --git a/gcc/testsuite/gcc.dg/pr96377-6.c b/gcc/testsuite/gcc.dg/pr96377-6.c
new file mode 100644
index 00000000000..165327fa292
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr96377-6.c
@@ -0,0 +1,32 @@
+/* { dg-do compile { target aarch64*-*-* } } */
+/* { dg-options "-flax-vector-conversions" } */
+
+typedef int v4si __attribute__((vector_size(16)));
+typedef short v8hi __attribute__((vector_size(16)));
+
+struct s { __Int16x8_t x; __Int32x4_t y; };
+union u1 { __Int16x8_t x; __Int32x4_t y; };
+union u2 { __Int32x4_t s; __Int16x8_t y; };
+
+void
+foo (v4si i, v8hi h)
+{
+ struct s x1 = { i, i };
+ struct s x2 = { h, h };
+ struct s x3 = { i, h };
+ struct s x4 = { h, i };
+
+ union u1 y1 = { i };
+ union u1 y2 = { h };
+ union u2 y3 = { i };
+ union u2 y4 = { h };
+
+ v4si z1[] = { i, i };
+ v4si z2[] = { i, h };
+ v4si z3[] = { h, i };
+ v4si z4[] = { h, h };
+ v8hi z5[] = { i, i };
+ v8hi z6[] = { i, h };
+ v8hi z7[] = { h, i };
+ v8hi z8[] = { h, h };
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/pr96377-1.c b/gcc/testsuite/gcc.target/aarch64/pr96377-1.c
new file mode 100644
index 00000000000..51e3e36edfc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/pr96377-1.c
@@ -0,0 +1,20 @@
+/* { dg-options "" } */
+
+#include <arm_neon.h>
+
+struct aegis128_state {
+ uint8x16_t v[5];
+};
+
+void foo(const void *key, const void *iv, const void *const0, const void *const1)
+{
+ uint8x16_t k = vld1q_u8(key);
+ uint8x16_t kiv = k ^ vld1q_u8(iv);
+ struct aegis128_state st = {{
+ kiv,
+ vld1q_u8(const1),
+ vld1q_u8(const0),
+ k ^ vld1q_u8(const0),
+ k ^ vld1q_u8(const1),
+ }};
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c
new file mode 100644
index 00000000000..0f1a2b0e46b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c
@@ -0,0 +1,15 @@
+/* { dg-options "-msve-vector-bits=256" } */
+
+#include <arm_sve.h>
+
+typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
+typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
+
+void
+f (svuint8_t sve_u1, svint8_t sve_s1,
+ gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1)
+{
+ gnu_uint8_t arr1[] = { gnu_u1, sve_u1 };
+ gnu_uint8_t arr2[] = { gnu_s1 }; // { dg-error "incompatible types" }
+ gnu_uint8_t arr3[] = { sve_s1 }; // { dg-error "incompatible types" }
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c
new file mode 100644
index 00000000000..ac4e0d12ff8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c
@@ -0,0 +1,15 @@
+/* { dg-options "-msve-vector-bits=256 -flax-vector-conversions" } */
+
+#include <arm_sve.h>
+
+typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
+typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
+
+void
+f (svuint8_t sve_u1, svint8_t sve_s1,
+ gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1)
+{
+ gnu_uint8_t arr1[] = { gnu_u1, sve_u1 };
+ gnu_uint8_t arr2[] = { gnu_s1 };
+ gnu_uint8_t arr3[] = { sve_s1 };
+}
--
2.27.0

View file

@ -0,0 +1,157 @@
From 773021143288f5bf0dca1e3ee1f908f580f6fd9c Mon Sep 17 00:00:00 2001
From: Peter Bergner <bergner@linux.ibm.com>
Date: Thu, 13 Aug 2020 13:40:39 -0500
Subject: [PATCH 30/30] rs6000: ICE when using an MMA type as a function param
or return value [PR96506]
PR96506 shows a problem where we ICE on illegal usage, namely using MMA
types for function arguments and return values. The solution is to flag
these illegal usages as errors early, before we ICE.
2020-08-13 Peter Bergner <bergner@linux.ibm.com>
gcc/
PR target/96506
* config/rs6000/rs6000-call.c (rs6000_promote_function_mode): Disallow
MMA types as return values.
(rs6000_function_arg): Disallow MMA types as function arguments.
gcc/testsuite/
PR target/96506
* gcc.target/powerpc/pr96506.c: New test.
(cherry picked from commit 0ad7e730c142ef6cd0ddc1491a89a7f330caa887)
---
gcc/config/rs6000/rs6000-call.c | 34 ++++++++++-
gcc/testsuite/gcc.target/powerpc/pr96506.c | 66 ++++++++++++++++++++++
2 files changed, 99 insertions(+), 1 deletion(-)
create mode 100644 gcc/testsuite/gcc.target/powerpc/pr96506.c
diff --git a/gcc/config/rs6000/rs6000-call.c b/gcc/config/rs6000/rs6000-call.c
index 243601e90c1..37566780e54 100644
--- a/gcc/config/rs6000/rs6000-call.c
+++ b/gcc/config/rs6000/rs6000-call.c
@@ -6076,8 +6076,30 @@ machine_mode
rs6000_promote_function_mode (const_tree type ATTRIBUTE_UNUSED,
machine_mode mode,
int *punsignedp ATTRIBUTE_UNUSED,
- const_tree, int)
+ const_tree, int for_return)
{
+ /* Warning: this is a static local variable and not always NULL!
+ This function is called multiple times for the same function
+ and return value. PREV_FUNC is used to keep track of the
+ first time we encounter a function's return value in order
+ to not report an error with that return value multiple times. */
+ static struct function *prev_func = NULL;
+
+ /* We do not allow MMA types being used as return values. Only report
+ the invalid return value usage the first time we encounter it. */
+ if (for_return
+ && prev_func != cfun
+ && (mode == POImode || mode == PXImode))
+ {
+ /* Record we have now handled function CFUN, so the next time we
+ are called, we do not re-report the same error. */
+ prev_func = cfun;
+ if (TYPE_CANONICAL (type) != NULL_TREE)
+ type = TYPE_CANONICAL (type);
+ error ("invalid use of MMA type %qs as a function return value",
+ IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type))));
+ }
+
PROMOTE_MODE (mode, *punsignedp, type);
return mode;
@@ -7028,6 +7050,16 @@ rs6000_function_arg (cumulative_args_t cum_v, const function_arg_info &arg)
machine_mode elt_mode;
int n_elts;
+ /* We do not allow MMA types being used as function arguments. */
+ if (mode == POImode || mode == PXImode)
+ {
+ if (TYPE_CANONICAL (type) != NULL_TREE)
+ type = TYPE_CANONICAL (type);
+ error ("invalid use of MMA operand of type %qs as a function parameter",
+ IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type))));
+ return NULL_RTX;
+ }
+
/* Return a marker to indicate whether CR1 needs to set or clear the
bit that V.4 uses to say fp args were passed in registers.
Assume that we don't need the marker for software floating point,
diff --git a/gcc/testsuite/gcc.target/powerpc/pr96506.c b/gcc/testsuite/gcc.target/powerpc/pr96506.c
new file mode 100644
index 00000000000..b1b40c5a5c8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr96506.c
@@ -0,0 +1,66 @@
+/* PR target/96506 */
+/* { dg-do compile } */
+/* { dg-require-effective-target power10_ok } */
+/* { dg-options "-mdejagnu-cpu=power10 -O2" } */
+
+extern void bar0();
+extern void bar1();
+extern void bar2();
+extern void bar3();
+
+typedef __vector_pair vpair_t;
+typedef __vector_quad vquad_t;
+
+/* Verify we flag errors on the following. */
+
+void
+foo0 (void)
+{
+ __vector_pair v;
+ bar0 (v); /* { dg-error "invalid use of MMA operand of type .__vector_pair. as a function parameter" } */
+}
+
+void
+foo1 (void)
+{
+ vpair_t v;
+ bar1 (v); /* { dg-error "invalid use of MMA operand of type .__vector_pair. as a function parameter" } */
+}
+
+void
+foo2 (void)
+{
+ __vector_quad v;
+ bar2 (v); /* { dg-error "invalid use of MMA operand of type .__vector_quad. as a function parameter" } */
+}
+
+void
+foo3 (void)
+{
+ vquad_t v;
+ bar3 (v); /* { dg-error "invalid use of MMA operand of type .__vector_quad. as a function parameter" } */
+}
+
+__vector_pair
+foo4 (__vector_pair *src) /* { dg-error "invalid use of MMA type .__vector_pair. as a function return value" } */
+{
+ return *src;
+}
+
+vpair_t
+foo5 (vpair_t *src) /* { dg-error "invalid use of MMA type .__vector_pair. as a function return value" } */
+{
+ return *src;
+}
+
+__vector_quad
+foo6 (__vector_quad *src) /* { dg-error "invalid use of MMA type .__vector_quad. as a function return value" } */
+{
+ return *src;
+}
+
+vquad_t
+foo7 (vquad_t *src) /* { dg-error "invalid use of MMA type .__vector_quad. as a function return value" } */
+{
+ return *src;
+}
--
2.27.0

View file

@ -30,7 +30,7 @@ pkgver=10.2.0
[ "$CHOST" != "$CTARGET" ] && _target="-$CTARGET_ARCH" || _target=""
pkgname=gcc-armhf
pkgrel=1
pkgrel=2
pkgdesc="Stage2 cross-compiler for armhf"
url="https://gcc.gnu.org"
arch="x86_64"
@ -201,6 +201,8 @@ source="https://gcc.gnu.org/pub/gcc/releases/gcc-${_pkgbase:-$pkgver}/gcc-${_pkg
0026-always-build-libgcc_eh.a.patch
0027-ada-libgnarl-compatibility-for-musl.patch
0028-ada-musl-support-fixes.patch
0029-c-Fix-bogus-vector-initialisation-error-PR96377.patch
0030-rs6000-ICE-when-using-an-MMA-type-as-a-function-para.patch
"
# gcc-4.8-build-args.patch
@ -631,31 +633,33 @@ gnat() {
}
sha512sums="42ae38928bd2e8183af445da34220964eb690b675b1892bbeb7cd5bb62be499011ec9a93397dba5e2fb681afadfc6f2767d03b9035b44ba9be807187ae6dc65e gcc-10.2.0.tar.xz
5edc2dfe8e5d680c8c622b16943a1ec4e7f7db245e2fa4e54371962c048af1f074b1ed49f619f8abdf0eb97129d8b7198b4f16f06da794fe0fd6ce4d55f829fb 0001-posix_memalign.patch
bff1c9a08d32186b94660c42823babd63729b2a050e761c514c3f23c7eac2585ddc4f748df547915fb6b2fc098f3ecc2e8d9707f3aef9bb9c6103ba92ed5f906 0002-gcc-poison-system-directories.patch
7662cc8c6cd77a6cacb2899f4fb13d14495feb508bad9ee8ae0dd38ecddf8d45391ec636022913eece41661fbd5d336ac2130a5c08b2495eb5aff5501cff49a6 0003-Turn-on-Wl-z-relro-z-now-by-default.patch
26303e588f37c4208c3da962972b83759daa5abaf8eaf4da331a4cf1e3a90590ad56a7f8b766795bda7b6baa69aaa9c09864f297d376feacbe4ba08249da2d8d 0004-Turn-on-D_FORTIFY_SOURCE-2-by-default-for-C-C-ObjC-O.patch
4be2f8ab07e5ff2b018c633e057927446259b63cc65229f977c84b294820d1dbecc29c2e6167b3cb000a5995e7def64cd8191031ee2b2c2ec3e5b4ad70267083 0005-On-linux-targets-pass-as-needed-by-default-to-the-li.patch
e97e619874c0edb60d826669426f96b6f09b79849538415ee1a205345a574ea292de5f324925dd1c821859a3c4873a2392e11edcd6ac6b53f6d6d389b25ffe94 0006-Enable-Wformat-and-Wformat-security-by-default.patch
c3081e7b37dcb2e2b4381e6fcc2abfa066bb4adc3ad4bdd7bd1402a6a3ccc354bfcf713c6acb379001dd97e14e6bdc8eb2eeca6b1e45262bea3262d51394c0e6 0007-Enable-Wtrampolines-by-default.patch
cc602c71b0893b058021cd45d239c3e9f013f68cd56f642fcdad342456bae9ea08ddf0929a6c2e6e452987d1d8c4be97dfe0314d9107e01bf6403ce97e83a30f 0008-Disable-ssp-on-nostdlib-nodefaultlibs-and-ffreestand.patch
0bc96d3a2afd0499e01b47a8197f9a5ead04219d0674f0dea97a4654def7dca2c50d8c005d04558212d53e4ec9fcf2bf4a3286d7a12b24eba0134aa1197abfe1 0009-Ensure-that-msgfmt-doesn-t-encounter-problems-during.patch
2662eadcc54408f5c6596e24615a6771c046575a53b8aec65677fcaa699446021b8f3360efc7660d72bf004bffd98f9d4f9d64eba97dedcbb752bb3fffc5a048 0010-Don-t-declare-asprintf-if-defined-as-a-macro.patch
0003e594bbbf142d678f0f79fc03ff467276331a8c87016ecd5f9683abb14aea2550e6880995dd160dc92a3e4ec04e4b2323eda403d4fa8453c258c28bcc969e 0011-libiberty-copy-PIC-objects-during-build-process.patch
209f7cfb281c3c10af2b84e1542e9093bb0fb36171c7d12ce33b1d92a70388d0aae7b1bb22a613a59e352de62927a0f8e9d3a0b4729c12f8eebacc74d29ecfdd 0012-libitm-disable-FORTIFY.patch
e72ad6130dd5dd64ef34ff9f07cf23d310d0d530b272fa1bdc9459991dfb10eec64af3249f213d7f4393024d7d5111890f74679e1029ee0e97b1b6c12a708296 0013-libgcc_s.patch
16fa64460806a6456c8185cf703e7afdf87f55cf49256ed06fd1c098d97d69a3d1df715bb409984ebd275009495ac9ee01bc090580558d2ff569fa2dbbff5fa6 0014-nopie.patch
e054c819446d58e119570cca88a23f541c215c8e4a6eb65d194b97610046593981aaa306d74d39ad6868cb2a85da510dedefd0b729804e3b88a518e4a0897d20 0015-libffi-use-__linux__-instead-of-__gnu_linux__-for-mu.patch
1b70eae1dfb7b819555c51c51d88b9acd09f44d491bf09b265bed7027721c3a74628715fd1bbc537ba43071e98e6747e08ad117b78fedda19571d7a8f6e2c9db 0016-dlang-update-zlib-binding.patch
9f4cf47a2f4016cb6808f245159d9365134963765af41654d60c2f62d4622405f1d1041c3690d50a2db9501075ccc932efd32c739bb0d241af5b80829cb8bafe 0017-dlang-fix-fcntl-on-mips-add-libucontext-dep.patch
55ca9cc19376ac4ce333abdee700e185811455419da80b0f6d765d079aa1344073d09883add920530ad62a3b9c01c347f634931f3735cb021b81b8fd7229467c 0018-ada-fix-shared-linking.patch
b461122d5bc5778398c72bc02bef6ee344ba6c79b7ff9945f9d252559ad445b298e154d7c4784e22fc5cf9d299fc3a8cfc3c0e4d37f12b961148e0432ac4e434 0019-build-fix-CXXFLAGS_FOR_BUILD-passing.patch
61fdf02497bc5d90bdc1c9b2aa0294bbe1ab4285940dc840d94bda00b0c4dec342df639b11721e5569a6de47e53099928f1f1fb07ddcf3466535e8092b2af9a7 0020-libstdc-futex-add-time64-compatibility.patch
b40fb4f96693a7a0cec086c24f17ba5c8c416e67d76d468306b26895033ee326454a2b2d3028077b9f2187c545bff8c99e87d44298c179ccbc1f48f04ccc0889 0021-add-fortify-headers-paths.patch
7a7414d44a43260d7098bf24dacea6595fdaf42496ef1d176bb7a254da813c1faaf1ecfa6e1463af34c466f02cf2f8489dbfeae9bbfb070726d27da0330e4c59 0022-Alpine-musl-package-provides-libssp_nonshared.a.-We-.patch
7bd3b297a05df00a0c961c407d84c60b7dcf5150919a6ce8e6d5162bb82e5820ae938feec24dad62dca141b4ede302345b6e08e21f06dd9393bec7592a8aecf7 0023-DP-Use-push-state-pop-state-for-gold-as-well-when-li.patch
5c61dac5100dce45ad17f45e5e63e3f1e46173639384d7fb3c343e0b6a1e4c0ab39491d397c4445be63cf182f3bb79f7995cc8f89f70a61321dea24bf29cdd18 0024-Pure-64-bit-MIPS.patch
be8eee9edfe4e768ea4873b618a3431ae4502e933af343f80b623e38626c0e9187b73debd6773ae8dfbfb514ff0e4a18a5102e5fac4545e5de18f8e226e6b237 0025-use-pure-64-bit-configuration-where-appropriate.patch
2a2c89b3dfac37344bc17fbb9471b903cbdf4332c71bb20942587acccf962a42d58d2535cc0d90a0f6cddc8f6db1328c6b9f158aecbff99a92f9fa0e0683c0a7 0026-always-build-libgcc_eh.a.patch
739e9d58875c291af82ca9d7509f52679a01704beb4f003e3ace1cd1ae2aede5763243e34c2c73be13bd1dd46539f50d3b7c7a293686b0c6158d3069d377009e 0027-ada-libgnarl-compatibility-for-musl.patch
69f330f91a3354753e9283e804f18257c3e7a51f368defe4a704d20c2a00fd6d6cb62f4d7931ca886dd7dffeaf59fa9beaf36c19ebd3d25cdebfefc884d64c02 0028-ada-musl-support-fixes.patch"
ee2d344e912ebaddf71d53ff674ca7ea7837ee65f982a8f088339fd05261e441aace6087f7f936d32b502bff7e375094f48cb90562ab7734c57e1750d3fe2029 0001-posix_memalign.patch
deaf3ba25614df18b2b9b04244bcc9278c16d98f6fdeac17f7e2c0567be7c2836ab6d21fc9d8f779c672022d25fc278327d6d0d637bc200fadbb8d913ef95581 0002-gcc-poison-system-directories.patch
eb80ea94e008e33b97c8c0d47e74d639897a13357abbd130e9bff4ae30349b8f788acbaf4caa61f23022a86841c431b8bb639c536aab548dc735470a7c7ccfcf 0003-Turn-on-Wl-z-relro-z-now-by-default.patch
6cbc39dd24f7b4316b6e69940bf7c9f3ae889e8156f9c7dd72c8335e55a2a44d6fade37954296451b588bf8fc065514d4916ad527042b8f9a86d6e0d706e3c9c 0004-Turn-on-D_FORTIFY_SOURCE-2-by-default-for-C-C-ObjC-O.patch
e8c75aef864e5852fc78bfd7949232fc58b40a743d7c04a122ee6e021ee99f72edcff6efbf74e0eedc9405faf81d01208867b0571c4dc8cb44b9a03d1d25fbde 0005-On-linux-targets-pass-as-needed-by-default-to-the-li.patch
d5b3d40e1c4828d16684137487f64bf0b4b892fabc403f975f37d481a22647f923a3524a12714898937abdfbf875411e50b522134535f8d1852f103310aef5a3 0006-Enable-Wformat-and-Wformat-security-by-default.patch
e568a17fb3348964c0d21e7d67ffeae4f2f0dfd3f2986aaf9cec86c685c13f0c830dfc019b6bd7fe58b8635e5b8fca7ad992a92210f2be285b8cac6467c33a78 0007-Enable-Wtrampolines-by-default.patch
fd47150c72138d47a9faafe8586e84456e09a4ca0ed1ba9be7b5b2a351b1ca2d17b238beaa42c88888402d181933ff68cef0a91f0c3bd26d374706cf71726bbd 0008-Disable-ssp-on-nostdlib-nodefaultlibs-and-ffreestand.patch
820be83d93ff5b8d8fc69cdeccec0c6ac2544ee6cce43ae35e6829222791733a1c0b2232fb5a7ad93ab9e6cd677f077d01a4f9dec7aa9c38b013f74aa6c74fc3 0009-Ensure-that-msgfmt-doesn-t-encounter-problems-during.patch
5be4c0ad27e3b86c06dcaefe34ee1271cb53ded3de9802bc1a8571497240ca870e22534f77adb52dc4556eb4861b94a6c9a39cf6a2e84ef62ee88a04a4a01868 0010-Don-t-declare-asprintf-if-defined-as-a-macro.patch
5024309e549b7e4a94f2af8bd727144bd27cf8b7cdcbb537a30f3dac28543697c214438da7af491e43cb90daac46344b7b0466729d5c4209ca8a3a0d5a7d027c 0011-libiberty-copy-PIC-objects-during-build-process.patch
c0ebc205f6598edbe6d68b8a287c36ef80826b864e5b92b37f64e7a21ab7048cae67dd5650cd3d1399beb890753ad96e898a94c52d13b3ca7b266a15fed043ca 0012-libitm-disable-FORTIFY.patch
4a4fae02231f49142ab90d4f3dcd093c13032781ff1659f6aca62da13f8c676e2ec9dcdd2e7959ec62835e13c515be9bd7a2e35d3c06768d44d9e1185cb40dac 0013-libgcc_s.patch
9c513a30146364ecd899ca26a27019ea1ba353e8e409e0becb50d2a051022b701586b9276a4f118dbdd131c4882a04cad4188219bb10aa36d7b0bbe2eb2ceb03 0014-nopie.patch
aec141251c3abae35b4dc3ecd3778e332fa5596282fea1fd08c8d5350d8a8740568910236ce8d38c5662232fa5412313cb0a1c7a46c79a5b5e2c643871bf643b 0015-libffi-use-__linux__-instead-of-__gnu_linux__-for-mu.patch
d3fc4ea6918b4c4ce57eb45437f88ec3982bd5c8e17d282003e195dc705e0c84996ec140151b2b2371917595d2d62f30a2cb4676150c1bc8b8fd3b8fb85ecbe9 0016-dlang-update-zlib-binding.patch
4ebf845f41c7a8ba5bfa624c8e1527eb0f15a48d6a8bd151435037bd4b9d71f955ac9b60ab453c0315d592e92f194be92b9c3fca40ed533d64c0a1995c3ad4be 0017-dlang-fix-fcntl-on-mips-add-libucontext-dep.patch
2ca085382a03d269a2f48ec49601328cec7c53eb69856ee55aea11610293c206e8881043030d2295f49a08a5897c9eb9a6126a5ae65edbd967e17e34dadfb2d8 0018-ada-fix-shared-linking.patch
307a1ac2a6cea20c900b7bef2d5d7ad98c2b8cc45bdb2a6adbf151f3228d5de2670c75ddf48e4d3c9ceb7ed42852e24be534773551bc050ad10005faaee2600c 0019-build-fix-CXXFLAGS_FOR_BUILD-passing.patch
d01d0031d97fa42363bd3fb0c0dda9b26e7f06660294f0ceec55624f6564f2ce372b9a255683c67d79dfa18fb8551416c04766debc2e1b9c587ef381eef64f0b 0020-libstdc-futex-add-time64-compatibility.patch
e9eb5ff439cff4a22abaa7b9e27a176b51e1e1f4361fd829bd26e4b5ffc0e4583b1d6728b1510991b069b42f0aae8a2e698f85edecb1d792e4c7e10079507de8 0021-add-fortify-headers-paths.patch
beb7aa26a3731855be2521495186af52d4764973f2bc1ad44554332e867fe52fa37bcb5747395e44ae0011413e702054a60a754ad81dd88bbf97e3c7c718f356 0022-Alpine-musl-package-provides-libssp_nonshared.a.-We-.patch
ac3288b7840e5cf2500608773f40e604798b30fcb885c9fec7ba0bcc4bcfd374211faa26e82fcf4669bf624d5ccb0bdc747897759be77af3621b8b3bb08bff85 0023-DP-Use-push-state-pop-state-for-gold-as-well-when-li.patch
7e953227e0d3f1105a754f3fdefbaaca0b106d337c5bcc9b6394712d7f47173f96906517030b508d5a57611cc637848f2e59aec92313b39f1e2221bd98729826 0024-Pure-64-bit-MIPS.patch
12eaad6a8781e76f38bc4ba5c8cd09cfe0a0b95c0cde83fe58dc10bdec542fe43389f2c84bd313629c45af8ed3ffd46cc4478f5a4152ea1eb8d4b8276ede499c 0025-use-pure-64-bit-configuration-where-appropriate.patch
73a649ac371f4a5da68c5f0b88010080efd7deaee29765ef7a299fd1654b5ccdbfee88c59e5d37ae55e37cf6fa218d989e411c04b17e0fd94268ed65d7dcd4bf 0026-always-build-libgcc_eh.a.patch
59d9e0a5f39ad68b8bb1365f7c97a54ca4751cdad01ead8184fd897d8a13156145976a8b5b9856be154c053d6ba11eaad1e5662e7ddda9ba6d2811340df61cba 0027-ada-libgnarl-compatibility-for-musl.patch
8207323c530929517c799b24b1a7ba39c07bbb0e6770f878f1d66088ae16667e7706c9402ac04fe5eb6447a6ad12b548cc7e7612c5b217cd24e7d00094d2a28f 0028-ada-musl-support-fixes.patch
b90f7ad074b6183a4afc6be65349b8bf94b78d1c259d5be9877c16e3de95222fb6905cba7eb6ee4fe1e564ed20bf183c6815bd087896b6b0376656a841736fc1 0029-c-Fix-bogus-vector-initialisation-error-PR96377.patch
39a66708fb7ab4a72e1973749e32c22484e8e6c0afde6a59a645f2536c71cea86c8de2f0448621d53888293121344e84a24617400fae849282df57e0f5ddc21d 0030-rs6000-ICE-when-using-an-MMA-type-as-a-function-para.patch"

View file

@ -1,7 +1,7 @@
From 399f9e74a691ca6272d460d72d1b47afcad84752 Mon Sep 17 00:00:00 2001
From: Szabolcs Nagy <nsz@port70.net>
Date: Fri, 26 Jan 2018 20:32:50 +0000
Subject: [PATCH 01/28] posix_memalign
Subject: [PATCH 01/30] posix_memalign
---
gcc/config/i386/pmm_malloc.h | 9 +++++----

View file

@ -1,7 +1,7 @@
From 0e993b1b9a33910193862d76facf34bdbe58ed01 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 29 Mar 2013 08:59:00 +0400
Subject: [PATCH 02/28] gcc: poison-system-directories
Subject: [PATCH 02/30] gcc: poison-system-directories
Add /sw/include and /opt/include based on the original
zecke-no-host-includes.patch patch. The original patch checked for

View file

@ -1,7 +1,7 @@
From a35a55940c3402f8ebb510ec7d8bc67e85051277 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:45:49 +0000
Subject: [PATCH 03/28] Turn on -Wl,-z,relro,-z,now by default.
Subject: [PATCH 03/30] Turn on -Wl,-z,relro,-z,now by default.
---
gcc/doc/invoke.texi | 3 +++

View file

@ -1,7 +1,7 @@
From d2865d0a184ef59be8893dd34edf5037c4bf48f7 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:46:22 +0000
Subject: [PATCH 04/28] Turn on -D_FORTIFY_SOURCE=2 by default for C, C++,
Subject: [PATCH 04/30] Turn on -D_FORTIFY_SOURCE=2 by default for C, C++,
ObjC, ObjC++, if the optimization level is > 0
---

View file

@ -1,7 +1,7 @@
From 872e0a15a2b74cd6b6ba58e2e7e1605543ea36bd Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:46:56 +0000
Subject: [PATCH 05/28] On linux targets pass --as-needed by default to the
Subject: [PATCH 05/30] On linux targets pass --as-needed by default to the
linker, but always link the sanitizer libraries with --no-as-needed.
---

View file

@ -1,7 +1,7 @@
From 5e20872b8cc916cb457c63c6cd970c4fcba47bbb Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:47:43 +0000
Subject: [PATCH 06/28] Enable -Wformat and -Wformat-security by default.
Subject: [PATCH 06/30] Enable -Wformat and -Wformat-security by default.
---
gcc/c-family/c.opt | 4 ++--

View file

@ -1,7 +1,7 @@
From 1bcf7e30226852db956becebaffdfe2738923423 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:48:24 +0000
Subject: [PATCH 07/28] Enable -Wtrampolines by default.
Subject: [PATCH 07/30] Enable -Wtrampolines by default.
---
gcc/common.opt | 2 +-

View file

@ -1,7 +1,7 @@
From 23fd86ff34670873dd294bd87b93f45c3624903a Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:49:40 +0000
Subject: [PATCH 08/28] Disable ssp on -nostdlib, -nodefaultlibs and
Subject: [PATCH 08/30] Disable ssp on -nostdlib, -nodefaultlibs and
-ffreestanding Change the buffer size.
---

View file

@ -1,7 +1,7 @@
From d27d7936ecd9f357a3c6ee05e6548f8a68fdd4b7 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:50:33 +0000
Subject: [PATCH 09/28] Ensure that msgfmt doesn't encounter problems during
Subject: [PATCH 09/30] Ensure that msgfmt doesn't encounter problems during
gcc bootstrapping.
Solves error messages like the following:

View file

@ -1,7 +1,7 @@
From 2ec258d6d31e2c0c614c5086acee84a87768a67c Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:52:07 +0000
Subject: [PATCH 10/28] Don't declare asprintf if defined as a macro.
Subject: [PATCH 10/30] Don't declare asprintf if defined as a macro.
---
include/libiberty.h | 3 +++

View file

@ -1,7 +1,7 @@
From 4f6fd2272f57620da399d0f841fce12b9db3b2d1 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:53:00 +0000
Subject: [PATCH 11/28] libiberty: copy PIC objects during build process
Subject: [PATCH 11/30] libiberty: copy PIC objects during build process
---
libiberty/Makefile.in | 1 +

View file

@ -1,7 +1,7 @@
From cef5e0336cfdf4afd0e01fa9e562f686b234697a Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:53:36 +0000
Subject: [PATCH 12/28] libitm: disable FORTIFY
Subject: [PATCH 12/30] libitm: disable FORTIFY
---
libitm/configure.tgt | 10 ++++++++++

View file

@ -1,7 +1,7 @@
From d31721459e363e49dfe0a7797300864d9cef92f0 Mon Sep 17 00:00:00 2001
From: Szabolcs Nagy <nsz@port70.net>
Date: Sat, 24 Oct 2015 20:09:53 +0000
Subject: [PATCH 13/28] libgcc_s
Subject: [PATCH 13/30] libgcc_s
---
gcc/config/i386/i386-expand.c | 4 ++--

View file

@ -1,7 +1,7 @@
From f64f853eae3b390adbbc9b74a336d93918e6dca4 Mon Sep 17 00:00:00 2001
From: Szabolcs Nagy <nsz@port70.net>
Date: Sat, 7 Nov 2015 02:08:05 +0000
Subject: [PATCH 14/28] nopie
Subject: [PATCH 14/30] nopie
---
gcc/configure | 27 +++++++++++++++++++++++++++

View file

@ -1,7 +1,7 @@
From 37dace030c1402a8e6734a0fc59e18717ce1a2ef Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:57:09 +0000
Subject: [PATCH 15/28] libffi: use __linux__ instead of __gnu_linux__ for musl
Subject: [PATCH 15/30] libffi: use __linux__ instead of __gnu_linux__ for musl
---
libffi/src/closures.c | 2 +-

View file

@ -1,7 +1,7 @@
From 7fc386a2e629e859968da4eb4d0ff4983cb3b76f Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:57:51 +0000
Subject: [PATCH 16/28] dlang: update zlib binding
Subject: [PATCH 16/30] dlang: update zlib binding
---
libphobos/src/std/zlib.d | 266 ++++++++++++++++++++++++++++-----------

View file

@ -1,7 +1,7 @@
From ef5f7880cff27a2b92952ce53a207d5dd896923b Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:58:22 +0000
Subject: [PATCH 17/28] dlang: fix fcntl on mips, add libucontext dep
Subject: [PATCH 17/30] dlang: fix fcntl on mips, add libucontext dep
---
libphobos/configure.tgt | 1 +

View file

@ -1,7 +1,7 @@
From b675e0383262d6d702f5b732e4459d3e2c2a4891 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:59:16 +0000
Subject: [PATCH 18/28] ada: fix shared linking
Subject: [PATCH 18/30] ada: fix shared linking
---
gcc/ada/link.c | 12 ++++++------

View file

@ -1,7 +1,7 @@
From 0ea91dd6f8d856d5b589c2a3e95469fea06e7094 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 06:59:43 +0000
Subject: [PATCH 19/28] build: fix CXXFLAGS_FOR_BUILD passing
Subject: [PATCH 19/30] build: fix CXXFLAGS_FOR_BUILD passing
---
Makefile.in | 1 +

View file

@ -1,7 +1,7 @@
From 9684a815e1cbe854383c3c511e1d84d43c46ec94 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 07:00:17 +0000
Subject: [PATCH 20/28] libstdc++: futex: add time64 compatibility
Subject: [PATCH 20/30] libstdc++: futex: add time64 compatibility
---
libstdc++-v3/src/c++11/futex.cc | 8 ++++++++

View file

@ -1,7 +1,7 @@
From a0708ec975c01b049d254dc51179898966bf8a52 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 07:01:06 +0000
Subject: [PATCH 21/28] add fortify-headers paths
Subject: [PATCH 21/30] add fortify-headers paths
---
gcc/config/linux.h | 2 ++

View file

@ -1,7 +1,7 @@
From 740342a0e4b0b3af498964440918abba1a27ba33 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
Date: Fri, 21 Aug 2020 07:03:00 +0000
Subject: [PATCH 22/28] Alpine musl package provides libssp_nonshared.a. We
Subject: [PATCH 22/30] Alpine musl package provides libssp_nonshared.a. We
link to it unconditionally, as otherwise we get link failures if some objects
are -fstack-protector built and final link happens with -fno-stack-protector.
This seems to be the common case when bootstrapping gcc, the piepatches do

View file

@ -1,7 +1,7 @@
From 775adf35d6f34f61947fc28a2bdbfa7e881c40d5 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 07:03:42 +0000
Subject: [PATCH 23/28] DP: Use --push-state/--pop-state for gold as well when
Subject: [PATCH 23/30] DP: Use --push-state/--pop-state for gold as well when
linking libtsan.
---

View file

@ -1,7 +1,7 @@
From 717090cf538f765db1730956c512a43f2d52a802 Mon Sep 17 00:00:00 2001
From: Nils Andreas Svee <me@lochnair.net>
Date: Thu, 21 Dec 2017 03:14:33 +0100
Subject: [PATCH 24/28] Pure 64-bit MIPS
Subject: [PATCH 24/30] Pure 64-bit MIPS
---
gcc/config/mips/mips.h | 8 ++++----

View file

@ -1,7 +1,7 @@
From f73cf8d2f8f4eee71fc2ba850672e69f509a4486 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 07:04:40 +0000
Subject: [PATCH 25/28] use pure 64-bit configuration where appropriate
Subject: [PATCH 25/30] use pure 64-bit configuration where appropriate
---
gcc/config/aarch64/t-aarch64-linux | 2 +-

View file

@ -1,7 +1,7 @@
From 8472f6d0037dcd19c44b1e95d95fbf937b3823e6 Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 07:05:41 +0000
Subject: [PATCH 26/28] always build libgcc_eh.a
Subject: [PATCH 26/30] always build libgcc_eh.a
highly inspired by:
http://landley.net/hg/aboriginal/file/7e0747a665ab/sources/patches/gcc-core-libgcceh.patch

View file

@ -1,7 +1,7 @@
From 4e1b3a26f558e7693853d3600ee677705e67406c Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 07:06:30 +0000
Subject: [PATCH 27/28] ada: libgnarl compatibility for musl
Subject: [PATCH 27/30] ada: libgnarl compatibility for musl
---
gcc/ada/libgnarl/s-osinte__linux.ads | 11 ------

View file

@ -1,7 +1,7 @@
From 5e3d7d2f1e2448b6c5eb207f9251c437629e43bc Mon Sep 17 00:00:00 2001
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Fri, 21 Aug 2020 07:07:48 +0000
Subject: [PATCH 28/28] ada: musl support fixes
Subject: [PATCH 28/30] ada: musl support fixes
---
gcc/ada/Makefile.rtl | 10 +++++-----

View file

@ -0,0 +1,520 @@
From d6599f89ba558ec2a68d4bc4af15cf3513218054 Mon Sep 17 00:00:00 2001
From: Richard Sandiford <richard.sandiford@arm.com>
Date: Mon, 3 Aug 2020 09:48:36 +0100
Subject: [PATCH 29/30] c: Fix bogus vector initialisation error [PR96377]
One of the problems in this PR was that if we had:
vector_type1 array[] = { vector_value1 };
process_init_element would only treat vector_value1 as initialising
a vector_type1 if they had the same TYPE_MAIN_VARIANT. This has
several problems:
(1) It gives confusing error messages if the vector types are
incompatible. (Tested by gcc.dg/pr96377-1.c.)
(2) It means that we reject code that should be valid with
-flax-vector-conversions. (Tested by gcc.dg/pr96377-2.c.)
(3) On arm and aarch64 targets, it means that we reject some
initializers that mix Advanced SIMD and standard GNU vectors.
These vectors have traditionally had different TYPE_MAIN_VARIANTs
because they have different mangling schemes. (Tested by
gcc.dg/pr96377-[3-6].c.)
(4) It means that we reject SVE initializers that should be valid.
(Tested by gcc.target/aarch64/sve/gnu_vectors_[34].c.)
(5) After r11-1741-g:31427b974ed7b7dd54e2 we reject:
arm_neon_type1 array[] = { k ^ arm_neon_value1 };
because applying the binary operator to arm_neon_value1 strips
the "Advanced SIMD type" attributes that were added in that patch.
Stripping the attributes is problematic for other reasons though,
so that still needs to be fixed separately.
g++.target/aarch64/sve/gnu_vectors_[34].C already pass.
gcc/c/
PR c/96377
* c-typeck.c (process_init_element): Split test for whether to
recurse into a record, union or array into...
(initialize_elementwise_p): ...this new function. Don't recurse
into a vector type if the initialization value is also a vector.
gcc/testsuite/
PR c/96377
* gcc.dg/pr96377-1.c: New test.
* gcc.dg/pr96377-2.c: Likewise.
* gcc.dg/pr96377-3.c: Likewise.
* gcc.dg/pr96377-4.c: Likewise.
* gcc.dg/pr96377-5.c: Likewise.
* gcc.dg/pr96377-6.c: Likewise.
* gcc.target/aarch64/pr96377-1.c: Likewise.
* gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c: Likewise.
* gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c: Likewise.
* g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C: Likewise.
* g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C: Likewise.
(cherry picked from commit 7d599ad27b9bcf5165f87710f1abc64bbabd06ae)
---
gcc/c/c-typeck.c | 59 ++++++++++++++-----
.../sve/acle/general-c++/gnu_vectors_3.C | 15 +++++
.../sve/acle/general-c++/gnu_vectors_4.C | 15 +++++
gcc/testsuite/gcc.dg/pr96377-1.c | 32 ++++++++++
gcc/testsuite/gcc.dg/pr96377-2.c | 31 ++++++++++
gcc/testsuite/gcc.dg/pr96377-3.c | 33 +++++++++++
gcc/testsuite/gcc.dg/pr96377-4.c | 32 ++++++++++
gcc/testsuite/gcc.dg/pr96377-5.c | 33 +++++++++++
gcc/testsuite/gcc.dg/pr96377-6.c | 32 ++++++++++
gcc/testsuite/gcc.target/aarch64/pr96377-1.c | 20 +++++++
.../sve/acle/general-c/gnu_vectors_3.c | 15 +++++
.../sve/acle/general-c/gnu_vectors_4.c | 15 +++++
12 files changed, 317 insertions(+), 15 deletions(-)
create mode 100644 gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C
create mode 100644 gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C
create mode 100644 gcc/testsuite/gcc.dg/pr96377-1.c
create mode 100644 gcc/testsuite/gcc.dg/pr96377-2.c
create mode 100644 gcc/testsuite/gcc.dg/pr96377-3.c
create mode 100644 gcc/testsuite/gcc.dg/pr96377-4.c
create mode 100644 gcc/testsuite/gcc.dg/pr96377-5.c
create mode 100644 gcc/testsuite/gcc.dg/pr96377-6.c
create mode 100644 gcc/testsuite/gcc.target/aarch64/pr96377-1.c
create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c
create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c
diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c
index eb4b641e6bb..58762f10a93 100644
--- a/gcc/c/c-typeck.c
+++ b/gcc/c/c-typeck.c
@@ -9910,6 +9910,47 @@ output_pending_init_elements (int all, struct obstack * braced_init_obstack)
goto retry;
}
+/* Expression VALUE coincides with the start of type TYPE in a braced
+ initializer. Return true if we should treat VALUE as initializing
+ the first element of TYPE, false if we should treat it as initializing
+ TYPE as a whole.
+
+ If the initializer is clearly invalid, the question becomes:
+ which choice gives the best error message? */
+
+static bool
+initialize_elementwise_p (tree type, tree value)
+{
+ if (type == error_mark_node || value == error_mark_node)
+ return false;
+
+ gcc_checking_assert (TYPE_MAIN_VARIANT (type) == type);
+
+ tree value_type = TREE_TYPE (value);
+ if (value_type == error_mark_node)
+ return false;
+
+ /* GNU vectors can be initialized elementwise. However, treat any
+ kind of vector value as initializing the vector type as a whole,
+ regardless of whether the value is a GNU vector. Such initializers
+ are valid if and only if they would have been valid in a non-braced
+ initializer like:
+
+ TYPE foo = VALUE;
+
+ so recursing into the vector type would be at best confusing or at
+ worst wrong. For example, when -flax-vector-conversions is in effect,
+ it's possible to initialize a V8HI from a V4SI, even though the vectors
+ have different element types and different numbers of elements. */
+ if (gnu_vector_type_p (type))
+ return !VECTOR_TYPE_P (value_type);
+
+ if (AGGREGATE_TYPE_P (type))
+ return type != TYPE_MAIN_VARIANT (value_type);
+
+ return false;
+}
+
/* Add one non-braced element to the current constructor level.
This adjusts the current position within the constructor's type.
This may also start or terminate implicit levels
@@ -10089,11 +10130,7 @@ process_init_element (location_t loc, struct c_expr value, bool implicit,
/* Otherwise, if we have come to a subaggregate,
and we don't have an element of its type, push into it. */
else if (value.value != NULL_TREE
- && value.value != error_mark_node
- && TYPE_MAIN_VARIANT (TREE_TYPE (value.value)) != fieldtype
- && (fieldcode == RECORD_TYPE || fieldcode == ARRAY_TYPE
- || fieldcode == UNION_TYPE
- || gnu_vector_type_p (fieldtype)))
+ && initialize_elementwise_p (fieldtype, value.value))
{
push_init_level (loc, 1, braced_init_obstack);
continue;
@@ -10181,11 +10218,7 @@ process_init_element (location_t loc, struct c_expr value, bool implicit,
/* Otherwise, if we have come to a subaggregate,
and we don't have an element of its type, push into it. */
else if (value.value != NULL_TREE
- && value.value != error_mark_node
- && TYPE_MAIN_VARIANT (TREE_TYPE (value.value)) != fieldtype
- && (fieldcode == RECORD_TYPE || fieldcode == ARRAY_TYPE
- || fieldcode == UNION_TYPE
- || gnu_vector_type_p (fieldtype)))
+ && initialize_elementwise_p (fieldtype, value.value))
{
push_init_level (loc, 1, braced_init_obstack);
continue;
@@ -10224,11 +10257,7 @@ process_init_element (location_t loc, struct c_expr value, bool implicit,
/* Otherwise, if we have come to a subaggregate,
and we don't have an element of its type, push into it. */
else if (value.value != NULL_TREE
- && value.value != error_mark_node
- && TYPE_MAIN_VARIANT (TREE_TYPE (value.value)) != elttype
- && (eltcode == RECORD_TYPE || eltcode == ARRAY_TYPE
- || eltcode == UNION_TYPE
- || gnu_vector_type_p (elttype)))
+ && initialize_elementwise_p (elttype, value.value))
{
push_init_level (loc, 1, braced_init_obstack);
continue;
diff --git a/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C b/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C
new file mode 100644
index 00000000000..e607d58d726
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C
@@ -0,0 +1,15 @@
+/* { dg-options "-msve-vector-bits=256" } */
+
+#include <arm_sve.h>
+
+typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
+typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
+
+void
+f (svuint8_t sve_u1, svint8_t sve_s1,
+ gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1)
+{
+ gnu_uint8_t arr1[] = { gnu_u1, sve_u1 };
+ gnu_uint8_t arr2[] = { gnu_s1 }; // { dg-error "cannot convert" }
+ gnu_uint8_t arr3[] = { sve_s1 }; // { dg-error "cannot convert" }
+}
diff --git a/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C b/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C
new file mode 100644
index 00000000000..ac4e0d12ff8
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C
@@ -0,0 +1,15 @@
+/* { dg-options "-msve-vector-bits=256 -flax-vector-conversions" } */
+
+#include <arm_sve.h>
+
+typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
+typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
+
+void
+f (svuint8_t sve_u1, svint8_t sve_s1,
+ gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1)
+{
+ gnu_uint8_t arr1[] = { gnu_u1, sve_u1 };
+ gnu_uint8_t arr2[] = { gnu_s1 };
+ gnu_uint8_t arr3[] = { sve_s1 };
+}
diff --git a/gcc/testsuite/gcc.dg/pr96377-1.c b/gcc/testsuite/gcc.dg/pr96377-1.c
new file mode 100644
index 00000000000..2bf3f816331
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr96377-1.c
@@ -0,0 +1,32 @@
+/* { dg-options "-fno-lax-vector-conversions" } */
+/* { dg-message "use '-flax-vector-conversions' to permit conversions" "" { target *-*-* } 0 } */
+
+typedef int v4si __attribute__((vector_size(16)));
+typedef short v8hi __attribute__((vector_size(16)));
+
+struct s { v8hi x; v4si y; };
+union u1 { v8hi x; v4si y; };
+union u2 { v4si s; v8hi y; };
+
+void
+foo (v4si i, v8hi h)
+{
+ struct s x1 = { i, i }; // { dg-error "incompatible types when initializing type '__vector" }
+ struct s x2 = { h, h }; // { dg-error "incompatible types" }
+ struct s x3 = { i, h }; // { dg-error "incompatible types" }
+ struct s x4 = { h, i };
+
+ union u1 y1 = { i }; // { dg-error "incompatible types" }
+ union u1 y2 = { h };
+ union u2 y3 = { i };
+ union u2 y4 = { h }; // { dg-error "incompatible types" }
+
+ v4si z1[] = { i, i };
+ v4si z2[] = { i, h }; // { dg-error "incompatible types" }
+ v4si z3[] = { h, i }; // { dg-error "incompatible types" }
+ v4si z4[] = { h, h }; // { dg-error "incompatible types" }
+ v8hi z5[] = { i, i }; // { dg-error "incompatible types" }
+ v8hi z6[] = { i, h }; // { dg-error "incompatible types" }
+ v8hi z7[] = { h, i }; // { dg-error "incompatible types" }
+ v8hi z8[] = { h, h };
+}
diff --git a/gcc/testsuite/gcc.dg/pr96377-2.c b/gcc/testsuite/gcc.dg/pr96377-2.c
new file mode 100644
index 00000000000..f58b06d9076
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr96377-2.c
@@ -0,0 +1,31 @@
+/* { dg-options "-flax-vector-conversions" } */
+
+typedef int v4si __attribute__((vector_size(16)));
+typedef short v8hi __attribute__((vector_size(16)));
+
+struct s { v8hi x; v4si y; };
+union u1 { v8hi x; v4si y; };
+union u2 { v4si s; v8hi y; };
+
+void
+foo (v4si i, v8hi h)
+{
+ struct s x1 = { i, i };
+ struct s x2 = { h, h };
+ struct s x3 = { i, h };
+ struct s x4 = { h, i };
+
+ union u1 y1 = { i };
+ union u1 y2 = { h };
+ union u2 y3 = { i };
+ union u2 y4 = { h };
+
+ v4si z1[] = { i, i };
+ v4si z2[] = { i, h };
+ v4si z3[] = { h, i };
+ v4si z4[] = { h, h };
+ v8hi z5[] = { i, i };
+ v8hi z6[] = { i, h };
+ v8hi z7[] = { h, i };
+ v8hi z8[] = { h, h };
+}
diff --git a/gcc/testsuite/gcc.dg/pr96377-3.c b/gcc/testsuite/gcc.dg/pr96377-3.c
new file mode 100644
index 00000000000..66dce01f277
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr96377-3.c
@@ -0,0 +1,33 @@
+/* { dg-do compile { target aarch64*-*-* } } */
+/* { dg-options "-fno-lax-vector-conversions" } */
+/* { dg-message "use '-flax-vector-conversions' to permit conversions" "" { target *-*-* } 0 } */
+
+typedef int v4si __attribute__((vector_size(16)));
+typedef short v8hi __attribute__((vector_size(16)));
+
+struct s { v8hi x; v4si y; };
+union u1 { v8hi x; v4si y; };
+union u2 { v4si s; v8hi y; };
+
+void
+foo (__Int32x4_t i, __Int16x8_t h)
+{
+ struct s x1 = { i, i }; // { dg-error "incompatible types when initializing type '__vector" }
+ struct s x2 = { h, h }; // { dg-error "incompatible types" }
+ struct s x3 = { i, h }; // { dg-error "incompatible types" }
+ struct s x4 = { h, i };
+
+ union u1 y1 = { i }; // { dg-error "incompatible types" }
+ union u1 y2 = { h };
+ union u2 y3 = { i };
+ union u2 y4 = { h }; // { dg-error "incompatible types" }
+
+ v4si z1[] = { i, i };
+ v4si z2[] = { i, h }; // { dg-error "incompatible types" }
+ v4si z3[] = { h, i }; // { dg-error "incompatible types" }
+ v4si z4[] = { h, h }; // { dg-error "incompatible types" }
+ v8hi z5[] = { i, i }; // { dg-error "incompatible types" }
+ v8hi z6[] = { i, h }; // { dg-error "incompatible types" }
+ v8hi z7[] = { h, i }; // { dg-error "incompatible types" }
+ v8hi z8[] = { h, h };
+}
diff --git a/gcc/testsuite/gcc.dg/pr96377-4.c b/gcc/testsuite/gcc.dg/pr96377-4.c
new file mode 100644
index 00000000000..f7aaf490031
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr96377-4.c
@@ -0,0 +1,32 @@
+/* { dg-do compile { target aarch64*-*-* } } */
+/* { dg-options "-flax-vector-conversions" } */
+
+typedef int v4si __attribute__((vector_size(16)));
+typedef short v8hi __attribute__((vector_size(16)));
+
+struct s { v8hi x; v4si y; };
+union u1 { v8hi x; v4si y; };
+union u2 { v4si s; v8hi y; };
+
+void
+foo (__Int32x4_t i, __Int16x8_t h)
+{
+ struct s x1 = { i, i };
+ struct s x2 = { h, h };
+ struct s x3 = { i, h };
+ struct s x4 = { h, i };
+
+ union u1 y1 = { i };
+ union u1 y2 = { h };
+ union u2 y3 = { i };
+ union u2 y4 = { h };
+
+ v4si z1[] = { i, i };
+ v4si z2[] = { i, h };
+ v4si z3[] = { h, i };
+ v4si z4[] = { h, h };
+ v8hi z5[] = { i, i };
+ v8hi z6[] = { i, h };
+ v8hi z7[] = { h, i };
+ v8hi z8[] = { h, h };
+}
diff --git a/gcc/testsuite/gcc.dg/pr96377-5.c b/gcc/testsuite/gcc.dg/pr96377-5.c
new file mode 100644
index 00000000000..3d0c24befa6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr96377-5.c
@@ -0,0 +1,33 @@
+/* { dg-do compile { target aarch64*-*-* } } */
+/* { dg-options "-fno-lax-vector-conversions" } */
+/* { dg-message "use '-flax-vector-conversions' to permit conversions" "" { target *-*-* } 0 } */
+
+typedef int v4si __attribute__((vector_size(16)));
+typedef short v8hi __attribute__((vector_size(16)));
+
+struct s { __Int16x8_t x; __Int32x4_t y; };
+union u1 { __Int16x8_t x; __Int32x4_t y; };
+union u2 { __Int32x4_t s; __Int16x8_t y; };
+
+void
+foo (v4si i, v8hi h)
+{
+ struct s x1 = { i, i }; // { dg-error "incompatible types when initializing type '__Int16x8_t" }
+ struct s x2 = { h, h }; // { dg-error "incompatible types" }
+ struct s x3 = { i, h }; // { dg-error "incompatible types" }
+ struct s x4 = { h, i };
+
+ union u1 y1 = { i }; // { dg-error "incompatible types" }
+ union u1 y2 = { h };
+ union u2 y3 = { i };
+ union u2 y4 = { h }; // { dg-error "incompatible types" }
+
+ v4si z1[] = { i, i };
+ v4si z2[] = { i, h }; // { dg-error "incompatible types" }
+ v4si z3[] = { h, i }; // { dg-error "incompatible types" }
+ v4si z4[] = { h, h }; // { dg-error "incompatible types" }
+ v8hi z5[] = { i, i }; // { dg-error "incompatible types" }
+ v8hi z6[] = { i, h }; // { dg-error "incompatible types" }
+ v8hi z7[] = { h, i }; // { dg-error "incompatible types" }
+ v8hi z8[] = { h, h };
+}
diff --git a/gcc/testsuite/gcc.dg/pr96377-6.c b/gcc/testsuite/gcc.dg/pr96377-6.c
new file mode 100644
index 00000000000..165327fa292
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr96377-6.c
@@ -0,0 +1,32 @@
+/* { dg-do compile { target aarch64*-*-* } } */
+/* { dg-options "-flax-vector-conversions" } */
+
+typedef int v4si __attribute__((vector_size(16)));
+typedef short v8hi __attribute__((vector_size(16)));
+
+struct s { __Int16x8_t x; __Int32x4_t y; };
+union u1 { __Int16x8_t x; __Int32x4_t y; };
+union u2 { __Int32x4_t s; __Int16x8_t y; };
+
+void
+foo (v4si i, v8hi h)
+{
+ struct s x1 = { i, i };
+ struct s x2 = { h, h };
+ struct s x3 = { i, h };
+ struct s x4 = { h, i };
+
+ union u1 y1 = { i };
+ union u1 y2 = { h };
+ union u2 y3 = { i };
+ union u2 y4 = { h };
+
+ v4si z1[] = { i, i };
+ v4si z2[] = { i, h };
+ v4si z3[] = { h, i };
+ v4si z4[] = { h, h };
+ v8hi z5[] = { i, i };
+ v8hi z6[] = { i, h };
+ v8hi z7[] = { h, i };
+ v8hi z8[] = { h, h };
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/pr96377-1.c b/gcc/testsuite/gcc.target/aarch64/pr96377-1.c
new file mode 100644
index 00000000000..51e3e36edfc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/pr96377-1.c
@@ -0,0 +1,20 @@
+/* { dg-options "" } */
+
+#include <arm_neon.h>
+
+struct aegis128_state {
+ uint8x16_t v[5];
+};
+
+void foo(const void *key, const void *iv, const void *const0, const void *const1)
+{
+ uint8x16_t k = vld1q_u8(key);
+ uint8x16_t kiv = k ^ vld1q_u8(iv);
+ struct aegis128_state st = {{
+ kiv,
+ vld1q_u8(const1),
+ vld1q_u8(const0),
+ k ^ vld1q_u8(const0),
+ k ^ vld1q_u8(const1),
+ }};
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c
new file mode 100644
index 00000000000..0f1a2b0e46b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c
@@ -0,0 +1,15 @@
+/* { dg-options "-msve-vector-bits=256" } */
+
+#include <arm_sve.h>
+
+typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
+typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
+
+void
+f (svuint8_t sve_u1, svint8_t sve_s1,
+ gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1)
+{
+ gnu_uint8_t arr1[] = { gnu_u1, sve_u1 };
+ gnu_uint8_t arr2[] = { gnu_s1 }; // { dg-error "incompatible types" }
+ gnu_uint8_t arr3[] = { sve_s1 }; // { dg-error "incompatible types" }
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c
new file mode 100644
index 00000000000..ac4e0d12ff8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c
@@ -0,0 +1,15 @@
+/* { dg-options "-msve-vector-bits=256 -flax-vector-conversions" } */
+
+#include <arm_sve.h>
+
+typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
+typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
+
+void
+f (svuint8_t sve_u1, svint8_t sve_s1,
+ gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1)
+{
+ gnu_uint8_t arr1[] = { gnu_u1, sve_u1 };
+ gnu_uint8_t arr2[] = { gnu_s1 };
+ gnu_uint8_t arr3[] = { sve_s1 };
+}
--
2.27.0

View file

@ -0,0 +1,157 @@
From 773021143288f5bf0dca1e3ee1f908f580f6fd9c Mon Sep 17 00:00:00 2001
From: Peter Bergner <bergner@linux.ibm.com>
Date: Thu, 13 Aug 2020 13:40:39 -0500
Subject: [PATCH 30/30] rs6000: ICE when using an MMA type as a function param
or return value [PR96506]
PR96506 shows a problem where we ICE on illegal usage, namely using MMA
types for function arguments and return values. The solution is to flag
these illegal usages as errors early, before we ICE.
2020-08-13 Peter Bergner <bergner@linux.ibm.com>
gcc/
PR target/96506
* config/rs6000/rs6000-call.c (rs6000_promote_function_mode): Disallow
MMA types as return values.
(rs6000_function_arg): Disallow MMA types as function arguments.
gcc/testsuite/
PR target/96506
* gcc.target/powerpc/pr96506.c: New test.
(cherry picked from commit 0ad7e730c142ef6cd0ddc1491a89a7f330caa887)
---
gcc/config/rs6000/rs6000-call.c | 34 ++++++++++-
gcc/testsuite/gcc.target/powerpc/pr96506.c | 66 ++++++++++++++++++++++
2 files changed, 99 insertions(+), 1 deletion(-)
create mode 100644 gcc/testsuite/gcc.target/powerpc/pr96506.c
diff --git a/gcc/config/rs6000/rs6000-call.c b/gcc/config/rs6000/rs6000-call.c
index 243601e90c1..37566780e54 100644
--- a/gcc/config/rs6000/rs6000-call.c
+++ b/gcc/config/rs6000/rs6000-call.c
@@ -6076,8 +6076,30 @@ machine_mode
rs6000_promote_function_mode (const_tree type ATTRIBUTE_UNUSED,
machine_mode mode,
int *punsignedp ATTRIBUTE_UNUSED,
- const_tree, int)
+ const_tree, int for_return)
{
+ /* Warning: this is a static local variable and not always NULL!
+ This function is called multiple times for the same function
+ and return value. PREV_FUNC is used to keep track of the
+ first time we encounter a function's return value in order
+ to not report an error with that return value multiple times. */
+ static struct function *prev_func = NULL;
+
+ /* We do not allow MMA types being used as return values. Only report
+ the invalid return value usage the first time we encounter it. */
+ if (for_return
+ && prev_func != cfun
+ && (mode == POImode || mode == PXImode))
+ {
+ /* Record we have now handled function CFUN, so the next time we
+ are called, we do not re-report the same error. */
+ prev_func = cfun;
+ if (TYPE_CANONICAL (type) != NULL_TREE)
+ type = TYPE_CANONICAL (type);
+ error ("invalid use of MMA type %qs as a function return value",
+ IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type))));
+ }
+
PROMOTE_MODE (mode, *punsignedp, type);
return mode;
@@ -7028,6 +7050,16 @@ rs6000_function_arg (cumulative_args_t cum_v, const function_arg_info &arg)
machine_mode elt_mode;
int n_elts;
+ /* We do not allow MMA types being used as function arguments. */
+ if (mode == POImode || mode == PXImode)
+ {
+ if (TYPE_CANONICAL (type) != NULL_TREE)
+ type = TYPE_CANONICAL (type);
+ error ("invalid use of MMA operand of type %qs as a function parameter",
+ IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type))));
+ return NULL_RTX;
+ }
+
/* Return a marker to indicate whether CR1 needs to set or clear the
bit that V.4 uses to say fp args were passed in registers.
Assume that we don't need the marker for software floating point,
diff --git a/gcc/testsuite/gcc.target/powerpc/pr96506.c b/gcc/testsuite/gcc.target/powerpc/pr96506.c
new file mode 100644
index 00000000000..b1b40c5a5c8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr96506.c
@@ -0,0 +1,66 @@
+/* PR target/96506 */
+/* { dg-do compile } */
+/* { dg-require-effective-target power10_ok } */
+/* { dg-options "-mdejagnu-cpu=power10 -O2" } */
+
+extern void bar0();
+extern void bar1();
+extern void bar2();
+extern void bar3();
+
+typedef __vector_pair vpair_t;
+typedef __vector_quad vquad_t;
+
+/* Verify we flag errors on the following. */
+
+void
+foo0 (void)
+{
+ __vector_pair v;
+ bar0 (v); /* { dg-error "invalid use of MMA operand of type .__vector_pair. as a function parameter" } */
+}
+
+void
+foo1 (void)
+{
+ vpair_t v;
+ bar1 (v); /* { dg-error "invalid use of MMA operand of type .__vector_pair. as a function parameter" } */
+}
+
+void
+foo2 (void)
+{
+ __vector_quad v;
+ bar2 (v); /* { dg-error "invalid use of MMA operand of type .__vector_quad. as a function parameter" } */
+}
+
+void
+foo3 (void)
+{
+ vquad_t v;
+ bar3 (v); /* { dg-error "invalid use of MMA operand of type .__vector_quad. as a function parameter" } */
+}
+
+__vector_pair
+foo4 (__vector_pair *src) /* { dg-error "invalid use of MMA type .__vector_pair. as a function return value" } */
+{
+ return *src;
+}
+
+vpair_t
+foo5 (vpair_t *src) /* { dg-error "invalid use of MMA type .__vector_pair. as a function return value" } */
+{
+ return *src;
+}
+
+__vector_quad
+foo6 (__vector_quad *src) /* { dg-error "invalid use of MMA type .__vector_quad. as a function return value" } */
+{
+ return *src;
+}
+
+vquad_t
+foo7 (vquad_t *src) /* { dg-error "invalid use of MMA type .__vector_quad. as a function return value" } */
+{
+ return *src;
+}
--
2.27.0

View file

@ -30,7 +30,7 @@ pkgver=10.2.0
[ "$CHOST" != "$CTARGET" ] && _target="-$CTARGET_ARCH" || _target=""
pkgname=gcc-armv7
pkgrel=1
pkgrel=2
pkgdesc="Stage2 cross-compiler for armv7"
url="https://gcc.gnu.org"
arch="x86_64"
@ -201,6 +201,8 @@ source="https://gcc.gnu.org/pub/gcc/releases/gcc-${_pkgbase:-$pkgver}/gcc-${_pkg
0026-always-build-libgcc_eh.a.patch
0027-ada-libgnarl-compatibility-for-musl.patch
0028-ada-musl-support-fixes.patch
0029-c-Fix-bogus-vector-initialisation-error-PR96377.patch
0030-rs6000-ICE-when-using-an-MMA-type-as-a-function-para.patch
"
# gcc-4.8-build-args.patch
@ -631,31 +633,33 @@ gnat() {
}
sha512sums="42ae38928bd2e8183af445da34220964eb690b675b1892bbeb7cd5bb62be499011ec9a93397dba5e2fb681afadfc6f2767d03b9035b44ba9be807187ae6dc65e gcc-10.2.0.tar.xz
5edc2dfe8e5d680c8c622b16943a1ec4e7f7db245e2fa4e54371962c048af1f074b1ed49f619f8abdf0eb97129d8b7198b4f16f06da794fe0fd6ce4d55f829fb 0001-posix_memalign.patch
bff1c9a08d32186b94660c42823babd63729b2a050e761c514c3f23c7eac2585ddc4f748df547915fb6b2fc098f3ecc2e8d9707f3aef9bb9c6103ba92ed5f906 0002-gcc-poison-system-directories.patch
7662cc8c6cd77a6cacb2899f4fb13d14495feb508bad9ee8ae0dd38ecddf8d45391ec636022913eece41661fbd5d336ac2130a5c08b2495eb5aff5501cff49a6 0003-Turn-on-Wl-z-relro-z-now-by-default.patch
26303e588f37c4208c3da962972b83759daa5abaf8eaf4da331a4cf1e3a90590ad56a7f8b766795bda7b6baa69aaa9c09864f297d376feacbe4ba08249da2d8d 0004-Turn-on-D_FORTIFY_SOURCE-2-by-default-for-C-C-ObjC-O.patch
4be2f8ab07e5ff2b018c633e057927446259b63cc65229f977c84b294820d1dbecc29c2e6167b3cb000a5995e7def64cd8191031ee2b2c2ec3e5b4ad70267083 0005-On-linux-targets-pass-as-needed-by-default-to-the-li.patch
e97e619874c0edb60d826669426f96b6f09b79849538415ee1a205345a574ea292de5f324925dd1c821859a3c4873a2392e11edcd6ac6b53f6d6d389b25ffe94 0006-Enable-Wformat-and-Wformat-security-by-default.patch
c3081e7b37dcb2e2b4381e6fcc2abfa066bb4adc3ad4bdd7bd1402a6a3ccc354bfcf713c6acb379001dd97e14e6bdc8eb2eeca6b1e45262bea3262d51394c0e6 0007-Enable-Wtrampolines-by-default.patch
cc602c71b0893b058021cd45d239c3e9f013f68cd56f642fcdad342456bae9ea08ddf0929a6c2e6e452987d1d8c4be97dfe0314d9107e01bf6403ce97e83a30f 0008-Disable-ssp-on-nostdlib-nodefaultlibs-and-ffreestand.patch
0bc96d3a2afd0499e01b47a8197f9a5ead04219d0674f0dea97a4654def7dca2c50d8c005d04558212d53e4ec9fcf2bf4a3286d7a12b24eba0134aa1197abfe1 0009-Ensure-that-msgfmt-doesn-t-encounter-problems-during.patch
2662eadcc54408f5c6596e24615a6771c046575a53b8aec65677fcaa699446021b8f3360efc7660d72bf004bffd98f9d4f9d64eba97dedcbb752bb3fffc5a048 0010-Don-t-declare-asprintf-if-defined-as-a-macro.patch
0003e594bbbf142d678f0f79fc03ff467276331a8c87016ecd5f9683abb14aea2550e6880995dd160dc92a3e4ec04e4b2323eda403d4fa8453c258c28bcc969e 0011-libiberty-copy-PIC-objects-during-build-process.patch
209f7cfb281c3c10af2b84e1542e9093bb0fb36171c7d12ce33b1d92a70388d0aae7b1bb22a613a59e352de62927a0f8e9d3a0b4729c12f8eebacc74d29ecfdd 0012-libitm-disable-FORTIFY.patch
e72ad6130dd5dd64ef34ff9f07cf23d310d0d530b272fa1bdc9459991dfb10eec64af3249f213d7f4393024d7d5111890f74679e1029ee0e97b1b6c12a708296 0013-libgcc_s.patch
16fa64460806a6456c8185cf703e7afdf87f55cf49256ed06fd1c098d97d69a3d1df715bb409984ebd275009495ac9ee01bc090580558d2ff569fa2dbbff5fa6 0014-nopie.patch
e054c819446d58e119570cca88a23f541c215c8e4a6eb65d194b97610046593981aaa306d74d39ad6868cb2a85da510dedefd0b729804e3b88a518e4a0897d20 0015-libffi-use-__linux__-instead-of-__gnu_linux__-for-mu.patch
1b70eae1dfb7b819555c51c51d88b9acd09f44d491bf09b265bed7027721c3a74628715fd1bbc537ba43071e98e6747e08ad117b78fedda19571d7a8f6e2c9db 0016-dlang-update-zlib-binding.patch
9f4cf47a2f4016cb6808f245159d9365134963765af41654d60c2f62d4622405f1d1041c3690d50a2db9501075ccc932efd32c739bb0d241af5b80829cb8bafe 0017-dlang-fix-fcntl-on-mips-add-libucontext-dep.patch
55ca9cc19376ac4ce333abdee700e185811455419da80b0f6d765d079aa1344073d09883add920530ad62a3b9c01c347f634931f3735cb021b81b8fd7229467c 0018-ada-fix-shared-linking.patch
b461122d5bc5778398c72bc02bef6ee344ba6c79b7ff9945f9d252559ad445b298e154d7c4784e22fc5cf9d299fc3a8cfc3c0e4d37f12b961148e0432ac4e434 0019-build-fix-CXXFLAGS_FOR_BUILD-passing.patch
61fdf02497bc5d90bdc1c9b2aa0294bbe1ab4285940dc840d94bda00b0c4dec342df639b11721e5569a6de47e53099928f1f1fb07ddcf3466535e8092b2af9a7 0020-libstdc-futex-add-time64-compatibility.patch
b40fb4f96693a7a0cec086c24f17ba5c8c416e67d76d468306b26895033ee326454a2b2d3028077b9f2187c545bff8c99e87d44298c179ccbc1f48f04ccc0889 0021-add-fortify-headers-paths.patch
7a7414d44a43260d7098bf24dacea6595fdaf42496ef1d176bb7a254da813c1faaf1ecfa6e1463af34c466f02cf2f8489dbfeae9bbfb070726d27da0330e4c59 0022-Alpine-musl-package-provides-libssp_nonshared.a.-We-.patch
7bd3b297a05df00a0c961c407d84c60b7dcf5150919a6ce8e6d5162bb82e5820ae938feec24dad62dca141b4ede302345b6e08e21f06dd9393bec7592a8aecf7 0023-DP-Use-push-state-pop-state-for-gold-as-well-when-li.patch
5c61dac5100dce45ad17f45e5e63e3f1e46173639384d7fb3c343e0b6a1e4c0ab39491d397c4445be63cf182f3bb79f7995cc8f89f70a61321dea24bf29cdd18 0024-Pure-64-bit-MIPS.patch
be8eee9edfe4e768ea4873b618a3431ae4502e933af343f80b623e38626c0e9187b73debd6773ae8dfbfb514ff0e4a18a5102e5fac4545e5de18f8e226e6b237 0025-use-pure-64-bit-configuration-where-appropriate.patch
2a2c89b3dfac37344bc17fbb9471b903cbdf4332c71bb20942587acccf962a42d58d2535cc0d90a0f6cddc8f6db1328c6b9f158aecbff99a92f9fa0e0683c0a7 0026-always-build-libgcc_eh.a.patch
739e9d58875c291af82ca9d7509f52679a01704beb4f003e3ace1cd1ae2aede5763243e34c2c73be13bd1dd46539f50d3b7c7a293686b0c6158d3069d377009e 0027-ada-libgnarl-compatibility-for-musl.patch
69f330f91a3354753e9283e804f18257c3e7a51f368defe4a704d20c2a00fd6d6cb62f4d7931ca886dd7dffeaf59fa9beaf36c19ebd3d25cdebfefc884d64c02 0028-ada-musl-support-fixes.patch"
ee2d344e912ebaddf71d53ff674ca7ea7837ee65f982a8f088339fd05261e441aace6087f7f936d32b502bff7e375094f48cb90562ab7734c57e1750d3fe2029 0001-posix_memalign.patch
deaf3ba25614df18b2b9b04244bcc9278c16d98f6fdeac17f7e2c0567be7c2836ab6d21fc9d8f779c672022d25fc278327d6d0d637bc200fadbb8d913ef95581 0002-gcc-poison-system-directories.patch
eb80ea94e008e33b97c8c0d47e74d639897a13357abbd130e9bff4ae30349b8f788acbaf4caa61f23022a86841c431b8bb639c536aab548dc735470a7c7ccfcf 0003-Turn-on-Wl-z-relro-z-now-by-default.patch
6cbc39dd24f7b4316b6e69940bf7c9f3ae889e8156f9c7dd72c8335e55a2a44d6fade37954296451b588bf8fc065514d4916ad527042b8f9a86d6e0d706e3c9c 0004-Turn-on-D_FORTIFY_SOURCE-2-by-default-for-C-C-ObjC-O.patch
e8c75aef864e5852fc78bfd7949232fc58b40a743d7c04a122ee6e021ee99f72edcff6efbf74e0eedc9405faf81d01208867b0571c4dc8cb44b9a03d1d25fbde 0005-On-linux-targets-pass-as-needed-by-default-to-the-li.patch
d5b3d40e1c4828d16684137487f64bf0b4b892fabc403f975f37d481a22647f923a3524a12714898937abdfbf875411e50b522134535f8d1852f103310aef5a3 0006-Enable-Wformat-and-Wformat-security-by-default.patch
e568a17fb3348964c0d21e7d67ffeae4f2f0dfd3f2986aaf9cec86c685c13f0c830dfc019b6bd7fe58b8635e5b8fca7ad992a92210f2be285b8cac6467c33a78 0007-Enable-Wtrampolines-by-default.patch
fd47150c72138d47a9faafe8586e84456e09a4ca0ed1ba9be7b5b2a351b1ca2d17b238beaa42c88888402d181933ff68cef0a91f0c3bd26d374706cf71726bbd 0008-Disable-ssp-on-nostdlib-nodefaultlibs-and-ffreestand.patch
820be83d93ff5b8d8fc69cdeccec0c6ac2544ee6cce43ae35e6829222791733a1c0b2232fb5a7ad93ab9e6cd677f077d01a4f9dec7aa9c38b013f74aa6c74fc3 0009-Ensure-that-msgfmt-doesn-t-encounter-problems-during.patch
5be4c0ad27e3b86c06dcaefe34ee1271cb53ded3de9802bc1a8571497240ca870e22534f77adb52dc4556eb4861b94a6c9a39cf6a2e84ef62ee88a04a4a01868 0010-Don-t-declare-asprintf-if-defined-as-a-macro.patch
5024309e549b7e4a94f2af8bd727144bd27cf8b7cdcbb537a30f3dac28543697c214438da7af491e43cb90daac46344b7b0466729d5c4209ca8a3a0d5a7d027c 0011-libiberty-copy-PIC-objects-during-build-process.patch
c0ebc205f6598edbe6d68b8a287c36ef80826b864e5b92b37f64e7a21ab7048cae67dd5650cd3d1399beb890753ad96e898a94c52d13b3ca7b266a15fed043ca 0012-libitm-disable-FORTIFY.patch
4a4fae02231f49142ab90d4f3dcd093c13032781ff1659f6aca62da13f8c676e2ec9dcdd2e7959ec62835e13c515be9bd7a2e35d3c06768d44d9e1185cb40dac 0013-libgcc_s.patch
9c513a30146364ecd899ca26a27019ea1ba353e8e409e0becb50d2a051022b701586b9276a4f118dbdd131c4882a04cad4188219bb10aa36d7b0bbe2eb2ceb03 0014-nopie.patch
aec141251c3abae35b4dc3ecd3778e332fa5596282fea1fd08c8d5350d8a8740568910236ce8d38c5662232fa5412313cb0a1c7a46c79a5b5e2c643871bf643b 0015-libffi-use-__linux__-instead-of-__gnu_linux__-for-mu.patch
d3fc4ea6918b4c4ce57eb45437f88ec3982bd5c8e17d282003e195dc705e0c84996ec140151b2b2371917595d2d62f30a2cb4676150c1bc8b8fd3b8fb85ecbe9 0016-dlang-update-zlib-binding.patch
4ebf845f41c7a8ba5bfa624c8e1527eb0f15a48d6a8bd151435037bd4b9d71f955ac9b60ab453c0315d592e92f194be92b9c3fca40ed533d64c0a1995c3ad4be 0017-dlang-fix-fcntl-on-mips-add-libucontext-dep.patch
2ca085382a03d269a2f48ec49601328cec7c53eb69856ee55aea11610293c206e8881043030d2295f49a08a5897c9eb9a6126a5ae65edbd967e17e34dadfb2d8 0018-ada-fix-shared-linking.patch
307a1ac2a6cea20c900b7bef2d5d7ad98c2b8cc45bdb2a6adbf151f3228d5de2670c75ddf48e4d3c9ceb7ed42852e24be534773551bc050ad10005faaee2600c 0019-build-fix-CXXFLAGS_FOR_BUILD-passing.patch
d01d0031d97fa42363bd3fb0c0dda9b26e7f06660294f0ceec55624f6564f2ce372b9a255683c67d79dfa18fb8551416c04766debc2e1b9c587ef381eef64f0b 0020-libstdc-futex-add-time64-compatibility.patch
e9eb5ff439cff4a22abaa7b9e27a176b51e1e1f4361fd829bd26e4b5ffc0e4583b1d6728b1510991b069b42f0aae8a2e698f85edecb1d792e4c7e10079507de8 0021-add-fortify-headers-paths.patch
beb7aa26a3731855be2521495186af52d4764973f2bc1ad44554332e867fe52fa37bcb5747395e44ae0011413e702054a60a754ad81dd88bbf97e3c7c718f356 0022-Alpine-musl-package-provides-libssp_nonshared.a.-We-.patch
ac3288b7840e5cf2500608773f40e604798b30fcb885c9fec7ba0bcc4bcfd374211faa26e82fcf4669bf624d5ccb0bdc747897759be77af3621b8b3bb08bff85 0023-DP-Use-push-state-pop-state-for-gold-as-well-when-li.patch
7e953227e0d3f1105a754f3fdefbaaca0b106d337c5bcc9b6394712d7f47173f96906517030b508d5a57611cc637848f2e59aec92313b39f1e2221bd98729826 0024-Pure-64-bit-MIPS.patch
12eaad6a8781e76f38bc4ba5c8cd09cfe0a0b95c0cde83fe58dc10bdec542fe43389f2c84bd313629c45af8ed3ffd46cc4478f5a4152ea1eb8d4b8276ede499c 0025-use-pure-64-bit-configuration-where-appropriate.patch
73a649ac371f4a5da68c5f0b88010080efd7deaee29765ef7a299fd1654b5ccdbfee88c59e5d37ae55e37cf6fa218d989e411c04b17e0fd94268ed65d7dcd4bf 0026-always-build-libgcc_eh.a.patch
59d9e0a5f39ad68b8bb1365f7c97a54ca4751cdad01ead8184fd897d8a13156145976a8b5b9856be154c053d6ba11eaad1e5662e7ddda9ba6d2811340df61cba 0027-ada-libgnarl-compatibility-for-musl.patch
8207323c530929517c799b24b1a7ba39c07bbb0e6770f878f1d66088ae16667e7706c9402ac04fe5eb6447a6ad12b548cc7e7612c5b217cd24e7d00094d2a28f 0028-ada-musl-support-fixes.patch
b90f7ad074b6183a4afc6be65349b8bf94b78d1c259d5be9877c16e3de95222fb6905cba7eb6ee4fe1e564ed20bf183c6815bd087896b6b0376656a841736fc1 0029-c-Fix-bogus-vector-initialisation-error-PR96377.patch
39a66708fb7ab4a72e1973749e32c22484e8e6c0afde6a59a645f2536c71cea86c8de2f0448621d53888293121344e84a24617400fae849282df57e0f5ddc21d 0030-rs6000-ICE-when-using-an-MMA-type-as-a-function-para.patch"