binutils-gdb/ld/testsuite/ld-ifunc
H.J. Lu 4ec0995016 x86; Allow IFUNC pointer defined in PDE
If IFUNC symbol is defined in position-dependent executable, we should
change it to the normal function and set its address to its PLT entry
which should be resolved by R_*_IRELATIVE at run-time.  All external
references should be resolved to its PLT in executable.

bfd/

	PR ld/23169
	* elf-ifunc.c (_bfd_elf_allocate_ifunc_dyn_relocs): Don't issue
	an error on IFUNC pointer defined in PDE.
	* elf32-i386.c (elf_i386_finish_dynamic_symbol): Call
	_bfd_x86_elf_link_fixup_ifunc_symbol.
	* elf64-x86-64.c (elf_x86_64_finish_dynamic_symbol): Likewise.
	* elfxx-x86.c (_bfd_x86_elf_link_fixup_ifunc_symbol): New
	function.
	* elfxx-x86.h (_bfd_x86_elf_link_fixup_ifunc_symbol): New.

ld/

	PR ld/23169
	* testsuite/ld-ifunc/ifunc-9-i386.d: New file.
	* testsuite/ld-ifunc/ifunc-9-x86-64.d: Likewise.
	* testsuite/ld-ifunc/pr23169a.c: Likewise.
	* testsuite/ld-ifunc/pr23169a.rd: Likewise.
	* testsuite/ld-ifunc/pr23169b.c: Likewise.
	* testsuite/ld-ifunc/pr23169b.c: Likewise.
	* testsuite/ld-ifunc/pr23169c.rd: Likewise.
	* testsuite/ld-ifunc/pr23169c.rd: Likewise.
	* testsuite/ld-ifunc/ifunc-9-x86.d: Removed.
	* testsuite/ld-ifunc/ifunc.exp: Run PR ld/23169 tests.
