old-cross-binutils/ld/testsuite/ld-i386
H.J. Lu f74839702e Add extern_protected_data and set it for x86
Re-apply: commit ca3fe95e46

With copy relocation, address of protected data defined in the shared
library may be external.  This patch adds extern_protected_data and
changes _bfd_elf_symbol_refs_local_p to return false for protected data
if extern_protected_data is true.

This patch will break building shared libraries with protected data
symbols using GCCs older than GCC 5 without the bug fix for

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65248

GCC backport request should be made in the GCC bug report above.

To get correct run-time behavior on Linux, glibc 2.22 or above are
required, which have the bug fix for

https://sourceware.org/bugzilla/show_bug.cgi?id=17711

Backports for glibc 2.21, 2.20, 2.19 and 2.18 are on hjl/pr17711/2.21,
hjl/pr17711/2.20, hjl/pr17711/2.19 and hjl/pr17711/2.18 branches,
respectively, at

https://sourceware.org/git/?p=glibc.git;a=summary

bfd/

	PR ld/pr15228
	PR ld/pr17709
	* elf-bfd.h (elf_backend_data): Add extern_protected_data.
	* elf32-i386.c (elf_backend_extern_protected_data): New.
	Defined to 1.
	* elf64-x86-64.c (elf_backend_extern_protected_data): Likewise.
	* elflink.c (_bfd_elf_adjust_dynamic_copy): Don't error on
	copy relocs against protected symbols if extern_protected_data
	is true.
	(_bfd_elf_symbol_refs_local_p): Don't return true on protected
	non-function symbols if extern_protected_data is true.
	* elfxx-target.h (elf_backend_extern_protected_data): New.
	Default to 0.
	(elfNN_bed): Initialize extern_protected_data with
	elf_backend_extern_protected_data.

ld/testsuite/

	PR ld/pr15228
	PR ld/pr17709
	* ld-i386/i386.exp (i386tests): Add a test for PR ld/17709.
	* ld-i386/pr17709-nacl.rd: New file.
	* ld-i386/pr17709.rd: Likewise.
	* ld-i386/pr17709a.s: Likewise.
	* ld-i386/pr17709b.s: Likewise.
	* ld-i386/protected3.d: Updated.
	* ld-i386/protected3.s: Likewise.
	* ld-x86-64/pr17709-nacl.rd: New file.
	* ld-x86-64/pr17709.rd: Likewise.
	* ld-x86-64/pr17709a.s: Likewise.
	* ld-x86-64/pr17709b.s: Likewise.
	* ld-x86-64/protected3.d: Updated.
	* ld-x86-64/protected3.s: Likewise.
	* ld-x86-64/x86-64.exp (x86_64tests): Add a test for PR ld/17709.
