From d425719887ea3bdcfda93581c2ab1bf3b9296ab5 Mon Sep 17 00:00:00 2001 From: Oliver Smith Date: Mon, 24 Aug 2020 13:15:45 +0200 Subject: [PATCH] cross/gcc-*: upgrade to 10.2.0-r2 --- cross/gcc-aarch64/0001-posix_memalign.patch | 2 +- .../0002-gcc-poison-system-directories.patch | 2 +- ...-Turn-on-Wl-z-relro-z-now-by-default.patch | 2 +- ...Y_SOURCE-2-by-default-for-C-C-ObjC-O.patch | 2 +- ...-pass-as-needed-by-default-to-the-li.patch | 2 +- ...rmat-and-Wformat-security-by-default.patch | 2 +- .../0007-Enable-Wtrampolines-by-default.patch | 2 +- ...ostdlib-nodefaultlibs-and-ffreestand.patch | 2 +- ...mt-doesn-t-encounter-problems-during.patch | 2 +- ...clare-asprintf-if-defined-as-a-macro.patch | 2 +- ...opy-PIC-objects-during-build-process.patch | 2 +- .../0012-libitm-disable-FORTIFY.patch | 2 +- cross/gcc-aarch64/0013-libgcc_s.patch | 2 +- cross/gcc-aarch64/0014-nopie.patch | 2 +- ...ux__-instead-of-__gnu_linux__-for-mu.patch | 2 +- .../0016-dlang-update-zlib-binding.patch | 2 +- ...ix-fcntl-on-mips-add-libucontext-dep.patch | 2 +- .../0018-ada-fix-shared-linking.patch | 2 +- ...build-fix-CXXFLAGS_FOR_BUILD-passing.patch | 2 +- ...bstdc-futex-add-time64-compatibility.patch | 2 +- .../0021-add-fortify-headers-paths.patch | 2 +- ...age-provides-libssp_nonshared.a.-We-.patch | 2 +- ...e-pop-state-for-gold-as-well-when-li.patch | 2 +- cross/gcc-aarch64/0024-Pure-64-bit-MIPS.patch | 2 +- ...-bit-configuration-where-appropriate.patch | 2 +- .../0026-always-build-libgcc_eh.a.patch | 2 +- ...-ada-libgnarl-compatibility-for-musl.patch | 2 +- .../0028-ada-musl-support-fixes.patch | 2 +- ...-vector-initialisation-error-PR96377.patch | 520 ++++++++++++++++++ ...using-an-MMA-type-as-a-function-para.patch | 157 ++++++ cross/gcc-aarch64/APKBUILD | 62 ++- cross/gcc-armhf/0001-posix_memalign.patch | 2 +- .../0002-gcc-poison-system-directories.patch | 2 +- ...-Turn-on-Wl-z-relro-z-now-by-default.patch | 2 +- ...Y_SOURCE-2-by-default-for-C-C-ObjC-O.patch | 2 +- ...-pass-as-needed-by-default-to-the-li.patch | 2 +- ...rmat-and-Wformat-security-by-default.patch | 2 +- .../0007-Enable-Wtrampolines-by-default.patch | 2 +- ...ostdlib-nodefaultlibs-and-ffreestand.patch | 2 +- ...mt-doesn-t-encounter-problems-during.patch | 2 +- ...clare-asprintf-if-defined-as-a-macro.patch | 2 +- ...opy-PIC-objects-during-build-process.patch | 2 +- .../0012-libitm-disable-FORTIFY.patch | 2 +- cross/gcc-armhf/0013-libgcc_s.patch | 2 +- cross/gcc-armhf/0014-nopie.patch | 2 +- ...ux__-instead-of-__gnu_linux__-for-mu.patch | 2 +- .../0016-dlang-update-zlib-binding.patch | 2 +- ...ix-fcntl-on-mips-add-libucontext-dep.patch | 2 +- .../0018-ada-fix-shared-linking.patch | 2 +- ...build-fix-CXXFLAGS_FOR_BUILD-passing.patch | 2 +- ...bstdc-futex-add-time64-compatibility.patch | 2 +- .../0021-add-fortify-headers-paths.patch | 2 +- ...age-provides-libssp_nonshared.a.-We-.patch | 2 +- ...e-pop-state-for-gold-as-well-when-li.patch | 2 +- cross/gcc-armhf/0024-Pure-64-bit-MIPS.patch | 2 +- ...-bit-configuration-where-appropriate.patch | 2 +- .../0026-always-build-libgcc_eh.a.patch | 2 +- ...-ada-libgnarl-compatibility-for-musl.patch | 2 +- .../0028-ada-musl-support-fixes.patch | 2 +- ...-vector-initialisation-error-PR96377.patch | 520 ++++++++++++++++++ ...using-an-MMA-type-as-a-function-para.patch | 157 ++++++ cross/gcc-armhf/APKBUILD | 62 ++- cross/gcc-armv7/0001-posix_memalign.patch | 2 +- .../0002-gcc-poison-system-directories.patch | 2 +- ...-Turn-on-Wl-z-relro-z-now-by-default.patch | 2 +- ...Y_SOURCE-2-by-default-for-C-C-ObjC-O.patch | 2 +- ...-pass-as-needed-by-default-to-the-li.patch | 2 +- ...rmat-and-Wformat-security-by-default.patch | 2 +- .../0007-Enable-Wtrampolines-by-default.patch | 2 +- ...ostdlib-nodefaultlibs-and-ffreestand.patch | 2 +- ...mt-doesn-t-encounter-problems-during.patch | 2 +- ...clare-asprintf-if-defined-as-a-macro.patch | 2 +- ...opy-PIC-objects-during-build-process.patch | 2 +- .../0012-libitm-disable-FORTIFY.patch | 2 +- cross/gcc-armv7/0013-libgcc_s.patch | 2 +- cross/gcc-armv7/0014-nopie.patch | 2 +- ...ux__-instead-of-__gnu_linux__-for-mu.patch | 2 +- .../0016-dlang-update-zlib-binding.patch | 2 +- ...ix-fcntl-on-mips-add-libucontext-dep.patch | 2 +- .../0018-ada-fix-shared-linking.patch | 2 +- ...build-fix-CXXFLAGS_FOR_BUILD-passing.patch | 2 +- ...bstdc-futex-add-time64-compatibility.patch | 2 +- .../0021-add-fortify-headers-paths.patch | 2 +- ...age-provides-libssp_nonshared.a.-We-.patch | 2 +- ...e-pop-state-for-gold-as-well-when-li.patch | 2 +- cross/gcc-armv7/0024-Pure-64-bit-MIPS.patch | 2 +- ...-bit-configuration-where-appropriate.patch | 2 +- .../0026-always-build-libgcc_eh.a.patch | 2 +- ...-ada-libgnarl-compatibility-for-musl.patch | 2 +- .../0028-ada-musl-support-fixes.patch | 2 +- ...-vector-initialisation-error-PR96377.patch | 520 ++++++++++++++++++ ...using-an-MMA-type-as-a-function-para.patch | 157 ++++++ cross/gcc-armv7/APKBUILD | 62 ++- 93 files changed, 2214 insertions(+), 171 deletions(-) create mode 100644 cross/gcc-aarch64/0029-c-Fix-bogus-vector-initialisation-error-PR96377.patch create mode 100644 cross/gcc-aarch64/0030-rs6000-ICE-when-using-an-MMA-type-as-a-function-para.patch create mode 100644 cross/gcc-armhf/0029-c-Fix-bogus-vector-initialisation-error-PR96377.patch create mode 100644 cross/gcc-armhf/0030-rs6000-ICE-when-using-an-MMA-type-as-a-function-para.patch create mode 100644 cross/gcc-armv7/0029-c-Fix-bogus-vector-initialisation-error-PR96377.patch create mode 100644 cross/gcc-armv7/0030-rs6000-ICE-when-using-an-MMA-type-as-a-function-para.patch diff --git a/cross/gcc-aarch64/0001-posix_memalign.patch b/cross/gcc-aarch64/0001-posix_memalign.patch index e15a353ba..afb68c185 100644 --- a/cross/gcc-aarch64/0001-posix_memalign.patch +++ b/cross/gcc-aarch64/0001-posix_memalign.patch @@ -1,7 +1,7 @@ From 399f9e74a691ca6272d460d72d1b47afcad84752 Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy 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 +++++---- diff --git a/cross/gcc-aarch64/0002-gcc-poison-system-directories.patch b/cross/gcc-aarch64/0002-gcc-poison-system-directories.patch index 6d286ceda..e388dd1be 100644 --- a/cross/gcc-aarch64/0002-gcc-poison-system-directories.patch +++ b/cross/gcc-aarch64/0002-gcc-poison-system-directories.patch @@ -1,7 +1,7 @@ From 0e993b1b9a33910193862d76facf34bdbe58ed01 Mon Sep 17 00:00:00 2001 From: Khem Raj 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 diff --git a/cross/gcc-aarch64/0003-Turn-on-Wl-z-relro-z-now-by-default.patch b/cross/gcc-aarch64/0003-Turn-on-Wl-z-relro-z-now-by-default.patch index 6253f9109..511636e52 100644 --- a/cross/gcc-aarch64/0003-Turn-on-Wl-z-relro-z-now-by-default.patch +++ b/cross/gcc-aarch64/0003-Turn-on-Wl-z-relro-z-now-by-default.patch @@ -1,7 +1,7 @@ From a35a55940c3402f8ebb510ec7d8bc67e85051277 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 +++ diff --git a/cross/gcc-aarch64/0004-Turn-on-D_FORTIFY_SOURCE-2-by-default-for-C-C-ObjC-O.patch b/cross/gcc-aarch64/0004-Turn-on-D_FORTIFY_SOURCE-2-by-default-for-C-C-ObjC-O.patch index b713eccda..d2b423318 100644 --- a/cross/gcc-aarch64/0004-Turn-on-D_FORTIFY_SOURCE-2-by-default-for-C-C-ObjC-O.patch +++ b/cross/gcc-aarch64/0004-Turn-on-D_FORTIFY_SOURCE-2-by-default-for-C-C-ObjC-O.patch @@ -1,7 +1,7 @@ From d2865d0a184ef59be8893dd34edf5037c4bf48f7 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 --- diff --git a/cross/gcc-aarch64/0005-On-linux-targets-pass-as-needed-by-default-to-the-li.patch b/cross/gcc-aarch64/0005-On-linux-targets-pass-as-needed-by-default-to-the-li.patch index 03a995b07..41206fa9f 100644 --- a/cross/gcc-aarch64/0005-On-linux-targets-pass-as-needed-by-default-to-the-li.patch +++ b/cross/gcc-aarch64/0005-On-linux-targets-pass-as-needed-by-default-to-the-li.patch @@ -1,7 +1,7 @@ From 872e0a15a2b74cd6b6ba58e2e7e1605543ea36bd Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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. --- diff --git a/cross/gcc-aarch64/0006-Enable-Wformat-and-Wformat-security-by-default.patch b/cross/gcc-aarch64/0006-Enable-Wformat-and-Wformat-security-by-default.patch index 4a25bbe6b..37ab133e9 100644 --- a/cross/gcc-aarch64/0006-Enable-Wformat-and-Wformat-security-by-default.patch +++ b/cross/gcc-aarch64/0006-Enable-Wformat-and-Wformat-security-by-default.patch @@ -1,7 +1,7 @@ From 5e20872b8cc916cb457c63c6cd970c4fcba47bbb Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 ++-- diff --git a/cross/gcc-aarch64/0007-Enable-Wtrampolines-by-default.patch b/cross/gcc-aarch64/0007-Enable-Wtrampolines-by-default.patch index 5973e4829..31a7faa03 100644 --- a/cross/gcc-aarch64/0007-Enable-Wtrampolines-by-default.patch +++ b/cross/gcc-aarch64/0007-Enable-Wtrampolines-by-default.patch @@ -1,7 +1,7 @@ From 1bcf7e30226852db956becebaffdfe2738923423 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 +- diff --git a/cross/gcc-aarch64/0008-Disable-ssp-on-nostdlib-nodefaultlibs-and-ffreestand.patch b/cross/gcc-aarch64/0008-Disable-ssp-on-nostdlib-nodefaultlibs-and-ffreestand.patch index 8fe4e86ee..0b3ce1a78 100644 --- a/cross/gcc-aarch64/0008-Disable-ssp-on-nostdlib-nodefaultlibs-and-ffreestand.patch +++ b/cross/gcc-aarch64/0008-Disable-ssp-on-nostdlib-nodefaultlibs-and-ffreestand.patch @@ -1,7 +1,7 @@ From 23fd86ff34670873dd294bd87b93f45c3624903a Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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. --- diff --git a/cross/gcc-aarch64/0009-Ensure-that-msgfmt-doesn-t-encounter-problems-during.patch b/cross/gcc-aarch64/0009-Ensure-that-msgfmt-doesn-t-encounter-problems-during.patch index 5d50c31b1..0e059262e 100644 --- a/cross/gcc-aarch64/0009-Ensure-that-msgfmt-doesn-t-encounter-problems-during.patch +++ b/cross/gcc-aarch64/0009-Ensure-that-msgfmt-doesn-t-encounter-problems-during.patch @@ -1,7 +1,7 @@ From d27d7936ecd9f357a3c6ee05e6548f8a68fdd4b7 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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: diff --git a/cross/gcc-aarch64/0010-Don-t-declare-asprintf-if-defined-as-a-macro.patch b/cross/gcc-aarch64/0010-Don-t-declare-asprintf-if-defined-as-a-macro.patch index 2383cb098..d85b7c593 100644 --- a/cross/gcc-aarch64/0010-Don-t-declare-asprintf-if-defined-as-a-macro.patch +++ b/cross/gcc-aarch64/0010-Don-t-declare-asprintf-if-defined-as-a-macro.patch @@ -1,7 +1,7 @@ From 2ec258d6d31e2c0c614c5086acee84a87768a67c Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 +++ diff --git a/cross/gcc-aarch64/0011-libiberty-copy-PIC-objects-during-build-process.patch b/cross/gcc-aarch64/0011-libiberty-copy-PIC-objects-during-build-process.patch index 20ef785a7..770cad546 100644 --- a/cross/gcc-aarch64/0011-libiberty-copy-PIC-objects-during-build-process.patch +++ b/cross/gcc-aarch64/0011-libiberty-copy-PIC-objects-during-build-process.patch @@ -1,7 +1,7 @@ From 4f6fd2272f57620da399d0f841fce12b9db3b2d1 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 + diff --git a/cross/gcc-aarch64/0012-libitm-disable-FORTIFY.patch b/cross/gcc-aarch64/0012-libitm-disable-FORTIFY.patch index 2d58db774..169361398 100644 --- a/cross/gcc-aarch64/0012-libitm-disable-FORTIFY.patch +++ b/cross/gcc-aarch64/0012-libitm-disable-FORTIFY.patch @@ -1,7 +1,7 @@ From cef5e0336cfdf4afd0e01fa9e562f686b234697a Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 ++++++++++ diff --git a/cross/gcc-aarch64/0013-libgcc_s.patch b/cross/gcc-aarch64/0013-libgcc_s.patch index 74d82ea01..f04d7f7c0 100644 --- a/cross/gcc-aarch64/0013-libgcc_s.patch +++ b/cross/gcc-aarch64/0013-libgcc_s.patch @@ -1,7 +1,7 @@ From d31721459e363e49dfe0a7797300864d9cef92f0 Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy 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 ++-- diff --git a/cross/gcc-aarch64/0014-nopie.patch b/cross/gcc-aarch64/0014-nopie.patch index 9cc97c07d..086031937 100644 --- a/cross/gcc-aarch64/0014-nopie.patch +++ b/cross/gcc-aarch64/0014-nopie.patch @@ -1,7 +1,7 @@ From f64f853eae3b390adbbc9b74a336d93918e6dca4 Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy Date: Sat, 7 Nov 2015 02:08:05 +0000 -Subject: [PATCH 14/28] nopie +Subject: [PATCH 14/30] nopie --- gcc/configure | 27 +++++++++++++++++++++++++++ diff --git a/cross/gcc-aarch64/0015-libffi-use-__linux__-instead-of-__gnu_linux__-for-mu.patch b/cross/gcc-aarch64/0015-libffi-use-__linux__-instead-of-__gnu_linux__-for-mu.patch index bf7b0779d..8f007668f 100644 --- a/cross/gcc-aarch64/0015-libffi-use-__linux__-instead-of-__gnu_linux__-for-mu.patch +++ b/cross/gcc-aarch64/0015-libffi-use-__linux__-instead-of-__gnu_linux__-for-mu.patch @@ -1,7 +1,7 @@ From 37dace030c1402a8e6734a0fc59e18717ce1a2ef Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 +- diff --git a/cross/gcc-aarch64/0016-dlang-update-zlib-binding.patch b/cross/gcc-aarch64/0016-dlang-update-zlib-binding.patch index b04ee92fd..9204db8a8 100644 --- a/cross/gcc-aarch64/0016-dlang-update-zlib-binding.patch +++ b/cross/gcc-aarch64/0016-dlang-update-zlib-binding.patch @@ -1,7 +1,7 @@ From 7fc386a2e629e859968da4eb4d0ff4983cb3b76f Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 ++++++++++++++++++++++++++++----------- diff --git a/cross/gcc-aarch64/0017-dlang-fix-fcntl-on-mips-add-libucontext-dep.patch b/cross/gcc-aarch64/0017-dlang-fix-fcntl-on-mips-add-libucontext-dep.patch index d9733410d..7b11d6bae 100644 --- a/cross/gcc-aarch64/0017-dlang-fix-fcntl-on-mips-add-libucontext-dep.patch +++ b/cross/gcc-aarch64/0017-dlang-fix-fcntl-on-mips-add-libucontext-dep.patch @@ -1,7 +1,7 @@ From ef5f7880cff27a2b92952ce53a207d5dd896923b Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 + diff --git a/cross/gcc-aarch64/0018-ada-fix-shared-linking.patch b/cross/gcc-aarch64/0018-ada-fix-shared-linking.patch index 6ffbcb973..1fc9b372b 100644 --- a/cross/gcc-aarch64/0018-ada-fix-shared-linking.patch +++ b/cross/gcc-aarch64/0018-ada-fix-shared-linking.patch @@ -1,7 +1,7 @@ From b675e0383262d6d702f5b732e4459d3e2c2a4891 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 ++++++------ diff --git a/cross/gcc-aarch64/0019-build-fix-CXXFLAGS_FOR_BUILD-passing.patch b/cross/gcc-aarch64/0019-build-fix-CXXFLAGS_FOR_BUILD-passing.patch index e231809b7..591f9ffa3 100644 --- a/cross/gcc-aarch64/0019-build-fix-CXXFLAGS_FOR_BUILD-passing.patch +++ b/cross/gcc-aarch64/0019-build-fix-CXXFLAGS_FOR_BUILD-passing.patch @@ -1,7 +1,7 @@ From 0ea91dd6f8d856d5b589c2a3e95469fea06e7094 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 + diff --git a/cross/gcc-aarch64/0020-libstdc-futex-add-time64-compatibility.patch b/cross/gcc-aarch64/0020-libstdc-futex-add-time64-compatibility.patch index 3aab207fb..73d7f0730 100644 --- a/cross/gcc-aarch64/0020-libstdc-futex-add-time64-compatibility.patch +++ b/cross/gcc-aarch64/0020-libstdc-futex-add-time64-compatibility.patch @@ -1,7 +1,7 @@ From 9684a815e1cbe854383c3c511e1d84d43c46ec94 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 ++++++++ diff --git a/cross/gcc-aarch64/0021-add-fortify-headers-paths.patch b/cross/gcc-aarch64/0021-add-fortify-headers-paths.patch index 155650fed..81e26a47e 100644 --- a/cross/gcc-aarch64/0021-add-fortify-headers-paths.patch +++ b/cross/gcc-aarch64/0021-add-fortify-headers-paths.patch @@ -1,7 +1,7 @@ From a0708ec975c01b049d254dc51179898966bf8a52 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 ++ diff --git a/cross/gcc-aarch64/0022-Alpine-musl-package-provides-libssp_nonshared.a.-We-.patch b/cross/gcc-aarch64/0022-Alpine-musl-package-provides-libssp_nonshared.a.-We-.patch index c1d1befe6..a93b372e9 100644 --- a/cross/gcc-aarch64/0022-Alpine-musl-package-provides-libssp_nonshared.a.-We-.patch +++ b/cross/gcc-aarch64/0022-Alpine-musl-package-provides-libssp_nonshared.a.-We-.patch @@ -1,7 +1,7 @@ From 740342a0e4b0b3af498964440918abba1a27ba33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Ter=C3=A4s?= 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 diff --git a/cross/gcc-aarch64/0023-DP-Use-push-state-pop-state-for-gold-as-well-when-li.patch b/cross/gcc-aarch64/0023-DP-Use-push-state-pop-state-for-gold-as-well-when-li.patch index 341f9936a..4717d7416 100644 --- a/cross/gcc-aarch64/0023-DP-Use-push-state-pop-state-for-gold-as-well-when-li.patch +++ b/cross/gcc-aarch64/0023-DP-Use-push-state-pop-state-for-gold-as-well-when-li.patch @@ -1,7 +1,7 @@ From 775adf35d6f34f61947fc28a2bdbfa7e881c40d5 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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. --- diff --git a/cross/gcc-aarch64/0024-Pure-64-bit-MIPS.patch b/cross/gcc-aarch64/0024-Pure-64-bit-MIPS.patch index 6ecc752f2..95cefb3dd 100644 --- a/cross/gcc-aarch64/0024-Pure-64-bit-MIPS.patch +++ b/cross/gcc-aarch64/0024-Pure-64-bit-MIPS.patch @@ -1,7 +1,7 @@ From 717090cf538f765db1730956c512a43f2d52a802 Mon Sep 17 00:00:00 2001 From: Nils Andreas Svee 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 ++++---- diff --git a/cross/gcc-aarch64/0025-use-pure-64-bit-configuration-where-appropriate.patch b/cross/gcc-aarch64/0025-use-pure-64-bit-configuration-where-appropriate.patch index c9e158866..8e2db4831 100644 --- a/cross/gcc-aarch64/0025-use-pure-64-bit-configuration-where-appropriate.patch +++ b/cross/gcc-aarch64/0025-use-pure-64-bit-configuration-where-appropriate.patch @@ -1,7 +1,7 @@ From f73cf8d2f8f4eee71fc2ba850672e69f509a4486 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 +- diff --git a/cross/gcc-aarch64/0026-always-build-libgcc_eh.a.patch b/cross/gcc-aarch64/0026-always-build-libgcc_eh.a.patch index 04b5d16b3..b41f8e9ed 100644 --- a/cross/gcc-aarch64/0026-always-build-libgcc_eh.a.patch +++ b/cross/gcc-aarch64/0026-always-build-libgcc_eh.a.patch @@ -1,7 +1,7 @@ From 8472f6d0037dcd19c44b1e95d95fbf937b3823e6 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 diff --git a/cross/gcc-aarch64/0027-ada-libgnarl-compatibility-for-musl.patch b/cross/gcc-aarch64/0027-ada-libgnarl-compatibility-for-musl.patch index 8ec5d2d25..f44caa24c 100644 --- a/cross/gcc-aarch64/0027-ada-libgnarl-compatibility-for-musl.patch +++ b/cross/gcc-aarch64/0027-ada-libgnarl-compatibility-for-musl.patch @@ -1,7 +1,7 @@ From 4e1b3a26f558e7693853d3600ee677705e67406c Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 ------ diff --git a/cross/gcc-aarch64/0028-ada-musl-support-fixes.patch b/cross/gcc-aarch64/0028-ada-musl-support-fixes.patch index 000bc6b94..8eb13422c 100644 --- a/cross/gcc-aarch64/0028-ada-musl-support-fixes.patch +++ b/cross/gcc-aarch64/0028-ada-musl-support-fixes.patch @@ -1,7 +1,7 @@ From 5e3d7d2f1e2448b6c5eb207f9251c437629e43bc Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 +++++----- diff --git a/cross/gcc-aarch64/0029-c-Fix-bogus-vector-initialisation-error-PR96377.patch b/cross/gcc-aarch64/0029-c-Fix-bogus-vector-initialisation-error-PR96377.patch new file mode 100644 index 000000000..13500dafe --- /dev/null +++ b/cross/gcc-aarch64/0029-c-Fix-bogus-vector-initialisation-error-PR96377.patch @@ -0,0 +1,520 @@ +From d6599f89ba558ec2a68d4bc4af15cf3513218054 Mon Sep 17 00:00:00 2001 +From: Richard Sandiford +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 ++ ++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 ++ ++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 ++ ++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 ++ ++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 ++ ++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 + diff --git a/cross/gcc-aarch64/0030-rs6000-ICE-when-using-an-MMA-type-as-a-function-para.patch b/cross/gcc-aarch64/0030-rs6000-ICE-when-using-an-MMA-type-as-a-function-para.patch new file mode 100644 index 000000000..8543681f6 --- /dev/null +++ b/cross/gcc-aarch64/0030-rs6000-ICE-when-using-an-MMA-type-as-a-function-para.patch @@ -0,0 +1,157 @@ +From 773021143288f5bf0dca1e3ee1f908f580f6fd9c Mon Sep 17 00:00:00 2001 +From: Peter Bergner +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 + +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 + diff --git a/cross/gcc-aarch64/APKBUILD b/cross/gcc-aarch64/APKBUILD index f264d58cd..b3c445af8 100644 --- a/cross/gcc-aarch64/APKBUILD +++ b/cross/gcc-aarch64/APKBUILD @@ -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" diff --git a/cross/gcc-armhf/0001-posix_memalign.patch b/cross/gcc-armhf/0001-posix_memalign.patch index e15a353ba..afb68c185 100644 --- a/cross/gcc-armhf/0001-posix_memalign.patch +++ b/cross/gcc-armhf/0001-posix_memalign.patch @@ -1,7 +1,7 @@ From 399f9e74a691ca6272d460d72d1b47afcad84752 Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy 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 +++++---- diff --git a/cross/gcc-armhf/0002-gcc-poison-system-directories.patch b/cross/gcc-armhf/0002-gcc-poison-system-directories.patch index 6d286ceda..e388dd1be 100644 --- a/cross/gcc-armhf/0002-gcc-poison-system-directories.patch +++ b/cross/gcc-armhf/0002-gcc-poison-system-directories.patch @@ -1,7 +1,7 @@ From 0e993b1b9a33910193862d76facf34bdbe58ed01 Mon Sep 17 00:00:00 2001 From: Khem Raj 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 diff --git a/cross/gcc-armhf/0003-Turn-on-Wl-z-relro-z-now-by-default.patch b/cross/gcc-armhf/0003-Turn-on-Wl-z-relro-z-now-by-default.patch index 6253f9109..511636e52 100644 --- a/cross/gcc-armhf/0003-Turn-on-Wl-z-relro-z-now-by-default.patch +++ b/cross/gcc-armhf/0003-Turn-on-Wl-z-relro-z-now-by-default.patch @@ -1,7 +1,7 @@ From a35a55940c3402f8ebb510ec7d8bc67e85051277 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 +++ diff --git a/cross/gcc-armhf/0004-Turn-on-D_FORTIFY_SOURCE-2-by-default-for-C-C-ObjC-O.patch b/cross/gcc-armhf/0004-Turn-on-D_FORTIFY_SOURCE-2-by-default-for-C-C-ObjC-O.patch index b713eccda..d2b423318 100644 --- a/cross/gcc-armhf/0004-Turn-on-D_FORTIFY_SOURCE-2-by-default-for-C-C-ObjC-O.patch +++ b/cross/gcc-armhf/0004-Turn-on-D_FORTIFY_SOURCE-2-by-default-for-C-C-ObjC-O.patch @@ -1,7 +1,7 @@ From d2865d0a184ef59be8893dd34edf5037c4bf48f7 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 --- diff --git a/cross/gcc-armhf/0005-On-linux-targets-pass-as-needed-by-default-to-the-li.patch b/cross/gcc-armhf/0005-On-linux-targets-pass-as-needed-by-default-to-the-li.patch index 03a995b07..41206fa9f 100644 --- a/cross/gcc-armhf/0005-On-linux-targets-pass-as-needed-by-default-to-the-li.patch +++ b/cross/gcc-armhf/0005-On-linux-targets-pass-as-needed-by-default-to-the-li.patch @@ -1,7 +1,7 @@ From 872e0a15a2b74cd6b6ba58e2e7e1605543ea36bd Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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. --- diff --git a/cross/gcc-armhf/0006-Enable-Wformat-and-Wformat-security-by-default.patch b/cross/gcc-armhf/0006-Enable-Wformat-and-Wformat-security-by-default.patch index 4a25bbe6b..37ab133e9 100644 --- a/cross/gcc-armhf/0006-Enable-Wformat-and-Wformat-security-by-default.patch +++ b/cross/gcc-armhf/0006-Enable-Wformat-and-Wformat-security-by-default.patch @@ -1,7 +1,7 @@ From 5e20872b8cc916cb457c63c6cd970c4fcba47bbb Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 ++-- diff --git a/cross/gcc-armhf/0007-Enable-Wtrampolines-by-default.patch b/cross/gcc-armhf/0007-Enable-Wtrampolines-by-default.patch index 5973e4829..31a7faa03 100644 --- a/cross/gcc-armhf/0007-Enable-Wtrampolines-by-default.patch +++ b/cross/gcc-armhf/0007-Enable-Wtrampolines-by-default.patch @@ -1,7 +1,7 @@ From 1bcf7e30226852db956becebaffdfe2738923423 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 +- diff --git a/cross/gcc-armhf/0008-Disable-ssp-on-nostdlib-nodefaultlibs-and-ffreestand.patch b/cross/gcc-armhf/0008-Disable-ssp-on-nostdlib-nodefaultlibs-and-ffreestand.patch index 8fe4e86ee..0b3ce1a78 100644 --- a/cross/gcc-armhf/0008-Disable-ssp-on-nostdlib-nodefaultlibs-and-ffreestand.patch +++ b/cross/gcc-armhf/0008-Disable-ssp-on-nostdlib-nodefaultlibs-and-ffreestand.patch @@ -1,7 +1,7 @@ From 23fd86ff34670873dd294bd87b93f45c3624903a Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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. --- diff --git a/cross/gcc-armhf/0009-Ensure-that-msgfmt-doesn-t-encounter-problems-during.patch b/cross/gcc-armhf/0009-Ensure-that-msgfmt-doesn-t-encounter-problems-during.patch index 5d50c31b1..0e059262e 100644 --- a/cross/gcc-armhf/0009-Ensure-that-msgfmt-doesn-t-encounter-problems-during.patch +++ b/cross/gcc-armhf/0009-Ensure-that-msgfmt-doesn-t-encounter-problems-during.patch @@ -1,7 +1,7 @@ From d27d7936ecd9f357a3c6ee05e6548f8a68fdd4b7 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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: diff --git a/cross/gcc-armhf/0010-Don-t-declare-asprintf-if-defined-as-a-macro.patch b/cross/gcc-armhf/0010-Don-t-declare-asprintf-if-defined-as-a-macro.patch index 2383cb098..d85b7c593 100644 --- a/cross/gcc-armhf/0010-Don-t-declare-asprintf-if-defined-as-a-macro.patch +++ b/cross/gcc-armhf/0010-Don-t-declare-asprintf-if-defined-as-a-macro.patch @@ -1,7 +1,7 @@ From 2ec258d6d31e2c0c614c5086acee84a87768a67c Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 +++ diff --git a/cross/gcc-armhf/0011-libiberty-copy-PIC-objects-during-build-process.patch b/cross/gcc-armhf/0011-libiberty-copy-PIC-objects-during-build-process.patch index 20ef785a7..770cad546 100644 --- a/cross/gcc-armhf/0011-libiberty-copy-PIC-objects-during-build-process.patch +++ b/cross/gcc-armhf/0011-libiberty-copy-PIC-objects-during-build-process.patch @@ -1,7 +1,7 @@ From 4f6fd2272f57620da399d0f841fce12b9db3b2d1 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 + diff --git a/cross/gcc-armhf/0012-libitm-disable-FORTIFY.patch b/cross/gcc-armhf/0012-libitm-disable-FORTIFY.patch index 2d58db774..169361398 100644 --- a/cross/gcc-armhf/0012-libitm-disable-FORTIFY.patch +++ b/cross/gcc-armhf/0012-libitm-disable-FORTIFY.patch @@ -1,7 +1,7 @@ From cef5e0336cfdf4afd0e01fa9e562f686b234697a Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 ++++++++++ diff --git a/cross/gcc-armhf/0013-libgcc_s.patch b/cross/gcc-armhf/0013-libgcc_s.patch index 74d82ea01..f04d7f7c0 100644 --- a/cross/gcc-armhf/0013-libgcc_s.patch +++ b/cross/gcc-armhf/0013-libgcc_s.patch @@ -1,7 +1,7 @@ From d31721459e363e49dfe0a7797300864d9cef92f0 Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy 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 ++-- diff --git a/cross/gcc-armhf/0014-nopie.patch b/cross/gcc-armhf/0014-nopie.patch index 9cc97c07d..086031937 100644 --- a/cross/gcc-armhf/0014-nopie.patch +++ b/cross/gcc-armhf/0014-nopie.patch @@ -1,7 +1,7 @@ From f64f853eae3b390adbbc9b74a336d93918e6dca4 Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy Date: Sat, 7 Nov 2015 02:08:05 +0000 -Subject: [PATCH 14/28] nopie +Subject: [PATCH 14/30] nopie --- gcc/configure | 27 +++++++++++++++++++++++++++ diff --git a/cross/gcc-armhf/0015-libffi-use-__linux__-instead-of-__gnu_linux__-for-mu.patch b/cross/gcc-armhf/0015-libffi-use-__linux__-instead-of-__gnu_linux__-for-mu.patch index bf7b0779d..8f007668f 100644 --- a/cross/gcc-armhf/0015-libffi-use-__linux__-instead-of-__gnu_linux__-for-mu.patch +++ b/cross/gcc-armhf/0015-libffi-use-__linux__-instead-of-__gnu_linux__-for-mu.patch @@ -1,7 +1,7 @@ From 37dace030c1402a8e6734a0fc59e18717ce1a2ef Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 +- diff --git a/cross/gcc-armhf/0016-dlang-update-zlib-binding.patch b/cross/gcc-armhf/0016-dlang-update-zlib-binding.patch index b04ee92fd..9204db8a8 100644 --- a/cross/gcc-armhf/0016-dlang-update-zlib-binding.patch +++ b/cross/gcc-armhf/0016-dlang-update-zlib-binding.patch @@ -1,7 +1,7 @@ From 7fc386a2e629e859968da4eb4d0ff4983cb3b76f Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 ++++++++++++++++++++++++++++----------- diff --git a/cross/gcc-armhf/0017-dlang-fix-fcntl-on-mips-add-libucontext-dep.patch b/cross/gcc-armhf/0017-dlang-fix-fcntl-on-mips-add-libucontext-dep.patch index d9733410d..7b11d6bae 100644 --- a/cross/gcc-armhf/0017-dlang-fix-fcntl-on-mips-add-libucontext-dep.patch +++ b/cross/gcc-armhf/0017-dlang-fix-fcntl-on-mips-add-libucontext-dep.patch @@ -1,7 +1,7 @@ From ef5f7880cff27a2b92952ce53a207d5dd896923b Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 + diff --git a/cross/gcc-armhf/0018-ada-fix-shared-linking.patch b/cross/gcc-armhf/0018-ada-fix-shared-linking.patch index 6ffbcb973..1fc9b372b 100644 --- a/cross/gcc-armhf/0018-ada-fix-shared-linking.patch +++ b/cross/gcc-armhf/0018-ada-fix-shared-linking.patch @@ -1,7 +1,7 @@ From b675e0383262d6d702f5b732e4459d3e2c2a4891 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 ++++++------ diff --git a/cross/gcc-armhf/0019-build-fix-CXXFLAGS_FOR_BUILD-passing.patch b/cross/gcc-armhf/0019-build-fix-CXXFLAGS_FOR_BUILD-passing.patch index e231809b7..591f9ffa3 100644 --- a/cross/gcc-armhf/0019-build-fix-CXXFLAGS_FOR_BUILD-passing.patch +++ b/cross/gcc-armhf/0019-build-fix-CXXFLAGS_FOR_BUILD-passing.patch @@ -1,7 +1,7 @@ From 0ea91dd6f8d856d5b589c2a3e95469fea06e7094 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 + diff --git a/cross/gcc-armhf/0020-libstdc-futex-add-time64-compatibility.patch b/cross/gcc-armhf/0020-libstdc-futex-add-time64-compatibility.patch index 3aab207fb..73d7f0730 100644 --- a/cross/gcc-armhf/0020-libstdc-futex-add-time64-compatibility.patch +++ b/cross/gcc-armhf/0020-libstdc-futex-add-time64-compatibility.patch @@ -1,7 +1,7 @@ From 9684a815e1cbe854383c3c511e1d84d43c46ec94 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 ++++++++ diff --git a/cross/gcc-armhf/0021-add-fortify-headers-paths.patch b/cross/gcc-armhf/0021-add-fortify-headers-paths.patch index 155650fed..81e26a47e 100644 --- a/cross/gcc-armhf/0021-add-fortify-headers-paths.patch +++ b/cross/gcc-armhf/0021-add-fortify-headers-paths.patch @@ -1,7 +1,7 @@ From a0708ec975c01b049d254dc51179898966bf8a52 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 ++ diff --git a/cross/gcc-armhf/0022-Alpine-musl-package-provides-libssp_nonshared.a.-We-.patch b/cross/gcc-armhf/0022-Alpine-musl-package-provides-libssp_nonshared.a.-We-.patch index c1d1befe6..a93b372e9 100644 --- a/cross/gcc-armhf/0022-Alpine-musl-package-provides-libssp_nonshared.a.-We-.patch +++ b/cross/gcc-armhf/0022-Alpine-musl-package-provides-libssp_nonshared.a.-We-.patch @@ -1,7 +1,7 @@ From 740342a0e4b0b3af498964440918abba1a27ba33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Ter=C3=A4s?= 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 diff --git a/cross/gcc-armhf/0023-DP-Use-push-state-pop-state-for-gold-as-well-when-li.patch b/cross/gcc-armhf/0023-DP-Use-push-state-pop-state-for-gold-as-well-when-li.patch index 341f9936a..4717d7416 100644 --- a/cross/gcc-armhf/0023-DP-Use-push-state-pop-state-for-gold-as-well-when-li.patch +++ b/cross/gcc-armhf/0023-DP-Use-push-state-pop-state-for-gold-as-well-when-li.patch @@ -1,7 +1,7 @@ From 775adf35d6f34f61947fc28a2bdbfa7e881c40d5 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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. --- diff --git a/cross/gcc-armhf/0024-Pure-64-bit-MIPS.patch b/cross/gcc-armhf/0024-Pure-64-bit-MIPS.patch index 6ecc752f2..95cefb3dd 100644 --- a/cross/gcc-armhf/0024-Pure-64-bit-MIPS.patch +++ b/cross/gcc-armhf/0024-Pure-64-bit-MIPS.patch @@ -1,7 +1,7 @@ From 717090cf538f765db1730956c512a43f2d52a802 Mon Sep 17 00:00:00 2001 From: Nils Andreas Svee 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 ++++---- diff --git a/cross/gcc-armhf/0025-use-pure-64-bit-configuration-where-appropriate.patch b/cross/gcc-armhf/0025-use-pure-64-bit-configuration-where-appropriate.patch index c9e158866..8e2db4831 100644 --- a/cross/gcc-armhf/0025-use-pure-64-bit-configuration-where-appropriate.patch +++ b/cross/gcc-armhf/0025-use-pure-64-bit-configuration-where-appropriate.patch @@ -1,7 +1,7 @@ From f73cf8d2f8f4eee71fc2ba850672e69f509a4486 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 +- diff --git a/cross/gcc-armhf/0026-always-build-libgcc_eh.a.patch b/cross/gcc-armhf/0026-always-build-libgcc_eh.a.patch index 04b5d16b3..b41f8e9ed 100644 --- a/cross/gcc-armhf/0026-always-build-libgcc_eh.a.patch +++ b/cross/gcc-armhf/0026-always-build-libgcc_eh.a.patch @@ -1,7 +1,7 @@ From 8472f6d0037dcd19c44b1e95d95fbf937b3823e6 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 diff --git a/cross/gcc-armhf/0027-ada-libgnarl-compatibility-for-musl.patch b/cross/gcc-armhf/0027-ada-libgnarl-compatibility-for-musl.patch index 8ec5d2d25..f44caa24c 100644 --- a/cross/gcc-armhf/0027-ada-libgnarl-compatibility-for-musl.patch +++ b/cross/gcc-armhf/0027-ada-libgnarl-compatibility-for-musl.patch @@ -1,7 +1,7 @@ From 4e1b3a26f558e7693853d3600ee677705e67406c Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 ------ diff --git a/cross/gcc-armhf/0028-ada-musl-support-fixes.patch b/cross/gcc-armhf/0028-ada-musl-support-fixes.patch index 000bc6b94..8eb13422c 100644 --- a/cross/gcc-armhf/0028-ada-musl-support-fixes.patch +++ b/cross/gcc-armhf/0028-ada-musl-support-fixes.patch @@ -1,7 +1,7 @@ From 5e3d7d2f1e2448b6c5eb207f9251c437629e43bc Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 +++++----- diff --git a/cross/gcc-armhf/0029-c-Fix-bogus-vector-initialisation-error-PR96377.patch b/cross/gcc-armhf/0029-c-Fix-bogus-vector-initialisation-error-PR96377.patch new file mode 100644 index 000000000..13500dafe --- /dev/null +++ b/cross/gcc-armhf/0029-c-Fix-bogus-vector-initialisation-error-PR96377.patch @@ -0,0 +1,520 @@ +From d6599f89ba558ec2a68d4bc4af15cf3513218054 Mon Sep 17 00:00:00 2001 +From: Richard Sandiford +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 ++ ++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 ++ ++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 ++ ++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 ++ ++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 ++ ++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 + diff --git a/cross/gcc-armhf/0030-rs6000-ICE-when-using-an-MMA-type-as-a-function-para.patch b/cross/gcc-armhf/0030-rs6000-ICE-when-using-an-MMA-type-as-a-function-para.patch new file mode 100644 index 000000000..8543681f6 --- /dev/null +++ b/cross/gcc-armhf/0030-rs6000-ICE-when-using-an-MMA-type-as-a-function-para.patch @@ -0,0 +1,157 @@ +From 773021143288f5bf0dca1e3ee1f908f580f6fd9c Mon Sep 17 00:00:00 2001 +From: Peter Bergner +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 + +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 + diff --git a/cross/gcc-armhf/APKBUILD b/cross/gcc-armhf/APKBUILD index 2cca07921..240c2bdd6 100644 --- a/cross/gcc-armhf/APKBUILD +++ b/cross/gcc-armhf/APKBUILD @@ -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" diff --git a/cross/gcc-armv7/0001-posix_memalign.patch b/cross/gcc-armv7/0001-posix_memalign.patch index e15a353ba..afb68c185 100644 --- a/cross/gcc-armv7/0001-posix_memalign.patch +++ b/cross/gcc-armv7/0001-posix_memalign.patch @@ -1,7 +1,7 @@ From 399f9e74a691ca6272d460d72d1b47afcad84752 Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy 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 +++++---- diff --git a/cross/gcc-armv7/0002-gcc-poison-system-directories.patch b/cross/gcc-armv7/0002-gcc-poison-system-directories.patch index 6d286ceda..e388dd1be 100644 --- a/cross/gcc-armv7/0002-gcc-poison-system-directories.patch +++ b/cross/gcc-armv7/0002-gcc-poison-system-directories.patch @@ -1,7 +1,7 @@ From 0e993b1b9a33910193862d76facf34bdbe58ed01 Mon Sep 17 00:00:00 2001 From: Khem Raj 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 diff --git a/cross/gcc-armv7/0003-Turn-on-Wl-z-relro-z-now-by-default.patch b/cross/gcc-armv7/0003-Turn-on-Wl-z-relro-z-now-by-default.patch index 6253f9109..511636e52 100644 --- a/cross/gcc-armv7/0003-Turn-on-Wl-z-relro-z-now-by-default.patch +++ b/cross/gcc-armv7/0003-Turn-on-Wl-z-relro-z-now-by-default.patch @@ -1,7 +1,7 @@ From a35a55940c3402f8ebb510ec7d8bc67e85051277 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 +++ diff --git a/cross/gcc-armv7/0004-Turn-on-D_FORTIFY_SOURCE-2-by-default-for-C-C-ObjC-O.patch b/cross/gcc-armv7/0004-Turn-on-D_FORTIFY_SOURCE-2-by-default-for-C-C-ObjC-O.patch index b713eccda..d2b423318 100644 --- a/cross/gcc-armv7/0004-Turn-on-D_FORTIFY_SOURCE-2-by-default-for-C-C-ObjC-O.patch +++ b/cross/gcc-armv7/0004-Turn-on-D_FORTIFY_SOURCE-2-by-default-for-C-C-ObjC-O.patch @@ -1,7 +1,7 @@ From d2865d0a184ef59be8893dd34edf5037c4bf48f7 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 --- diff --git a/cross/gcc-armv7/0005-On-linux-targets-pass-as-needed-by-default-to-the-li.patch b/cross/gcc-armv7/0005-On-linux-targets-pass-as-needed-by-default-to-the-li.patch index 03a995b07..41206fa9f 100644 --- a/cross/gcc-armv7/0005-On-linux-targets-pass-as-needed-by-default-to-the-li.patch +++ b/cross/gcc-armv7/0005-On-linux-targets-pass-as-needed-by-default-to-the-li.patch @@ -1,7 +1,7 @@ From 872e0a15a2b74cd6b6ba58e2e7e1605543ea36bd Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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. --- diff --git a/cross/gcc-armv7/0006-Enable-Wformat-and-Wformat-security-by-default.patch b/cross/gcc-armv7/0006-Enable-Wformat-and-Wformat-security-by-default.patch index 4a25bbe6b..37ab133e9 100644 --- a/cross/gcc-armv7/0006-Enable-Wformat-and-Wformat-security-by-default.patch +++ b/cross/gcc-armv7/0006-Enable-Wformat-and-Wformat-security-by-default.patch @@ -1,7 +1,7 @@ From 5e20872b8cc916cb457c63c6cd970c4fcba47bbb Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 ++-- diff --git a/cross/gcc-armv7/0007-Enable-Wtrampolines-by-default.patch b/cross/gcc-armv7/0007-Enable-Wtrampolines-by-default.patch index 5973e4829..31a7faa03 100644 --- a/cross/gcc-armv7/0007-Enable-Wtrampolines-by-default.patch +++ b/cross/gcc-armv7/0007-Enable-Wtrampolines-by-default.patch @@ -1,7 +1,7 @@ From 1bcf7e30226852db956becebaffdfe2738923423 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 +- diff --git a/cross/gcc-armv7/0008-Disable-ssp-on-nostdlib-nodefaultlibs-and-ffreestand.patch b/cross/gcc-armv7/0008-Disable-ssp-on-nostdlib-nodefaultlibs-and-ffreestand.patch index 8fe4e86ee..0b3ce1a78 100644 --- a/cross/gcc-armv7/0008-Disable-ssp-on-nostdlib-nodefaultlibs-and-ffreestand.patch +++ b/cross/gcc-armv7/0008-Disable-ssp-on-nostdlib-nodefaultlibs-and-ffreestand.patch @@ -1,7 +1,7 @@ From 23fd86ff34670873dd294bd87b93f45c3624903a Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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. --- diff --git a/cross/gcc-armv7/0009-Ensure-that-msgfmt-doesn-t-encounter-problems-during.patch b/cross/gcc-armv7/0009-Ensure-that-msgfmt-doesn-t-encounter-problems-during.patch index 5d50c31b1..0e059262e 100644 --- a/cross/gcc-armv7/0009-Ensure-that-msgfmt-doesn-t-encounter-problems-during.patch +++ b/cross/gcc-armv7/0009-Ensure-that-msgfmt-doesn-t-encounter-problems-during.patch @@ -1,7 +1,7 @@ From d27d7936ecd9f357a3c6ee05e6548f8a68fdd4b7 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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: diff --git a/cross/gcc-armv7/0010-Don-t-declare-asprintf-if-defined-as-a-macro.patch b/cross/gcc-armv7/0010-Don-t-declare-asprintf-if-defined-as-a-macro.patch index 2383cb098..d85b7c593 100644 --- a/cross/gcc-armv7/0010-Don-t-declare-asprintf-if-defined-as-a-macro.patch +++ b/cross/gcc-armv7/0010-Don-t-declare-asprintf-if-defined-as-a-macro.patch @@ -1,7 +1,7 @@ From 2ec258d6d31e2c0c614c5086acee84a87768a67c Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 +++ diff --git a/cross/gcc-armv7/0011-libiberty-copy-PIC-objects-during-build-process.patch b/cross/gcc-armv7/0011-libiberty-copy-PIC-objects-during-build-process.patch index 20ef785a7..770cad546 100644 --- a/cross/gcc-armv7/0011-libiberty-copy-PIC-objects-during-build-process.patch +++ b/cross/gcc-armv7/0011-libiberty-copy-PIC-objects-during-build-process.patch @@ -1,7 +1,7 @@ From 4f6fd2272f57620da399d0f841fce12b9db3b2d1 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 + diff --git a/cross/gcc-armv7/0012-libitm-disable-FORTIFY.patch b/cross/gcc-armv7/0012-libitm-disable-FORTIFY.patch index 2d58db774..169361398 100644 --- a/cross/gcc-armv7/0012-libitm-disable-FORTIFY.patch +++ b/cross/gcc-armv7/0012-libitm-disable-FORTIFY.patch @@ -1,7 +1,7 @@ From cef5e0336cfdf4afd0e01fa9e562f686b234697a Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 ++++++++++ diff --git a/cross/gcc-armv7/0013-libgcc_s.patch b/cross/gcc-armv7/0013-libgcc_s.patch index 74d82ea01..f04d7f7c0 100644 --- a/cross/gcc-armv7/0013-libgcc_s.patch +++ b/cross/gcc-armv7/0013-libgcc_s.patch @@ -1,7 +1,7 @@ From d31721459e363e49dfe0a7797300864d9cef92f0 Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy 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 ++-- diff --git a/cross/gcc-armv7/0014-nopie.patch b/cross/gcc-armv7/0014-nopie.patch index 9cc97c07d..086031937 100644 --- a/cross/gcc-armv7/0014-nopie.patch +++ b/cross/gcc-armv7/0014-nopie.patch @@ -1,7 +1,7 @@ From f64f853eae3b390adbbc9b74a336d93918e6dca4 Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy Date: Sat, 7 Nov 2015 02:08:05 +0000 -Subject: [PATCH 14/28] nopie +Subject: [PATCH 14/30] nopie --- gcc/configure | 27 +++++++++++++++++++++++++++ diff --git a/cross/gcc-armv7/0015-libffi-use-__linux__-instead-of-__gnu_linux__-for-mu.patch b/cross/gcc-armv7/0015-libffi-use-__linux__-instead-of-__gnu_linux__-for-mu.patch index bf7b0779d..8f007668f 100644 --- a/cross/gcc-armv7/0015-libffi-use-__linux__-instead-of-__gnu_linux__-for-mu.patch +++ b/cross/gcc-armv7/0015-libffi-use-__linux__-instead-of-__gnu_linux__-for-mu.patch @@ -1,7 +1,7 @@ From 37dace030c1402a8e6734a0fc59e18717ce1a2ef Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 +- diff --git a/cross/gcc-armv7/0016-dlang-update-zlib-binding.patch b/cross/gcc-armv7/0016-dlang-update-zlib-binding.patch index b04ee92fd..9204db8a8 100644 --- a/cross/gcc-armv7/0016-dlang-update-zlib-binding.patch +++ b/cross/gcc-armv7/0016-dlang-update-zlib-binding.patch @@ -1,7 +1,7 @@ From 7fc386a2e629e859968da4eb4d0ff4983cb3b76f Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 ++++++++++++++++++++++++++++----------- diff --git a/cross/gcc-armv7/0017-dlang-fix-fcntl-on-mips-add-libucontext-dep.patch b/cross/gcc-armv7/0017-dlang-fix-fcntl-on-mips-add-libucontext-dep.patch index d9733410d..7b11d6bae 100644 --- a/cross/gcc-armv7/0017-dlang-fix-fcntl-on-mips-add-libucontext-dep.patch +++ b/cross/gcc-armv7/0017-dlang-fix-fcntl-on-mips-add-libucontext-dep.patch @@ -1,7 +1,7 @@ From ef5f7880cff27a2b92952ce53a207d5dd896923b Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 + diff --git a/cross/gcc-armv7/0018-ada-fix-shared-linking.patch b/cross/gcc-armv7/0018-ada-fix-shared-linking.patch index 6ffbcb973..1fc9b372b 100644 --- a/cross/gcc-armv7/0018-ada-fix-shared-linking.patch +++ b/cross/gcc-armv7/0018-ada-fix-shared-linking.patch @@ -1,7 +1,7 @@ From b675e0383262d6d702f5b732e4459d3e2c2a4891 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 ++++++------ diff --git a/cross/gcc-armv7/0019-build-fix-CXXFLAGS_FOR_BUILD-passing.patch b/cross/gcc-armv7/0019-build-fix-CXXFLAGS_FOR_BUILD-passing.patch index e231809b7..591f9ffa3 100644 --- a/cross/gcc-armv7/0019-build-fix-CXXFLAGS_FOR_BUILD-passing.patch +++ b/cross/gcc-armv7/0019-build-fix-CXXFLAGS_FOR_BUILD-passing.patch @@ -1,7 +1,7 @@ From 0ea91dd6f8d856d5b589c2a3e95469fea06e7094 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 + diff --git a/cross/gcc-armv7/0020-libstdc-futex-add-time64-compatibility.patch b/cross/gcc-armv7/0020-libstdc-futex-add-time64-compatibility.patch index 3aab207fb..73d7f0730 100644 --- a/cross/gcc-armv7/0020-libstdc-futex-add-time64-compatibility.patch +++ b/cross/gcc-armv7/0020-libstdc-futex-add-time64-compatibility.patch @@ -1,7 +1,7 @@ From 9684a815e1cbe854383c3c511e1d84d43c46ec94 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 ++++++++ diff --git a/cross/gcc-armv7/0021-add-fortify-headers-paths.patch b/cross/gcc-armv7/0021-add-fortify-headers-paths.patch index 155650fed..81e26a47e 100644 --- a/cross/gcc-armv7/0021-add-fortify-headers-paths.patch +++ b/cross/gcc-armv7/0021-add-fortify-headers-paths.patch @@ -1,7 +1,7 @@ From a0708ec975c01b049d254dc51179898966bf8a52 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 ++ diff --git a/cross/gcc-armv7/0022-Alpine-musl-package-provides-libssp_nonshared.a.-We-.patch b/cross/gcc-armv7/0022-Alpine-musl-package-provides-libssp_nonshared.a.-We-.patch index c1d1befe6..a93b372e9 100644 --- a/cross/gcc-armv7/0022-Alpine-musl-package-provides-libssp_nonshared.a.-We-.patch +++ b/cross/gcc-armv7/0022-Alpine-musl-package-provides-libssp_nonshared.a.-We-.patch @@ -1,7 +1,7 @@ From 740342a0e4b0b3af498964440918abba1a27ba33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Ter=C3=A4s?= 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 diff --git a/cross/gcc-armv7/0023-DP-Use-push-state-pop-state-for-gold-as-well-when-li.patch b/cross/gcc-armv7/0023-DP-Use-push-state-pop-state-for-gold-as-well-when-li.patch index 341f9936a..4717d7416 100644 --- a/cross/gcc-armv7/0023-DP-Use-push-state-pop-state-for-gold-as-well-when-li.patch +++ b/cross/gcc-armv7/0023-DP-Use-push-state-pop-state-for-gold-as-well-when-li.patch @@ -1,7 +1,7 @@ From 775adf35d6f34f61947fc28a2bdbfa7e881c40d5 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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. --- diff --git a/cross/gcc-armv7/0024-Pure-64-bit-MIPS.patch b/cross/gcc-armv7/0024-Pure-64-bit-MIPS.patch index 6ecc752f2..95cefb3dd 100644 --- a/cross/gcc-armv7/0024-Pure-64-bit-MIPS.patch +++ b/cross/gcc-armv7/0024-Pure-64-bit-MIPS.patch @@ -1,7 +1,7 @@ From 717090cf538f765db1730956c512a43f2d52a802 Mon Sep 17 00:00:00 2001 From: Nils Andreas Svee 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 ++++---- diff --git a/cross/gcc-armv7/0025-use-pure-64-bit-configuration-where-appropriate.patch b/cross/gcc-armv7/0025-use-pure-64-bit-configuration-where-appropriate.patch index c9e158866..8e2db4831 100644 --- a/cross/gcc-armv7/0025-use-pure-64-bit-configuration-where-appropriate.patch +++ b/cross/gcc-armv7/0025-use-pure-64-bit-configuration-where-appropriate.patch @@ -1,7 +1,7 @@ From f73cf8d2f8f4eee71fc2ba850672e69f509a4486 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 +- diff --git a/cross/gcc-armv7/0026-always-build-libgcc_eh.a.patch b/cross/gcc-armv7/0026-always-build-libgcc_eh.a.patch index 04b5d16b3..b41f8e9ed 100644 --- a/cross/gcc-armv7/0026-always-build-libgcc_eh.a.patch +++ b/cross/gcc-armv7/0026-always-build-libgcc_eh.a.patch @@ -1,7 +1,7 @@ From 8472f6d0037dcd19c44b1e95d95fbf937b3823e6 Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 diff --git a/cross/gcc-armv7/0027-ada-libgnarl-compatibility-for-musl.patch b/cross/gcc-armv7/0027-ada-libgnarl-compatibility-for-musl.patch index 8ec5d2d25..f44caa24c 100644 --- a/cross/gcc-armv7/0027-ada-libgnarl-compatibility-for-musl.patch +++ b/cross/gcc-armv7/0027-ada-libgnarl-compatibility-for-musl.patch @@ -1,7 +1,7 @@ From 4e1b3a26f558e7693853d3600ee677705e67406c Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 ------ diff --git a/cross/gcc-armv7/0028-ada-musl-support-fixes.patch b/cross/gcc-armv7/0028-ada-musl-support-fixes.patch index 000bc6b94..8eb13422c 100644 --- a/cross/gcc-armv7/0028-ada-musl-support-fixes.patch +++ b/cross/gcc-armv7/0028-ada-musl-support-fixes.patch @@ -1,7 +1,7 @@ From 5e3d7d2f1e2448b6c5eb207f9251c437629e43bc Mon Sep 17 00:00:00 2001 From: Ariadne Conill 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 +++++----- diff --git a/cross/gcc-armv7/0029-c-Fix-bogus-vector-initialisation-error-PR96377.patch b/cross/gcc-armv7/0029-c-Fix-bogus-vector-initialisation-error-PR96377.patch new file mode 100644 index 000000000..13500dafe --- /dev/null +++ b/cross/gcc-armv7/0029-c-Fix-bogus-vector-initialisation-error-PR96377.patch @@ -0,0 +1,520 @@ +From d6599f89ba558ec2a68d4bc4af15cf3513218054 Mon Sep 17 00:00:00 2001 +From: Richard Sandiford +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 ++ ++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 ++ ++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 ++ ++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 ++ ++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 ++ ++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 + diff --git a/cross/gcc-armv7/0030-rs6000-ICE-when-using-an-MMA-type-as-a-function-para.patch b/cross/gcc-armv7/0030-rs6000-ICE-when-using-an-MMA-type-as-a-function-para.patch new file mode 100644 index 000000000..8543681f6 --- /dev/null +++ b/cross/gcc-armv7/0030-rs6000-ICE-when-using-an-MMA-type-as-a-function-para.patch @@ -0,0 +1,157 @@ +From 773021143288f5bf0dca1e3ee1f908f580f6fd9c Mon Sep 17 00:00:00 2001 +From: Peter Bergner +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 + +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 + diff --git a/cross/gcc-armv7/APKBUILD b/cross/gcc-armv7/APKBUILD index def64d426..8ffe6283b 100644 --- a/cross/gcc-armv7/APKBUILD +++ b/cross/gcc-armv7/APKBUILD @@ -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"