2018-05-14 03:55:50 -07:00
..
binutils.exp various i386-aout and i386-coff target removal 2018-04-18 09:34:19 +09:30
dummy.c
ifunc-1-local-x86.d i386: Update IFUNC tests for PLT address 2018-02-16 09:32:56 -08:00
ifunc-1-local-x86.map x86: Dump local IFUNC functions in the map file 2017-06-08 03:53:43 -07:00
ifunc-1-local-x86.s
ifunc-1-x86.d i386: Update IFUNC tests for PLT address 2018-02-16 09:32:56 -08:00
ifunc-1-x86.map x86: Dump local IFUNC functions in the map file 2017-06-08 03:53:43 -07:00
ifunc-1-x86.s
ifunc-2-i386-now.d x86: Add -z noseparate-code to IFUNC tests 2018-02-16 09:45:24 -08:00
ifunc-2-i386.d
ifunc-2-i386.s
ifunc-2-local-i386-now.d x86: Add -z noseparate-code to IFUNC tests 2018-02-16 09:45:24 -08:00
ifunc-2-local-i386.d
ifunc-2-local-i386.s
ifunc-2-local-x86-64-now.d x86-64: Add -z max-page-size=0x200000 -z noseparate-code to IFUNC tests 2018-02-16 09:39:22 -08:00
ifunc-2-local-x86-64.d x86: Add -z noseparate-code to IFUNC tests 2018-02-16 09:45:24 -08:00
ifunc-2-local-x86-64.s
ifunc-2-x86-64-now.d x86-64: Add -z max-page-size=0x200000 -z noseparate-code to IFUNC tests 2018-02-16 09:39:22 -08:00
ifunc-2-x86-64.d x86-64: Add -z max-page-size=0x200000 -z noseparate-code to IFUNC tests 2018-02-16 09:39:22 -08:00
ifunc-2-x86-64.s
ifunc-3-x86.s
ifunc-3a-x86.d i386: Update IFUNC tests for PLT address 2018-02-16 09:32:56 -08:00
ifunc-3b-x86.d
ifunc-4-local-x86.d
ifunc-4-local-x86.s
ifunc-4-x86.d
ifunc-4-x86.s
ifunc-4a-x86.d
ifunc-5-i386.s
ifunc-5-local-i386.s
ifunc-5-local-x86-64.s
ifunc-5-x86-64.s
ifunc-5a-i386.d
ifunc-5a-local-i386.d
ifunc-5a-local-x86-64.d
ifunc-5a-x86-64.d
ifunc-5b-i386.d
ifunc-5b-local-i386.d
ifunc-5b-local-x86-64.d
ifunc-5b-x86-64.d
ifunc-5r-local-i386.d
ifunc-5r-local-x86-64.d
ifunc-6-i386.s
ifunc-6-x86-64.s
ifunc-6a-i386.d
ifunc-6a-x86-64.d
ifunc-6b-i386.d
ifunc-6b-x86-64.d
ifunc-7-i386.s
ifunc-7-x86-64.s
ifunc-7a-i386.d
ifunc-7a-x86-64.d
ifunc-7b-i386.d
ifunc-7b-x86-64.d
ifunc-8-i386.d
ifunc-8-x86-64.d
ifunc-8a-i386.s
ifunc-8a-x86-64.s
ifunc-8b-i386.s
ifunc-8b-x86-64.s
ifunc-9-i386.d x86; Allow IFUNC pointer defined in PDE 2018-05-14 03:55:50 -07:00
ifunc-9-x86-64.d x86; Allow IFUNC pointer defined in PDE 2018-05-14 03:55:50 -07:00
ifunc-9-x86.s
ifunc-10-i386.d
ifunc-10-i386.s
ifunc-10-x86-64.d
ifunc-10-x86-64.s
ifunc-11-i386.d
ifunc-11-i386.s
ifunc-11-x86-64.d
ifunc-11-x86-64.s
ifunc-12-i386.d
ifunc-12-i386.s
ifunc-12-x86-64.d
ifunc-12-x86-64.s
ifunc-13-i386.d readelf ngettext fixes 2017-11-07 17:01:16 +10:30
ifunc-13-x86-64.d readelf ngettext fixes 2017-11-07 17:01:16 +10:30
ifunc-13a-i386.s
ifunc-13a-x86-64.s
ifunc-13b-i386.s
ifunc-13b-x86-64.s
ifunc-14a-i386.d
ifunc-14a-x86-64.d
ifunc-14a.s
ifunc-14b-i386.d
ifunc-14b-x86-64.d
ifunc-14b.s
ifunc-14c-i386.d
ifunc-14c-x86-64.d
ifunc-14c.s
ifunc-14d-i386.d
ifunc-14d-x86-64.d
ifunc-14e-i386.d
ifunc-14e-x86-64.d
ifunc-14f-i386.d
ifunc-14f-x86-64.d
ifunc-15-i386.d readelf ngettext fixes 2017-11-07 17:01:16 +10:30
ifunc-15-i386.s
ifunc-15-x86-64.d readelf ngettext fixes 2017-11-07 17:01:16 +10:30
ifunc-15-x86-64.s
ifunc-16-i386-now.d x86: Generate PLT relocations for -z now 2017-05-11 07:45:59 -07:00
ifunc-16-i386.d
ifunc-16-x86-64-now.d x86: Generate PLT relocations for -z now 2017-05-11 07:45:59 -07:00
ifunc-16-x86-64.d
ifunc-16-x86.s
ifunc-17a-i386.d
ifunc-17a-x86-64.d
ifunc-17a.s
ifunc-17b-i386.d
ifunc-17b-x86-64.d
ifunc-17b.s
ifunc-18a-i386.d
ifunc-18a-x86-64.d
ifunc-18a.s
ifunc-18b-i386.d
ifunc-18b-x86-64.d
ifunc-18b.s
ifunc-19a-i386.d
ifunc-19a-x86-64.d
ifunc-19a.s
ifunc-19b-i386.d
ifunc-19b-x86-64.d
ifunc-19b.s
ifunc-20-i386.d readelf ngettext fixes 2017-11-07 17:01:16 +10:30
ifunc-20-x86-64.d readelf ngettext fixes 2017-11-07 17:01:16 +10:30
ifunc-20.s
ifunc-21-i386.d x86: Add -z noseparate-code to IFUNC tests 2018-02-16 09:45:24 -08:00
ifunc-21-i386.s
ifunc-21-x86-64.d x86-64: Add -z max-page-size=0x200000 -z noseparate-code to IFUNC tests 2018-02-16 09:39:22 -08:00
ifunc-21-x86-64.s
ifunc-22-i386.d x86: Add -z noseparate-code to IFUNC tests 2018-02-16 09:45:24 -08:00
ifunc-22-i386.s
ifunc-22-x86-64.d x86-64: Add -z max-page-size=0x200000 -z noseparate-code to IFUNC tests 2018-02-16 09:39:22 -08:00
ifunc-22-x86-64.s
ifunc-23-x86.s
ifunc-23a-x86.d readelf ngettext fixes 2017-11-07 17:01:16 +10:30
ifunc-23b-x86.d readelf ngettext fixes 2017-11-07 17:01:16 +10:30
ifunc-23c-x86.d readelf ngettext fixes 2017-11-07 17:01:16 +10:30
ifunc-24-x86.s
ifunc-24a-x86.d readelf ngettext fixes 2017-11-07 17:01:16 +10:30
ifunc-24b-x86.d readelf ngettext fixes 2017-11-07 17:01:16 +10:30
ifunc-24c-x86.d readelf ngettext fixes 2017-11-07 17:01:16 +10:30
ifunc-25-x86.s
ifunc-25a-x86.d readelf ngettext fixes 2017-11-07 17:01:16 +10:30
ifunc-25b-x86.d readelf ngettext fixes 2017-11-07 17:01:16 +10:30
ifunc-25c-x86.d readelf ngettext fixes 2017-11-07 17:01:16 +10:30
ifunc-common-1.out
ifunc-common-1a.c
ifunc-common-1b.c
ifunc-lib.c
ifunc-main.c
ifunc-main.out
ifunc.exp x86; Allow IFUNC pointer defined in PDE 2018-05-14 03:55:50 -07:00
ifuncmod5.d Fix Sparc, s390 and AArch64 targets so that they can handle relocs against ifunc symbols found in note sections. 2018-03-09 14:37:36 +00:00
ifuncmod5.s Fix Sparc, s390 and AArch64 targets so that they can handle relocs against ifunc symbols found in note sections. 2018-03-09 14:37:36 +00:00
lib.c
pass.out
pr16467.out
pr16467a.c
pr16467a.map
pr16467b.c
pr16467b.map
pr16467c.c
pr17154-i386-now.d x86: Add -z noseparate-code to IFUNC tests 2018-02-16 09:45:24 -08:00
pr17154-i386.d x86: Add -z noseparate-code to IFUNC tests 2018-02-16 09:45:24 -08:00
pr17154-x86-64-now.d x86-64: Add -z max-page-size=0x200000 -z noseparate-code to IFUNC tests 2018-02-16 09:39:22 -08:00
pr17154-x86-64.d x86-64: Add -z max-page-size=0x200000 -z noseparate-code to IFUNC tests 2018-02-16 09:39:22 -08:00
pr17154-x86.s
pr18808.out
pr18808a.c
pr18808b.c Fix compile time warning message in linker testsuite test. 2017-02-21 11:00:21 +00:00
pr18841.out
pr18841a.c
pr18841b.c
pr18841c.c
pr23169a.c x86; Allow IFUNC pointer defined in PDE 2018-05-14 03:55:50 -07:00
pr23169a.rd x86; Allow IFUNC pointer defined in PDE 2018-05-14 03:55:50 -07:00
pr23169b.c x86; Allow IFUNC pointer defined in PDE 2018-05-14 03:55:50 -07:00
pr23169b.rd x86; Allow IFUNC pointer defined in PDE 2018-05-14 03:55:50 -07:00
pr23169c.c x86; Allow IFUNC pointer defined in PDE 2018-05-14 03:55:50 -07:00
pr23169c.rd x86; Allow IFUNC pointer defined in PDE 2018-05-14 03:55:50 -07:00
prog.c
test-1.c
test-2.c