Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package binutils for openSUSE:Factory checked in at 2023-11-10 12:28:45 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/binutils (Old) and /work/SRC/openSUSE:Factory/.binutils.new.17445 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "binutils" Fri Nov 10 12:28:45 2023 rev:167 rq:1124735 version:2.41 Changes: -------- --- /work/SRC/openSUSE:Factory/binutils/binutils.changes 2023-06-03 00:05:10.605263741 +0200 +++ /work/SRC/openSUSE:Factory/.binutils.new.17445/binutils.changes 2023-11-10 12:28:47.602474633 +0100 @@ -1,0 +2,94 @@ +Thu Nov 9 16:51:13 UTC 2023 - Michael Matz <m...@suse.com> + +- Add binutils-use-less-memory.diff to be a little nicer to 32bit + userspace and huge links. [bsc#1216908] + +------------------------------------------------------------------- +Mon Sep 25 11:12:43 UTC 2023 - Andreas Schwab <sch...@suse.de> + +- riscv-relro.patch: RISC-V: Protect .got with relro + +------------------------------------------------------------------- +Thu Sep 14 12:27:48 UTC 2023 - Michael Matz <m...@suse.com> + +- Add libzstd-devel to Requires of binutils-devel. (bsc#1215341) + +------------------------------------------------------------------- +Wed Aug 16 14:36:57 UTC 2023 - Michael Matz <m...@suse.com> + +- Update to version 2.41 [PED-5778]: +* The MIPS port now supports the Sony Interactive Entertainment Allegrex + processor, used with the PlayStation Portable, which implements the MIPS + II ISA along with a single-precision FPU and a few implementation-specific + integer instructions. +* Objdump's --private option can now be used on PE format files to display the + fields in the file header and section headers. +* New versioned release of libsframe: libsframe.so.1. This release introduces + versioned symbols with version node name LIBSFRAME_1.0. This release also + updates the ABI in an incompatible way: this includes removal of + sframe_get_funcdesc_with_addr API, change in the behavior of + sframe_fre_get_ra_offset and sframe_fre_get_fp_offset APIs. +* SFrame Version 2 is now the default (and only) format version supported by + gas, ld, readelf and objdump. +* Add command-line option, --strip-section-headers, to objcopy and strip to + remove ELF section header from ELF file. +* The RISC-V port now supports the following new standard extensions: + - Zicond (conditional zero instructions) + - Zfa (additional floating-point instructions) + - Zvbb, Zvbc, Zvkg, Zvkned, Zvknh[ab], Zvksed, Zvksh, Zvkn, Zvknc, Zvkng, + Zvks, Zvksc, Zvkg, Zvkt (vector crypto instructions) +* The RISC-V port now supports the following vendor-defined extensions: + - XVentanaCondOps +* Add support for Intel FRED, LKGS and AMX-COMPLEX instructions. +* A new .insn directive is recognized by x86 gas. +* Add SME2 support to the AArch64 port. +* The linker now accepts a command line option of --remap-inputs + <PATTERN>=<FILE> to relace any input file that matches <PATTERN> with + <FILE>. In addition the option --remap-inputs-file=<FILE> can be used to + specify a file containing any number of these remapping directives. +* The linker command line option --print-map-locals can be used to include + local symbols in a linker map. (ELF targets only). +* For most ELF based targets, if the --enable-linker-version option is used + then the version of the linker will be inserted as a string into the .comment + section. +* The linker script syntax has a new command for output sections: ASCIZ "string" + This will insert a zero-terminated string at the current location. +* Add command-line option, -z nosectionheader, to omit ELF section + header. +- Removed obsolete patches: binutils-2.40-branch.diff.gz, + riscv-dynamic-tls-reloc-pie.patch, riscv-pr22263-1.patch, + extensa-gcc-4_3-fix.diff . +- Add binutils-2.41-branch.diff.gz . +- Add binutils-old-makeinfo.diff for SLE-12 and older. +- Rebased aarch64-common-pagesize.patch and binutils-revert-rela.diff . +- Contains fixes for these non-CVEs (not security bugs per upstreams + SECURITY.md): + * bsc#1209642 aka CVE-2023-1579 aka PR29988 + * bsc#1210297 aka CVE-2023-1972 aka PR30285 + * bsc#1210733 aka CVE-2023-2222 aka PR29936 + * bsc#1213458 aka CVE-2021-32256 aka PR105039 (gcc) + * bsc#1214565 aka CVE-2020-19726 aka PR26240 + * bsc#1214567 aka CVE-2022-35206 aka PR29290 + * bsc#1214579 aka CVE-2022-35205 aka PR29289 + * bsc#1214580 aka CVE-2022-44840 aka PR29732 + * bsc#1214604 aka CVE-2022-45703 aka PR29799 + * bsc#1214611 aka CVE-2022-48065 aka PR29925 + * bsc#1214619 aka CVE-2022-48064 aka PR29922 + * bsc#1214620 aka CVE-2022-48063 aka PR29924 + * bsc#1214623 aka CVE-2022-47696 aka PR29677 + * bsc#1214624 aka CVE-2022-47695 aka PR29846 + * bsc#1214625 aka CVE-2022-47673 aka PR29876 + +------------------------------------------------------------------- +Thu Jul 13 14:31:57 UTC 2023 - Michael Matz <m...@suse.com> + +- Add binutils-disable-dt-relr.sh for an compatibility problem + caused by binutils-revert-rela.diff in SLE codestreams. + Needed for update of glibc as that would otherwise pick up + the broken relative relocs support. [bsc#1213282, PED-1435] +- This only existed only for a very short while in SLE-15, as the main + variant in devel:gcc subsumed this in binutils-revert-rela.diff. + Hence: +- Remove binutils-disable-dt-relr.sh as subsumed. + +------------------------------------------------------------------- Old: ---- binutils-2.40-branch.diff.gz binutils-2.40.tar.bz2 binutils-2.40.tar.bz2.sig extensa-gcc-4_3-fix.diff riscv-dynamic-tls-reloc-pie.patch riscv-pr22263-1.patch New: ---- binutils-2.41-branch.diff.gz binutils-2.41.tar.bz2 binutils-2.41.tar.bz2.sig binutils-old-makeinfo.diff binutils-use-less-memory.diff riscv-relro.patch BETA DEBUG BEGIN: Old: riscv-dynamic-tls-reloc-pie.patch, riscv-pr22263-1.patch, extensa-gcc-4_3-fix.diff . - Add binutils-2.41-branch.diff.gz . Old:- Removed obsolete patches: binutils-2.40-branch.diff.gz, riscv-dynamic-tls-reloc-pie.patch, riscv-pr22263-1.patch, extensa-gcc-4_3-fix.diff . Old:- Removed obsolete patches: binutils-2.40-branch.diff.gz, riscv-dynamic-tls-reloc-pie.patch, riscv-pr22263-1.patch, extensa-gcc-4_3-fix.diff . BETA DEBUG END: BETA DEBUG BEGIN: New:- Add binutils-2.41-branch.diff.gz . - Add binutils-old-makeinfo.diff for SLE-12 and older. - Rebased aarch64-common-pagesize.patch and binutils-revert-rela.diff . New: - Add binutils-use-less-memory.diff to be a little nicer to 32bit userspace and huge links. [bsc#1216908] New: - riscv-relro.patch: RISC-V: Protect .got with relro BETA DEBUG END: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ binutils.spec ++++++ --- /var/tmp/diff_new_pack.q7W3jn/_old 2023-11-10 12:28:48.826519530 +0100 +++ /var/tmp/diff_new_pack.q7W3jn/_new 2023-11-10 12:28:48.830519677 +0100 @@ -64,7 +64,7 @@ %if %{suse_version} > 1500 BuildRequires: libzstd-devel %endif -Version: 2.40 +Version: 2.41 Release: 0 # disable libalternatives for now until it's changed to not @@ -131,7 +131,7 @@ Source2: binutils-%{version}.tar.bz2.sig Source3: binutils.keyring Source4: baselibs.conf -Patch1: binutils-2.40-branch.diff.gz +Patch1: binutils-2.41-branch.diff.gz Patch3: binutils-skip-rpaths.patch Patch4: s390-biarch.diff Patch5: x86-64-biarch.patch @@ -153,9 +153,9 @@ Patch42: binutils-compat-old-behaviour.diff Patch43: binutils-revert-hlasm-insns.diff Patch44: binutils-revert-rela.diff -Patch45: extensa-gcc-4_3-fix.diff -Patch46: riscv-dynamic-tls-reloc-pie.patch -Patch47: riscv-pr22263-1.patch +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 @@ -197,6 +197,9 @@ Group: Development/Libraries/C and C++ Requires: binutils = %{version}-%{release} Requires: zlib-devel +%if %{suse_version} > 1500 +Requires: libzstd-devel +%endif Provides: binutils:/usr/include/bfd.h %description devel @@ -278,6 +281,8 @@ %patch42 -p1 %patch43 -p1 %patch44 -p1 +%endif +%if %{suse_version} < 1500 %patch45 -p1 %endif %patch46 -p1 ++++++ aarch64-common-pagesize.patch ++++++ --- /var/tmp/diff_new_pack.q7W3jn/_old 2023-11-10 12:28:48.882521584 +0100 +++ /var/tmp/diff_new_pack.q7W3jn/_new 2023-11-10 12:28:48.882521584 +0100 @@ -1,24 +1,24 @@ Change default common-page-size to 64K on aarch64. This enables the use of RELRO since we are using 64K pages. -Index: binutils-2.25.0/bfd/elfnn-aarch64.c +Index: binutils-2.41/bfd/elfnn-aarch64.c =================================================================== ---- binutils-2.25.0.orig/bfd/elfnn-aarch64.c -+++ binutils-2.25.0/bfd/elfnn-aarch64.c -@@ -9965,7 +9965,7 @@ const struct elf_size_info elfNN_aarch64_size_info = +--- binutils-2.41.orig/bfd/elfnn-aarch64.c 2023-07-03 01:00:00.000000000 +0200 ++++ binutils-2.41/bfd/elfnn-aarch64.c 2023-08-16 16:31:51.238779641 +0200 +@@ -10251,7 +10251,7 @@ const struct elf_size_info elfNN_aarch64 #define ELF_ARCH bfd_arch_aarch64 #define ELF_MACHINE_CODE EM_AARCH64 #define ELF_MAXPAGESIZE 0x10000 -#define ELF_COMMONPAGESIZE 0x1000 +#define ELF_COMMONPAGESIZE 0x10000 - #define bfd_elfNN_close_and_cleanup \ - elfNN_aarch64_close_and_cleanup -Index: binutils-2.25.0/gold/aarch64.cc + #define bfd_elfNN_bfd_free_cached_info \ + elfNN_aarch64_bfd_free_cached_info +Index: binutils-2.41/gold/aarch64.cc =================================================================== ---- binutils-2.25.0.orig/gold/aarch64.cc -+++ binutils-2.25.0/gold/aarch64.cc -@@ -791,7 +791,7 @@ const Target::Target_info Target_aarch64 +--- binutils-2.41.orig/gold/aarch64.cc 2023-07-03 01:00:00.000000000 +0200 ++++ binutils-2.41/gold/aarch64.cc 2023-08-16 16:28:35.959450565 +0200 +@@ -3555,7 +3555,7 @@ const Target::Target_info Target_aarch64 "/lib/ld.so.1", // program interpreter 0x400000, // default_text_segment_address 0x10000, // abi_pagesize (overridable by -z max-page-size) @@ -27,7 +27,7 @@ false, // isolate_execinstr 0, // rosegment_gap elfcpp::SHN_UNDEF, // small_common_shndx -@@ -818,7 +818,7 @@ const Target::Target_info Target_aarch64 +@@ -3584,7 +3584,7 @@ const Target::Target_info Target_aarch64 "/lib/ld.so.1", // program interpreter 0x400000, // default_text_segment_address 0x10000, // abi_pagesize (overridable by -z max-page-size) @@ -36,7 +36,7 @@ false, // isolate_execinstr 0, // rosegment_gap elfcpp::SHN_UNDEF, // small_common_shndx -@@ -845,7 +845,7 @@ const Target::Target_info Target_aarch64 +@@ -3613,7 +3613,7 @@ const Target::Target_info Target_aarch64 "/lib/ld.so.1", // program interpreter 0x400000, // default_text_segment_address 0x10000, // abi_pagesize (overridable by -z max-page-size) @@ -45,7 +45,7 @@ false, // isolate_execinstr 0, // rosegment_gap elfcpp::SHN_UNDEF, // small_common_shndx -@@ -872,7 +872,7 @@ const Target::Target_info Target_aarch64 +@@ -3642,7 +3642,7 @@ const Target::Target_info Target_aarch64 "/lib/ld.so.1", // program interpreter 0x400000, // default_text_segment_address 0x10000, // abi_pagesize (overridable by -z max-page-size) ++++++ binutils-2.40-branch.diff.gz -> binutils-2.41-branch.diff.gz ++++++ Binary files /work/SRC/openSUSE:Factory/binutils/binutils-2.40-branch.diff.gz and /work/SRC/openSUSE:Factory/.binutils.new.17445/binutils-2.41-branch.diff.gz differ ++++++ binutils-2.40.tar.bz2 -> binutils-2.41.tar.bz2 ++++++ /work/SRC/openSUSE:Factory/binutils/binutils-2.40.tar.bz2 /work/SRC/openSUSE:Factory/.binutils.new.17445/binutils-2.41.tar.bz2 differ: char 11, line 1 ++++++ binutils-old-makeinfo.diff ++++++ This reverts 8bb23cdbb498ff645bb0937bc8c0cb89e9e5ebd8 which requires newer makeinfo that we don't have in SLE12. diff --git a/bfd/doc/bfd.texi b/bfd/doc/bfd.texi index d8cc1ecca48..f348710845f 100644 --- a/bfd/doc/bfd.texi +++ b/bfd/doc/bfd.texi @@ -75,7 +75,7 @@ Copyright @copyright{} 1991-2023 Free Software Foundation, Inc. @end iftex @contents -@node Top +@node Top, Overview, (dir), (dir) @ifinfo This file documents the binary file descriptor library libbfd. @end ifinfo @@ -88,7 +88,7 @@ This file documents the binary file descriptor library libbfd. * BFD Index:: BFD Index @end menu -@node Overview +@node Overview, BFD front end, Top, Top @chapter Introduction @cindex BFD @cindex what is it? @@ -114,7 +114,7 @@ their own use, for greater efficiency. * What BFD Version 2 Can Do:: What BFD Version 2 Can Do @end menu -@node History +@node History, How It Works, Overview, Overview @section History One spur behind BFD was the desire, on the part of the GNU 960 team at @@ -137,7 +137,7 @@ and David Henkel-Wallace (@code{gumby@@cygnus.com}). -@node How It Works +@node How It Works, What BFD Version 2 Can Do, History, Overview @section How To Use BFD To use the library, include @file{bfd.h} and link with @file{libbfd.a}. @@ -188,11 +188,11 @@ and contain subordinate BFDs. This approach is fine for a.out and coff, but loses efficiency when applied to formats such as S-records and IEEE-695. -@node What BFD Version 2 Can Do +@node What BFD Version 2 Can Do, , How It Works, Overview @section What BFD Version 2 Can Do @include bfdsumm.texi -@node BFD front end +@node BFD front end, BFD back ends, Overview, Top @chapter BFD Front End @menu @@ -219,7 +219,7 @@ IEEE-695. @include bfdt.texi @include bfdio.texi -@node Memory Usage +@node Memory Usage, Sections, Miscellaneous, BFD front end @section Memory Usage BFD keeps all of its internal structures in obstacks. There is one obstack per open BFD file, into which the current state is stored. When a BFD is @@ -242,46 +242,46 @@ select the greediest open BFD, close it to reclaim the memory, perform some operation and reopen the BFD again, to get a fresh copy of the data structures. -@node Sections +@node Sections, Symbols, Memory Usage, BFD front end @include section.texi -@node Symbols +@node Symbols, Archives, Sections, BFD front end @include syms.texi -@node Archives +@node Archives, Formats, Symbols, BFD front end @include archive.texi -@node Formats +@node Formats, Relocations, Archives, BFD front end @include format.texi -@node Relocations +@node Relocations, Core Files, Formats, BFD front end @include reloc.texi -@node Core Files +@node Core Files, Targets, Relocations, BFD front end @include corefile.texi -@node Targets +@node Targets, Architectures, Core Files, BFD front end @include targets.texi -@node Architectures +@node Architectures, Opening and Closing, Targets, BFD front end @include archures.texi -@node Opening and Closing +@node Opening and Closing, Internal, Architectures, BFD front end @include opncls.texi -@node Internal +@node Internal, File Caching, Opening and Closing, BFD front end @include libbfd.texi -@node File Caching +@node File Caching, Linker Functions, Internal, BFD front end @include cache.texi -@node Linker Functions +@node Linker Functions, Hash Tables, File Caching, BFD front end @include linker.texi -@node Hash Tables +@node Hash Tables, , Linker Functions, BFD front end @include hash.texi -@node BFD back ends +@node BFD back ends, GNU Free Documentation License, BFD front end, Top @chapter BFD back ends @menu * What to Put Where:: @@ -293,28 +293,28 @@ structures. * srecord :: s-record backend @end ignore @end menu -@node What to Put Where +@node What to Put Where, aout, BFD back ends, BFD back ends @section What to Put Where All of BFD lives in one directory. -@node aout +@node aout, coff, What to Put Where, BFD back ends @include aoutx.texi -@node coff +@node coff, elf, aout, BFD back ends @include coffcode.texi -@node elf +@node elf, mmo, coff, BFD back ends @include elf.texi @c Leave this out until the file has some actual contents... @c @include elfcode.texi -@node mmo +@node mmo, , elf, BFD back ends @include mmo.texi -@node GNU Free Documentation License +@node GNU Free Documentation License, BFD Index, BFD back ends, Top @include fdl.texi -@node BFD Index +@node BFD Index, , GNU Free Documentation License, Top @unnumbered BFD Index @printindex cp diff --git a/bfd/doc/webassembly.texi b/bfd/doc/webassembly.texi index 5a05199d5f7..ad650943a1a 100644 --- a/bfd/doc/webassembly.texi +++ b/bfd/doc/webassembly.texi @@ -27,7 +27,7 @@ in some malformed WebAssembly modules being treated as valid. * File layout:: @end menu -@node File layout +@node File layout, WebAssembly @subsection File layout For a description of the WebAssembly file format, see @url{https://github.com/WebAssembly/design/blob/master/BinaryEncoding.md}. ++++++ binutils-revert-rela.diff ++++++ --- /var/tmp/diff_new_pack.q7W3jn/_old 2023-11-10 12:28:48.978525106 +0100 +++ /var/tmp/diff_new_pack.q7W3jn/_new 2023-11-10 12:28:48.982525253 +0100 @@ -26,10 +26,10 @@ proper predicate to guard themself) -Index: binutils-2.40/bfd/elf64-x86-64.c +Index: binutils-2.41/bfd/elf64-x86-64.c =================================================================== ---- binutils-2.40.orig/bfd/elf64-x86-64.c 2023-03-08 16:21:20.818669606 +0100 -+++ binutils-2.40/bfd/elf64-x86-64.c 2023-03-08 16:22:22.915673946 +0100 +--- binutils-2.41.orig/bfd/elf64-x86-64.c 2023-08-16 17:34:14.991069097 +0200 ++++ binutils-2.41/bfd/elf64-x86-64.c 2023-08-16 17:34:48.295651473 +0200 @@ -48,127 +48,127 @@ static reloc_howto_type x86_64_elf_howto bfd_elf_generic_reloc, "R_X86_64_NONE", false, 0, 0x00000000, false), @@ -208,21 +208,9 @@ false) }; -Index: binutils-2.40/gas/testsuite/gas/i386/i386.exp +Index: binutils-2.41/gas/testsuite/gas/i386/rela.d =================================================================== ---- binutils-2.40.orig/gas/testsuite/gas/i386/i386.exp 2023-03-08 16:21:20.818669606 +0100 -+++ binutils-2.40/gas/testsuite/gas/i386/i386.exp 2023-03-08 16:22:22.915673946 +0100 -@@ -1328,7 +1328,6 @@ if [gas_64_check] then { - run_list_test "reloc64" "--defsym _bad_=1" - run_list_test "x86-64-inval-tls" - run_dump_test "mixed-mode-reloc64" -- run_dump_test "rela" - run_dump_test "x86-64-ifunc" - run_dump_test "x86-64-opcode-inval" - run_dump_test "x86-64-opcode-inval-intel" -Index: binutils-2.40/gas/testsuite/gas/i386/rela.d -=================================================================== ---- binutils-2.40.orig/gas/testsuite/gas/i386/rela.d 2023-03-08 16:21:20.818669606 +0100 +--- binutils-2.41.orig/gas/testsuite/gas/i386/rela.d 2023-07-03 01:00:00.000000000 +0200 +++ /dev/null 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -#name: x86-64 rela relocs w/ non-zero relocated fields @@ -238,9 +226,9 @@ - -Contents of section .data: - 0+0 11 ?11 ?11 ?11 22 ?22 ?22 ?22 33 ?33 ?33 ?33 44 ?44 ?44 ?44 .* -Index: binutils-2.40/gas/testsuite/gas/i386/rela.s +Index: binutils-2.41/gas/testsuite/gas/i386/rela.s =================================================================== ---- binutils-2.40.orig/gas/testsuite/gas/i386/rela.s 2023-03-08 16:21:20.818669606 +0100 +--- binutils-2.41.orig/gas/testsuite/gas/i386/rela.s 2023-07-03 01:00:00.000000000 +0200 +++ /dev/null 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ -# Note: This file is also used by an ld test case. @@ -257,9 +245,9 @@ - - .reloc l, BFD_RELOC_64, q - .reloc q, BFD_RELOC_32, l -Index: binutils-2.40/ld/testsuite/ld-x86-64/rela.d +Index: binutils-2.41/ld/testsuite/ld-x86-64/rela.d =================================================================== ---- binutils-2.40.orig/ld/testsuite/ld-x86-64/rela.d 2023-03-08 16:21:20.818669606 +0100 +--- binutils-2.41.orig/ld/testsuite/ld-x86-64/rela.d 2023-07-03 01:00:00.000000000 +0200 +++ /dev/null 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ -#name: x86-64 rela relocs w/ non-zero relocated fields @@ -272,10 +260,10 @@ - -Contents of section .data: - *[0-9a-f]*0 .8 ?.. ?.. ?.. 00 ?00 ?00 ?00 .0 ?.. ?.. ?.. 44 ?44 ?44 ?44 .* -Index: binutils-2.40/ld/testsuite/ld-x86-64/x86-64.exp +Index: binutils-2.41/ld/testsuite/ld-x86-64/x86-64.exp =================================================================== ---- binutils-2.40.orig/ld/testsuite/ld-x86-64/x86-64.exp 2023-03-08 16:21:20.818669606 +0100 -+++ binutils-2.40/ld/testsuite/ld-x86-64/x86-64.exp 2023-03-08 16:22:22.919674009 +0100 +--- binutils-2.41.orig/ld/testsuite/ld-x86-64/x86-64.exp 2023-08-16 17:34:14.967068677 +0200 ++++ binutils-2.41/ld/testsuite/ld-x86-64/x86-64.exp 2023-08-16 17:34:48.295651473 +0200 @@ -286,7 +286,6 @@ run_dump_test "apic" run_dump_test "pcrel8" run_dump_test "pcrel16" @@ -299,11 +287,11 @@ if { ![skip_sframe_tests] } { run_dump_test "sframe-simple-1" -Index: binutils-2.40/binutils/testsuite/lib/binutils-common.exp +Index: binutils-2.41/binutils/testsuite/lib/binutils-common.exp =================================================================== ---- binutils-2.40.orig/binutils/testsuite/lib/binutils-common.exp 2023-03-08 16:21:20.818669606 +0100 -+++ binutils-2.40/binutils/testsuite/lib/binutils-common.exp 2023-03-08 16:22:22.919674009 +0100 -@@ -429,6 +429,8 @@ proc supports_persistent_section {} { +--- binutils-2.41.orig/binutils/testsuite/lib/binutils-common.exp 2023-07-03 01:00:00.000000000 +0200 ++++ binutils-2.41/binutils/testsuite/lib/binutils-common.exp 2023-08-16 17:34:48.295651473 +0200 +@@ -442,6 +442,8 @@ proc supports_persistent_section {} { # Whether a target support DT_RELR sections. proc supports_dt_relr {} { @@ -312,10 +300,10 @@ if { ([istarget x86_64-*-*] || [istarget i?86-*-*] || [istarget powerpc64*-*-*]) -Index: binutils-2.40/ld/emulparams/dt-relr.sh +Index: binutils-2.41/ld/emulparams/dt-relr.sh =================================================================== ---- binutils-2.40.orig/ld/emulparams/dt-relr.sh 2023-03-08 16:21:20.818669606 +0100 -+++ binutils-2.40/ld/emulparams/dt-relr.sh 2023-03-08 16:22:22.919674009 +0100 +--- binutils-2.41.orig/ld/emulparams/dt-relr.sh 2023-07-03 01:00:00.000000000 +0200 ++++ binutils-2.41/ld/emulparams/dt-relr.sh 2023-08-16 17:34:48.295651473 +0200 @@ -1,3 +1,8 @@ +if false; then + # on old codestreams we don't have the DT_RELR support in the dynamic @@ -331,10 +319,10 @@ PARSE_AND_LIST_ARGS_CASE_Z="$PARSE_AND_LIST_ARGS_CASE_Z $PARSE_AND_LIST_ARGS_CASE_Z_PACK_RELATIVE_RELOCS" + +fi -Index: binutils-2.40/ld/testsuite/ld-i386/i386.exp +Index: binutils-2.41/ld/testsuite/ld-i386/i386.exp =================================================================== ---- binutils-2.40.orig/ld/testsuite/ld-i386/i386.exp 2023-03-08 16:21:20.818669606 +0100 -+++ binutils-2.40/ld/testsuite/ld-i386/i386.exp 2023-03-08 16:22:22.919674009 +0100 +--- binutils-2.41.orig/ld/testsuite/ld-i386/i386.exp 2023-07-03 01:00:00.000000000 +0200 ++++ binutils-2.41/ld/testsuite/ld-i386/i386.exp 2023-08-16 17:34:48.299651544 +0200 @@ -507,8 +507,8 @@ run_dump_test "pr27491-1c" run_dump_test "pr27491-2" run_dump_test "pr27491-3" @@ -346,10 +334,10 @@ run_dump_test "pr28870" run_dump_test "pr28894" -Index: binutils-2.40/ld/testsuite/ld-powerpc/powerpc.exp +Index: binutils-2.41/ld/testsuite/ld-powerpc/powerpc.exp =================================================================== ---- binutils-2.40.orig/ld/testsuite/ld-powerpc/powerpc.exp 2023-01-14 01:00:00.000000000 +0100 -+++ binutils-2.40/ld/testsuite/ld-powerpc/powerpc.exp 2023-03-08 16:25:29.926698626 +0100 +--- binutils-2.41.orig/ld/testsuite/ld-powerpc/powerpc.exp 2023-08-16 17:34:14.895067416 +0200 ++++ binutils-2.41/ld/testsuite/ld-powerpc/powerpc.exp 2023-08-16 17:34:48.299651544 +0200 @@ -378,14 +378,14 @@ set ppc64elftests { "-a64" {abs-reloc.s} {{objdump {-sdr} abs-shared.d} @@ -373,4 +361,16 @@ } set ppceabitests { +Index: binutils-2.41/gas/testsuite/gas/i386/x86-64.exp +=================================================================== +--- binutils-2.41.orig/gas/testsuite/gas/i386/x86-64.exp 2023-07-03 01:00:00.000000000 +0200 ++++ binutils-2.41/gas/testsuite/gas/i386/x86-64.exp 2023-08-16 17:38:35.023605534 +0200 +@@ -588,7 +588,6 @@ if [is_elf_format] then { + run_list_test "reloc64" "--defsym _bad_=1" + run_list_test "x86-64-inval-tls" + run_dump_test "mixed-mode-reloc64" +- run_dump_test "rela" + run_dump_test "x86-64-ifunc" + if { [gas_32_check] } then { + run_dump_test "x86-64-opcode-inval" ++++++ binutils-use-less-memory.diff ++++++ We need this for libQt5WebEngine on i586. (bsc#1216908) >From 836654b1177ab305c36fe7319f08f0ad5d4fac1b Mon Sep 17 00:00:00 2001 From: Michael Matz <m...@suse.de> Date: Tue, 7 Nov 2023 16:54:44 +0100 Subject: ld: Avoid overflows in string merging To: binut...@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 <m...@suse.de> Date: Tue, 7 Nov 2023 17:12:46 +0100 Subject: bfd: use less memory in string merging To: binut...@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 ++++++ riscv-relro.patch ++++++ >From 7345d05aafde53a48d5a587a6d9c1778db78e0f3 Mon Sep 17 00:00:00 2001 From: Andreas Schwab <sch...@suse.de> 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