daily update
[deliverable/binutils-gdb.git] / bfd / elf32-s390.c
index 039de3afd2cc0998990beb876ad6302f4e0b06b9..7a9d89cea3785c01b87947da4436c0ae9ce6a9db 100644 (file)
@@ -1013,6 +1013,9 @@ elf_s390_check_relocs (bfd *abfd,
            {
              struct plt_entry *plt;
 
+             if (htab->elf.dynobj == NULL)
+               htab->elf.dynobj = abfd;
+
              if (!s390_elf_create_ifunc_sections (htab->elf.dynobj, info))
                return FALSE;
 
@@ -2349,6 +2352,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 +2632,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;
This page took 0.023841 seconds and 4 git commands to generate.