2009-07-16  H.J. Lu  <hongjiu.lu@intel.com>

	* elf32-i386.c (elf_i386_relocate_section): Don't get local
	STT_GNU_IFUNC symbol for relocatable link.
	* elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise.

ld/testsuite/

2009-07-16  H.J. Lu  <hongjiu.lu@intel.com>

	* ld-ifunc/ifunc-5r-local-i386.d: New.
	* ld-ifunc/ifunc-5r-local-x86-64.d: Likewise.
This commit is contained in:
H.J. Lu 2009-07-16 14:23:12 +00:00
parent 9a6f4e976d
commit 1f85278f17
6 changed files with 36 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2009-07-16 H.J. Lu <hongjiu.lu@intel.com>
* elf32-i386.c (elf_i386_relocate_section): Don't get local
STT_GNU_IFUNC symbol for relocatable link.
* elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise.
2009-07-10 H.J. Lu <hongjiu.lu@intel.com>
* bfdio.c (bfd_iovec): Add comments for bmmap.

View File

@ -2891,7 +2891,8 @@ elf_i386_relocate_section (bfd *output_bfd,
break;
}
}
else if (ELF32_ST_TYPE (sym->st_info) == STT_GNU_IFUNC)
else if (!info->relocatable
&& ELF32_ST_TYPE (sym->st_info) == STT_GNU_IFUNC)
{
/* Relocate against local STT_GNU_IFUNC symbol. */
h = elf_i386_get_local_sym_hash (htab, input_bfd,

View File

@ -2612,7 +2612,8 @@ elf64_x86_64_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
&sec, rel);
/* Relocate against local STT_GNU_IFUNC symbol. */
if (ELF64_ST_TYPE (sym->st_info) == STT_GNU_IFUNC)
if (!info->relocatable
&& ELF64_ST_TYPE (sym->st_info) == STT_GNU_IFUNC)
{
h = elf64_x86_64_get_local_sym_hash (htab, input_bfd,
rel, FALSE);

View File

@ -1,3 +1,8 @@
2009-07-16 H.J. Lu <hongjiu.lu@intel.com>
* ld-ifunc/ifunc-5r-local-i386.d: New.
* ld-ifunc/ifunc-5r-local-x86-64.d: Likewise.
2009-07-16 Nathan Sidwell <nathan@codesourcery.com>
* ld-arm/arm-target2.s: Add addend cases.

View File

@ -0,0 +1,11 @@
#source: ifunc-5-local-i386.s
#ld: -r -m elf_i386
#as: --32
#readelf: -r --wide
#target: x86_64-*-* i?86-*-*
Relocation section '.rel.text' at .*
[ ]+Offset[ ]+Info[ ]+Type[ ]+.*
[0-9a-f]+[ ]+[0-9a-f]+[ ]+R_386_GOTPC[ ]+0+[ ]+_GLOBAL_OFFSET_TABLE_[ ]*
[0-9a-f]+[ ]+[0-9a-f]+[ ]+R_386_PLT32[ ]+foo\(\)[ ]+foo[ ]*
[0-9a-f]+[ ]+[0-9a-f]+[ ]+R_386_GOT32[ ]+foo\(\)[ ]+foo[ ]*

View File

@ -0,0 +1,10 @@
#source: ifunc-5-local-x86-64.s
#as: --64
#ld: -r -melf_x86_64
#readelf: -r --wide
#target: x86_64-*-*
Relocation section '.rela.text' at .*
[ ]+Offset[ ]+Info[ ]+Type[ ]+.*
[0-9a-f]+[ ]+[0-9a-f]+[ ]+R_X86_64_PLT32[ ]+foo\(\)[ ]+foo - 4
[0-9a-f]+[ ]+[0-9a-f]+[ ]+R_X86_64_GOTPCREL[ ]+foo\(\)[ ]+foo - 4