binutils-gdb/ld/testsuite
H.J. Lu 0a59decbb8 elf: Add PT_GNU_PROPERTY segment type
Linkers group input note sections with the same name into one output
note section with the same name.  One output note section is placed in
one PT_NOTE segment.  New linkers merge all input .note.gnu.property
sections into one output .note.gnu.property section with a single
NT_GNU_PROPERTY_TYPE_0 note in a single PT_NOTE segment.  Since older
linkers treat input .note.gnu.property section as a generic note section
and just concatenate all input .note.gnu.property sections into one
output .note.gnu.property section without merging them, we may
see one or more NT_GNU_PROPERTY_TYPE_0 notes in PT_NOTE segment, which
are invalid.

GNU_PROPERTY_X86_UINT32_VALID was defined to address this issue such
that linker sets the bit for non-relocatable outputs.  But it isn't
sufficient:

1. It doesn't cover generic properties.
2. When -mx86-used-note=yes is passed to x86 assembler, the
GNU_PROPERTY_X86_UINT32_VALID bit is set in GNU_PROPERTY_X86_ISA_1_USED
property in object file and older linkers generate invalid
NT_GNU_PROPERTY_TYPE_0 notes with the GNU_PROPERTY_X86_UINT32_VALID bit
set.

I am proposing the following changes:

1. Add PT_GNU_PROPERTY segment type:

 # define PT_GNU_PROPERTY (PT_LOOS + 0x474e553)

which covers .note.gnu.property section.
2. Remove GNU_PROPERTY_X86_UINT32_VALID.

bfd/

	PR ld/23900
	* elf.c (get_program_header_size): Add a PT_GNU_PROPERTY
	segment for NOTE_GNU_PROPERTY_SECTION_NAME.
	(_bfd_elf_map_sections_to_segments): Create a PT_GNU_PROPERTY
	segment for NOTE_GNU_PROPERTY_SECTION_NAME.
	* elfxx-x86.c (_bfd_elf_link_setup_gnu_properties): Don't set
	GNU_PROPERTY_X86_UINT32_VALID.

binutils/

	PR ld/23900
	* readelf.c (get_segment_type): Support PT_GNU_PROPERTY.
	(decode_x86_isa): Don't check GNU_PROPERTY_X86_UINT32_VALID.
	(decode_x86_feature_1): Likewise.
	(decode_x86_feature_2): Likewise.
	(print_gnu_property_note): Remove GNU_PROPERTY_X86_UINT32_VALID
	check.
	* testsuite/binutils-all/i386/empty.d: Updated.
	* testsuite/binutils-all/x86-64/empty-x32.d: Likewise.
	* testsuite/binutils-all/x86-64/empty.d: Likewise.
	* testsuite/binutils-all/i386/pr21231b.s: Change
	GNU_PROPERTY_X86_ISA_1_USED bits to 0x7fffffff.
	* testsuite/binutils-all/x86-64/pr21231b.s: Likewise.

gas/

	PR ld/23900
	* config/tc-i386.c (x86_cleanup): Don't set
	GNU_PROPERTY_X86_UINT32_VALID.
	* testsuite/gas/i386/property-1.s: Change
	GNU_PROPERTY_X86_ISA_1_USED bits to 0.

include/

	PR ld/23900
	* elf/common.h (PT_GNU_PROPERTY): New.
	(GNU_PROPERTY_X86_UINT32_VALID): Removed.

ld/

	PR ld/23900
	* testsuite/ld-elf/elf.exp: Run PR ld/23900 test.
	* testsuite/ld-elf/pr23900-1-32.rd: New file.
	* testsuite/ld-elf/pr23900-1-64.rd: Likewise.
	* testsuite/ld-elf/pr23900-1.d: Likewise.
	* testsuite/ld-elf/pr23900-1.s: Likewise.
	* testsuite/ld-elf/pr23900-2.s: Likewise.
	* testsuite/ld-elf/pr23900-2a.d: Likewise.
	* testsuite/ld-elf/pr23900-2b.d: Likewise.
	* testsuite/ld-i386/ibt-plt-1.d: Adjusted.
	* testsuite/ld-i386/ibt-plt-2c.d: Likewise.
	* testsuite/ld-i386/ibt-plt-2d.d: Likewise.
	* testsuite/ld-i386/ibt-plt-3d.d: Likewise.
	* testsuite/ld-x86-64/ibt-plt-1-x32.d: Likewise.
	* testsuite/ld-x86-64/ibt-plt-1.d: Likewise.
	* testsuite/ld-x86-64/ibt-plt-2c-x32.d: Likewise.
	* testsuite/ld-x86-64/ibt-plt-2c.d: Likewise.
	* testsuite/ld-x86-64/ibt-plt-2d-x32.d: Likewise.
	* testsuite/ld-x86-64/ibt-plt-2c.d: Likewise.
	* testsuite/ld-x86-64/ibt-plt-3c-x32.d: Likewise.
	* testsuite/ld-x86-64/ibt-plt-3c.d: Likewise.
	* testsuite/ld-x86-64/ibt-plt-3d-x32.d: Likewise.
	* testsuite/ld-x86-64/ibt-plt-3d.d: Likewise.
	* testsuite/ld-i386/pr23372c.d: Expect <None>
	for GNU_PROPERTY_X86_ISA_1_USED.
	* testsuite/ld-x86-64/pr23372c-x32.d: Likewise.
	* testsuite/ld-x86-64/pr23372c.d: Likewise.
	* testsuite/ld-x86-64/pr23372d-x32.d: Likewise.
	* testsuite/ld-x86-64/pr23372d.d: Likewise.
	* testsuite/ld-x86-64/property-x86-5a.s: Change
	GNU_PROPERTY_X86_ISA_1_USED bits to 0.
	* testsuite/ld-x86-64/property-x86-5b.s: Likewise.
