Received: from out2.migadu.com (out2.migadu.com [188.165.223.204]) by nld3-dev1.alpinelinux.org (Postfix) with ESMTPS id 8CACD781024 for <~alpine/aports@lists.alpinelinux.org>; Mon, 13 Jun 2022 09:50:47 +0000 (UTC) X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cmpwn.com; s=key1; t=1655113289; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=LayKuwMgttixbWQ676fB+VNLJx8ox75eUPBwbpxTTW4=; b=lKo5hRFcp0ewaspdCzD7Rin4jnrRb3xOFJ+KZIX8UcSPwiuijvmdkneoieVgFueUf4ZNii Hf/A/qR40zQKOHrcsyXPGVJpCROIOg7aJaxF3mowYaORIEgoHcIzS6vbGpQzRzHuHgwW5G 43mVSoOlyKeFYzT155yDcixhLg8LNfcXhMnsvrVTTuDdo5yexcKRThslUH0r+tAS1aR20t 9IahqSG/sLCXQj/l35zd/s/mnZOrXIz3UiIWZ90WeF/gXfNI16weUqFdj6f+tpTPSBVzwo vT/o/Di7TUTD34U2+veuCFQfuHI9oMVZwNvPC7TRuIbKn/5Mhppk/HLxWkrFOA== From: Drew DeVault To: ~alpine/aports@lists.alpinelinux.org Cc: Drew DeVault Subject: [RFC PATCH v2] testing/binutils-cross: new aport Date: Mon, 13 Jun 2022 11:41:27 +0200 Message-Id: <20220613094127.27921-1-sir@cmpwn.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Migadu-Flow: FLOW_OUT X-Migadu-Auth-User: cmpwn.com --- ...gnu.attributes-are-not-checked-for-s.patch | 55 +++++++ testing/binutils-cross/APKBUILD | 141 +++++++++++++++++ .../binutils-ld-fix-static-linking.patch | 46 ++++++ .../binutils-mips-disable-assert.patch | 14 ++ .../binutils-ppc-fix-machine-options.patch | 41 +++++ testing/binutils-cross/binutils-s390x-1.patch | 147 ++++++++++++++++++ testing/binutils-cross/binutils-s390x-2.patch | 51 ++++++ testing/binutils-cross/gold-mips.patch | 39 +++++ testing/binutils-cross/ld-bfd-mips.patch | 19 +++ 9 files changed, 553 insertions(+) create mode 100644 testing/binutils-cross/0001-Revert-PR25882-.gnu.attributes-are-not-checked-for-s.patch create mode 100644 testing/binutils-cross/APKBUILD create mode 100644 testing/binutils-cross/binutils-ld-fix-static-linking.patch create mode 100644 testing/binutils-cross/binutils-mips-disable-assert.patch create mode 100644 testing/binutils-cross/binutils-ppc-fix-machine-options.patch create mode 100644 testing/binutils-cross/binutils-s390x-1.patch create mode 100644 testing/binutils-cross/binutils-s390x-2.patch create mode 100644 testing/binutils-cross/gold-mips.patch create mode 100644 testing/binutils-cross/ld-bfd-mips.patch diff --git a/testing/binutils-cross/0001-Revert-PR25882-.gnu.attributes-are-not-checked-for-s.patch b/testing/binutils-cross/0001-Revert-PR25882-.gnu.attributes-are-not-checked-for-s.patch new file mode 100644 index 0000000000..6e1fa7731c --- /dev/null +++ b/testing/binutils-cross/0001-Revert-PR25882-.gnu.attributes-are-not-checked-for-s.patch @@ -0,0 +1,55 @@ +From bbf05b742fde518fb97c789b043fe0d3aaf549f0 Mon Sep 17 00:00:00 2001 +From: Ariadne Conill +Date: Tue, 21 Sep 2021 14:53:13 +0000 +Subject: [PATCH] Revert "PR25882, .gnu.attributes are not checked for shared + libraries" + +This revert is needed to avoid wrongly tagging objects with the incompatible +IBM long double ABI, which is not supported by musl and will result in +linking errors if used. + +This reverts commit a8acd6eeb6dc2cc5460ece90f90ebe36b56b20ba. +--- + bfd/elf32-tic6x.c | 3 --- + ld/ldlang.c | 10 ++++------ + 2 files changed, 4 insertions(+), 9 deletions(-) + +diff --git a/bfd/elf32-tic6x.c b/bfd/elf32-tic6x.c +index 5754f3cb860..3ad1d612749 100644 +--- a/bfd/elf32-tic6x.c ++++ b/bfd/elf32-tic6x.c +@@ -3735,9 +3735,6 @@ elf32_tic6x_merge_attributes (bfd *ibfd, struct bfd_link_info *info) + + case Tag_ABI_PIC: + case Tag_ABI_PID: +- /* Don't transfer these tags from dynamic objects. */ +- if ((ibfd->flags & DYNAMIC) != 0) +- continue; + if (out_attr[i].i > in_attr[i].i) + out_attr[i].i = in_attr[i].i; + break; +diff --git a/ld/ldlang.c b/ld/ldlang.c +index 37b64c89ee1..f13beaef9d9 100644 +--- a/ld/ldlang.c ++++ b/ld/ldlang.c +@@ -7071,13 +7071,11 @@ lang_check (void) + bfd_printable_name (input_bfd), input_bfd, + bfd_printable_name (link_info.output_bfd)); + } +- +- /* If the input bfd has no contents, it shouldn't set the +- private data of the output bfd. */ +- else if (!file->flags.just_syms +- && ((input_bfd->flags & DYNAMIC) != 0 +- || bfd_count_sections (input_bfd) != 0)) ++ else if (bfd_count_sections (input_bfd)) + { ++ /* If the input bfd has no contents, it shouldn't set the ++ private data of the output bfd. */ ++ + bfd_error_handler_type pfn = NULL; + + /* If we aren't supposed to warn about mismatched input +-- +2.33.0 + diff --git a/testing/binutils-cross/APKBUILD b/testing/binutils-cross/APKBUILD new file mode 100644 index 0000000000..a9e1223fdf --- /dev/null +++ b/testing/binutils-cross/APKBUILD @@ -0,0 +1,141 @@ +# Contributor: Natanael Copa +# Contributor: Ariadne Conill +# Maintainer: Drew DeVault +pkgname=binutils-cross +pkgver=2.38 +pkgrel=0 +pkgdesc="Tools necessary to build programs for foreign architectures" +url="https://www.gnu.org/software/binutils/" +makedepends_build="bison flex texinfo" +makedepends_host="zlib-dev" +makedepends="$makedepends_build $makedepends_host" +arch="all" +license="GPL-2.0 GPL-3.0-or-later LGPL-2.0 BSD" +source="https://ftp.gnu.org/gnu/binutils/binutils-$pkgver.tar.xz + binutils-ld-fix-static-linking.patch + gold-mips.patch + ld-bfd-mips.patch + 0001-Revert-PR25882-.gnu.attributes-are-not-checked-for-s.patch + binutils-mips-disable-assert.patch + binutils-ppc-fix-machine-options.patch + binutils-s390x-1.patch + binutils-s390x-2.patch + " +builddir="$srcdir/binutils-$pkgver" +targets="aarch64 armhf armv7 mips64 ppc64le riscv64 s390x x86 x86_64" +options="!check" +for target in $targets +do + subpackages="$subpackages binutils-$target:_$target" +done + +build() { + for target in $targets + do + local _arch_configure="" + if [ "$target" = "x86_64" ]; then + _arch_configure="--enable-targets=x86_64-pep" + fi + + case "$target" in + mips*) _hash_style_configure="--enable-default-hash-style=sysv" ;; + *) _hash_style_configure="--enable-default-hash-style=gnu" ;; + esac + + mkdir "$srcdir/$target" + cd "$srcdir/$target" + + local ctarget="$(arch_to_hostspec "$target")" + "$builddir"/configure \ + --build=$CBUILD \ + --host=$CHOST \ + --target=$ctarget \ + --program-prefix=$ctarget- \ + --prefix=/usr \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --disable-multilib \ + --enable-ld=default \ + --disable-gold \ + --enable-64-bit-bfd \ + --disable-plugins \ + --enable-relro \ + --enable-deterministic-archives \ + --disable-internal-libiberty \ + $_arch_configure \ + $_hash_style_configure \ + --with-pic \ + --disable-werror \ + --disable-nls \ + --with-mmap \ + --with-system-zlib + make + done +} + +package() { + pkgdesc="Tools necessary to build programs for foreign architectures" + for target in $targets + do + depends="$depends binutils-$target" + done + mkdir -p "$pkgdir" +} + +_install_target() { + local target="$1" + pkgdesc="Tools necessary to build programs for $target" + cd "$srcdir/$target" + make install DESTDIR="$subpkgdir" + rm -rf "$subpkgdir"/usr/share + rm -rf "$subpkgdir"/usr/lib + rm -rf "$subpkgdir"/usr/include +} + +_aarch64() { + _install_target aarch64 +} + +_armhf() { + _install_target armhf +} + +_armv7() { + _install_target armv7 +} + +_mips64() { + _install_target mips64 +} + +_ppc64le() { + _install_target ppc64le +} + +_riscv64() { + _install_target riscv64 +} + +_s390x() { + _install_target s390x +} + +_x86() { + _install_target x86 +} + +_x86_64() { + _install_target x86_64 +} + +sha512sums=" +8bf0b0d193c9c010e0518ee2b2e5a830898af206510992483b427477ed178396cd210235e85fd7bd99a96fc6d5eedbeccbd48317a10f752b7336ada8b2bb826d binutils-2.38.tar.xz +ecee33b0e435aa704af1c334e560f201638ff79e199aa11ed78a72f7c9b46f85fbb227af5748e735fd681d1965fcc42ac81b0c8824e540430ce0c706c81e8b49 binutils-ld-fix-static-linking.patch +f55cf2e0bf82f97583a1abe10710e4013ecf7d64f1da2ef8659a44a06d0dd8beaf58dab98a183488ea137f03e32d62efc878d95f018f836f8cec870bc448556f gold-mips.patch +314d2ef9071c89940aa6c8118e8a1e2f191a5d0a4bf596da1ad9cc84f884d8bc7dea8bd7b9fc3f8f1bddd3fd41c6eb017e1e804044b3bf084df1ed9e6e095e2d ld-bfd-mips.patch +70ec22bd72ef6dddecfd970613387dd4a8cdc8730dd3cbf03d5a0c3a7c4d839383167bb06dad21bf7c235329fd44b5dc4aefe762f68544f17155cf002bf1be4a 0001-Revert-PR25882-.gnu.attributes-are-not-checked-for-s.patch +609cd90d8b334eb309f586b17b9d335a08d3dbb6def7c3eb5c010028fcb681674031e5b9d853aa7a39a50304356a86afc184b85562b3f228f8197f4d29395c8f binutils-mips-disable-assert.patch +27ea91e0e406e2ed464fd692cf92a07e338781789f2d968c8b95d9d5545985056a6f7f500df3952e5ab42165db28b741aa33d6b717e880b11a2e41fe406b13c4 binutils-ppc-fix-machine-options.patch +a9efe2689624865f0ff33d4776a5bd295bcad6484bdd38d0ca490fea43691c4933ab33d17478851998eef12922dbf83d6c3225bb1f8faf92a1367d086390f7d3 binutils-s390x-1.patch +0e291df80ad279005265634014d0935d2c115a5ed708d25407094b7ad4ddf267d1fb7fcbcb2d9ad73bd305b4e3974628b820bd1f249f56c095e4896872434cc9 binutils-s390x-2.patch +" diff --git a/testing/binutils-cross/binutils-ld-fix-static-linking.patch b/testing/binutils-cross/binutils-ld-fix-static-linking.patch new file mode 100644 index 0000000000..bc5d762656 --- /dev/null +++ b/testing/binutils-cross/binutils-ld-fix-static-linking.patch @@ -0,0 +1,46 @@ +This fixes static linking for our hardened toolchain +diff --git a/ld/scripttempl/elf.sc b/ld/scripttempl/elf.sc +index e8126cb..9532bfb 100644 +--- a/ld/scripttempl/elf.sc ++++ b/ld/scripttempl/elf.sc +@@ -235,8 +235,8 @@ test "${LARGE_SECTIONS}" = "yes" && LARGE_SECTIONS=" + if test "${ENABLE_INITFINI_ARRAY}" = "yes"; then + SORT_INIT_ARRAY="KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*)))" + SORT_FINI_ARRAY="KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*)))" +- CTORS_IN_INIT_ARRAY="EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o $OTHER_EXCLUDE_FILES) .ctors" +- DTORS_IN_FINI_ARRAY="EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o $OTHER_EXCLUDE_FILES) .dtors" ++ CTORS_IN_INIT_ARRAY="EXCLUDE_FILE (*crtbegin*.o *crtend*.o $OTHER_EXCLUDE_FILES) .ctors" ++ DTORS_IN_FINI_ARRAY="EXCLUDE_FILE (*crtbegin*.o *crtend*.o $OTHER_EXCLUDE_FILES) .dtors" + else + SORT_INIT_ARRAY="KEEP (*(SORT(.init_array.*)))" + SORT_FINI_ARRAY="KEEP (*(SORT(.fini_array.*)))" +@@ -270,15 +270,14 @@ CTOR=".ctors ${CONSTRUCTING-0} : + doesn't matter which directory crtbegin.o + is in. */ + +- KEEP (*crtbegin.o(.ctors)) +- KEEP (*crtbegin?.o(.ctors)) ++ KEEP (*crtbegin*.o(.ctors)) + + /* We don't want to include the .ctor section from + the crtend.o file until after the sorted ctors. + The .ctor section from the crtend file contains the + end of ctors marker and it must be last */ + +- KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o $OTHER_EXCLUDE_FILES) .ctors)) ++ KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + ${CONSTRUCTING+${CTOR_END}} +@@ -286,9 +285,8 @@ CTOR=".ctors ${CONSTRUCTING-0} : + DTOR=".dtors ${CONSTRUCTING-0} : + { + ${CONSTRUCTING+${DTOR_START}} +- KEEP (*crtbegin.o(.dtors)) +- KEEP (*crtbegin?.o(.dtors)) +- KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o $OTHER_EXCLUDE_FILES) .dtors)) ++ KEEP (*crtbegin*.o(.dtors)) ++ KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + ${CONSTRUCTING+${DTOR_END}} diff --git a/testing/binutils-cross/binutils-mips-disable-assert.patch b/testing/binutils-cross/binutils-mips-disable-assert.patch new file mode 100644 index 0000000000..1a78858033 --- /dev/null +++ b/testing/binutils-cross/binutils-mips-disable-assert.patch @@ -0,0 +1,14 @@ +diff -urN binutils-2.35.2.orig/bfd/elfxx-mips.c binutils-2.35.2/bfd/elfxx-mips.c +--- binutils-2.35.2.orig/bfd/elfxx-mips.c 2021-01-30 01:38:03.000000000 -0700 ++++ binutils-2.35.2/bfd/elfxx-mips.c 2021-05-13 17:35:34.706913601 -0600 +@@ -6744,8 +6744,10 @@ + in the relocation. */ + if (h != NULL && ! SYMBOL_REFERENCES_LOCAL (info, &h->root)) + { ++#if 0 + BFD_ASSERT (htab->root.target_os == is_vxworks + || h->global_got_area != GGA_NONE); ++#endif + indx = h->root.dynindx; + if (SGI_COMPAT (output_bfd)) + defined_p = h->root.def_regular; diff --git a/testing/binutils-cross/binutils-ppc-fix-machine-options.patch b/testing/binutils-cross/binutils-ppc-fix-machine-options.patch new file mode 100644 index 0000000000..703ecf98a3 --- /dev/null +++ b/testing/binutils-cross/binutils-ppc-fix-machine-options.patch @@ -0,0 +1,41 @@ +Fix for DARN opcode error during ppc64le compilation of rng-tools which +occurs with binutils 2.38 but not with binutils 2.37.. + +https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=cebc89b9328;hp=9cbed90ee623d75e31994e7943960c997ba565f2 + + +diff -aur a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c +--- a/gas/config/tc-ppc.c ++++ b/gas/config/tc-ppc.c +@@ -5965,7 +5965,30 @@ + options do not count as a new machine, instead they add + to currently selected opcodes. */ + ppc_cpu_t machine_sticky = 0; +- new_cpu = ppc_parse_cpu (ppc_cpu, &machine_sticky, cpu_string); ++ /* Unfortunately, some versions of gcc emit a .machine ++ directive very near the start of the compiler's assembly ++ output file. This is bad because it overrides user -Wa ++ cpu selection. Worse, there are versions of gcc that ++ emit the *wrong* cpu, not even respecting the -mcpu given ++ to gcc. See gcc pr101393. And to compound the problem, ++ as of 20220222 gcc doesn't pass the correct cpu option to ++ gas on the command line. See gcc pr59828. Hack around ++ this by keeping sticky options for an early .machine. */ ++ asection *sec; ++ for (sec = stdoutput->sections; sec != NULL; sec = sec->next) ++ { ++ segment_info_type *info = seg_info (sec); ++ /* Are the frags for this section perturbed from their ++ initial state? Even .align will count here. */ ++ if (info != NULL ++ && (info->frchainP->frch_root != info->frchainP->frch_last ++ || info->frchainP->frch_root->fr_type != rs_fill ++ || info->frchainP->frch_root->fr_fix != 0)) ++ break; ++ } ++ new_cpu = ppc_parse_cpu (ppc_cpu, ++ sec == NULL ? &sticky : &machine_sticky, ++ cpu_string); + if (new_cpu != 0) + ppc_cpu = new_cpu; + else diff --git a/testing/binutils-cross/binutils-s390x-1.patch b/testing/binutils-cross/binutils-s390x-1.patch new file mode 100644 index 0000000000..fab51a2fad --- /dev/null +++ b/testing/binutils-cross/binutils-s390x-1.patch @@ -0,0 +1,147 @@ +From 82a5bb730a16f8c7962568030268e784b4fb42c8 Mon Sep 17 00:00:00 2001 +From: Stefan Liebler +Date: Thu, 28 Apr 2022 14:29:58 +0200 +Subject: [PATCH] s390: Avoid dynamic TLS relocs in PIE + +No dynamic relocs are needed for TLS defined in an executable, the +TP relative offset is known at link time. + +Fixes +FAIL: Build pr22263-1 + +bfd/ + PR ld/22263 + * elf64-s390.c (elf_s390_tls_transition): Use bfd_link_dll + instead of bfd_link_pic for TLS. + (elf_s390_check_relocs): Likewise. + (allocate_dynrelocs): Likewise. + (elf_s390_relocate_section): Likewise. + +(cherry picked from commit 26b1426577b5dcb32d149c64cca3e603b81948a9) +--- + bfd/elf64-s390.c | 26 +++++++++++++------------- + 1 file changed, 13 insertions(+), 13 deletions(-) + +diff --git a/bfd/elf64-s390.c b/bfd/elf64-s390.c +index e780efa7181..00ee386baab 100644 +--- a/bfd/elf64-s390.c ++++ b/bfd/elf64-s390.c +@@ -774,7 +774,7 @@ elf_s390_tls_transition (struct bfd_link_info *info, + int r_type, + int is_local) + { +- if (bfd_link_pic (info)) ++ if (bfd_link_dll (info)) + return r_type; + + switch (r_type) +@@ -1026,7 +1026,7 @@ elf_s390_check_relocs (bfd *abfd, + case R_390_TLS_GOTIE20: + case R_390_TLS_GOTIE64: + case R_390_TLS_IEENT: +- if (bfd_link_pic (info)) ++ if (bfd_link_dll (info)) + info->flags |= DF_STATIC_TLS; + /* Fall through */ + +@@ -1107,7 +1107,7 @@ elf_s390_check_relocs (bfd *abfd, + if (r_type == R_390_TLS_LE64 && bfd_link_pie (info)) + break; + +- if (!bfd_link_pic (info)) ++ if (!bfd_link_dll (info)) + break; + info->flags |= DF_STATIC_TLS; + /* Fall through */ +@@ -1571,7 +1571,7 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, + to R_390_TLS_LE64 requiring no TLS entry. For GOTIE12 and IEENT + we can save the dynamic TLS relocation. */ + if (h->got.refcount > 0 +- && !bfd_link_pic (info) ++ && !bfd_link_dll (info) + && h->dynindx == -1 + && elf_s390_hash_entry(h)->tls_type >= GOT_TLS_IE) + { +@@ -2662,7 +2662,7 @@ elf_s390_relocate_section (bfd *output_bfd, + + /* Relocations for tls literal pool entries. */ + case R_390_TLS_IE64: +- if (bfd_link_pic (info)) ++ if (bfd_link_dll (info)) + { + Elf_Internal_Rela outrel; + asection *sreloc; +@@ -2690,7 +2690,7 @@ elf_s390_relocate_section (bfd *output_bfd, + else if (h != NULL) + { + tls_type = elf_s390_hash_entry(h)->tls_type; +- if (!bfd_link_pic (info) && h->dynindx == -1 && tls_type >= GOT_TLS_IE) ++ if (!bfd_link_dll (info) && h->dynindx == -1 && tls_type >= GOT_TLS_IE) + r_type = R_390_TLS_LE64; + } + if (r_type == R_390_TLS_GD64 && tls_type >= GOT_TLS_IE) +@@ -2801,14 +2801,14 @@ elf_s390_relocate_section (bfd *output_bfd, + if (local_got_offsets == NULL) + abort(); + off = local_got_offsets[r_symndx]; +- if (bfd_link_pic (info)) ++ if (bfd_link_dll (info)) + goto emit_tls_relocs; + } + else + { + off = h->got.offset; + tls_type = elf_s390_hash_entry(h)->tls_type; +- if (bfd_link_pic (info) || h->dynindx != -1 || tls_type < GOT_TLS_IE) ++ if (bfd_link_dll (info) || h->dynindx != -1 || tls_type < GOT_TLS_IE) + goto emit_tls_relocs; + } + +@@ -2825,7 +2825,7 @@ elf_s390_relocate_section (bfd *output_bfd, + break; + + case R_390_TLS_LDM64: +- if (! bfd_link_pic (info)) ++ if (! bfd_link_dll (info)) + /* The literal pool entry this relocation refers to gets ignored + by the optimized code of the local exec model. Do nothing + and the value will turn out zero. */ +@@ -2900,7 +2900,7 @@ elf_s390_relocate_section (bfd *output_bfd, + continue; + + case R_390_TLS_LDO64: +- if (bfd_link_pic (info) || (input_section->flags & SEC_DEBUGGING)) ++ if (bfd_link_dll (info) || (input_section->flags & SEC_DEBUGGING)) + relocation -= dtpoff_base (info); + else + /* When converting LDO to LE, we must negate. */ +@@ -2922,7 +2922,7 @@ elf_s390_relocate_section (bfd *output_bfd, + + if (r_type == R_390_TLS_LOAD) + { +- if (!bfd_link_pic (info) && (h == NULL || h->dynindx == -1)) ++ if (!bfd_link_dll (info) && (h == NULL || h->dynindx == -1)) + { + /* IE->LE transition. Four valid cases: + lg %rx,(0,%ry) -> sllg %rx,%ry,0 +@@ -2972,7 +2972,7 @@ elf_s390_relocate_section (bfd *output_bfd, + invalid_tls_insn (input_bfd, input_section, rel); + return false; + } +- if (!bfd_link_pic (info) && (h == NULL || h->dynindx == -1)) ++ if (!bfd_link_dll (info) && (h == NULL || h->dynindx == -1)) + { + /* GD->LE transition. + brasl %r14,__tls_get_addr@plt -> brcl 0,. */ +@@ -2991,7 +2991,7 @@ elf_s390_relocate_section (bfd *output_bfd, + } + else if (r_type == R_390_TLS_LDCALL) + { +- if (!bfd_link_pic (info)) ++ if (!bfd_link_dll (info)) + { + unsigned int insn0, insn1; + +-- +2.27.0 + diff --git a/testing/binutils-cross/binutils-s390x-2.patch b/testing/binutils-cross/binutils-s390x-2.patch new file mode 100644 index 0000000000..75d7a931a3 --- /dev/null +++ b/testing/binutils-cross/binutils-s390x-2.patch @@ -0,0 +1,51 @@ +From 9a01457e02e7bb594ff9a9ac62a38c909e2e3083 Mon Sep 17 00:00:00 2001 +From: Stefan Liebler +Date: Thu, 28 Apr 2022 14:30:55 +0200 +Subject: [PATCH] s390: Add DT_JMPREL pointing to .rela.[i]plt with static-pie + +In static-pie case, there are IRELATIVE-relocs in +.rela.iplt (htab->irelplt), which will later be grouped +to .rela.plt. On s390, the IRELATIVE relocations are +always located in .rela.iplt - even for non-static case. +Ensure that DT_JMPREL, DT_PLTRELA, DT_PLTRELASZ is added +to the dynamic section even if htab->srelplt->size == 0. +See _bfd_elf_add_dynamic_tags in bfd/elflink.c. + +bfd/ + elf64-s390.c (elf_s390_size_dynamic_sections): + Enforce DT_JMPREL via htab->elf.dt_jmprel_required. + +(cherry picked from commit d942d8db12adf4c9e5c7d9ed6496a779ece7149e) +--- + bfd/elf64-s390.c | 15 ++++++++++++++- + 1 file changed, 14 insertions(+), 1 deletion(-) + +diff --git a/bfd/elf64-s390.c b/bfd/elf64-s390.c +index 00ee386baab..0b851f7ac0e 100644 +--- a/bfd/elf64-s390.c ++++ b/bfd/elf64-s390.c +@@ -1876,7 +1876,20 @@ elf_s390_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED, + else if (startswith (bfd_section_name (s), ".rela")) + { + if (s->size != 0 && s != htab->elf.srelplt) +- relocs = true; ++ { ++ relocs = true; ++ if (s == htab->elf.irelplt) ++ { ++ /* In static-pie case, there are IRELATIVE-relocs in ++ .rela.iplt (htab->irelplt), which will later be grouped ++ to .rela.plt. On s390, the IRELATIVE relocations are ++ always located in .rela.iplt - even for non-static case. ++ Ensure that DT_JMPREL, DT_PLTRELA, DT_PLTRELASZ is added ++ to the dynamic section even if htab->srelplt->size == 0. ++ See _bfd_elf_add_dynamic_tags in bfd/elflink.c. */ ++ htab->elf.dt_jmprel_required = true; ++ } ++ } + + /* We use the reloc_count field as a counter if we need + to copy relocs into the output file. */ +-- +2.27.0 + diff --git a/testing/binutils-cross/gold-mips.patch b/testing/binutils-cross/gold-mips.patch new file mode 100644 index 0000000000..291a2aae6a --- /dev/null +++ b/testing/binutils-cross/gold-mips.patch @@ -0,0 +1,39 @@ +# DP: Fix gold on mips64 targets. + +gold/ + +2016-08-09 Aurelien Jarno + + * configure.tgt: Add mips64el*-*-*|mips64le*-*-* and mips64*-*-*. + + +--- a/gold/configure.tgt ++++ b/gold/configure.tgt +@@ -153,6 +153,13 @@ aarch64*-*) + targ_big_endian=false + targ_extra_big_endian=true + ;; ++mips*64*el*-*-*|mips*64*le*-*-*) ++ targ_obj=mips ++ targ_machine=EM_MIPS_RS3_LE ++ targ_size=64 ++ targ_big_endian=false ++ targ_extra_big_endian=true ++ ;; + mips*el*-*-*|mips*le*-*-*) + targ_obj=mips + targ_machine=EM_MIPS_RS3_LE +@@ -160,6 +167,13 @@ mips*el*-*-*|mips*le*-*-*) + targ_big_endian=false + targ_extra_big_endian=true + ;; ++mips*64*-*-*) ++ targ_obj=mips ++ targ_machine=EM_MIPS ++ targ_size=64 ++ targ_big_endian=true ++ targ_extra_big_endian=false ++ ;; + mips*-*-*) + targ_obj=mips + targ_machine=EM_MIPS diff --git a/testing/binutils-cross/ld-bfd-mips.patch b/testing/binutils-cross/ld-bfd-mips.patch new file mode 100644 index 0000000000..2991c88571 --- /dev/null +++ b/testing/binutils-cross/ld-bfd-mips.patch @@ -0,0 +1,19 @@ +--- ./ld/configure.tgt.orig ++++ ./ld/configure.tgt +@@ -541,12 +541,12 @@ + ;; + mips*-*-windiss) targ_emul=elf32mipswindiss + ;; +-mips64*el-*-linux-*) targ_emul=elf32ltsmipn32 +- targ_extra_emuls="elf32btsmipn32 elf32ltsmip elf32btsmip elf64ltsmip elf64btsmip" ++mips64*el-*-linux-*) targ_emul=elf64ltsmip ++ targ_extra_emuls="elf32ltsmipn32 elf32btsmipn32 elf32ltsmip elf32btsmip elf64btsmip" + targ_extra_libpath=$targ_extra_emuls + ;; +-mips64*-*-linux-*) targ_emul=elf32btsmipn32 +- targ_extra_emuls="elf32ltsmipn32 elf32btsmip elf32ltsmip elf64btsmip elf64ltsmip" ++mips64*-*-linux-*) targ_emul=elf64btsmip ++ targ_extra_emuls="elf32btsmipn32 elf32ltsmipn32 elf32btsmip elf32ltsmip elf64ltsmip" + targ_extra_libpath=$targ_extra_emuls + ;; + mips*el-*-linux-*) targ_emul=elf32ltsmip base-commit: 7b497064eb552ffc32da3dc2fab1acfabf4879a9 prerequisite-patch-id: 755bd398829e789dcf090d9e42d3e53a134dbbb7 prerequisite-patch-id: 592a5ada0ffb1f8b328cdb975ba2e1f1855f7e69 -- 2.36.1