2012-09-03 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* elf32-s390.c (elf_s390_relocate_section): Handle PLTOFF for local and global ifunc symbols. * elf64-s390.c (elf_s390_relocate_section): Likewise.
This commit is contained in:
parent
f253d86d7f
commit
31db78f6a3
@ -1,3 +1,9 @@
|
||||
2012-09-03 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
|
||||
|
||||
* elf32-s390.c (elf_s390_relocate_section): Handle PLTOFF for
|
||||
local and global ifunc symbols.
|
||||
* elf64-s390.c (elf_s390_relocate_section): Likewise.
|
||||
|
||||
2012-09-02 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* elf-bfd.h (elf_link_hash_table): Add hdynamic for the
|
||||
|
@ -2349,6 +2349,10 @@ elf_s390_relocate_section (bfd *output_bfd,
|
||||
|
||||
switch (r_type)
|
||||
{
|
||||
case R_390_PLTOFF16:
|
||||
case R_390_PLTOFF32:
|
||||
relocation -= htab->elf.sgot->output_section->vma;
|
||||
break;
|
||||
case R_390_GOTPLT12:
|
||||
case R_390_GOTPLT16:
|
||||
case R_390_GOTPLT20:
|
||||
@ -2625,9 +2629,9 @@ elf_s390_relocate_section (bfd *output_bfd,
|
||||
|
||||
/* For local symbols or if we didn't make a PLT entry for
|
||||
this symbol resolve the symbol directly. */
|
||||
if ( h == NULL
|
||||
if (h == NULL
|
||||
|| h->plt.offset == (bfd_vma) -1
|
||||
|| htab->elf.splt == NULL)
|
||||
|| (htab->elf.splt == NULL && !s390_is_ifunc_symbol_p (h)))
|
||||
{
|
||||
relocation -= htab->elf.sgot->output_section->vma;
|
||||
break;
|
||||
|
@ -2306,6 +2306,11 @@ elf_s390_relocate_section (bfd *output_bfd,
|
||||
|
||||
switch (r_type)
|
||||
{
|
||||
case R_390_PLTOFF16:
|
||||
case R_390_PLTOFF32:
|
||||
case R_390_PLTOFF64:
|
||||
relocation -= htab->elf.sgot->output_section->vma;
|
||||
break;
|
||||
case R_390_GOTPLT12:
|
||||
case R_390_GOTPLT16:
|
||||
case R_390_GOTPLT20:
|
||||
@ -2561,7 +2566,7 @@ elf_s390_relocate_section (bfd *output_bfd,
|
||||
break;
|
||||
|
||||
if (h->plt.offset == (bfd_vma) -1
|
||||
|| (htab->elf.splt == NULL && htab->elf.iplt == NULL))
|
||||
|| (htab->elf.splt == NULL && !s390_is_ifunc_symbol_p (h)))
|
||||
{
|
||||
/* We didn't make a PLT entry for this symbol. This
|
||||
happens when statically linking PIC code, or when
|
||||
@ -2587,9 +2592,9 @@ elf_s390_relocate_section (bfd *output_bfd,
|
||||
|
||||
/* For local symbols or if we didn't make a PLT entry for
|
||||
this symbol resolve the symbol directly. */
|
||||
if ( h == NULL
|
||||
if (h == NULL
|
||||
|| h->plt.offset == (bfd_vma) -1
|
||||
|| htab->elf.splt == NULL)
|
||||
|| (htab->elf.splt == NULL && !s390_is_ifunc_symbol_p (h)))
|
||||
{
|
||||
relocation -= htab->elf.sgot->output_section->vma;
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user