]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
x86: Disallow invalid relocations against protected symbols
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 19 Jul 2022 01:24:26 +0000 (18:24 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Mon, 25 Jul 2022 17:01:46 +0000 (10:01 -0700)
commitfc69c7e989d531c95c686ce2bed3d3f89c33c142
tree926eb199fd95e49a4bbec7f7835db964ad15e165
parent366e8fc8f7b269f4c68d0d5768c64a5a7ca42d6b
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.

(cherry picked from commit f638657759f5b9b4eb31a1aa6b9fe6e6fb01f4a0)
bfd/elf32-i386.c
bfd/elf64-x86-64.c
bfd/elfxx-x86.c
bfd/elfxx-x86.h
ld/testsuite/ld-i386/i386.exp
ld/testsuite/ld-i386/pr17709.err [new file with mode: 0644]
ld/testsuite/ld-i386/pr17709.rd [deleted file]
ld/testsuite/ld-x86-64/pr17709.err [new file with mode: 0644]
ld/testsuite/ld-x86-64/pr17709.rd [deleted file]
ld/testsuite/ld-x86-64/pr28875-func.err
ld/testsuite/ld-x86-64/x86-64.exp