bfd/s390: Misc minor fixes.
authorMarcin Kościelnicki <koriakin@0x04.net>
Fri, 3 Jun 2016 14:39:15 +0000 (16:39 +0200)
committerMarcin Kościelnicki <koriakin@0x04.net>
Tue, 7 Jun 2016 16:14:15 +0000 (18:14 +0200)
The only non-comment fix here is in the code writing out the 3 fixed
.got.plt entries - it mistakenly put a 64-bit 0 at offsets 8 and 12
instead of 8 and 16.

bfd/ChangeLog:

* elf32-s390.c (elf_s390_finish_dynamic_symbol): Fix comment.
* elf64-s390.c (elf_s390x_plt_entry): Fix comment.
(elf_s390_relocate_section): Fix comment.
(elf_s390_finish_dynamic_sections): Fix initialization of fixed
.got.plt entries.

bfd/ChangeLog
bfd/elf32-s390.c
bfd/elf64-s390.c

index 7e4eb92..cb44986 100644 (file)
@@ -1,3 +1,11 @@
+2016-06-07  Marcin Kościelnicki  <koriakin@0x04.net>
+
+       * elf32-s390.c (elf_s390_finish_dynamic_symbol): Fix comment.
+       * elf64-s390.c (elf_s390x_plt_entry): Fix comment.
+       (elf_s390_relocate_section): Fix comment.
+       (elf_s390_finish_dynamic_sections): Fix initialization of fixed
+       .got.plt entries.
+
 2016-06-07  Ulrich Weigand  <ulrich.weigand@de.ibm.com>
 
        * elf64-s390.c (elf_s390_finish_dynamic_sections): Subtract plt
index f3ee40c..9480f72 100644 (file)
@@ -3691,7 +3691,7 @@ elf_s390_finish_dynamic_symbol (bfd *output_bfd,
 
              /* Put in the GOT offset as displacement value.  The 0xc000
                 value comes from the first word of the plt entry.  Look
-                at the elf_s390_plt_pic16_entry content.  */
+                at the elf_s390_plt_pic12_entry content.  */
              bfd_put_16 (output_bfd, (bfd_vma)0xc000 | got_offset,
                          htab->elf.splt->contents + h->plt.offset + 2);
 
index 9160068..cf174f8 100644 (file)
@@ -492,8 +492,8 @@ elf_s390_is_local_label_name (bfd *abfd, const char *name)
 
    The GOT holds the address in the PLT to be executed.
    The loader then gets:
-   24(15) =  Pointer to the structure describing the object.
-   28(15) =  Offset in symbol table
+   48(15) =  Pointer to the structure describing the object.
+   56(15) =  Offset in symbol table
    The loader  must  then find the module where the function is
    and insert the address in the GOT.
 
@@ -2479,7 +2479,7 @@ elf_s390_relocate_section (bfd *output_bfd,
                    PLT_ENTRY_SIZE;
 
                  /* Offset in GOT is PLT index plus GOT headers(3)
-                    times 4, addr & GOT addr.  */
+                    times 8, addr & GOT addr.  */
                  relocation = (plt_index + 3) * GOT_ENTRY_SIZE;
                  if (r_type == R_390_GOTPLTENT)
                    relocation += htab->elf.sgot->output_section->vma;
@@ -3805,7 +3805,7 @@ elf_s390_finish_dynamic_sections (bfd *output_bfd,
          /* One entry for shared object struct ptr.  */
          bfd_put_64 (output_bfd, (bfd_vma) 0, htab->elf.sgotplt->contents + 8);
          /* One entry for _dl_runtime_resolve.  */
-         bfd_put_64 (output_bfd, (bfd_vma) 0, htab->elf.sgotplt->contents + 12);
+         bfd_put_64 (output_bfd, (bfd_vma) 0, htab->elf.sgotplt->contents + 16);
        }
 
       elf_section_data (htab->elf.sgot->output_section)