diff --git a/add-ulp-section.diff b/add-ulp-section.diff deleted file mode 100644 index 71ae369..0000000 --- a/add-ulp-section.diff +++ /dev/null @@ -1,207 +0,0 @@ -This is for userspace live patching, adding some space into -shared libs or executable (in the .ulp section) when one of the -input files contains a section named .ulp.track. - -diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h -index 101c2fdf50d..f5d9e201fdb 100644 ---- a/bfd/elf-bfd.h -+++ b/bfd/elf-bfd.h -@@ -1487,6 +1487,10 @@ struct elf_backend_data - (const bfd *ibfd, bfd *obfd, const Elf_Internal_Shdr *isection, - Elf_Internal_Shdr *osection); - -+ bool (*elf_backend_is_ulp_enabled) (bfd *abfd); -+ -+ bool (*elf_backend_setup_ulp) (struct bfd_link_info *); -+ - /* Used to handle bad SHF_LINK_ORDER input. */ - void (*link_order_error_handler) (const char *, ...); - -diff --git a/bfd/elflink.c b/bfd/elflink.c -index ce1407fa2dc..5c70bcf6c07 100644 ---- a/bfd/elflink.c -+++ b/bfd/elflink.c -@@ -7260,6 +7260,13 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd, - s = bfd_get_linker_section (dynobj, ".gnu.version"); - s->flags |= SEC_EXCLUDE; - } -+ -+ if (bed->elf_backend_is_ulp_enabled != NULL -+ && bed->elf_backend_setup_ulp != NULL -+ && (*bed->elf_backend_is_ulp_enabled) (info->input_bfds)) -+ { -+ (*bed->elf_backend_setup_ulp)(info); -+ } - } - return true; - } -diff --git a/bfd/elfxx-target.h b/bfd/elfxx-target.h -index 4c6b1f20340..1f54509cd08 100644 ---- a/bfd/elfxx-target.h -+++ b/bfd/elfxx-target.h -@@ -771,6 +771,14 @@ - #define elf_backend_copy_special_section_fields _bfd_elf_copy_special_section_fields - #endif - -+#ifndef elf_backend_is_ulp_enabled -+#define elf_backend_is_ulp_enabled NULL -+#endif -+ -+#ifndef elf_backend_setup_ulp -+#define elf_backend_setup_ulp NULL -+#endif -+ - #ifndef elf_backend_compact_eh_encoding - #define elf_backend_compact_eh_encoding NULL - #endif -@@ -904,6 +912,8 @@ static const struct elf_backend_data elfNN_bed = - elf_backend_maybe_function_sym, - elf_backend_get_reloc_section, - elf_backend_copy_special_section_fields, -+ elf_backend_is_ulp_enabled, -+ elf_backend_setup_ulp, - elf_backend_link_order_error_handler, - elf_backend_relplt_name, - ELF_MACHINE_ALT1, -diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c -index 62d516aab8d..c0fb718d85c 100644 ---- a/bfd/elfxx-x86.c -+++ b/bfd/elfxx-x86.c -@@ -29,6 +29,8 @@ - #define ELF64_DYNAMIC_INTERPRETER "/lib/ld64.so.1" - #define ELFX32_DYNAMIC_INTERPRETER "/lib/ldx32.so.1" - -+#define ULP_ENTRY_LEN 16 -+ - bool - _bfd_x86_elf_mkobject (bfd *abfd) - { -@@ -984,6 +986,64 @@ _bfd_elf_x86_valid_reloc_p (asection *input_section, - return valid_p; - } - -+/* Check if input bfds are ulp-enabled by containing .ulp.track section */ -+ -+bool -+_bfd_x86_elf_is_ulp_enabled (struct bfd *input_bfd) -+{ -+ while (input_bfd != NULL) -+ for (; input_bfd != NULL; input_bfd = input_bfd->link.next) -+ { -+ if (input_bfd->section_count == 0) continue; -+ if (bfd_get_section_by_name (input_bfd, ".ulp.track")) return true; -+ } -+ return false; -+} -+ -+/* To be used by elf_link_hash_traverse when computing the ulp length */ -+ -+static bool -+bfd_x86_elf_link_compute_ulp (struct elf_link_hash_entry *h, void *data) -+{ -+ unsigned long *ulp_length = (unsigned long *) data; -+ -+ if (h->dynindx != -1 && h->type == STT_FUNC && !h->def_dynamic) -+ { -+ ++(*ulp_length); -+ } -+ return true; -+} -+ -+/* Fill the user-space live patching section */ -+ -+bool -+_bfd_x86_elf_setup_ulp (struct bfd_link_info *info) -+{ -+ struct elf_x86_link_hash_table *htab; -+ asection *ulp; -+ unsigned int ulp_length = 0; -+ -+ htab = elf_x86_hash_table (info, X86_64_ELF_DATA); -+ -+ elf_link_hash_traverse (elf_hash_table (info), -+ bfd_x86_elf_link_compute_ulp, -+ &ulp_length); -+ -+ ulp = htab->ulp; -+ -+ ulp->size = ulp_length * ULP_ENTRY_LEN; -+ -+ ulp->contents = (bfd_byte *) bfd_malloc (ulp->size); -+ if (ulp->contents == NULL) -+ return false; -+ -+ if (!ulp->contents) -+ return false; -+ -+ memset(ulp->contents, 0x00, ulp->size); -+ return true; -+} -+ - /* Set the sizes of the dynamic sections. */ - - bool -@@ -3030,7 +3090,26 @@ _bfd_x86_elf_link_setup_gnu_properties - - htab->plt_second = sec; - } -- } -+ -+ /* create sections to support user-space live patching */ -+ if (_bfd_x86_elf_is_ulp_enabled(info->input_bfds)) -+ { -+ flagword flags = (bed->dynamic_sec_flags -+ | SEC_ALLOC -+ | SEC_CODE -+ | SEC_LOAD -+ | SEC_READONLY); -+ -+ sec = bfd_make_section_anyway_with_flags (dynobj, ".ulp", flags); -+ if (sec == NULL) -+ info->callbacks->einfo (_("%F%P: failed to create ULP section\n")); -+ -+ if (!bfd_set_section_alignment (sec, plt_alignment)) -+ goto error_alignment; -+ -+ htab->ulp = sec; -+ } -+ } - - if (!info->no_ld_generated_unwind_info) - { -diff --git a/bfd/elfxx-x86.h b/bfd/elfxx-x86.h -index db11327e96f..89f51382216 100644 ---- a/bfd/elfxx-x86.h -+++ b/bfd/elfxx-x86.h -@@ -607,6 +607,7 @@ struct elf_x86_link_hash_table - asection *plt_second_eh_frame; - asection *plt_got; - asection *plt_got_eh_frame; -+ asection *ulp; - - sframe_encoder_ctx *plt_cfe_ctx; - asection *plt_sframe; -@@ -694,6 +695,12 @@ extern void _bfd_x86_elf_link_report_relative_reloc - (struct bfd_link_info *, asection *, struct elf_link_hash_entry *, - Elf_Internal_Sym *, const char *, const void *); - -+extern bool _bfd_x86_elf_is_ulp_enabled -+ (struct bfd *); -+ -+extern bool _bfd_x86_elf_setup_ulp -+ (struct bfd_link_info *); -+ - #define bfd_elf64_mkobject \ - _bfd_x86_elf_mkobject - #define bfd_elf32_mkobject \ -@@ -907,6 +914,10 @@ extern void _bfd_x86_elf_link_report_relative_reloc - _bfd_elf_x86_size_relative_relocs - #define elf_backend_finish_relative_relocs \ - _bfd_elf_x86_finish_relative_relocs -+#define elf_backend_is_ulp_enabled \ -+ _bfd_x86_elf_is_ulp_enabled -+#define elf_backend_setup_ulp \ -+ _bfd_x86_elf_setup_ulp - - #define ELF_P_ALIGN ELF_MINPAGESIZE - diff --git a/binutils-2.41-branch.diff.gz b/binutils-2.41-branch.diff.gz deleted file mode 100644 index bbb7608..0000000 --- a/binutils-2.41-branch.diff.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:562743882b1f8b096af610c5064debae354cb6406d4f35fecd7aba9301745c2d -size 82856 diff --git a/binutils-2.41.tar.bz2 b/binutils-2.41.tar.bz2 deleted file mode 100644 index 551d4ab..0000000 --- a/binutils-2.41.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a4c4bec052f7b8370024e60389e194377f3f48b56618418ea51067f67aaab30b -size 37132937 diff --git a/binutils-2.41.tar.bz2.sig b/binutils-2.41.tar.bz2.sig deleted file mode 100644 index 7e4fd14..0000000 --- a/binutils-2.41.tar.bz2.sig +++ /dev/null @@ -1,16 +0,0 @@ ------BEGIN PGP SIGNATURE----- - -iQIzBAABCAAdFiEEOiS8Ho+0CfqfFDcYE/zvid2ePE8FAmTGcUQACgkQE/zvid2e -PE94TRAAsAGH/rarx1cyAxa8x0yKjcQxERag3KE3NXN+OnRvw2bCOfVx62UA68Dt -nTCsJ46MTSECdMnMj+b6wGNXr4JDv57r4lkJxJN8TjAS+gWrouqbjvaTPOkros3L -1uElw3JLBznDktYvv2aJxBTLSPRXxaD2gMSjVYSZ5X43/ITbNx8mSToevZf2erXB -ev+FY5ROyjPwFZyXTEYqqbbdJ4A6+Fkp1UO9UiQv3leZde29ZSiBbNZUU4u5FH3x -qNq9zTd4Wlk72X1IEK/HFIVAcFbV2bV38V/r64tw5WRndYReXejtEQMm4kvzFZP4 -tcgzlTNViTN8FmVNI3P3pByFxC4VmNEbnNCGTDzltuC/RxypqMHWdkBIFU2Zpk4p -oAuRMx+7MJ0MqbZjV+VklZAqbl71oDAtUEi7gwKL/UFsRnmUbjRV00YQrXv1kmm8 -FAuK3UJbfX95MkMV9RSB4kwAdGTLv9CpWix+NGIQs17bnYXyuZPQ0OFuYM6xBDlo -IXTS3kvAgKLRni7EQ0xAh3CqQaE5vsLHf7WwTYvi4rWdt0B1hVpFJtpkAhWRrF/N -5Hey/pJgOaS2CqEpbijkfG6mGh/xNYK0T8HnHse1pKjl1U1QEgOtluVI3UF2C/H/ -FkrlClxbExTt9+UmuF/wdvttVj7hDooI7Hh11uvOVBabtlUc66E= -=6jCW ------END PGP SIGNATURE----- diff --git a/binutils-2.42-branch.diff.gz b/binutils-2.42-branch.diff.gz new file mode 100644 index 0000000..89f49a8 --- /dev/null +++ b/binutils-2.42-branch.diff.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e310b0aeaa62f992d0e7718e4221e6614100d97aa1bd29af90a06d2cb17a9660 +size 4239 diff --git a/binutils-2.42.tar.bz2 b/binutils-2.42.tar.bz2 new file mode 100644 index 0000000..1aaa44d --- /dev/null +++ b/binutils-2.42.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa54850ebda5064c72cd4ec2d9b056c294252991486350d9a97ab2a6dfdfaf12 +size 38254526 diff --git a/binutils-2.42.tar.bz2.sig b/binutils-2.42.tar.bz2.sig new file mode 100644 index 0000000..008f0f4 --- /dev/null +++ b/binutils-2.42.tar.bz2.sig @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCAAdFiEEOiS8Ho+0CfqfFDcYE/zvid2ePE8FAmW3wiYACgkQE/zvid2e +PE+HQBAAgC3yZJvJBx/0EtNESazNRpUG8G4pnd0505QYiibf+5243xXusDySXVu3 +iBt2UltDPauPu6eIUC7qY0xaZHhPuxqPHp6oSrB73iHZ7ovTdbZUX2060Ro8KXha +xN6+SPBHQGxP8XZw+ezexYNpwHBGM8CUos7UeeLpskuSBRGQC4bEhCOR8wuvU1w9 +gHTFuOY5zKgzzNMr1fPp/tRqUqZr8A7R1HN6tAs+4N2QWLk9Z/oF7h7Rkrzqe8gY +vmaakulfBTiqNIZJyTQhbhPiWrtLdElKyohBa/enqtTrktXoX/gwX21+LMqU+Oh3 +qE7CicjEZKGK/e8gl0BjcwgMeuUYYpZRUI1+A++YAu+YPSzLQL9iPy1FUovrYhHO +Fr/qV156MtnhkoaI7RVDLKl2s3CP451yjHSDcAsB51wq+QophC3z6yoTXKuKW8h6 +v2yW5ZaG5GfiPmRw+E46qsZWeb2pOUaGVU8ovaYWfLjrZ20WFZwZKLn55ZwZ35eW +g3RSff4f0lqr8x7jWDkf+KQMC2K0O6Sl0sgFoFE6PMPFcGe4r6oSIekNygaFgxBv +DrL0IA8y1prpmpnJrGbIg1+ciguAJKEBfcV9pNyq1IAHWu3aOMbWKb5pF0ukb0PY +OueuuH06uaBa7vgZxvbTiw0j5+PuTlGHa3Bsf4rlkChK2N/6deQ= +=5bYR +-----END PGP SIGNATURE----- diff --git a/binutils-use-less-memory.diff b/binutils-use-less-memory.diff deleted file mode 100644 index c17daff..0000000 --- a/binutils-use-less-memory.diff +++ /dev/null @@ -1,131 +0,0 @@ -We need this for libQt5WebEngine on i586. (bsc#1216908) - -From 836654b1177ab305c36fe7319f08f0ad5d4fac1b Mon Sep 17 00:00:00 2001 -From: Michael Matz -Date: Tue, 7 Nov 2023 16:54:44 +0100 -Subject: ld: Avoid overflows in string merging -To: binutils@sourceware.org - -as the bug report shows we had an overflow in the test if -hash table resizing is needed. Reorder the expression to avoid -that. There's still a bug somewhere in gracefully handling -failure in resizing (e.g. out of memory), but this pushes the -boundary for that occurring somewhen into the future and -immediately helps the reporter. - - bfd/ - - PR ld/31009 - * merge.c (NEEDS_RESIZE): New macro avoiding overflow. - (sec_merge_maybe_resize): Use it. - (sec_merge_hash_insert): Ditto. ---- - bfd/merge.c | 12 ++++++++---- - 1 file changed, 8 insertions(+), 4 deletions(-) - -diff --git a/bfd/merge.c b/bfd/merge.c -index 722e6659486..61ffab4d706 100644 ---- a/bfd/merge.c -+++ b/bfd/merge.c -@@ -94,6 +94,10 @@ struct sec_merge_hash - struct sec_merge_hash_entry **values; - }; - -+/* True when given NEWCOUNT and NBUCKETS indicate that the hash table needs -+ resizing. */ -+#define NEEDS_RESIZE(newcount, nbuckets) ((newcount) > (nbuckets) / 3 * 2) -+ - struct sec_merge_sec_info; - - /* Information per merged blob. This is the unit of merging and is -@@ -167,7 +171,7 @@ static bool - sec_merge_maybe_resize (struct sec_merge_hash *table, unsigned added) - { - struct bfd_hash_table *bfdtab = &table->table; -- if (bfdtab->count + added > table->nbuckets * 2 / 3) -+ if (NEEDS_RESIZE (bfdtab->count + added, table->nbuckets)) - { - unsigned i; - unsigned long newnb = table->nbuckets * 2; -@@ -175,7 +179,7 @@ sec_merge_maybe_resize (struct sec_merge_hash *table, unsigned added) - uint64_t *newl; - unsigned long alloc; - -- while (bfdtab->count + added > newnb * 2 / 3) -+ while (NEEDS_RESIZE (bfdtab->count + added, newnb)) - { - newnb *= 2; - if (!newnb) -@@ -239,8 +243,8 @@ sec_merge_hash_insert (struct sec_merge_hash *table, - hashp->alignment = 0; - hashp->u.suffix = NULL; - hashp->next = NULL; -- // We must not need resizing, otherwise _index is wrong -- BFD_ASSERT (bfdtab->count + 1 <= table->nbuckets * 2 / 3); -+ // We must not need resizing, otherwise the estimation was wrong -+ BFD_ASSERT (!NEEDS_RESIZE (bfdtab->count + 1, table->nbuckets)); - bfdtab->count++; - table->key_lens[_index] = (hash << 32) | (uint32_t)len; - table->values[_index] = hashp; --- -2.42.0 - - -From 21160d8a18dc21aafb8ab1026e13e5c524954a46 Mon Sep 17 00:00:00 2001 -From: Michael Matz -Date: Tue, 7 Nov 2023 17:12:46 +0100 -Subject: bfd: use less memory in string merging -To: binutils@sourceware.org - -the offset-to-entry mappings are allocated in blocks, which may -become a bit wasteful in case there are extremely many small -input files or sections. This made it so that a large project -(Qt5WebEngine) didn't build anymore on x86 32bit due to address -space limits. It barely fit into address space before the new -string merging, and then got pushed over the limit by this. - -So instead of leaving the waste reallocate the maps to their final -size once known. Now the link barely fits again. - -bfd/ - * merge.c (record_section): Reallocate offset maps to their - final size. ---- - bfd/merge.c | 14 ++++++++++++++ - 1 file changed, 14 insertions(+) - -diff --git a/bfd/merge.c b/bfd/merge.c -index 61ffab4d706..eeaa1a01fe3 100644 ---- a/bfd/merge.c -+++ b/bfd/merge.c -@@ -711,6 +711,7 @@ record_section (struct sec_merge_info *sinfo, - unsigned int align; - bfd_size_type amt; - bfd_byte *contents; -+ void *tmpptr; - - amt = sec->size; - if (sec->flags & SEC_STRINGS) -@@ -771,6 +772,19 @@ record_section (struct sec_merge_info *sinfo, - - free (contents); - contents = NULL; -+ -+ /* We allocate the ofsmap arrays in blocks of 2048 elements. -+ In case we have very many small input files/sections, -+ this might waste large amounts of memory, so reallocate these -+ arrays here to their true size. */ -+ amt = secinfo->noffsetmap + 1; -+ tmpptr = bfd_realloc (secinfo->map, amt * sizeof(secinfo->map[0])); -+ if (tmpptr) -+ secinfo->map = tmpptr; -+ tmpptr = bfd_realloc (secinfo->map_ofs, amt * sizeof(secinfo->map_ofs[0])); -+ if (tmpptr) -+ secinfo->map_ofs = tmpptr; -+ - /*printf ("ZZZ %s:%s %u entries\n", sec->owner->filename, sec->name, - (unsigned)secinfo->noffsetmap);*/ - --- -2.42.0 - diff --git a/binutils.changes b/binutils.changes index 5a6ee99..6f54dbb 100644 --- a/binutils.changes +++ b/binutils.changes @@ -1,3 +1,45 @@ +------------------------------------------------------------------- +Tue Jan 30 13:52:11 UTC 2024 - Michael Matz + +- Update to version 2.42: +* Add support for many aarch64 extensions: SVE2.1, SME2.1, B16B16, + RASv2, LSE128, GCS, CHK, SPECRES2, LRCPC3, THE, ITE, D128, XS and + flags to enable them: '+fcma', '+jscvt', '+frintts', '+flagm2', + '+rcpc2' and '+wfxt' +* Add experimantal support for GAS to synthesize call-frame-info for + some hand-written asm (--scfi=experimental) on x86-64. +* Add support for more x86-64 extensions: APX: 32 GPRs, NDD, PUSH2/POP2, + PUSHP/POPP; USER_MSR, AVX10.1, PBNDKB, SM4, SM3, SHA512, AVX-VNNI-INT16. +* Add support for more RISC-V extensions: T-Head v2.3.0, CORE-V v1.0, + SiFive VCIX v1.0. +* BPF assembler: ';' separates statements now, and does not introduce + line comments anymore (use '#' or '//' for this). +* x86-64 ld: Add '-z mark-plt/-z nomark-plt' to mark PLT entries with + dynamic tags. +* risc-v ld: Add '--[no-]check-uleb128'. +* New linker script directive: REVERSE, to be combined with SORT_BY_NAME + or SORT_BY_INIT_PRIORITY, reverses the generated order. +* New linker options --warn-execstack-objects (warn only about execstack + when input object files request it), and --error-execstack plus + --error-rxw-segments to convert the existing warnings into errors. +* objdump: Add -Z/--decompress to be used with -s/--full-contents to + decompress section contents before displaying. +* readelf: Add --extra-sym-info to be used with --symbols (currently + prints section name of references section index). +* objcopy: Add --set-section-flags for x86_64 to include + SHF_X86_64_LARGE. +* s390 disassembly: add target-specific disasm option 'insndesc', + as in "objdump -M insndesc" to display an instruction description + as comment along with the disassembly. +- Add binutils-2.42-branch.diff.gz. +- Rebased s390-biarch.diff. +- Removed binutils-2.41-branch.diff.gz, binutils-2.41.tar.bz2, + binutils-2.41-branch.diff.gz. +- Removed binutils-use-less-memory.diff and riscv-relro.patch + (both upstreamed). +- Removed add-ulp-section.diff, we use a different mechanism + for live patching since a long time. + ------------------------------------------------------------------- Thu Nov 9 16:51:13 UTC 2023 - Michael Matz diff --git a/binutils.spec b/binutils.spec index 808b094..8051873 100644 --- a/binutils.spec +++ b/binutils.spec @@ -1,7 +1,7 @@ # # spec file for package binutils # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2024 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -64,7 +64,7 @@ BuildRequires: zlib-devel %if %{suse_version} > 1500 BuildRequires: libzstd-devel %endif -Version: 2.41 +Version: 2.42 Release: 0 # disable libalternatives for now until it's changed to not @@ -131,7 +131,7 @@ Source: binutils-%{version}.tar.bz2 Source2: binutils-%{version}.tar.bz2.sig Source3: binutils.keyring Source4: baselibs.conf -Patch1: binutils-2.41-branch.diff.gz +Patch1: binutils-2.42-branch.diff.gz Patch3: binutils-skip-rpaths.patch Patch4: s390-biarch.diff Patch5: x86-64-biarch.patch @@ -154,9 +154,6 @@ Patch42: binutils-compat-old-behaviour.diff Patch43: binutils-revert-hlasm-insns.diff Patch44: binutils-revert-rela.diff Patch45: binutils-old-makeinfo.diff -Patch46: riscv-relro.patch -Patch47: binutils-use-less-memory.diff -Patch100: add-ulp-section.diff Patch90: cross-avr-nesc-as.patch Patch92: cross-avr-omit_section_dynsym.patch Patch93: cross-avr-size.patch @@ -285,9 +282,6 @@ cp ld/ldgram.y ld/ldgram.y.orig %if %{suse_version} < 1500 %patch45 -p1 %endif -%patch46 -p1 -%patch47 -p1 -%patch100 -p1 %if "%{TARGET}" == "avr" cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h %patch90 @@ -543,6 +537,7 @@ rm -rf %{buildroot}%{_prefix}/%{HOST}/bin mkdir -p %{buildroot}%{_prefix}/%{HOST}/bin ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} %{buildroot}%{_prefix}/%{HOST}/bin mv %{buildroot}%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir} +rm -f $RPM_BUILD_ROOT%{_libdir}/ldscripts/stamp ln -sf ../../%{_lib}/ldscripts %{buildroot}%{_prefix}/%{HOST}/lib/ldscripts # Install header files make -C libiberty install_to_libdir target_header_dir=/usr/include DESTDIR=%{buildroot} diff --git a/riscv-relro.patch b/riscv-relro.patch deleted file mode 100644 index 2bc913c..0000000 --- a/riscv-relro.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 7345d05aafde53a48d5a587a6d9c1778db78e0f3 Mon Sep 17 00:00:00 2001 -From: Andreas Schwab -Date: Thu, 21 Sep 2023 16:49:41 +0200 -Subject: [PATCH] RISC-V: Protect .got with relro - -Move .got before .data so that it can be protected with -zrelro. Also -separate .got.plt from .got if -znow is not in effect; the first two words -of .got.plt are placed within the relro region. - -ld: - PR ld/30877 - * emulparams/elf32lriscv-defs.sh (DATA_GOT, SEPARATE_GOTPLT): - Define. - * emulparams/elf64lriscv-defs.sh (SEPARATE_GOTPLT): Define. - * testsuite/ld-elf/binutils.exp (binutils_test): Remove riscv*-*-* - from relro_got expression. ---- - ld/emulparams/elf32lriscv-defs.sh | 4 ++++ - ld/emulparams/elf64lriscv-defs.sh | 1 + - ld/testsuite/ld-elf/binutils.exp | 1 - - 3 files changed, 5 insertions(+), 1 deletion(-) - -diff --git a/ld/emulparams/elf32lriscv-defs.sh b/ld/emulparams/elf32lriscv-defs.sh -index b823cedacab..016556168c3 100644 ---- a/ld/emulparams/elf32lriscv-defs.sh -+++ b/ld/emulparams/elf32lriscv-defs.sh -@@ -47,3 +47,7 @@ INITIAL_READONLY_SECTIONS="${RELOCATING+${CREATE_SHLIB-${INITIAL_READONLY_SECTIO - OTHER_END_SYMBOLS="${CREATE_SHLIB-__BSS_END__ = .; - __global_pointer$ = MIN(__SDATA_BEGIN__ + 0x800, - MAX(__DATA_BEGIN__ + 0x800, __BSS_END__ - 0x800));}" -+ -+# Put .got before .data -+DATA_GOT=" " -+SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 8 ? 8 : 0" -diff --git a/ld/emulparams/elf64lriscv-defs.sh b/ld/emulparams/elf64lriscv-defs.sh -index 84a700a5f58..ca15338428f 100644 ---- a/ld/emulparams/elf64lriscv-defs.sh -+++ b/ld/emulparams/elf64lriscv-defs.sh -@@ -1,2 +1,3 @@ - source_sh ${srcdir}/emulparams/elf32lriscv-defs.sh - ELFSIZE=64 -+SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 16 ? 16 : 0" -diff --git a/ld/testsuite/ld-elf/binutils.exp b/ld/testsuite/ld-elf/binutils.exp -index 674e8e9a575..b38e29ed6fb 100644 ---- a/ld/testsuite/ld-elf/binutils.exp -+++ b/ld/testsuite/ld-elf/binutils.exp -@@ -95,7 +95,6 @@ proc binutils_test { prog_name ld_options test {test_name ""} {readelf_options " - || [istarget "mips*-*-*"] \ - || [istarget "nios2*-*-*"] \ - || [istarget "or1k-*-*"] \ -- || [istarget "riscv*-*-*"] \ - || [istarget "sh*-*-*"] \ - || [istarget "x86_64-*-rdos*"])] - # Check if GNU_RELRO segment is generated. --- -2.42.0 - diff --git a/s390-biarch.diff b/s390-biarch.diff index d4b16ae..7eda2f1 100644 --- a/s390-biarch.diff +++ b/s390-biarch.diff @@ -1,11 +1,11 @@ Index: ld/emulparams/elf_s390.sh =================================================================== ---- ld/emulparams/elf_s390.sh.orig 2019-09-09 18:48:59.000000000 +0200 -+++ ld/emulparams/elf_s390.sh 2019-09-09 18:49:02.000000000 +0200 -@@ -12,3 +12,18 @@ GENERATE_SHLIB_SCRIPT=yes - GENERATE_PIE_SCRIPT=yes +--- ld/emulparams/elf_s390.sh.orig 2024-01-29 01:00:00.000000000 +0100 ++++ ld/emulparams/elf_s390.sh 2024-01-30 14:45:36.996853073 +0100 +@@ -13,3 +13,18 @@ GENERATE_PIE_SCRIPT=yes NO_SMALL_DATA=yes IREL_IN_PLT= + SYMBOL_ABI_ALIGNMENT=2 + +# Treat a host that matches the target with the possible exception of "x" +# in the name as if it were native.