forked from pool/binutils
79d05b9598
- Update to version 2.40: * Objdump has a new command line option --show-all-symbols which will make it display all symbols that match a given address when disassembling. (Normally only the first symbol that matches an address is shown). * Add --enable-colored-disassembly configure time option to enable colored disassembly output by default, if the output device is a terminal. Note, this configure option is disabled by default. * DCO signed contributions are now accepted. * objcopy --decompress-debug-sections now supports zstd compressed debug sections. The new option --compress-debug-sections=zstd compresses debug sections with zstd. * addr2line and objdump --dwarf now support zstd compressed debug sections. * The dlltool program now accepts --deterministic-libraries and --non-deterministic-libraries as command line options to control whether or not it generates deterministic output libraries. If neither of these options are used the default is whatever was set when the binutils were configured. * readelf and objdump now have a newly added option --sframe which dumps the SFrame section. * Add support for Intel RAO-INT instructions. * Add support for Intel AVX-NE-CONVERT instructions. * Add support for Intel MSRLIST instructions. * Add support for Intel WRMSRNS instructions. * Add support for Intel CMPccXADD instructions. * Add support for Intel AVX-VNNI-INT8 instructions. * Add support for Intel AVX-IFMA instructions. * Add support for Intel PREFETCHI instructions. * Add support for Intel AMX-FP16 instructions. * gas now supports --compress-debug-sections=zstd to compress debug sections with zstd. * Add --enable-default-compressed-debug-sections-algorithm={zlib,zstd} OBS-URL: https://build.opensuse.org/request/show/1060669 OBS-URL: https://build.opensuse.org/package/show/devel:gcc/binutils?expand=0&rev=429
579 lines
22 KiB
Diff
579 lines
22 KiB
Diff
This reverts the below commit to not generate PLT32 relocs
|
|
on branches by default. Used for old distros to not have to
|
|
update several packages/tools that can't handle them. I.e.
|
|
a compatibility patch.
|
|
|
|
The patch isn't exactly the reverse of commit bd7ab16b
|
|
because commit 83924b38 later moved the checking code
|
|
around somewhat.
|
|
|
|
The changes in nop-[345].d and pr22842b.S are followups to
|
|
not break the testsuite because of this revert.
|
|
As are the changes to x86-64-branch-2.d and x86-64-branch-3.d.
|
|
|
|
commit bd7ab16b4537788ad53521c45469a1bdae84ad4a
|
|
Author: H.J. Lu <hjl.tools@gmail.com>
|
|
Date: Tue Feb 13 07:34:22 2018 -0800
|
|
|
|
x86-64: Generate branch with PLT32 relocation
|
|
|
|
Since there is no need to prepare for PLT branch on x86-64, generate
|
|
R_X86_64_PLT32, instead of R_X86_64_PC32, if possible, which can be
|
|
used as a marker for 32-bit PC-relative branches.
|
|
|
|
To compile Linux kernel, this patch:
|
|
|
|
From: "H.J. Lu" <hjl.tools@gmail.com>
|
|
Subject: [PATCH] x86: Treat R_X86_64_PLT32 as R_X86_64_PC32
|
|
|
|
On i386, there are 2 types of PLTs, PIC and non-PIC. PIE and shared
|
|
objects must use PIC PLT. To use PIC PLT, you need to load
|
|
_GLOBAL_OFFSET_TABLE_ into EBX first. There is no need for that on
|
|
x86-64 since x86-64 uses PC-relative PLT.
|
|
|
|
On x86-64, for 32-bit PC-relative branches, we can generate PLT32
|
|
relocation, instead of PC32 relocation, which can also be used as
|
|
a marker for 32-bit PC-relative branches. Linker can always reduce
|
|
PLT32 relocation to PC32 if function is defined locally. Local
|
|
functions should use PC32 relocation. As far as Linux kernel is
|
|
concerned, R_X86_64_PLT32 can be treated the same as R_X86_64_PC32
|
|
since Linux kernel doesn't use PLT.
|
|
|
|
is needed. It is available on hjl/plt32/master branch at
|
|
|
|
https://github.com/hjl-tools/linux
|
|
|
|
bfd/
|
|
|
|
PR gas/22791
|
|
* elf64-x86-64.c (is_32bit_relative_branch): Removed.
|
|
(elf_x86_64_relocate_section): Check PIC relocations in PIE.
|
|
Remove is_32bit_relative_branch usage. Disallow PC32 reloc
|
|
against protected function in shared object.
|
|
|
|
gas/
|
|
|
|
PR gas/22791
|
|
* config/tc-i386.c (need_plt32_p): New function.
|
|
(output_jump): Generate BFD_RELOC_X86_64_PLT32 if possible.
|
|
(md_estimate_size_before_relax): Likewise.
|
|
* testsuite/gas/i386/reloc64.d: Updated.
|
|
* testsuite/gas/i386/x86-64-jump.d: Likewise.
|
|
* testsuite/gas/i386/x86-64-mpx-branch-1.d: Likewise.
|
|
* testsuite/gas/i386/x86-64-mpx-branch-2.d: Likewise.
|
|
* testsuite/gas/i386/x86-64-relax-2.d: Likewise.
|
|
* testsuite/gas/i386/x86-64-relax-3.d: Likewise.
|
|
* testsuite/gas/i386/ilp32/reloc64.d: Likewise.
|
|
* testsuite/gas/i386/ilp32/x86-64-branch.d: Likewise.
|
|
|
|
ld/
|
|
|
|
PR gas/22791
|
|
* testsuite/ld-x86-64/mpx1c.rd: Updated.
|
|
* testsuite/ld-x86-64/pr22791-1.err: New file.
|
|
* testsuite/ld-x86-64/pr22791-1a.c: Likewise.
|
|
* testsuite/ld-x86-64/pr22791-1b.s: Likewise.
|
|
* testsuite/ld-x86-64/pr22791-2.rd: Likewise.
|
|
* testsuite/ld-x86-64/pr22791-2a.s: Likewise.
|
|
* testsuite/ld-x86-64/pr22791-2b.c: Likewise.
|
|
* testsuite/ld-x86-64/pr22791-2c.s: Likewise.
|
|
* testsuite/ld-x86-64/x86-64.exp: Run PR ld/22791 tests.
|
|
|
|
diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
|
|
index dc416a7f..b9f96729 100644
|
|
--- a/bfd/elf64-x86-64.c
|
|
+++ b/bfd/elf64-x86-64.c
|
|
@@ -1817,6 +1817,24 @@ elf_x86_64_convert_load_reloc (bfd *abfd,
|
|
return true;
|
|
}
|
|
|
|
+/* Is the instruction before OFFSET in CONTENTS a 32bit relative
|
|
+ branch? */
|
|
+
|
|
+static bool
|
|
+is_32bit_relative_branch (bfd_byte *contents, bfd_vma offset)
|
|
+{
|
|
+ /* Opcode Instruction
|
|
+ 0xe8 call
|
|
+ 0xe9 jump
|
|
+ 0x0f 0x8x conditional jump */
|
|
+ return ((offset > 0
|
|
+ && (contents [offset - 1] == 0xe8
|
|
+ || contents [offset - 1] == 0xe9))
|
|
+ || (offset > 1
|
|
+ && contents [offset - 2] == 0x0f
|
|
+ && (contents [offset - 1] & 0xf0) == 0x80));
|
|
+}
|
|
+
|
|
/* Look through the relocs for a section during the first phase, and
|
|
calculate needed space in the global offset table, and procedure
|
|
linkage table. */
|
|
@@ -3159,9 +3177,6 @@ elf_x86_64_relocate_section (bfd *output_bfd,
|
|
&& (eh == NULL
|
|
|| !UNDEFINED_WEAK_RESOLVED_TO_ZERO (info,
|
|
eh)))
|
|
- || (bfd_link_pie (info)
|
|
- && !SYMBOL_DEFINED_NON_SHARED_P (h)
|
|
- && h->def_dynamic)
|
|
|| (no_copyreloc_p
|
|
&& h->def_dynamic
|
|
&& !(h->root.u.def.section->flags & SEC_CODE))))
|
|
@@ -3170,20 +3185,25 @@ elf_x86_64_relocate_section (bfd *output_bfd,
|
|
|| bfd_link_dll (info)))
|
|
{
|
|
bool fail = false;
|
|
+ bool branch
|
|
+ = ((r_type == R_X86_64_PC32
|
|
+ || r_type == R_X86_64_PC32_BND)
|
|
+ && is_32bit_relative_branch (contents, rel->r_offset));
|
|
+
|
|
if (SYMBOL_REFERENCES_LOCAL_P (info, h))
|
|
{
|
|
/* Symbol is referenced locally. Make sure it is
|
|
- defined locally. */
|
|
- fail = !SYMBOL_DEFINED_NON_SHARED_P (h);
|
|
+ defined locally or for a branch. */
|
|
+ fail = !SYMBOL_DEFINED_NON_SHARED_P (h) && !branch;
|
|
}
|
|
else if (bfd_link_pie (info))
|
|
{
|
|
/* We can only use PC-relative relocations in PIE
|
|
- from non-code sections. */
|
|
+ from non-code sections or branches. */
|
|
if (h->root.type == bfd_link_hash_undefweak
|
|
|| (h->type == STT_FUNC
|
|
&& (sec->flags & SEC_CODE) != 0))
|
|
- fail = true;
|
|
+ fail = !branch;
|
|
}
|
|
else if (no_copyreloc_p || bfd_link_dll (info))
|
|
{
|
|
@@ -3192,9 +3212,10 @@ elf_x86_64_relocate_section (bfd *output_bfd,
|
|
relocations against default and protected
|
|
symbols since address of protected function
|
|
and location of protected data may not be in
|
|
- the shared object. */
|
|
+ the shared object. We do allow branch to symbol
|
|
+ with non-default visibility. */
|
|
fail = (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
|
|
- || ELF_ST_VISIBILITY (h->other) == STV_PROTECTED);
|
|
+ || !branch);
|
|
}
|
|
|
|
if (fail)
|
|
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
|
|
index d3441988e34..8f8fb086cd8 100644
|
|
--- a/gas/config/tc-i386.c
|
|
+++ b/gas/config/tc-i386.c
|
|
@@ -8793,55 +8793,12 @@ output_branch (void)
|
|
frag_var (rs_machine_dependent, 5, i.reloc[0], subtype, sym, off, p);
|
|
}
|
|
|
|
-#if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)
|
|
-/* Return TRUE iff PLT32 relocation should be used for branching to
|
|
- symbol S. */
|
|
-
|
|
-static bool
|
|
-need_plt32_p (symbolS *s)
|
|
-{
|
|
- /* PLT32 relocation is ELF only. */
|
|
- if (!IS_ELF)
|
|
- return false;
|
|
-
|
|
-#ifdef TE_SOLARIS
|
|
- /* Don't emit PLT32 relocation on Solaris: neither native linker nor
|
|
- krtld support it. */
|
|
- return false;
|
|
-#endif
|
|
-
|
|
- /* Since there is no need to prepare for PLT branch on x86-64, we
|
|
- can generate R_X86_64_PLT32, instead of R_X86_64_PC32, which can
|
|
- be used as a marker for 32-bit PC-relative branches. */
|
|
- if (!object_64bit)
|
|
- return false;
|
|
-
|
|
- if (s == NULL)
|
|
- return false;
|
|
-
|
|
- /* Weak or undefined symbol need PLT32 relocation. */
|
|
- if (S_IS_WEAK (s) || !S_IS_DEFINED (s))
|
|
- return true;
|
|
-
|
|
- /* Non-global symbol doesn't need PLT32 relocation. */
|
|
- if (! S_IS_EXTERNAL (s))
|
|
- return false;
|
|
-
|
|
- /* Other global symbols need PLT32 relocation. NB: Symbol with
|
|
- non-default visibilities are treated as normal global symbol
|
|
- so that PLT32 relocation can be used as a marker for 32-bit
|
|
- PC-relative branches. It is useful for linker relaxation. */
|
|
- return true;
|
|
-}
|
|
-#endif
|
|
-
|
|
static void
|
|
output_jump (void)
|
|
{
|
|
char *p;
|
|
int size;
|
|
fixS *fixP;
|
|
- bfd_reloc_code_real_type jump_reloc = i.reloc[0];
|
|
|
|
if (i.tm.opcode_modifier.jump == JUMP_BYTE)
|
|
{
|
|
@@ -8990,17 +8947,8 @@ output_jump (void)
|
|
abort ();
|
|
}
|
|
|
|
-#if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)
|
|
- if (flag_code == CODE_64BIT && size == 4
|
|
- && jump_reloc == NO_RELOC && i.op[0].disps->X_add_number == 0
|
|
- && need_plt32_p (i.op[0].disps->X_add_symbol))
|
|
- jump_reloc = BFD_RELOC_X86_64_PLT32;
|
|
-#endif
|
|
-
|
|
- jump_reloc = reloc (size, 1, 1, jump_reloc);
|
|
-
|
|
fixP = fix_new_exp (frag_now, p - frag_now->fr_literal, size,
|
|
- i.op[0].disps, 1, jump_reloc);
|
|
+ i.op[0].disps, 1, reloc (size, 1, 1, i.reloc[0]));
|
|
|
|
/* All jumps handled here are signed, but don't unconditionally use a
|
|
signed limit check for 32 and 16 bit jumps as we want to allow wrap
|
|
@@ -12299,11 +12247,6 @@ md_estimate_size_before_relax (fragS *fragP, segT segment)
|
|
reloc_type = (enum bfd_reloc_code_real) fragP->fr_var;
|
|
else if (size == 2)
|
|
reloc_type = BFD_RELOC_16_PCREL;
|
|
-#if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)
|
|
- else if (fragP->tc_frag_data.code64 && fragP->fr_offset == 0
|
|
- && need_plt32_p (fragP->fr_symbol))
|
|
- reloc_type = BFD_RELOC_X86_64_PLT32;
|
|
-#endif
|
|
else
|
|
reloc_type = BFD_RELOC_32_PCREL;
|
|
|
|
diff --git a/gas/testsuite/gas/i386/ilp32/reloc64.d b/gas/testsuite/gas/i386/ilp32/reloc64.d
|
|
index 78ca3fd9e38..a961679754a 100644
|
|
--- a/gas/testsuite/gas/i386/ilp32/reloc64.d
|
|
+++ b/gas/testsuite/gas/i386/ilp32/reloc64.d
|
|
@@ -17,7 +17,7 @@ Disassembly of section \.text:
|
|
.*[ ]+R_X86_64_PC8[ ]+xtrn\+0x0*1
|
|
.*[ ]+R_X86_64_PC32[ ]+xtrn-0x0*4
|
|
.*[ ]+R_X86_64_PC32[ ]+xtrn-0x0*4
|
|
-.*[ ]+R_X86_64_PLT32[ ]+xtrn-0x0*4
|
|
+.*[ ]+R_X86_64_PC32[ ]+xtrn-0x0*4
|
|
.*[ ]+R_X86_64_PC8[ ]+xtrn-0x0*1
|
|
.*[ ]+R_X86_64_GOT32[ ]+xtrn
|
|
.*[ ]+R_X86_64_GOT32[ ]+xtrn
|
|
diff --git a/gas/testsuite/gas/i386/ilp32/x86-64-branch.d b/gas/testsuite/gas/i386/ilp32/x86-64-branch.d
|
|
index acf8c42ca97..57845fdc208 100644
|
|
--- a/gas/testsuite/gas/i386/ilp32/x86-64-branch.d
|
|
+++ b/gas/testsuite/gas/i386/ilp32/x86-64-branch.d
|
|
@@ -20,9 +20,9 @@ Disassembly of section .text:
|
|
[ ]*[a-f0-9]+: 66 ff 20 data16 jmp \*\(%rax\)
|
|
[ ]*[a-f0-9]+: e8 00 00 00 00 call (0x)?1f <.*> 1b: R_X86_64_PC32 \*ABS\*\+0x10003c
|
|
[ ]*[a-f0-9]+: e9 00 00 00 00 jmp (0x)?24 <.*> 20: R_X86_64_PC32 \*ABS\*\+0x10003c
|
|
-[ ]*[a-f0-9]+: 66 e8 00 00 00 00 data16 call (0x)?2a <.*> 26: R_X86_64_PLT32 foo-0x4
|
|
-[ ]*[a-f0-9]+: 66 e9 00 00 00 00 data16 jmp (0x)?30 <.*> 2c: R_X86_64_PLT32 foo-0x4
|
|
-[ ]*[a-f0-9]+: 66 0f 82 00 00 00 00 data16 jb (0x)?37 <.*> 33: R_X86_64_PLT32 foo-0x4
|
|
+[ ]*[a-f0-9]+: 66 e8 00 00 00 00 data16 call (0x)?2a <.*> 26: R_X86_64_PC32 foo-0x4
|
|
+[ ]*[a-f0-9]+: 66 e9 00 00 00 00 data16 jmp (0x)?30 <.*> 2c: R_X86_64_PC32 foo-0x4
|
|
+[ ]*[a-f0-9]+: 66 0f 82 00 00 00 00 data16 jb (0x)?37 <.*> 33: R_X86_64_PC32 foo-0x4
|
|
[ ]*[a-f0-9]+: 66 c3 data16 ret
|
|
[ ]*[a-f0-9]+: 66 c2 08 00 data16 ret \$0x8
|
|
[ ]*[a-f0-9]+: 3e 74 03[ ]+je,pt +[0-9a-fx]+ <.*>
|
|
diff --git a/gas/testsuite/gas/i386/reloc64.d b/gas/testsuite/gas/i386/reloc64.d
|
|
index 540a9b77d35..ea16c68de4b 100644
|
|
--- a/gas/testsuite/gas/i386/reloc64.d
|
|
+++ b/gas/testsuite/gas/i386/reloc64.d
|
|
@@ -20,7 +20,7 @@ Disassembly of section \.text:
|
|
.*[ ]+R_X86_64_PC8[ ]+xtrn\+0x0*1
|
|
.*[ ]+R_X86_64_PC32[ ]+xtrn-0x0*4
|
|
.*[ ]+R_X86_64_PC32[ ]+xtrn-0x0*4
|
|
-.*[ ]+R_X86_64_PLT32[ ]+xtrn-0x0*4
|
|
+.*[ ]+R_X86_64_PC32[ ]+xtrn-0x0*4
|
|
.*[ ]+R_X86_64_PC8[ ]+xtrn-0x0*1
|
|
.*[ ]+R_X86_64_GOT64[ ]+xtrn
|
|
.*[ ]+R_X86_64_GOT32[ ]+xtrn
|
|
diff --git a/gas/testsuite/gas/i386/x86-64-branch-2.d b/gas/testsuite/gas/i386/x86-64-branch-2.d
|
|
index fab75a6394c..e025de90b68 100644
|
|
--- a/gas/testsuite/gas/i386/x86-64-branch-2.d
|
|
+++ b/gas/testsuite/gas/i386/x86-64-branch-2.d
|
|
@@ -9,12 +9,12 @@ Disassembly of section .text:
|
|
|
|
0+ <bar-0xb>:
|
|
[ ]*[a-f0-9]+: 66 e9 00 00 jmpw 4 <bar-0x7> 2: R_X86_64_PC16 foo-0x2
|
|
-[ ]*[a-f0-9]+: 66 48 e9 00 00 00 00 data16 rex\.W jmp b <bar> 7: R_X86_64_PLT32 foo-0x4
|
|
+[ ]*[a-f0-9]+: 66 48 e9 00 00 00 00 data16 rex\.W jmp b <bar> 7: R_X86_64_PC32 foo-0x4
|
|
|
|
0+b <bar>:
|
|
[ ]*[a-f0-9]+: 89 c3 mov %eax,%ebx
|
|
[ ]*[a-f0-9]+: 66 e8 00 00 callw 11 <bar\+0x6> f: R_X86_64_PC16 foo-0x2
|
|
-[ ]*[a-f0-9]+: 66 48 e8 00 00 00 00 data16 rex\.W call 18 <bar\+0xd> 14: R_X86_64_PLT32 foo-0x4
|
|
+[ ]*[a-f0-9]+: 66 48 e8 00 00 00 00 data16 rex\.W call 18 <bar\+0xd> 14: R_X86_64_PC32 foo-0x4
|
|
[ ]*[a-f0-9]+: 66 c3 retw
|
|
[ ]*[a-f0-9]+: 66 c2 08 00 retw \$0x8
|
|
#pass
|
|
diff --git a/gas/testsuite/gas/i386/x86-64-jump.d b/gas/testsuite/gas/i386/x86-64-jump.d
|
|
index 7d2c994ce26..58ad424badb 100644
|
|
--- a/gas/testsuite/gas/i386/x86-64-jump.d
|
|
+++ b/gas/testsuite/gas/i386/x86-64-jump.d
|
|
@@ -9,7 +9,7 @@ Disassembly of section .text:
|
|
|
|
0+ <.text>:
|
|
[ ]*[a-f0-9]+: eb fe jmp (0x0|0 <.text>)
|
|
-[ ]*[a-f0-9]+: e9 00 00 00 00 jmp 0x7 3: R_X86_64_PLT32 xxx-0x4
|
|
+[ ]*[a-f0-9]+: e9 00 00 00 00 jmp 0x7 3: R_X86_64_PC32 xxx-0x4
|
|
[ ]*[a-f0-9]+: ff 24 25 00 00 00 00 jmp \*0x0 a: R_X86_64_32S xxx
|
|
[ ]*[a-f0-9]+: ff e7 jmp \*%rdi
|
|
[ ]*[a-f0-9]+: ff 27 jmp \*\(%rdi\)
|
|
@@ -18,7 +18,7 @@ Disassembly of section .text:
|
|
[ ]*[a-f0-9]+: ff 2c 25 00 00 00 00 ljmp \*0x0 24: R_X86_64_32S xxx
|
|
[ ]*[a-f0-9]+: 66 ff 2c 25 00 00 00 00 ljmpw \*0x0 2c: R_X86_64_32S xxx
|
|
[ ]*[a-f0-9]+: e8 cb ff ff ff call 0x0
|
|
-[ ]*[a-f0-9]+: e8 00 00 00 00 call 0x3a 36: R_X86_64_PLT32 xxx-0x4
|
|
+[ ]*[a-f0-9]+: e8 00 00 00 00 call 0x3a 36: R_X86_64_PC32 xxx-0x4
|
|
[ ]*[a-f0-9]+: ff 14 25 00 00 00 00 call \*0x0 3d: R_X86_64_32S xxx
|
|
[ ]*[a-f0-9]+: ff d7 call \*%rdi
|
|
[ ]*[a-f0-9]+: ff 17 call \*\(%rdi\)
|
|
diff --git a/gas/testsuite/gas/i386/x86-64-nop-3.d b/gas/testsuite/gas/i386/x86-64-nop-3.d
|
|
index 1975481cc59..436487b5a99 100644
|
|
--- a/gas/testsuite/gas/i386/x86-64-nop-3.d
|
|
+++ b/gas/testsuite/gas/i386/x86-64-nop-3.d
|
|
@@ -18,5 +18,5 @@ Disassembly of section .text:
|
|
Disassembly of section .altinstr_replacement:
|
|
|
|
0+ <.altinstr_replacement>:
|
|
- +[a-f0-9]+: e9 00 00 00 00 jmp 5 <_start\+0x5> 1: R_X86_64_PLT32 foo-0x4
|
|
+ +[a-f0-9]+: e9 00 00 00 00 jmp 5 <_start\+0x5> 1: R_X86_64_PC32 foo-0x4
|
|
#pass
|
|
diff --git a/gas/testsuite/gas/i386/x86-64-nop-4.d b/gas/testsuite/gas/i386/x86-64-nop-4.d
|
|
index 2da858db994..e390628b335 100644
|
|
--- a/gas/testsuite/gas/i386/x86-64-nop-4.d
|
|
+++ b/gas/testsuite/gas/i386/x86-64-nop-4.d
|
|
@@ -21,5 +21,5 @@ Disassembly of section .altinstr_replacement:
|
|
+[a-f0-9]+: 89 c0 mov %eax,%eax
|
|
+[a-f0-9]+: 89 c0 mov %eax,%eax
|
|
+[a-f0-9]+: 89 c0 mov %eax,%eax
|
|
- +[a-f0-9]+: e9 00 00 00 00 jmp b <_start\+0xb> 7: R_X86_64_PLT32 foo-0x4
|
|
+ +[a-f0-9]+: e9 00 00 00 00 jmp b <_start\+0xb> 7: R_X86_64_PC32 foo-0x4
|
|
#pass
|
|
diff --git a/gas/testsuite/gas/i386/x86-64-nop-5.d b/gas/testsuite/gas/i386/x86-64-nop-5.d
|
|
index d5c84c1edf8..69820d54de8 100644
|
|
--- a/gas/testsuite/gas/i386/x86-64-nop-5.d
|
|
+++ b/gas/testsuite/gas/i386/x86-64-nop-5.d
|
|
@@ -24,5 +24,5 @@ Disassembly of section .altinstr_replacement:
|
|
+[a-f0-9]+: 89 c0 mov %eax,%eax
|
|
+[a-f0-9]+: 89 c0 mov %eax,%eax
|
|
+[a-f0-9]+: 89 c0 mov %eax,%eax
|
|
- +[a-f0-9]+: e9 00 00 00 00 jmp d <_start\+0xd> 9: R_X86_64_PLT32 foo-0x4
|
|
+ +[a-f0-9]+: e9 00 00 00 00 jmp d <_start\+0xd> 9: R_X86_64_PC32 foo-0x4
|
|
#pass
|
|
diff --git a/gas/testsuite/gas/i386/x86-64-relax-2.d b/gas/testsuite/gas/i386/x86-64-relax-2.d
|
|
index fba47c14850..0949ab23907 100644
|
|
--- a/gas/testsuite/gas/i386/x86-64-relax-2.d
|
|
+++ b/gas/testsuite/gas/i386/x86-64-relax-2.d
|
|
@@ -11,12 +11,12 @@ Disassembly of section .text:
|
|
0+ <foo>:
|
|
[ ]*[a-f0-9]+: eb 24 jmp 26 <local>
|
|
[ ]*[a-f0-9]+: eb 1e jmp 22 <hidden_def>
|
|
-[ ]*[a-f0-9]+: e9 00 00 00 00 jmp 9 <foo\+0x9> 5: R_X86_64_PLT32 global_def-0x4
|
|
+[ ]*[a-f0-9]+: e9 00 00 00 00 jmp 9 <foo\+0x9> 5: R_X86_64_PC32 global_def-0x4
|
|
[ ]*[a-f0-9]+: e9 00 00 00 00 jmp e <foo\+0xe> a: R_X86_64_PLT32 global_def-0x4
|
|
-[ ]*[a-f0-9]+: e9 00 00 00 00 jmp 13 <foo\+0x13> f: R_X86_64_PLT32 weak_def-0x4
|
|
-[ ]*[a-f0-9]+: e9 00 00 00 00 jmp 18 <foo\+0x18> 14: R_X86_64_PLT32 weak_hidden_undef-0x4
|
|
-[ ]*[a-f0-9]+: e9 00 00 00 00 jmp 1d <foo\+0x1d> 19: R_X86_64_PLT32 weak_hidden_def-0x4
|
|
-[ ]*[a-f0-9]+: e9 00 00 00 00 jmp 22 <hidden_def> 1e: R_X86_64_PLT32 hidden_undef-0x4
|
|
+[ ]*[a-f0-9]+: e9 00 00 00 00 jmp 13 <foo\+0x13> f: R_X86_64_PC32 weak_def-0x4
|
|
+[ ]*[a-f0-9]+: e9 00 00 00 00 jmp 18 <foo\+0x18> 14: R_X86_64_PC32 weak_hidden_undef-0x4
|
|
+[ ]*[a-f0-9]+: e9 00 00 00 00 jmp 1d <foo\+0x1d> 19: R_X86_64_PC32 weak_hidden_def-0x4
|
|
+[ ]*[a-f0-9]+: e9 00 00 00 00 jmp 22 <hidden_def> 1e: R_X86_64_PC32 hidden_undef-0x4
|
|
|
|
0+22 <hidden_def>:
|
|
[ ]*[a-f0-9]+: c3 ret
|
|
diff --git a/gas/testsuite/gas/i386/x86-64-relax-3.d b/gas/testsuite/gas/i386/x86-64-relax-3.d
|
|
index 01df9ef340e..d16e6a55395 100644
|
|
--- a/gas/testsuite/gas/i386/x86-64-relax-3.d
|
|
+++ b/gas/testsuite/gas/i386/x86-64-relax-3.d
|
|
@@ -12,10 +12,10 @@ Disassembly of section .text:
|
|
[ ]*[a-f0-9]+: eb 1b jmp 1f <hidden_def>
|
|
[ ]*[a-f0-9]+: eb 1b jmp 21 <global_def>
|
|
[ ]*[a-f0-9]+: e9 00 00 00 00 jmp b <foo\+0xb> 7: R_X86_64_PLT32 global_def-0x4
|
|
-[ ]*[a-f0-9]+: e9 00 00 00 00 jmp 10 <foo\+0x10> c: R_X86_64_PLT32 weak_def-0x4
|
|
-[ ]*[a-f0-9]+: e9 00 00 00 00 jmp 15 <foo\+0x15> 11: R_X86_64_PLT32 weak_hidden_undef-0x4
|
|
-[ ]*[a-f0-9]+: e9 00 00 00 00 jmp 1a <foo\+0x1a> 16: R_X86_64_PLT32 weak_hidden_def-0x4
|
|
-[ ]*[a-f0-9]+: e9 00 00 00 00 jmp 1f <hidden_def> 1b: R_X86_64_PLT32 hidden_undef-0x4
|
|
+[ ]*[a-f0-9]+: e9 00 00 00 00 jmp 10 <foo\+0x10> c: R_X86_64_PC32 weak_def-0x4
|
|
+[ ]*[a-f0-9]+: e9 00 00 00 00 jmp 15 <foo\+0x15> 11: R_X86_64_PC32 weak_hidden_undef-0x4
|
|
+[ ]*[a-f0-9]+: e9 00 00 00 00 jmp 1a <foo\+0x1a> 16: R_X86_64_PC32 weak_hidden_def-0x4
|
|
+[ ]*[a-f0-9]+: e9 00 00 00 00 jmp 1f <hidden_def> 1b: R_X86_64_PC32 hidden_undef-0x4
|
|
|
|
0+1f <hidden_def>:
|
|
[ ]*[a-f0-9]+: c3 ret
|
|
diff --git a/ld/testsuite/ld-x86-64/pr22791-1.err b/ld/testsuite/ld-x86-64/pr22791-1.err
|
|
deleted file mode 100644
|
|
index 8c5565992e7..00000000000
|
|
--- a/ld/testsuite/ld-x86-64/pr22791-1.err
|
|
+++ /dev/null
|
|
@@ -1,2 +0,0 @@
|
|
-.*relocation R_X86_64_PC32 against symbol `foo' can not be used when making a PIE object; recompile with -fPIE
|
|
-#...
|
|
diff --git a/ld/testsuite/ld-x86-64/pr22791-1a.c b/ld/testsuite/ld-x86-64/pr22791-1a.c
|
|
deleted file mode 100644
|
|
index cd0130cacdf..00000000000
|
|
--- a/ld/testsuite/ld-x86-64/pr22791-1a.c
|
|
+++ /dev/null
|
|
@@ -1,4 +0,0 @@
|
|
-void
|
|
-foo (void)
|
|
-{
|
|
-}
|
|
diff --git a/ld/testsuite/ld-x86-64/pr22791-1b.s b/ld/testsuite/ld-x86-64/pr22791-1b.s
|
|
deleted file mode 100644
|
|
index 9751db49aa5..00000000000
|
|
--- a/ld/testsuite/ld-x86-64/pr22791-1b.s
|
|
+++ /dev/null
|
|
@@ -1,7 +0,0 @@
|
|
- .text
|
|
- .globl main
|
|
- .type main, @function
|
|
-main:
|
|
- movl foo(%rip), %eax
|
|
- .size main, .-main
|
|
- .section .note.GNU-stack
|
|
diff --git a/ld/testsuite/ld-x86-64/pr22791-2.rd b/ld/testsuite/ld-x86-64/pr22791-2.rd
|
|
deleted file mode 100644
|
|
index 70deb30d84d..00000000000
|
|
--- a/ld/testsuite/ld-x86-64/pr22791-2.rd
|
|
+++ /dev/null
|
|
@@ -1,6 +0,0 @@
|
|
-#failif
|
|
-#...
|
|
-.*\(TEXTREL\).*
|
|
-#...
|
|
-[0-9a-f ]+R_X86_64_NONE.*
|
|
-#...
|
|
diff --git a/ld/testsuite/ld-x86-64/pr22791-2a.s b/ld/testsuite/ld-x86-64/pr22791-2a.s
|
|
deleted file mode 100644
|
|
index 0a855024d74..00000000000
|
|
--- a/ld/testsuite/ld-x86-64/pr22791-2a.s
|
|
+++ /dev/null
|
|
@@ -1,8 +0,0 @@
|
|
- .text
|
|
- .p2align 4,,15
|
|
- .globl foo
|
|
- .type foo, @function
|
|
-foo:
|
|
- jmp bar
|
|
- .size foo, .-foo
|
|
- .section .note.GNU-stack,"",@progbits
|
|
diff --git a/ld/testsuite/ld-x86-64/pr22791-2b.c b/ld/testsuite/ld-x86-64/pr22791-2b.c
|
|
deleted file mode 100644
|
|
index 79ef27c0857..00000000000
|
|
--- a/ld/testsuite/ld-x86-64/pr22791-2b.c
|
|
+++ /dev/null
|
|
@@ -1,7 +0,0 @@
|
|
-#include <stdio.h>
|
|
-
|
|
-void
|
|
-bar (void)
|
|
-{
|
|
- puts ("PASS");
|
|
-}
|
|
diff --git a/ld/testsuite/ld-x86-64/pr22791-2c.s b/ld/testsuite/ld-x86-64/pr22791-2c.s
|
|
deleted file mode 100644
|
|
index 1460d1b8288..00000000000
|
|
--- a/ld/testsuite/ld-x86-64/pr22791-2c.s
|
|
+++ /dev/null
|
|
@@ -1,12 +0,0 @@
|
|
- .text
|
|
- .p2align 4,,15
|
|
- .globl main
|
|
- .type main, @function
|
|
-main:
|
|
- subq $8, %rsp
|
|
- call foo
|
|
- xorl %eax, %eax
|
|
- addq $8, %rsp
|
|
- ret
|
|
- .size main, .-main
|
|
- .section .note.GNU-stack,"",@progbits
|
|
diff --git a/ld/testsuite/ld-x86-64/pr22842b.S b/ld/testsuite/ld-x86-64/pr22842b.S
|
|
index f0659cd901e..b9dd81345b7 100644
|
|
--- a/ld/testsuite/ld-x86-64/pr22842b.S
|
|
+++ b/ld/testsuite/ld-x86-64/pr22842b.S
|
|
@@ -7,7 +7,7 @@ main:
|
|
leaq bar(%rip), %rdi
|
|
addq %rax, %rdi
|
|
|
|
- callq foo
|
|
+ callq foo@PLT
|
|
xorl %eax, %eax
|
|
popq %rcx
|
|
retq
|
|
diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp
|
|
index 17fd10ee121..b4ae52ab376 100644
|
|
--- a/ld/testsuite/ld-x86-64/x86-64.exp
|
|
+++ b/ld/testsuite/ld-x86-64/x86-64.exp
|
|
@@ -1264,44 +1264,6 @@ if { [isnative] && [check_compiler_available] } {
|
|
{readelf -lW pr22393-3b.rd}} \
|
|
"pr22393-3-static" \
|
|
] \
|
|
- [list \
|
|
- "Build pr22791-1.so" \
|
|
- "-shared" \
|
|
- "-fPIC -Wa,-mx86-used-note=yes" \
|
|
- { pr22791-1a.c } \
|
|
- {} \
|
|
- "pr22791-1.so" \
|
|
- ] \
|
|
- [list \
|
|
- "Build pr22791-1" \
|
|
- "-pie -Wl,--no-as-needed,-z,notext tmpdir/pr22791-1.so" \
|
|
- "$NOPIE_CFLAGS -Wa,-mx86-used-note=yes" \
|
|
- { pr22791-1b.s } \
|
|
- {{error_output "pr22791-1.err"}} \
|
|
- "pr22791-1" \
|
|
- ] \
|
|
- [list \
|
|
- "Build pr22791-2a.o" \
|
|
- "" \
|
|
- "$NOPIE_CFLAGS -Wa,-mx86-used-note=yes" \
|
|
- { pr22791-2a.s } \
|
|
- ] \
|
|
- [list \
|
|
- "Build pr22791-2.so" \
|
|
- "-shared tmpdir/pr22791-2a.o" \
|
|
- "-fPIC -Wa,-mx86-used-note=yes" \
|
|
- { pr22791-2b.c } \
|
|
- {{readelf -drW pr22791-2.rd}} \
|
|
- "pr22791-2.so" \
|
|
- ] \
|
|
- [list \
|
|
- "Build pr22791-2" \
|
|
- "-pie -Wl,--no-as-needed tmpdir/pr22791-2.so" \
|
|
- "$NOPIE_CFLAGS -Wa,-mx86-used-note=yes" \
|
|
- { pr22791-2c.s } \
|
|
- {{readelf -drW pr22791-2.rd}} \
|
|
- "pr22791-2" \
|
|
- ] \
|
|
[list \
|
|
"Build pr22842.so" \
|
|
"-shared" \
|
|
@@ -1703,15 +1665,6 @@ if { [isnative] && [check_compiler_available] } {
|
|
"pr22393-3-static" \
|
|
"pass.out" \
|
|
] \
|
|
- [list \
|
|
- "Run pr22791-2" \
|
|
- "-pie -Wl,--no-as-needed tmpdir/pr22791-2.so" \
|
|
- "-Wa,-mx86-used-note=yes" \
|
|
- { pr22791-2c.s } \
|
|
- "pr22791-2" \
|
|
- "pass.out" \
|
|
- "$NOPIE_CFLAGS" \
|
|
- ] \
|
|
[list \
|
|
"Run pr22842" \
|
|
"-pie -Wl,--no-as-needed tmpdir/pr22842.so" \
|