mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-07-26 11:22:28 +08:00
Add a test for R_386_GOT32/R_386_GOT32X IFUNC reloc error
bfd/ PR ld/20244 * elf32-i386.c (elf_i386_relocate_section): Properly get IFUNC symbol name when reporting R_386_GOT32/R_386_GOT32X relocation error against local IFUNC symbol without a base register for PIC. ld/ PR ld/20244 * testsuite/ld-i386/i386.exp: Run pr20244-4a, pr20244-4b and pr20244-4c. * testsuite/ld-i386/pr20244-4.s: New file. * testsuite/ld-i386/pr20244-4a.d: Likewise. * testsuite/ld-i386/pr20244-4b.d: Likewise. * testsuite/ld-i386/pr20244-4c.d: Likewise.
This commit is contained in:
bfd
ld
@ -1,3 +1,11 @@
|
|||||||
|
2017-02-15 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
PR ld/20244
|
||||||
|
* elf32-i386.c (elf_i386_relocate_section): Properly get IFUNC
|
||||||
|
symbol name when reporting R_386_GOT32/R_386_GOT32X relocation
|
||||||
|
error against local IFUNC symbol without a base register for
|
||||||
|
PIC.
|
||||||
|
|
||||||
2017-02-15 Maciej W. Rozycki <macro@imgtec.com>
|
2017-02-15 Maciej W. Rozycki <macro@imgtec.com>
|
||||||
|
|
||||||
* elf32-ppc.c (ppc_elf_check_relocs): Use `%H:' rather than
|
* elf32-ppc.c (ppc_elf_check_relocs): Use `%H:' rather than
|
||||||
|
@ -4355,7 +4355,7 @@ r_386_got32:
|
|||||||
const char *name;
|
const char *name;
|
||||||
|
|
||||||
disallow_got32:
|
disallow_got32:
|
||||||
if (h == NULL)
|
if (h == NULL || h->root.root.string == NULL)
|
||||||
name = bfd_elf_sym_name (input_bfd, symtab_hdr, sym,
|
name = bfd_elf_sym_name (input_bfd, symtab_hdr, sym,
|
||||||
NULL);
|
NULL);
|
||||||
else
|
else
|
||||||
|
10
ld/ChangeLog
10
ld/ChangeLog
@ -1,3 +1,13 @@
|
|||||||
|
2017-02-15 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
PR ld/20244
|
||||||
|
* testsuite/ld-i386/i386.exp: Run pr20244-4a, pr20244-4b and
|
||||||
|
pr20244-4c.
|
||||||
|
* testsuite/ld-i386/pr20244-4.s: New file.
|
||||||
|
* testsuite/ld-i386/pr20244-4a.d: Likewise.
|
||||||
|
* testsuite/ld-i386/pr20244-4b.d: Likewise.
|
||||||
|
* testsuite/ld-i386/pr20244-4c.d: Likewise.
|
||||||
|
|
||||||
2017-02-15 Maciej W. Rozycki <macro@imgtec.com>
|
2017-02-15 Maciej W. Rozycki <macro@imgtec.com>
|
||||||
|
|
||||||
* ldmisc.c (vfinfo): Don't print the function name again either
|
* ldmisc.c (vfinfo): Don't print the function name again either
|
||||||
|
@ -408,6 +408,9 @@ run_dump_test "pr20244-2a"
|
|||||||
run_dump_test "pr20244-2b"
|
run_dump_test "pr20244-2b"
|
||||||
run_dump_test "pr20244-2c"
|
run_dump_test "pr20244-2c"
|
||||||
run_dump_test "pr20244-2d"
|
run_dump_test "pr20244-2d"
|
||||||
|
run_dump_test "pr20244-4a"
|
||||||
|
run_dump_test "pr20244-4b"
|
||||||
|
run_dump_test "pr20244-4c"
|
||||||
run_dump_test "pr20253-3"
|
run_dump_test "pr20253-3"
|
||||||
run_dump_test "pr20253-4a"
|
run_dump_test "pr20253-4a"
|
||||||
run_dump_test "pr20253-4b"
|
run_dump_test "pr20253-4b"
|
||||||
|
10
ld/testsuite/ld-i386/pr20244-4.s
Normal file
10
ld/testsuite/ld-i386/pr20244-4.s
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
.text
|
||||||
|
.globl _start
|
||||||
|
.type _start, @function
|
||||||
|
_start:
|
||||||
|
mov ifunc@GOT, %eax
|
||||||
|
ret
|
||||||
|
.type ifunc, @gnu_indirect_function
|
||||||
|
ifunc:
|
||||||
|
mov $0xbadbeef, %eax
|
||||||
|
ret
|
18
ld/testsuite/ld-i386/pr20244-4a.d
Normal file
18
ld/testsuite/ld-i386/pr20244-4a.d
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#source: pr20244-4.s
|
||||||
|
#as: --32
|
||||||
|
#ld: -m elf_i386
|
||||||
|
#objdump: -dw
|
||||||
|
#notarget: i?86-*-nacl* x86_64-*-nacl*
|
||||||
|
|
||||||
|
.*: +file format .*
|
||||||
|
|
||||||
|
Disassembly of section .text:
|
||||||
|
|
||||||
|
0+804807c <_start>:
|
||||||
|
+[a-f0-9]+: 8b 05 8c 90 04 08 mov 0x804908c,%eax
|
||||||
|
+[a-f0-9]+: c3 ret
|
||||||
|
|
||||||
|
0+8048083 <ifunc>:
|
||||||
|
+[a-f0-9]+: b8 ef be ad 0b mov \$0xbadbeef,%eax
|
||||||
|
+[a-f0-9]+: c3 ret
|
||||||
|
#pass
|
11
ld/testsuite/ld-i386/pr20244-4b.d
Normal file
11
ld/testsuite/ld-i386/pr20244-4b.d
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#source: pr20244-4.s
|
||||||
|
#as: --32
|
||||||
|
#ld: -m elf_i386
|
||||||
|
#objdump: -s -j .got
|
||||||
|
#notarget: i?86-*-nacl* x86_64-*-nacl*
|
||||||
|
|
||||||
|
.*: +file format .*
|
||||||
|
|
||||||
|
Contents of section .got:
|
||||||
|
804908c 83800408 +.... +
|
||||||
|
#pass
|
4
ld/testsuite/ld-i386/pr20244-4c.d
Normal file
4
ld/testsuite/ld-i386/pr20244-4c.d
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#source: pr20244-4.s
|
||||||
|
#as: --32
|
||||||
|
#ld: -pie -m elf_i386
|
||||||
|
#error: direct GOT relocation R_386_GOT32X against `ifunc' without base register can not be used when making a shared object
|
Reference in New Issue
Block a user