diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2022-07-18 18:24:26 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2022-07-19 08:41:52 -0700 |
commit | f638657759f5b9b4eb31a1aa6b9fe6e6fb01f4a0 (patch) | |
tree | 8be7ee0ba0f54495fab063d3a6fb7c626afa2b88 /ld/testsuite/ld-i386 | |
parent | d19a265487eda186b6977d9d15648cda9fad3298 (diff) | |
download | binutils-gdb-f638657759f5b9b4eb31a1aa6b9fe6e6fb01f4a0.tar.gz |
x86: Disallow invalid relocations against protected symbols
Since glibc 2.36 will issue warnings for copy relocation against
protected symbols and non-canonical reference to canonical protected
functions, change the linker to always disallow such relocations.
bfd/
* elf32-i386.c (elf_i386_scan_relocs): Remove check for
elf_has_indirect_extern_access.
* elf64-x86-64.c (elf_x86_64_scan_relocs): Likewise.
(elf_x86_64_relocate_section): Remove check for
elf_has_no_copy_on_protected.
* elfxx-x86.c (elf_x86_allocate_dynrelocs): Check for building
executable instead of elf_has_no_copy_on_protected.
(_bfd_x86_elf_adjust_dynamic_symbol): Disallow copy relocation
against non-copyable protected symbol.
* elfxx-x86.h (SYMBOL_NO_COPYRELOC): Remove check for
elf_has_no_copy_on_protected.
ld/
* testsuite/ld-i386/i386.exp: Expect linker error for PR ld/17709
test.
* testsuite/ld-i386/pr17709.rd: Removed.
* testsuite/ld-i386/pr17709.err: New file.
* testsuite/ld-x86-64/pr17709.rd: Removed.
* testsuite/ld-x86-64/pr17709.err: New file.
* testsuite/ld-x86-64/pr28875-func.err: Updated.
* testsuite/ld-x86-64/x86-64.exp: Expect linker error for PR
ld/17709 test. Add tests for function pointer against protected
function.
Diffstat (limited to 'ld/testsuite/ld-i386')
-rw-r--r-- | ld/testsuite/ld-i386/i386.exp | 2 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/pr17709.err | 2 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/pr17709.rd | 4 |
3 files changed, 3 insertions, 5 deletions
diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp index b4f7de49fd5..0ab9c001336 100644 --- a/ld/testsuite/ld-i386/i386.exp +++ b/ld/testsuite/ld-i386/i386.exp @@ -224,7 +224,7 @@ set i386tests { "--32 -mx86-used-note=yes" {pr17709a.s} {} "libpr17709.so"} {"PR ld/17709 (2)" "-melf_i386 tmpdir/libpr17709.so" "" "--32 -mx86-used-note=yes" - {pr17709b.s} {{readelf -r pr17709.rd}} "pr17709"} + {pr17709b.s} {{ld "pr17709.err"}} "pr17709"} {"Build pr19827a.o" "" "" "--32 -mx86-used-note=yes" { pr19827a.S }} {"Build pr19827b.so" "-melf_i386 -shared" "" diff --git a/ld/testsuite/ld-i386/pr17709.err b/ld/testsuite/ld-i386/pr17709.err new file mode 100644 index 00000000000..fa6a4bacce3 --- /dev/null +++ b/ld/testsuite/ld-i386/pr17709.err @@ -0,0 +1,2 @@ +.*: tmpdir/pr17709b.o: copy relocation against non-copyable protected symbol `foo' in tmpdir/libpr17709.so +#... diff --git a/ld/testsuite/ld-i386/pr17709.rd b/ld/testsuite/ld-i386/pr17709.rd deleted file mode 100644 index 8414784b736..00000000000 --- a/ld/testsuite/ld-i386/pr17709.rd +++ /dev/null @@ -1,4 +0,0 @@ - -Relocation section '.rel\..*' at offset .* contains 1 entry: - Offset Info Type Sym\.Value Sym\. Name -[0-9a-f ]+R_386_COPY +[0-9a-f]+ +foo |