Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12:Update
cross-x86_64-binutils.26868
binutils-revert-plt32-in-branches.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File binutils-revert-plt32-in-branches.diff of Package cross-x86_64-binutils.26868
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-mpx-branch-1.d b/gas/testsuite/gas/i386/x86-64-mpx-branch-1.d index 795f3fdacc4..1d692e8f04d 100644 --- a/gas/testsuite/gas/i386/x86-64-mpx-branch-1.d +++ b/gas/testsuite/gas/i386/x86-64-mpx-branch-1.d @@ -23,9 +23,9 @@ Disassembly of section .text: [ ]*[a-f0-9]+: f2 e8 00 00 00 00 bnd call 34 <foo2> 0+34 <foo2>: -[ ]*[a-f0-9]+: f2 e9 00 00 00 00 bnd jmp 3a <foo2\+0x6> 36: R_X86_64_PLT32 foo-0x4 -[ ]*[a-f0-9]+: f2 0f 82 00 00 00 00 bnd jb 41 <foo2\+0xd> 3d: R_X86_64_PLT32 foo-0x4 -[ ]*[a-f0-9]+: f2 e8 00 00 00 00 bnd call 47 <foo2\+0x13> 43: R_X86_64_PLT32 foo-0x4 +[ ]*[a-f0-9]+: f2 e9 00 00 00 00 bnd jmp 3a <foo2\+0x6> 36: R_X86_64_PC32 foo-0x4 +[ ]*[a-f0-9]+: f2 0f 82 00 00 00 00 bnd jb 41 <foo2\+0xd> 3d: R_X86_64_PC32 foo-0x4 +[ ]*[a-f0-9]+: f2 e8 00 00 00 00 bnd call 47 <foo2\+0x13> 43: R_X86_64_PC32 foo-0x4 [ ]*[a-f0-9]+: f2 e9 00 00 00 00 bnd jmp 4d <foo2\+0x19> 49: R_X86_64_PLT32 foo-0x4 [ ]*[a-f0-9]+: f2 0f 82 00 00 00 00 bnd jb 54 <foo2\+0x20> 50: R_X86_64_PLT32 foo-0x4 [ ]*[a-f0-9]+: f2 e8 00 00 00 00 bnd call 5a <foo2\+0x26> 56: R_X86_64_PLT32 foo-0x4 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/mpx1c.rd b/ld/testsuite/ld-x86-64/mpx1c.rd index d66524c8834..d3b292cbdc1 100644 --- a/ld/testsuite/ld-x86-64/mpx1c.rd +++ b/ld/testsuite/ld-x86-64/mpx1c.rd @@ -1,3 +1,3 @@ #... -[0-9a-f ]+R_X86_64_PLT32 +0+ +.* +[0-9a-f ]+R_X86_64_PC32 +0+ +.* #... 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" \
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor