From 0e7085de24bbf845cacaaf02af9a82d6d365be7f Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Sat, 25 Apr 2020 19:29:35 +0000 Subject: [PATCH] core/binutils: update --- ...correct-ELF-class-for-AArch64-stubs-.patch | 145 ------------------ ...-setting-of-elf-class-in-linker-stub.patch | 43 ------ core/binutils/PKGBUILD | 12 +- 3 files changed, 2 insertions(+), 198 deletions(-) delete mode 100644 core/binutils/0001-AArch64-Set-the-correct-ELF-class-for-AArch64-stubs-.patch delete mode 100644 core/binutils/0002-AArch64-Revert-setting-of-elf-class-in-linker-stub.patch diff --git a/core/binutils/0001-AArch64-Set-the-correct-ELF-class-for-AArch64-stubs-.patch b/core/binutils/0001-AArch64-Set-the-correct-ELF-class-for-AArch64-stubs-.patch deleted file mode 100644 index 166830a6c..000000000 --- a/core/binutils/0001-AArch64-Set-the-correct-ELF-class-for-AArch64-stubs-.patch +++ /dev/null @@ -1,145 +0,0 @@ -From 8a49de34004f86920bb6fea16ff0784fa377d83d Mon Sep 17 00:00:00 2001 -From: Kevin Mihelich -Date: Tue, 7 Jan 2020 17:41:03 -0700 -Subject: [PATCH 1/2] AArch64: Set the correct ELF class for AArch64 stubs - (PR/25210) - -This fixes PR 25210 by specifying the the correct ELF class for AArch64 stubs. -After doing this the stub section starts behaving like a normal object file -loaded from disk. That is SEC_LINKER_CREATED causes us to have to write the -section manually. - -This flag was added as a fix for PR 24753. I believe that -fix to still be correct as linker created sections don't have a size on disk -and it fixes the Arm bootstrap regression. But in this case specifying the -correct section class also makes the stub section not be considered by -compress.c. - -So I'm partially revert this change so that we don't have to manage the section -manually as implied by SEC_LINKER_CREATED. - -bfd/ChangeLog: - - PR 25210 - PR 24753 - * elfnn-aarch64.c (_bfd_aarch64_create_stub_section): Set ELF class. - -ld/ChangeLog: - - PR 25210 - PR 24753 - * emultempl/aarch64elf.em (elf${ELFSIZE}_aarch64_add_stub_section): - Remove SEC_LINKER_CREATED. - * testsuite/ld-aarch64/aarch64-elf.exp: Add erratum835769-843419. - * testsuite/ld-aarch64/erratum835769-843419.d: New test. ---- - bfd/elfnn-aarch64.c | 4 ++ - ld/emultempl/aarch64elf.em | 2 +- - ld/testsuite/ld-aarch64/aarch64-elf.exp | 1 + - .../ld-aarch64/erratum835769-843419.d | 54 +++++++++++++++++++ - 4 files changed, 60 insertions(+), 1 deletion(-) - create mode 100644 ld/testsuite/ld-aarch64/erratum835769-843419.d - -diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c -index fd44505da4..6b1b7b55e4 100644 ---- a/bfd/elfnn-aarch64.c -+++ b/bfd/elfnn-aarch64.c -@@ -3176,6 +3176,10 @@ _bfd_aarch64_create_stub_section (asection *section, - if (s_name == NULL) - return NULL; - -+ /* PR 25210. Set the right class on the stub_bfd. */ -+ elf_elfheader (htab->stub_bfd)->e_ident[EI_CLASS] = ELFCLASSNN; -+ BFD_ASSERT (ELFCLASSNN == get_elf_backend_data (htab->stub_bfd)->s->elfclass); -+ - memcpy (s_name, section->name, namelen); - memcpy (s_name + namelen, STUB_SUFFIX, sizeof (STUB_SUFFIX)); - return (*htab->add_stub_section) (s_name, section); -diff --git a/ld/emultempl/aarch64elf.em b/ld/emultempl/aarch64elf.em -index 93f60a9b61..4c13f26f4e 100644 ---- a/ld/emultempl/aarch64elf.em -+++ b/ld/emultempl/aarch64elf.em -@@ -169,7 +169,7 @@ elf${ELFSIZE}_aarch64_add_stub_section (const char *stub_sec_name, - lang_output_section_statement_type *os; - struct hook_stub_info info; - -- flags = (SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_CODE | SEC_LINKER_CREATED -+ flags = (SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_CODE - | SEC_HAS_CONTENTS | SEC_RELOC | SEC_IN_MEMORY | SEC_KEEP); - stub_sec = bfd_make_section_anyway_with_flags (stub_file->the_bfd, - stub_sec_name, flags); -diff --git a/ld/testsuite/ld-aarch64/aarch64-elf.exp b/ld/testsuite/ld-aarch64/aarch64-elf.exp -index 631fde0f31..d02bc25091 100644 ---- a/ld/testsuite/ld-aarch64/aarch64-elf.exp -+++ b/ld/testsuite/ld-aarch64/aarch64-elf.exp -@@ -93,6 +93,7 @@ run_dump_test "erratum843419-far-adr" - run_dump_test "erratum843419-far-full" - run_dump_test "erratum843419-full" - run_dump_test "erratum843419-no-args" -+run_dump_test "erratum835769-843419" - - # Relocation Tests - run_dump_test_lp64 "weak-undefined" -diff --git a/ld/testsuite/ld-aarch64/erratum835769-843419.d b/ld/testsuite/ld-aarch64/erratum835769-843419.d -new file mode 100644 -index 0000000000..728765f61d ---- /dev/null -+++ b/ld/testsuite/ld-aarch64/erratum835769-843419.d -@@ -0,0 +1,54 @@ -+#source: erratum835769.s -+#as: -+#ld: --fix-cortex-a53-835769 --fix-cortex-a53-843419=full -e0x400000 -+#objdump: -dr -+#... -+Disassembly of section .text: -+#... -+[0-9a-f]+ : -+[ \t0-9a-f]+:[ \t]+b8408c87[ \t]+ldr[ \t]+w7, \[x4, #8\]\! -+[ \t0-9a-f]+:[ \t]+1b017c06[ \t]+mul[ \t]+w6, w0, w1 -+[ \t0-9a-f]+:[ \t]+f9400084[ \t]+ldr[ \t]+x4, \[x4\] -+[ \t0-9a-f]+:[ \t0-9a-z]+[ \t]+b[ \t]+[0-9a-f]+ <__erratum_835769_veneer_0> -+[ \t0-9a-f]+:[ \t]+aa0503e0[ \t]+mov[ \t]+x0, x5 -+[ \t0-9a-f]+:[ \t]+d65f03c0[ \t]+ret -+ -+[0-9a-f]+ : -+[ \t0-9a-f]+:[ \t]+b8408c87[ \t]+ldr[ \t]+w7, \[x4, #8\]! -+[ \t0-9a-f]+:[ \t]+1b017c06[ \t]+mul[ \t]+w6, w0, w1 -+[ \t0-9a-f]+:[ \t]+f9400084[ \t]+ldr[ \t]+x4, \[x4\] -+[ \t0-9a-f]+:[ \t0-9a-z]+[ \t]+b[ \t]+[0-9a-f]+ <__erratum_835769_veneer_1> -+[ \t0-9a-f]+:[ \t]+aa0503e0[ \t]+mov[ \t]+x0, x5 -+[ \t0-9a-f]+:[ \t]+d65f03c0[ \t]+ret -+ -+[0-9a-f]+ : -+[ \t0-9a-f]+:[ \t]+b8408c87[ \t]+ldr[ \t]+w7, \[x4, #8\]! -+[ \t0-9a-f]+:[ \t]+1b017c06[ \t]+mul[ \t]+w6, w0, w1 -+[ \t0-9a-f]+:[ \t]+f9400084[ \t]+ldr[ \t]+x4, \[x4\] -+[ \t0-9a-f]+:[ \t]+9b031885[ \t]+madd[ \t]+x5, x4, x3, x6 -+[ \t0-9a-f]+:[ \t]+aa0503e0[ \t]+mov[ \t]+x0, x5 -+[ \t0-9a-f]+:[ \t]+d65f03c0[ \t]+ret -+ -+[0-9a-f]+ : -+[ \t0-9a-f]+:[ \t]+b8408c87[ \t]+ldr[ \t]+w7, \[x4, #8\]! -+[ \t0-9a-f]+:[ \t]+1b017c06[ \t]+mul[ \t]+w6, w0, w1 -+[ \t0-9a-f]+:[ \t]+f9000084[ \t]+str[ \t]+x4, \[x4\] -+[ \t0-9a-f]+:[ \t0-9a-z]+[ \t]+b[ \t]+[0-9a-f]+ <__erratum_835769_veneer_2> -+[ \t0-9a-f]+:[ \t]+aa0503e0[ \t]+mov[ \t]+x0, x5 -+[ \t0-9a-f]+:[ \t]+d65f03c0[ \t]+ret -+ -+[ \t0-9a-f]+:[ \t]+d503201f[ \t]+nop -+[ \t0-9a-f]+:[ \t]+14000400[ \t]+b[ \t]+[0-9a-f]+ <__erratum_835769_veneer_0\+0xfe8> -+[ \t0-9a-f]+:[ \t]+d503201f[ \t]+nop -+[0-9a-f]+ <__erratum_835769_veneer_2>: -+[ \t0-9a-f]+:[ \t]+9b031885[ \t]+madd[ \t]+x5, x4, x3, x6 -+[ \t0-9a-f]+:[ \t0-9a-z]+[ \t]+b[ \t]+[0-9a-f]+ -+ -+[0-9a-f]+ <__erratum_835769_veneer_1>: -+[ \t0-9a-f]+:[ \t]+9ba31845[ \t]+umaddl[ \t]+x5, w2, w3, x6 -+[ \t0-9a-f]+:[ \t0-9a-z]+[ \t]+b[ \t]+[0-9a-f]+ -+ -+[0-9a-f]+ <__erratum_835769_veneer_0>: -+[ \t0-9a-f]+:[ \t]+9b031845[ \t]+madd[ \t]+x5, x2, x3, x6 -+[ \t0-9a-f]+:[ \t0-9a-z]+[ \t]+b[ \t]+[0-9a-f]+ -+#pass --- -2.24.1 - diff --git a/core/binutils/0002-AArch64-Revert-setting-of-elf-class-in-linker-stub.patch b/core/binutils/0002-AArch64-Revert-setting-of-elf-class-in-linker-stub.patch deleted file mode 100644 index 41c774d97..000000000 --- a/core/binutils/0002-AArch64-Revert-setting-of-elf-class-in-linker-stub.patch +++ /dev/null @@ -1,43 +0,0 @@ -From e9d91c4ffc108af0a6df45ab6d4cd4792ecb36c7 Mon Sep 17 00:00:00 2001 -From: Kevin Mihelich -Date: Sat, 11 Jan 2020 08:36:04 -0700 -Subject: [PATCH 2/2] AArch64: Revert setting of elf class in linker stub. - -This changes the fix to PR 25210 by removing the ELF class change. -As it turns out the correct change was only the change in compress.c. - -Everything else is unneeded and setting the elf class is making the linker -behave very oddly under LTO. The first stub is correctly written out but for -the rest the suddenly don't have a pointer to the stub section anymore. - -This caused SPEC to fail as the program would branch to the stub and it wouldn't -be filled in. - -Committed to master under the trivial rule as this is partially reverting a previous commit. - -bfd/ChangeLog: - - PR 25210 - * elfnn-aarch64.c (_bfd_aarch64_create_stub_section): Remove elfclass. ---- - bfd/elfnn-aarch64.c | 4 ---- - 1 file changed, 4 deletions(-) - -diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c -index 6b1b7b55e4..fd44505da4 100644 ---- a/bfd/elfnn-aarch64.c -+++ b/bfd/elfnn-aarch64.c -@@ -3176,10 +3176,6 @@ _bfd_aarch64_create_stub_section (asection *section, - if (s_name == NULL) - return NULL; - -- /* PR 25210. Set the right class on the stub_bfd. */ -- elf_elfheader (htab->stub_bfd)->e_ident[EI_CLASS] = ELFCLASSNN; -- BFD_ASSERT (ELFCLASSNN == get_elf_backend_data (htab->stub_bfd)->s->elfclass); -- - memcpy (s_name, section->name, namelen); - memcpy (s_name + namelen, STUB_SUFFIX, sizeof (STUB_SUFFIX)); - return (*htab->add_stub_section) (s_name, section); --- -2.24.1 - diff --git a/core/binutils/PKGBUILD b/core/binutils/PKGBUILD index 63958455f..1a31d0d16 100644 --- a/core/binutils/PKGBUILD +++ b/core/binutils/PKGBUILD @@ -6,7 +6,6 @@ # ALARM: Kevin Mihelich # - Added a CONFIGFLAG for ARM, defining our build hosts # - --disable-sim, files provided by gdb -# - upstream patch for AArch64 (https://sourceware.org/bugzilla/show_bug.cgi?id=25210) noautobuild=1 @@ -21,14 +20,10 @@ groups=(base-devel) depends=(glibc zlib elfutils) makedepends=('elfutils') options=(staticlibs !distcc !ccache) -source=(https://ftp.gnu.org/gnu/binutils/binutils-$pkgver.tar.xz{,.sig} - 0001-AArch64-Set-the-correct-ELF-class-for-AArch64-stubs-.patch - 0002-AArch64-Revert-setting-of-elf-class-in-linker-stub.patch) +source=(https://ftp.gnu.org/gnu/binutils/binutils-$pkgver.tar.xz{,.sig}) validpgpkeys=(3A24BC1E8FB409FA9F14371813FCEF89DD9E3C4F) md5sums=('664ec3a2df7805ed3464639aaae332d6' - 'SKIP' - '806e91eb3ea6a539ecf1af445114e497' - '11f2e62e227f5afba086301df681f1c7') + 'SKIP') prepare() { mkdir -p binutils-build @@ -38,9 +33,6 @@ prepare() { # hack! - libiberty configure tests for header files using "$CPP $CPPFLAGS" sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" libiberty/configure - - patch -Np1 -i ../0001-AArch64-Set-the-correct-ELF-class-for-AArch64-stubs-.patch - patch -Np1 -i ../0002-AArch64-Revert-setting-of-elf-class-in-linker-stub.patch } build() {