2015-04-10 11:06:34 -07:00
..
abs.d
abs.s
alloc.d
alloc.s
alloc.t
combreloc.d
combreloc.s
compressed1.d Use nm/readelf with "failif" 2015-02-19 04:45:27 -08:00
compressed1.s
discarded1.d
discarded1.s
discarded1.t
emit-relocs-nacl.rd
emit-relocs.rd
emit-relocs.s
export-class.exp ChangeLog rotatation and copyright year update 2015-01-02 00:53:45 +10:30
hidden1.d
hidden1.s
hidden2.d
hidden2.s
hidden3.d
hidden3.s
i386-export-class.rd
i386-export-class.xd
i386.exp Add extern_protected_data and set it for x86 2015-04-10 11:06:34 -07:00
lea1.s
lea1a.d
lea1b.d
lea1c.d
lea1d.d
lea1e.d
lea1f.d
mov1.s
mov1a.d
mov1b.d
nogot1.d
nogot1.s
nogot2.d
nogot2.s
pcrel8.d
pcrel8.s
pcrel16.d
pcrel16.s
pcrel16abs.d
pcrel16abs.s
plt-lib.c Add function and function pointer tests for i386 2014-11-21 08:45:02 -08:00
plt-main.out Add function and function pointer tests for i386 2014-11-21 08:45:02 -08:00
plt-main.rd Optimize out i386/x86-64 JUMP_SLOT relocation 2014-11-25 05:05:39 -08:00
plt-main1.c Add function and function pointer tests for i386 2014-11-21 08:45:02 -08:00
plt-main1.rd Add function and function pointer tests for i386 2014-11-21 08:45:02 -08:00
plt-main2.c Add function and function pointer tests for i386 2014-11-21 08:45:02 -08:00
plt-main2.rd Add function and function pointer tests for i386 2014-11-21 08:45:02 -08:00
plt-main3.c Add function and function pointer tests for i386 2014-11-21 08:45:02 -08:00
plt-main3.rd Add function and function pointer tests for i386 2014-11-21 08:45:02 -08:00
plt-main4.c Add function and function pointer tests for i386 2014-11-21 08:45:02 -08:00
plt-main4.rd Add function and function pointer tests for i386 2014-11-21 08:45:02 -08:00
plt-main5.c Add function and function pointer tests for i386 2014-11-21 08:45:02 -08:00
plt-nacl.pd
plt-pic-nacl.pd
plt-pic.pd
plt-pic.s
plt.pd
plt.s
pltlib.s
pr12570a.d
pr12570a.s
pr12570b.d
pr12570b.s
pr12627.d
pr12627.s
pr12627.t
pr12718.d
pr12718.s
pr12921.d
pr12921.s
pr13302.d
pr13302.s
pr14215.d
pr14215.s
pr17057.d
pr17057.s
pr17306a.s
pr17306b.s
pr17709-nacl.rd Add extern_protected_data and set it for x86 2015-04-10 11:06:34 -07:00
pr17709.rd Add extern_protected_data and set it for x86 2015-04-10 11:06:34 -07:00
pr17709a.s Add extern_protected_data and set it for x86 2015-04-10 11:06:34 -07:00
pr17709b.s Add extern_protected_data and set it for x86 2015-04-10 11:06:34 -07:00
pr17935-1.d Issue relocation in RO section warning for -z text 2015-02-07 05:28:06 -08:00
pr17935-1.s Issue relocation in RO section warning for -z text 2015-02-07 05:28:06 -08:00
pr17935-2.d Issue relocation in RO section warning for -z text 2015-02-07 05:28:06 -08:00
pr17935-2.s Issue relocation in RO section warning for -z text 2015-02-07 05:28:06 -08:00
protected1.d
protected1.s
protected2.d
protected2.s
protected3.d Add extern_protected_data and set it for x86 2015-04-10 11:06:34 -07:00
protected3.s Add extern_protected_data and set it for x86 2015-04-10 11:06:34 -07:00
protected4.d
protected4.s
protected5.d
protected5.s
reloc.d
reloc.s
tlsbin-nacl.rd Properly place the NULL STT_FILE symbol 2015-02-16 04:54:45 -08:00
tlsbin.dd
tlsbin.rd Properly place the NULL STT_FILE symbol 2015-02-16 04:54:45 -08:00
tlsbin.s
tlsbin.sd
tlsbin.td
tlsbindesc-nacl.rd Properly place the NULL STT_FILE symbol 2015-02-16 04:54:45 -08:00
tlsbindesc.dd
tlsbindesc.rd Properly place the NULL STT_FILE symbol 2015-02-16 04:54:45 -08:00
tlsbindesc.s
tlsbindesc.sd
tlsbindesc.td
tlsbinpic.s
tlsdesc-nacl.rd Properly place the NULL STT_FILE symbol revistited 2015-02-18 00:31:52 +10:30
tlsdesc.dd
tlsdesc.rd Properly place the NULL STT_FILE symbol revistited 2015-02-18 00:31:52 +10:30
tlsdesc.s
tlsdesc.sd
tlsdesc.td
tlsg.s
tlsg.sd
tlsgd1.dd
tlsgd1.s
tlsgd2.d
tlsgd2.s
tlsgdesc-nacl.rd
tlsgdesc.dd
tlsgdesc.rd
tlsgdesc.s
tlsie1.dd
tlsie1.s
tlsie2.d
tlsie2.s
tlsie3.d
tlsie3.s
tlsie4.d
tlsie4.s
tlsie5.d
tlsie5.s
tlsindntpoff.dd
tlsindntpoff.s
tlsld1.dd
tlsld1.s
tlslib.s
tlsnopic-nacl.rd Properly place the NULL STT_FILE symbol revistited 2015-02-18 00:31:52 +10:30
tlsnopic.dd
tlsnopic.rd Properly place the NULL STT_FILE symbol revistited 2015-02-18 00:31:52 +10:30
tlsnopic.sd
tlsnopic1.s
tlsnopic2.s
tlspic-nacl.rd Properly place the NULL STT_FILE symbol revistited 2015-02-18 00:31:52 +10:30
tlspic.dd
tlspic.rd Properly place the NULL STT_FILE symbol revistited 2015-02-18 00:31:52 +10:30
tlspic.sd
tlspic.td
tlspic1.s
tlspic2.s
tlspie1.d
tlspie1.s
tlspie2.d
tlspie2.s
vxworks1-lib.dd
vxworks1-lib.nd
vxworks1-lib.rd
vxworks1-lib.s
vxworks1-lib.td
vxworks1-static.d
vxworks1.dd
vxworks1.ld
vxworks1.rd
vxworks1.s
vxworks2-static.sd
vxworks2.s
vxworks2.sd
warn1.d
warn1.s
zero.s