forked from pool/binutils
Fix invalid code in SLE due to revert-rela.diff
recent upstream changes interact with our old-codestream patch, applying relocs twice. Adjust the patch for that.
This commit is contained in:
@@ -25,11 +25,16 @@ of missing support in ld.so.
|
||||
(This also disables the few explicit dt-relr tests that don't use the
|
||||
proper predicate to guard themself)
|
||||
|
||||
(Eventually commit 73ab3b9825d2 introduced calls to _bfd_final_link_relocate
|
||||
into scan_relocs to check for overflows. But that also installs relocations,
|
||||
leading to the exact same behaviour of applying reloc values twice. To
|
||||
that end this patch further adds calls to _bfd_clear_contents after those
|
||||
ones.)
|
||||
|
||||
Index: binutils-2.45/bfd/elf64-x86-64.c
|
||||
===================================================================
|
||||
--- binutils-2.45.orig/bfd/elf64-x86-64.c 2025-10-14 16:03:09.919180481 +0200
|
||||
+++ binutils-2.45/bfd/elf64-x86-64.c 2025-10-14 16:06:15.962329377 +0200
|
||||
--- binutils-2.45.orig/bfd/elf64-x86-64.c 2025-10-21 18:04:37.580147518 +0200
|
||||
+++ binutils-2.45/bfd/elf64-x86-64.c 2025-10-21 18:04:39.438178825 +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,9 +213,45 @@ Index: binutils-2.45/bfd/elf64-x86-64.c
|
||||
false)
|
||||
};
|
||||
|
||||
@@ -2095,6 +2095,8 @@ elf_x86_64_convert_load_reloc (bfd *abfd
|
||||
r = _bfd_final_link_relocate (howto, abfd, input_section,
|
||||
contents, irel->r_offset,
|
||||
relocation, raddend);
|
||||
+ _bfd_clear_contents (howto, abfd, input_section,
|
||||
+ contents, irel->r_offset);
|
||||
if (r == bfd_reloc_overflow)
|
||||
return true;
|
||||
|
||||
@@ -2204,6 +2206,8 @@ elf_x86_64_convert_load_reloc (bfd *abfd
|
||||
r = _bfd_final_link_relocate (howto, abfd, input_section,
|
||||
contents, irel->r_offset,
|
||||
relocation, 0);
|
||||
+ _bfd_clear_contents (howto, abfd, input_section,
|
||||
+ contents, irel->r_offset);
|
||||
if (r == bfd_reloc_overflow)
|
||||
return true;
|
||||
|
||||
@@ -2317,6 +2321,8 @@ elf_x86_64_convert_load_reloc (bfd *abfd
|
||||
contents, irel->r_offset,
|
||||
relocation,
|
||||
raddend);
|
||||
+ _bfd_clear_contents (howto, abfd, input_section,
|
||||
+ contents, irel->r_offset);
|
||||
if (r == bfd_reloc_overflow)
|
||||
return true;
|
||||
|
||||
@@ -2415,6 +2421,8 @@ elf_x86_64_convert_load_reloc (bfd *abfd
|
||||
r = _bfd_final_link_relocate (howto, abfd, input_section,
|
||||
contents, irel->r_offset,
|
||||
relocation, 0);
|
||||
+ _bfd_clear_contents (howto, abfd, input_section,
|
||||
+ contents, irel->r_offset);
|
||||
if (r == bfd_reloc_overflow)
|
||||
return true;
|
||||
|
||||
Index: binutils-2.45/gas/testsuite/gas/i386/rela.d
|
||||
===================================================================
|
||||
--- binutils-2.45.orig/gas/testsuite/gas/i386/rela.d 2025-07-27 01:00:00.000000000 +0200
|
||||
--- binutils-2.45.orig/gas/testsuite/gas/i386/rela.d 2025-10-21 18:02:42.645210812 +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
|
||||
@@ -228,7 +269,7 @@ Index: binutils-2.45/gas/testsuite/gas/i386/rela.d
|
||||
- 0+0 11 ?11 ?11 ?11 22 ?22 ?22 ?22 33 ?33 ?33 ?33 44 ?44 ?44 ?44 .*
|
||||
Index: binutils-2.45/gas/testsuite/gas/i386/rela.s
|
||||
===================================================================
|
||||
--- binutils-2.45.orig/gas/testsuite/gas/i386/rela.s 2025-07-27 01:00:00.000000000 +0200
|
||||
--- binutils-2.45.orig/gas/testsuite/gas/i386/rela.s 2025-10-21 18:02:42.645210812 +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.
|
||||
@@ -247,7 +288,7 @@ Index: binutils-2.45/gas/testsuite/gas/i386/rela.s
|
||||
- .reloc q, BFD_RELOC_32, l
|
||||
Index: binutils-2.45/ld/testsuite/ld-x86-64/rela.d
|
||||
===================================================================
|
||||
--- binutils-2.45.orig/ld/testsuite/ld-x86-64/rela.d 2025-07-27 01:00:00.000000000 +0200
|
||||
--- binutils-2.45.orig/ld/testsuite/ld-x86-64/rela.d 2025-10-21 18:02:42.645210812 +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
|
||||
@@ -262,8 +303,8 @@ Index: binutils-2.45/ld/testsuite/ld-x86-64/rela.d
|
||||
- *[0-9a-f]*0 .8 ?.. ?.. ?.. 00 ?00 ?00 ?00 .0 ?.. ?.. ?.. 44 ?44 ?44 ?44 .*
|
||||
Index: binutils-2.45/ld/testsuite/ld-x86-64/x86-64.exp
|
||||
===================================================================
|
||||
--- binutils-2.45.orig/ld/testsuite/ld-x86-64/x86-64.exp 2025-10-14 15:59:55.172884281 +0200
|
||||
+++ binutils-2.45/ld/testsuite/ld-x86-64/x86-64.exp 2025-10-14 16:06:15.962329377 +0200
|
||||
--- binutils-2.45.orig/ld/testsuite/ld-x86-64/x86-64.exp 2025-10-21 18:02:59.867500986 +0200
|
||||
+++ binutils-2.45/ld/testsuite/ld-x86-64/x86-64.exp 2025-10-21 18:13:03.092666336 +0200
|
||||
@@ -314,7 +314,6 @@ run_dump_test "apic"
|
||||
run_dump_test "pcrel8"
|
||||
run_dump_test "pcrel16"
|
||||
@@ -287,10 +328,19 @@ Index: binutils-2.45/ld/testsuite/ld-x86-64/x86-64.exp
|
||||
run_dump_test "pr30787"
|
||||
run_dump_test "pr31047"
|
||||
run_dump_test "pr31047-x32"
|
||||
@@ -2335,7 +2334,7 @@ if { [check_compiler_available] } {
|
||||
] \
|
||||
[list \
|
||||
"Build mark-plt-2.so" \
|
||||
- "-shared -Wl,--no-as-needed,-z,mark-plt,-z,nopack-relative-relocs" \
|
||||
+ "-shared -Wl,--no-as-needed,-z,mark-plt" \
|
||||
"-fPIC" \
|
||||
{ mark-plt-2.s } \
|
||||
{{readelf {-W --version-info} mark-plt-2.rd}} \
|
||||
Index: binutils-2.45/binutils/testsuite/lib/binutils-common.exp
|
||||
===================================================================
|
||||
--- binutils-2.45.orig/binutils/testsuite/lib/binutils-common.exp 2025-07-27 01:00:00.000000000 +0200
|
||||
+++ binutils-2.45/binutils/testsuite/lib/binutils-common.exp 2025-10-14 16:06:15.962329377 +0200
|
||||
--- binutils-2.45.orig/binutils/testsuite/lib/binutils-common.exp 2025-10-21 18:02:42.645210812 +0200
|
||||
+++ binutils-2.45/binutils/testsuite/lib/binutils-common.exp 2025-10-21 18:04:39.439178842 +0200
|
||||
@@ -468,6 +468,8 @@ proc supports_persistent_section {} {
|
||||
|
||||
# Whether a target support DT_RELR sections.
|
||||
@@ -302,8 +352,8 @@ Index: binutils-2.45/binutils/testsuite/lib/binutils-common.exp
|
||||
|| [istarget powerpc64*-*-*]
|
||||
Index: binutils-2.45/ld/emulparams/dt-relr.sh
|
||||
===================================================================
|
||||
--- binutils-2.45.orig/ld/emulparams/dt-relr.sh 2025-07-27 01:00:00.000000000 +0200
|
||||
+++ binutils-2.45/ld/emulparams/dt-relr.sh 2025-10-14 16:06:15.963329393 +0200
|
||||
--- binutils-2.45.orig/ld/emulparams/dt-relr.sh 2025-10-21 18:02:42.645210812 +0200
|
||||
+++ binutils-2.45/ld/emulparams/dt-relr.sh 2025-10-21 18:04:39.439178842 +0200
|
||||
@@ -1,3 +1,8 @@
|
||||
+if false; then
|
||||
+ # on old codestreams we don't have the DT_RELR support in the dynamic
|
||||
@@ -321,8 +371,8 @@ Index: binutils-2.45/ld/emulparams/dt-relr.sh
|
||||
+fi
|
||||
Index: binutils-2.45/ld/testsuite/ld-i386/i386.exp
|
||||
===================================================================
|
||||
--- binutils-2.45.orig/ld/testsuite/ld-i386/i386.exp 2025-10-14 15:54:33.615441756 +0200
|
||||
+++ binutils-2.45/ld/testsuite/ld-i386/i386.exp 2025-10-14 16:06:15.963329393 +0200
|
||||
--- binutils-2.45.orig/ld/testsuite/ld-i386/i386.exp 2025-10-21 18:02:42.645210812 +0200
|
||||
+++ binutils-2.45/ld/testsuite/ld-i386/i386.exp 2025-10-21 18:04:39.439178842 +0200
|
||||
@@ -513,8 +513,8 @@ run_dump_test "pr27491-1c"
|
||||
run_dump_test "pr27491-2"
|
||||
run_dump_test "pr27491-3"
|
||||
@@ -336,8 +386,8 @@ Index: binutils-2.45/ld/testsuite/ld-i386/i386.exp
|
||||
run_dump_test "pr30787"
|
||||
Index: binutils-2.45/ld/testsuite/ld-powerpc/powerpc.exp
|
||||
===================================================================
|
||||
--- binutils-2.45.orig/ld/testsuite/ld-powerpc/powerpc.exp 2025-07-27 01:00:00.000000000 +0200
|
||||
+++ binutils-2.45/ld/testsuite/ld-powerpc/powerpc.exp 2025-10-14 16:06:15.963329393 +0200
|
||||
--- binutils-2.45.orig/ld/testsuite/ld-powerpc/powerpc.exp 2025-10-21 18:02:42.645210812 +0200
|
||||
+++ binutils-2.45/ld/testsuite/ld-powerpc/powerpc.exp 2025-10-21 18:04:39.439178842 +0200
|
||||
@@ -378,14 +378,14 @@ set ppc64elftests {
|
||||
"-a64" {abs-reloc.s}
|
||||
{{objdump {-sdr} abs-shared.d}
|
||||
@@ -363,8 +413,8 @@ Index: binutils-2.45/ld/testsuite/ld-powerpc/powerpc.exp
|
||||
set ppceabitests {
|
||||
Index: binutils-2.45/gas/testsuite/gas/i386/x86-64.exp
|
||||
===================================================================
|
||||
--- binutils-2.45.orig/gas/testsuite/gas/i386/x86-64.exp 2025-07-27 01:00:00.000000000 +0200
|
||||
+++ binutils-2.45/gas/testsuite/gas/i386/x86-64.exp 2025-10-14 16:06:15.963329393 +0200
|
||||
--- binutils-2.45.orig/gas/testsuite/gas/i386/x86-64.exp 2025-10-21 18:02:42.645210812 +0200
|
||||
+++ binutils-2.45/gas/testsuite/gas/i386/x86-64.exp 2025-10-21 18:04:39.439178842 +0200
|
||||
@@ -705,7 +705,6 @@ if [is_elf_format] then {
|
||||
run_dump_test "x86-64-tls"
|
||||
run_list_test "x86-64-inval-tls"
|
||||
|
||||
Reference in New Issue
Block a user