2022-10-17 17:04:37 +02:00
|
|
|
This is for bsc#1198422
|
|
|
|
|
|
|
|
This essentially reverts commit 17c6c3b99156fe82c1e637e1a5fd9f163ac788c8
|
|
|
|
to return back to old behaviour regarding RELA relocs: old binutils
|
|
|
|
used the relocated field as additional addend, relying on it being
|
|
|
|
zero for normal RELA behaviour. This isn't correct according to the
|
|
|
|
psABI, but some old tools (e.g. older ICC) emit object files where
|
|
|
|
the in-field "addend" is to be used (and record the zero in the A field
|
|
|
|
of the RELA reloc). This change was included starting with binutils 2.37,
|
|
|
|
but for older codestreams we want to be compatible with the old (buggy)
|
|
|
|
behaviour. We revert the change for all relocs and not just those for
|
|
|
|
which it arguably made some sense or where we had a report about (PLT32).
|
|
|
|
|
2023-03-08 16:34:27 +01:00
|
|
|
On x86-64 this reversion interacts with the linker support for DT_RELR,
|
|
|
|
i.e. packed relative relocs. To calculate the info for that the linker
|
|
|
|
goes through the input relocation multiple times and the obvious result
|
|
|
|
with the above reversion happens: the addends are added multiple times
|
|
|
|
resulting in those packed relative relocs to all have an addend twice
|
|
|
|
as large as wanted. As old codestreams don't have the necessary support
|
|
|
|
for DT_RELR anyway (in the dynamic linker) we disable it whole-sale as
|
|
|
|
well. Only x86-64 and ppc64(le) have packed relative relocs
|
|
|
|
and while ppc64le DT_RELR support would work there's still the problem
|
|
|
|
of missing support in ld.so.
|
2022-10-17 17:04:37 +02:00
|
|
|
|
2023-03-08 16:34:27 +01:00
|
|
|
(This also disables the few explicit dt-relr tests that don't use the
|
|
|
|
proper predicate to guard themself)
|
|
|
|
|
|
|
|
|
2024-01-30 18:07:36 +01:00
|
|
|
Index: binutils-2.42/bfd/elf64-x86-64.c
|
2022-10-17 17:04:37 +02:00
|
|
|
===================================================================
|
2024-01-30 18:07:36 +01:00
|
|
|
--- binutils-2.42.orig/bfd/elf64-x86-64.c 2024-01-30 16:59:42.442361796 +0100
|
|
|
|
+++ binutils-2.42/bfd/elf64-x86-64.c 2024-01-30 17:54:25.162977883 +0100
|
2023-03-08 16:34:27 +01:00
|
|
|
@@ -48,127 +48,127 @@ static reloc_howto_type x86_64_elf_howto
|
2022-10-17 17:04:37 +02:00
|
|
|
bfd_elf_generic_reloc, "R_X86_64_NONE", false, 0, 0x00000000,
|
|
|
|
false),
|
|
|
|
HOWTO(R_X86_64_64, 0, 8, 64, false, 0, complain_overflow_dont,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_64", false, 0, MINUS_ONE,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_64", false, MINUS_ONE, MINUS_ONE,
|
|
|
|
false),
|
|
|
|
HOWTO(R_X86_64_PC32, 0, 4, 32, true, 0, complain_overflow_signed,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_PC32", false, 0, 0xffffffff,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_PC32", false, 0xffffffff, 0xffffffff,
|
|
|
|
true),
|
|
|
|
HOWTO(R_X86_64_GOT32, 0, 4, 32, false, 0, complain_overflow_signed,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_GOT32", false, 0, 0xffffffff,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_GOT32", false, 0xffffffff, 0xffffffff,
|
|
|
|
false),
|
|
|
|
HOWTO(R_X86_64_PLT32, 0, 4, 32, true, 0, complain_overflow_signed,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_PLT32", false, 0, 0xffffffff,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_PLT32", false, 0xffffffff, 0xffffffff,
|
|
|
|
true),
|
|
|
|
HOWTO(R_X86_64_COPY, 0, 4, 32, false, 0, complain_overflow_bitfield,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_COPY", false, 0, 0xffffffff,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_COPY", false, 0xffffffff, 0xffffffff,
|
|
|
|
false),
|
|
|
|
HOWTO(R_X86_64_GLOB_DAT, 0, 8, 64, false, 0, complain_overflow_dont,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_GLOB_DAT", false, 0, MINUS_ONE,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_GLOB_DAT", false, MINUS_ONE, MINUS_ONE,
|
|
|
|
false),
|
|
|
|
HOWTO(R_X86_64_JUMP_SLOT, 0, 8, 64, false, 0, complain_overflow_dont,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_JUMP_SLOT", false, 0, MINUS_ONE,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_JUMP_SLOT", false, MINUS_ONE, MINUS_ONE,
|
|
|
|
false),
|
|
|
|
HOWTO(R_X86_64_RELATIVE, 0, 8, 64, false, 0, complain_overflow_dont,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_RELATIVE", false, 0, MINUS_ONE,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_RELATIVE", false, MINUS_ONE, MINUS_ONE,
|
|
|
|
false),
|
|
|
|
HOWTO(R_X86_64_GOTPCREL, 0, 4, 32, true, 0, complain_overflow_signed,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_GOTPCREL", false, 0, 0xffffffff,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_GOTPCREL", false, 0xffffffff, 0xffffffff,
|
|
|
|
true),
|
|
|
|
HOWTO(R_X86_64_32, 0, 4, 32, false, 0, complain_overflow_unsigned,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_32", false, 0, 0xffffffff,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_32", false, 0xffffffff, 0xffffffff,
|
|
|
|
false),
|
|
|
|
HOWTO(R_X86_64_32S, 0, 4, 32, false, 0, complain_overflow_signed,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_32S", false, 0, 0xffffffff,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_32S", false, 0xffffffff, 0xffffffff,
|
|
|
|
false),
|
|
|
|
HOWTO(R_X86_64_16, 0, 2, 16, false, 0, complain_overflow_bitfield,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_16", false, 0, 0xffff, false),
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_16", false, 0xffff, 0xffff, false),
|
|
|
|
HOWTO(R_X86_64_PC16, 0, 2, 16, true, 0, complain_overflow_bitfield,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_PC16", false, 0, 0xffff, true),
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_PC16", false, 0xffff, 0xffff, true),
|
|
|
|
HOWTO(R_X86_64_8, 0, 1, 8, false, 0, complain_overflow_bitfield,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_8", false, 0, 0xff, false),
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_8", false, 0xff, 0xff, false),
|
|
|
|
HOWTO(R_X86_64_PC8, 0, 1, 8, true, 0, complain_overflow_signed,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_PC8", false, 0, 0xff, true),
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_PC8", false, 0xff, 0xff, true),
|
|
|
|
HOWTO(R_X86_64_DTPMOD64, 0, 8, 64, false, 0, complain_overflow_dont,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_DTPMOD64", false, 0, MINUS_ONE,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_DTPMOD64", false, MINUS_ONE, MINUS_ONE,
|
|
|
|
false),
|
|
|
|
HOWTO(R_X86_64_DTPOFF64, 0, 8, 64, false, 0, complain_overflow_dont,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_DTPOFF64", false, 0, MINUS_ONE,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_DTPOFF64", false, MINUS_ONE, MINUS_ONE,
|
|
|
|
false),
|
|
|
|
HOWTO(R_X86_64_TPOFF64, 0, 8, 64, false, 0, complain_overflow_dont,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_TPOFF64", false, 0, MINUS_ONE,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_TPOFF64", false, MINUS_ONE, MINUS_ONE,
|
|
|
|
false),
|
|
|
|
HOWTO(R_X86_64_TLSGD, 0, 4, 32, true, 0, complain_overflow_signed,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_TLSGD", false, 0, 0xffffffff,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_TLSGD", false, 0xffffffff, 0xffffffff,
|
|
|
|
true),
|
|
|
|
HOWTO(R_X86_64_TLSLD, 0, 4, 32, true, 0, complain_overflow_signed,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_TLSLD", false, 0, 0xffffffff,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_TLSLD", false, 0xffffffff, 0xffffffff,
|
|
|
|
true),
|
|
|
|
HOWTO(R_X86_64_DTPOFF32, 0, 4, 32, false, 0, complain_overflow_signed,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_DTPOFF32", false, 0, 0xffffffff,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_DTPOFF32", false, 0xffffffff, 0xffffffff,
|
|
|
|
false),
|
|
|
|
HOWTO(R_X86_64_GOTTPOFF, 0, 4, 32, true, 0, complain_overflow_signed,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_GOTTPOFF", false, 0, 0xffffffff,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_GOTTPOFF", false, 0xffffffff, 0xffffffff,
|
|
|
|
true),
|
|
|
|
HOWTO(R_X86_64_TPOFF32, 0, 4, 32, false, 0, complain_overflow_signed,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_TPOFF32", false, 0, 0xffffffff,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_TPOFF32", false, 0xffffffff, 0xffffffff,
|
|
|
|
false),
|
|
|
|
HOWTO(R_X86_64_PC64, 0, 8, 64, true, 0, complain_overflow_dont,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_PC64", false, 0, MINUS_ONE,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_PC64", false, MINUS_ONE, MINUS_ONE,
|
|
|
|
true),
|
|
|
|
HOWTO(R_X86_64_GOTOFF64, 0, 8, 64, false, 0, complain_overflow_dont,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_GOTOFF64", false, 0, MINUS_ONE,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_GOTOFF64", false, MINUS_ONE, MINUS_ONE,
|
|
|
|
false),
|
|
|
|
HOWTO(R_X86_64_GOTPC32, 0, 4, 32, true, 0, complain_overflow_signed,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_GOTPC32", false, 0, 0xffffffff,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_GOTPC32", false, 0xffffffff, 0xffffffff,
|
|
|
|
true),
|
|
|
|
HOWTO(R_X86_64_GOT64, 0, 8, 64, false, 0, complain_overflow_signed,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_GOT64", false, 0, MINUS_ONE,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_GOT64", false, MINUS_ONE, MINUS_ONE,
|
|
|
|
false),
|
|
|
|
HOWTO(R_X86_64_GOTPCREL64, 0, 8, 64, true, 0, complain_overflow_signed,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_GOTPCREL64", false, 0, MINUS_ONE,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_GOTPCREL64", false, MINUS_ONE, MINUS_ONE,
|
|
|
|
true),
|
|
|
|
HOWTO(R_X86_64_GOTPC64, 0, 8, 64, true, 0, complain_overflow_signed,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_GOTPC64", false, 0, MINUS_ONE,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_GOTPC64", false, MINUS_ONE, MINUS_ONE,
|
|
|
|
true),
|
|
|
|
HOWTO(R_X86_64_GOTPLT64, 0, 8, 64, false, 0, complain_overflow_signed,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_GOTPLT64", false, 0, MINUS_ONE,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_GOTPLT64", false, MINUS_ONE, MINUS_ONE,
|
|
|
|
false),
|
|
|
|
HOWTO(R_X86_64_PLTOFF64, 0, 8, 64, false, 0, complain_overflow_signed,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_PLTOFF64", false, 0, MINUS_ONE,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_PLTOFF64", false, MINUS_ONE, MINUS_ONE,
|
|
|
|
false),
|
|
|
|
HOWTO(R_X86_64_SIZE32, 0, 4, 32, false, 0, complain_overflow_unsigned,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_SIZE32", false, 0, 0xffffffff,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_SIZE32", false, 0xffffffff, 0xffffffff,
|
|
|
|
false),
|
|
|
|
HOWTO(R_X86_64_SIZE64, 0, 8, 64, false, 0, complain_overflow_dont,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_SIZE64", false, 0, MINUS_ONE,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_SIZE64", false, MINUS_ONE, MINUS_ONE,
|
|
|
|
false),
|
|
|
|
HOWTO(R_X86_64_GOTPC32_TLSDESC, 0, 4, 32, true, 0,
|
|
|
|
complain_overflow_bitfield, bfd_elf_generic_reloc,
|
|
|
|
- "R_X86_64_GOTPC32_TLSDESC", false, 0, 0xffffffff, true),
|
|
|
|
+ "R_X86_64_GOTPC32_TLSDESC", false, 0xffffffff, 0xffffffff, true),
|
|
|
|
HOWTO(R_X86_64_TLSDESC_CALL, 0, 0, 0, false, 0,
|
|
|
|
complain_overflow_dont, bfd_elf_generic_reloc,
|
|
|
|
"R_X86_64_TLSDESC_CALL",
|
|
|
|
false, 0, 0, false),
|
|
|
|
HOWTO(R_X86_64_TLSDESC, 0, 8, 64, false, 0,
|
|
|
|
complain_overflow_dont, bfd_elf_generic_reloc,
|
|
|
|
- "R_X86_64_TLSDESC", false, 0, MINUS_ONE, false),
|
|
|
|
+ "R_X86_64_TLSDESC", false, MINUS_ONE, MINUS_ONE, false),
|
|
|
|
HOWTO(R_X86_64_IRELATIVE, 0, 8, 64, false, 0, complain_overflow_dont,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_IRELATIVE", false, 0, MINUS_ONE,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_IRELATIVE", false, MINUS_ONE, MINUS_ONE,
|
|
|
|
false),
|
|
|
|
HOWTO(R_X86_64_RELATIVE64, 0, 8, 64, false, 0, complain_overflow_dont,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_RELATIVE64", false, 0, MINUS_ONE,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_RELATIVE64", false, MINUS_ONE, MINUS_ONE,
|
|
|
|
false),
|
|
|
|
HOWTO(R_X86_64_PC32_BND, 0, 4, 32, true, 0, complain_overflow_signed,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_PC32_BND", false, 0, 0xffffffff,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_PC32_BND", false, 0xffffffff, 0xffffffff,
|
|
|
|
true),
|
|
|
|
HOWTO(R_X86_64_PLT32_BND, 0, 4, 32, true, 0, complain_overflow_signed,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_PLT32_BND", false, 0, 0xffffffff,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_PLT32_BND", false, 0xffffffff, 0xffffffff,
|
|
|
|
true),
|
|
|
|
HOWTO(R_X86_64_GOTPCRELX, 0, 4, 32, true, 0, complain_overflow_signed,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_GOTPCRELX", false, 0, 0xffffffff,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_GOTPCRELX", false, 0xffffffff, 0xffffffff,
|
|
|
|
true),
|
|
|
|
HOWTO(R_X86_64_REX_GOTPCRELX, 0, 4, 32, true, 0, complain_overflow_signed,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_REX_GOTPCRELX", false, 0, 0xffffffff,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_REX_GOTPCRELX", false, 0xffffffff, 0xffffffff,
|
|
|
|
true),
|
2024-01-30 18:07:36 +01:00
|
|
|
HOWTO(R_X86_64_CODE_4_GOTPCRELX, 0, 4, 32, true, 0, complain_overflow_signed,
|
|
|
|
bfd_elf_generic_reloc, "R_X86_64_CODE_4_GOTPCRELX", false, 0, 0xffffffff,
|
|
|
|
@@ -198,7 +198,7 @@ static reloc_howto_type x86_64_elf_howto
|
2022-10-17 17:04:37 +02:00
|
|
|
|
|
|
|
/* Use complain_overflow_bitfield on R_X86_64_32 for x32. */
|
|
|
|
HOWTO(R_X86_64_32, 0, 4, 32, false, 0, complain_overflow_bitfield,
|
|
|
|
- bfd_elf_generic_reloc, "R_X86_64_32", false, 0, 0xffffffff,
|
|
|
|
+ bfd_elf_generic_reloc, "R_X86_64_32", false, 0xffffffff, 0xffffffff,
|
|
|
|
false)
|
|
|
|
};
|
|
|
|
|
2024-01-30 18:07:36 +01:00
|
|
|
Index: binutils-2.42/gas/testsuite/gas/i386/rela.d
|
2022-10-17 17:04:37 +02:00
|
|
|
===================================================================
|
2024-01-30 18:07:36 +01:00
|
|
|
--- binutils-2.42.orig/gas/testsuite/gas/i386/rela.d 2024-01-29 01:00:00.000000000 +0100
|
2022-10-17 17:04:37 +02:00
|
|
|
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
|
|
|
|
@@ -1,13 +0,0 @@
|
|
|
|
-#name: x86-64 rela relocs w/ non-zero relocated fields
|
|
|
|
-#objdump: -rsj .data
|
|
|
|
-
|
|
|
|
-.*: +file format .*
|
|
|
|
-
|
|
|
|
-RELOCATION RECORDS FOR \[\.data\]:
|
|
|
|
-
|
|
|
|
-OFFSET +TYPE +VALUE
|
|
|
|
-0*0 R_X86_64_64 *q
|
|
|
|
-0*8 R_X86_64_32 *l
|
|
|
|
-
|
|
|
|
-Contents of section .data:
|
|
|
|
- 0+0 11 ?11 ?11 ?11 22 ?22 ?22 ?22 33 ?33 ?33 ?33 44 ?44 ?44 ?44 .*
|
2024-01-30 18:07:36 +01:00
|
|
|
Index: binutils-2.42/gas/testsuite/gas/i386/rela.s
|
2022-10-17 17:04:37 +02:00
|
|
|
===================================================================
|
2024-01-30 18:07:36 +01:00
|
|
|
--- binutils-2.42.orig/gas/testsuite/gas/i386/rela.s 2024-01-29 01:00:00.000000000 +0100
|
2022-10-17 17:04:37 +02:00
|
|
|
+++ /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.
|
|
|
|
-
|
|
|
|
- .text
|
|
|
|
- .global _start
|
|
|
|
-_start:
|
|
|
|
- ret
|
|
|
|
-
|
|
|
|
- .data
|
|
|
|
- .p2align 4
|
|
|
|
-l: .long 0x11111111, 0x22222222
|
|
|
|
-q: .quad 0x4444444433333333
|
|
|
|
-
|
|
|
|
- .reloc l, BFD_RELOC_64, q
|
|
|
|
- .reloc q, BFD_RELOC_32, l
|
2024-01-30 18:07:36 +01:00
|
|
|
Index: binutils-2.42/ld/testsuite/ld-x86-64/rela.d
|
2022-10-17 17:04:37 +02:00
|
|
|
===================================================================
|
2024-01-30 18:07:36 +01:00
|
|
|
--- binutils-2.42.orig/ld/testsuite/ld-x86-64/rela.d 2024-01-29 01:00:00.000000000 +0100
|
2022-10-17 17:04:37 +02:00
|
|
|
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
|
|
|
|
@@ -1,10 +0,0 @@
|
|
|
|
-#name: x86-64 rela relocs w/ non-zero relocated fields
|
|
|
|
-#as: --64
|
|
|
|
-#source: ${srcdir}/../../../gas/testsuite/gas/i386/rela.s
|
|
|
|
-#ld: -melf_x86_64
|
|
|
|
-#objdump: -sj .data
|
|
|
|
-
|
|
|
|
-.*: +file format .*
|
|
|
|
-
|
|
|
|
-Contents of section .data:
|
|
|
|
- *[0-9a-f]*0 .8 ?.. ?.. ?.. 00 ?00 ?00 ?00 .0 ?.. ?.. ?.. 44 ?44 ?44 ?44 .*
|
2024-01-30 18:07:36 +01:00
|
|
|
Index: binutils-2.42/ld/testsuite/ld-x86-64/x86-64.exp
|
2022-10-17 17:04:37 +02:00
|
|
|
===================================================================
|
2024-01-30 18:07:36 +01:00
|
|
|
--- binutils-2.42.orig/ld/testsuite/ld-x86-64/x86-64.exp 2024-01-30 16:57:58.487327524 +0100
|
|
|
|
+++ binutils-2.42/ld/testsuite/ld-x86-64/x86-64.exp 2024-01-30 17:55:13.480432003 +0100
|
|
|
|
@@ -291,7 +291,6 @@ run_dump_test "apic"
|
2022-10-17 17:04:37 +02:00
|
|
|
run_dump_test "pcrel8"
|
|
|
|
run_dump_test "pcrel16"
|
|
|
|
run_dump_test "pcrel16-2"
|
|
|
|
-run_dump_test "rela"
|
|
|
|
run_dump_test "tlsgd2"
|
|
|
|
run_dump_test "tlsgd3"
|
|
|
|
run_dump_test "tlsgd12"
|
2024-01-30 18:07:36 +01:00
|
|
|
@@ -506,10 +505,10 @@ run_dump_test "pr27491-1c"
|
2023-03-08 16:34:27 +01:00
|
|
|
run_dump_test "pr27491-2"
|
|
|
|
run_dump_test "pr27491-3"
|
|
|
|
run_dump_test "pr27491-4"
|
|
|
|
-run_dump_test "dt-relr-1a"
|
|
|
|
-run_dump_test "dt-relr-1a-x32"
|
|
|
|
-run_dump_test "dt-relr-1b"
|
|
|
|
-run_dump_test "dt-relr-1b-x32"
|
|
|
|
+#run_dump_test "dt-relr-1a"
|
|
|
|
+#run_dump_test "dt-relr-1a-x32"
|
|
|
|
+#run_dump_test "dt-relr-1b"
|
|
|
|
+#run_dump_test "dt-relr-1b-x32"
|
2024-01-30 18:07:36 +01:00
|
|
|
run_dump_test "pr30787"
|
|
|
|
run_dump_test "pr31047"
|
|
|
|
run_dump_test "pr31047-x32"
|
|
|
|
Index: binutils-2.42/binutils/testsuite/lib/binutils-common.exp
|
2023-03-08 16:34:27 +01:00
|
|
|
===================================================================
|
2024-01-30 18:07:36 +01:00
|
|
|
--- binutils-2.42.orig/binutils/testsuite/lib/binutils-common.exp 2024-01-29 01:00:00.000000000 +0100
|
|
|
|
+++ binutils-2.42/binutils/testsuite/lib/binutils-common.exp 2024-01-30 17:54:25.166311271 +0100
|
|
|
|
@@ -449,6 +449,8 @@ proc supports_persistent_section {} {
|
2023-03-08 16:34:27 +01:00
|
|
|
|
|
|
|
# Whether a target support DT_RELR sections.
|
|
|
|
proc supports_dt_relr {} {
|
|
|
|
+ # on old codestreams we don't support DT_RELR anywhere
|
|
|
|
+ return 0
|
|
|
|
if { ([istarget x86_64-*-*]
|
|
|
|
|| [istarget i?86-*-*]
|
|
|
|
|| [istarget powerpc64*-*-*])
|
2024-01-30 18:07:36 +01:00
|
|
|
Index: binutils-2.42/ld/emulparams/dt-relr.sh
|
2023-03-08 16:34:27 +01:00
|
|
|
===================================================================
|
2024-01-30 18:07:36 +01:00
|
|
|
--- binutils-2.42.orig/ld/emulparams/dt-relr.sh 2024-01-29 01:00:00.000000000 +0100
|
|
|
|
+++ binutils-2.42/ld/emulparams/dt-relr.sh 2024-01-30 17:54:25.166311271 +0100
|
2023-03-08 16:34:27 +01:00
|
|
|
@@ -1,3 +1,8 @@
|
|
|
|
+if false; then
|
|
|
|
+ # on old codestreams we don't have the DT_RELR support in the dynamic
|
|
|
|
+ # linker, and additionally DT_RELR support will generate bad relocs
|
|
|
|
+ # when binutils-revert-rela.diff is active (as addends will be
|
|
|
|
+ # applied multiple times). Just disable all DT_RELR support.
|
|
|
|
HAVE_DT_RELR=yes
|
|
|
|
PARSE_AND_LIST_OPTIONS_PACK_RELATIVE_RELOCS='
|
|
|
|
fprintf (file, _("\
|
|
|
|
@@ -16,3 +21,5 @@ PARSE_AND_LIST_ARGS_CASE_Z_PACK_RELATIVE
|
|
|
|
|
|
|
|
PARSE_AND_LIST_OPTIONS="$PARSE_AND_LIST_OPTIONS $PARSE_AND_LIST_OPTIONS_PACK_RELATIVE_RELOCS"
|
|
|
|
PARSE_AND_LIST_ARGS_CASE_Z="$PARSE_AND_LIST_ARGS_CASE_Z $PARSE_AND_LIST_ARGS_CASE_Z_PACK_RELATIVE_RELOCS"
|
|
|
|
+
|
|
|
|
+fi
|
2024-01-30 18:07:36 +01:00
|
|
|
Index: binutils-2.42/ld/testsuite/ld-i386/i386.exp
|
2023-03-08 16:34:27 +01:00
|
|
|
===================================================================
|
2024-01-30 18:07:36 +01:00
|
|
|
--- binutils-2.42.orig/ld/testsuite/ld-i386/i386.exp 2024-01-29 01:00:00.000000000 +0100
|
|
|
|
+++ binutils-2.42/ld/testsuite/ld-i386/i386.exp 2024-01-30 17:54:25.166311271 +0100
|
2023-03-08 16:34:27 +01:00
|
|
|
@@ -507,8 +507,8 @@ run_dump_test "pr27491-1c"
|
|
|
|
run_dump_test "pr27491-2"
|
|
|
|
run_dump_test "pr27491-3"
|
|
|
|
run_dump_test "pr27491-4"
|
|
|
|
-run_dump_test "dt-relr-1a"
|
|
|
|
-run_dump_test "dt-relr-1b"
|
|
|
|
+#run_dump_test "dt-relr-1a"
|
|
|
|
+#run_dump_test "dt-relr-1b"
|
|
|
|
run_dump_test "pr28870"
|
|
|
|
run_dump_test "pr28894"
|
2024-01-30 18:07:36 +01:00
|
|
|
run_dump_test "pr30787"
|
|
|
|
Index: binutils-2.42/ld/testsuite/ld-powerpc/powerpc.exp
|
2023-03-08 16:34:27 +01:00
|
|
|
===================================================================
|
2024-01-30 18:07:36 +01:00
|
|
|
--- binutils-2.42.orig/ld/testsuite/ld-powerpc/powerpc.exp 2024-01-29 01:00:00.000000000 +0100
|
|
|
|
+++ binutils-2.42/ld/testsuite/ld-powerpc/powerpc.exp 2024-01-30 17:54:25.166311271 +0100
|
2023-03-08 16:34:27 +01:00
|
|
|
@@ -378,14 +378,14 @@ set ppc64elftests {
|
|
|
|
"-a64" {abs-reloc.s}
|
|
|
|
{{objdump {-sdr} abs-shared.d}
|
|
|
|
{readelf {-rW} abs-shared.r}} "abs-shared"}
|
|
|
|
- {"abs-pie-relr" "-melf64ppc -pie --hash-style=sysv -z pack-relative-relocs --defsym a=1 --defsym 'HIDDEN(b=2)' --defsym c=0x123456789abcdef0" ""
|
|
|
|
- "-a64" {abs-reloc.s}
|
|
|
|
- {{objdump {-sdr} abs-pie-relr.d}
|
|
|
|
- {readelf {-rW} abs-pie-relr.r}} "abs-pie-relr"}
|
|
|
|
- {"abs-shared-relr" "-melf64ppc -shared --hash-style=sysv -z pack-relative-relocs --defsym a=1 --defsym 'HIDDEN(b=2)' --defsym c=0x123456789abcdef0" ""
|
|
|
|
- "-a64" {abs-reloc.s}
|
|
|
|
- {{objdump {-sdr} abs-shared-relr.d}
|
|
|
|
- {readelf {-rW} abs-shared-relr.r}} "abs-shared-relr"}
|
|
|
|
+# {"abs-pie-relr" "-melf64ppc -pie --hash-style=sysv -z pack-relative-relocs --defsym a=1 --defsym 'HIDDEN(b=2)' --defsym c=0x123456789abcdef0" ""
|
|
|
|
+# "-a64" {abs-reloc.s}
|
|
|
|
+# {{objdump {-sdr} abs-pie-relr.d}
|
|
|
|
+# {readelf {-rW} abs-pie-relr.r}} "abs-pie-relr"}
|
|
|
|
+# {"abs-shared-relr" "-melf64ppc -shared --hash-style=sysv -z pack-relative-relocs --defsym a=1 --defsym 'HIDDEN(b=2)' --defsym c=0x123456789abcdef0" ""
|
|
|
|
+# "-a64" {abs-reloc.s}
|
|
|
|
+# {{objdump {-sdr} abs-shared-relr.d}
|
|
|
|
+# {readelf {-rW} abs-shared-relr.r}} "abs-shared-relr"}
|
|
|
|
}
|
|
|
|
|
|
|
|
set ppceabitests {
|
2024-01-30 18:07:36 +01:00
|
|
|
Index: binutils-2.42/gas/testsuite/gas/i386/x86-64.exp
|
2023-08-16 17:44:33 +02:00
|
|
|
===================================================================
|
2024-01-30 18:07:36 +01:00
|
|
|
--- binutils-2.42.orig/gas/testsuite/gas/i386/x86-64.exp 2024-01-29 01:00:00.000000000 +0100
|
|
|
|
+++ binutils-2.42/gas/testsuite/gas/i386/x86-64.exp 2024-01-30 17:54:25.166311271 +0100
|
|
|
|
@@ -628,7 +628,6 @@ if [is_elf_format] then {
|
2023-08-16 17:44:33 +02:00
|
|
|
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"
|