2018-12-14 04:55:34 -08:00
..
config elfedit: Add --enable-x86-feature/--disable-x86-feature 2018-11-06 09:38:51 -08:00
ld-aarch64 AArch64: Fix regression in Cortex A53 erratum when PIE. (PR ld/23904) 2018-11-27 12:42:22 +00:00
ld-alpha
ld-arc [ARC] Update ld tests. 2018-11-09 13:24:29 +02:00
ld-arm
ld-auto-import
ld-avr Fix more fallout from 17f6ade235 2018-09-21 09:55:38 +09:30
ld-bootstrap
ld-cdtest
ld-checks ld: Add the entry symbol, _main, for LynxOS targets 2018-09-20 12:31:20 -07:00
ld-cris
ld-crx
ld-csky
ld-cygwin
ld-d10v Consolidate run_dump_test 2018-09-15 16:56:55 +09:30
ld-discard
ld-elf elf: Add PT_GNU_PROPERTY segment type 2018-12-14 04:55:34 -08:00
ld-elfcomm Andes Technology has good news for you, we plan to update the nds32 port of binutils on upstream! 2018-09-20 13:32:58 +01:00
ld-elfvers
ld-elfvsb
ld-elfweak
ld-fastcall
ld-frv
ld-gc Consolidate run_dump_test 2018-09-15 16:56:55 +09:30
ld-h8300
ld-i386 elf: Add PT_GNU_PROPERTY segment type 2018-12-14 04:55:34 -08:00
ld-ia64
ld-ifunc ld: Append -mx86-used-note=no to ASFLAGS 2018-08-31 04:48:05 -07:00
ld-libs
ld-linkonce
ld-m68hc11
ld-m68k
ld-mep
ld-metag
ld-mips-elf MIPS/LD: Accept high-part relocations in PIC code with absolute symbols 2018-11-27 16:34:03 +00:00
ld-misc
ld-mmix
ld-mn10300
ld-msp430-elf
ld-nds32 Andes Technology has good news for you, we plan to update the nds32 port of binutils on upstream! 2018-09-20 13:32:58 +01:00
ld-nios2
ld-or1k or1k: Add the l.adrp insn and supporting relocations 2018-10-05 11:41:41 +09:00
ld-pe
ld-pie
ld-plugin Override the previous definition from IR object 2018-12-07 15:40:02 -08:00
ld-powerpc PR23937, powerpc64le local ifunc IRELATIVE relocs are wrong 2018-11-30 16:18:58 +10:30
ld-pru
ld-riscv-elf RISC-V: Adjust __global_pointer$ value to reduce code size. 2018-10-15 16:00:28 -07:00
ld-s12z S12Z Add tests for relocs. 2018-09-16 17:50:09 +02:00
ld-s390 S/390: Prevent GOT access rewrite for certain symbols 2018-09-17 11:01:24 +02:00
ld-scripts elf: Report property change when merging properties 2018-12-07 08:30:43 -08:00
ld-selective
ld-sh
ld-shared
ld-size Ensure that binutils test names are unique. 2018-09-17 10:10:47 +01:00
ld-sparc
ld-spu Separate header PT_LOAD for -z separate-code 2018-10-08 20:26:08 +10:30
ld-srec ld: Append -Wa,-mx86-used-note=no for S-records tests 2018-08-31 04:44:59 -07:00
ld-tic6x Separate header PT_LOAD for -z separate-code 2018-10-08 20:26:08 +10:30
ld-tilegx
ld-tilepro
ld-undefined
ld-unique Ensure that binutils test names are unique. 2018-09-17 10:10:47 +01:00
ld-v850
ld-vax-elf
ld-visium
ld-vxworks
ld-x86-64 elf: Add PT_GNU_PROPERTY segment type 2018-12-14 04:55:34 -08:00
ld-xc16x
ld-xstormy16
ld-xtensa
ld-z8k
lib Fix ld action in run_dump_test 2018-11-01 17:19:17 +00:00
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