binutils-gdb/ld/testsuite
Fangrui Song 90b7a5df15 aarch64: Disallow copy relocations on protected data
If an executable has copy relocations for extern protected data, that
can only work if the shared object containing the definition is built
with assumptions (a) the compiler emits GOT-generating relocations (b)
the linker produces R_*_GLOB_DAT instead of R_*_RELATIVE.  Otherwise the
shared object uses its own definition directly and the executable
accesses a stale copy.  Note: the GOT relocations defeat the purpose of
protected visibility as an optimization, and it turns out this never
worked perfectly.

glibc 2.36 will warn on copy relocations on protected data.  Let's
produce a warning at link time, matching ld.lld which has been used on
many aarch64 OSes.

Note: x86 requires GNU_PROPERTY_NO_COPY_ON_PROTECTED to have the error.
This is to largely due to GCC 5's "x86-64: Optimize access to globals in
PIE with copy reloc" which started to use direct access relocations for
external data symbols in -fpie mode.

GCC's aarch64 port does not have the change.  Nowadays with most builds
switching to -fpie/-fpic, aarch64 mostly doesn't need to worry about
copy relocations.  So for aarch64 we simply don't check
GNU_PROPERTY_NO_COPY_ON_PROTECTED.
2022-06-22 10:55:12 -07:00
..
config
ld-aarch64 aarch64: Disallow copy relocations on protected data 2022-06-22 10:55:12 -07:00
ld-alpha
ld-arc
ld-arm Trailing spaces in objdump -r header 2022-05-31 11:25:09 +09:30
ld-auto-import
ld-avr
ld-bootstrap ld: add --package-metadata 2022-05-26 12:56:12 +09:30
ld-bpf
ld-cdtest
ld-checks
ld-cris Trailing spaces in objdump -r header 2022-05-31 11:25:09 +09:30
ld-crx
ld-csky Trailing spaces in objdump -r header 2022-05-31 11:25:09 +09:30
ld-ctf libctf: impose an ordering on conflicting types 2022-04-28 11:47:12 +01:00
ld-cygwin
ld-d10v
ld-discard
ld-dynamic
ld-elf Default to disabling the linker warnings about execstack and RWX segments if the target is the HPPA architecture. 2022-06-21 11:22:38 +01:00
ld-elfcomm
ld-elfvers
ld-elfweak
ld-fastcall
ld-frv Add linker warning for when it creates an executable stack. 2022-04-20 13:39:05 +01:00
ld-gc Add linker warning for when it creates an executable stack. 2022-04-20 13:39:05 +01:00
ld-h8300
ld-i386 i386: Ajdust more tests for opcodes/i386: remove trailing whitespace 2022-05-31 14:55:41 -07:00
ld-ia64
ld-ifunc x86: Properly handle IFUNC function pointer reference 2022-05-31 16:28:06 -07:00
ld-libs
ld-linkonce
ld-loongarch-elf
ld-m68hc11
ld-m68k
ld-mep
ld-metag Trailing spaces in objdump -r header 2022-05-31 11:25:09 +09:30
ld-mips-elf BFD_RELOC_MIPS_16 2022-06-14 10:03:55 +09:30
ld-misc
ld-mmix
ld-mn10300 Trailing spaces in objdump -r header 2022-05-31 11:25:09 +09:30
ld-msp430-elf
ld-nds32
ld-nios2 Trailing spaces in objdump -r header 2022-05-31 11:25:09 +09:30
ld-or1k
ld-pdp11
ld-pe
ld-pie
ld-plugin LTO: Handle __real_SYM reference in IR 2022-05-04 16:26:51 -07:00
ld-powerpc Trailing spaces in objdump -r header 2022-05-31 11:25:09 +09:30
ld-pru Trailing spaces in objdump -r header 2022-05-31 11:25:09 +09:30
ld-riscv-elf
ld-s12z
ld-s390
ld-scripts ld testsuite xcoff XPASS 2022-04-21 15:30:50 +09:30
ld-selective
ld-sh
ld-shared
ld-size Trailing spaces in objdump -r header 2022-05-31 11:25:09 +09:30
ld-sparc
ld-spu
ld-srec
ld-tic6x Trailing spaces in objdump -r header 2022-05-31 11:25:09 +09:30
ld-tilegx
ld-tilepro
ld-undefined
ld-unique Add linker warning for when it creates an executable stack. 2022-04-20 13:39:05 +01:00
ld-v850
ld-vax-elf
ld-visium
ld-vsb
ld-vxworks
ld-x86-64 opcodes/i386: remove trailing whitespace from insns with zero operands 2022-05-27 14:12:33 +01:00
ld-xc16x
ld-xstormy16
ld-xtensa
ld-z8k
ld-z80
lib
ChangeLog-2004
ChangeLog-2005
ChangeLog-2006
ChangeLog-2007
ChangeLog-2008
ChangeLog-2009
ChangeLog-2010
ChangeLog-2011
ChangeLog-2012
ChangeLog-2013
ChangeLog-2014
ChangeLog-2015
ChangeLog-9303