bfd/s390: Misc minor fixes.

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.
This commit is contained in:
Marcin Kościelnicki
2016-06-03 16:39:15 +02:00
parent 1aec0b6ad6
commit 3b67f09464
3 changed files with 13 additions and 5 deletions

View 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> 2016-06-07 Ulrich Weigand <ulrich.weigand@de.ibm.com>
* elf64-s390.c (elf_s390_finish_dynamic_sections): Subtract plt * elf64-s390.c (elf_s390_finish_dynamic_sections): Subtract plt

View File

@@ -3691,7 +3691,7 @@ elf_s390_finish_dynamic_symbol (bfd *output_bfd,
/* Put in the GOT offset as displacement value. The 0xc000 /* Put in the GOT offset as displacement value. The 0xc000
value comes from the first word of the plt entry. Look 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, bfd_put_16 (output_bfd, (bfd_vma)0xc000 | got_offset,
htab->elf.splt->contents + h->plt.offset + 2); htab->elf.splt->contents + h->plt.offset + 2);

View 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 GOT holds the address in the PLT to be executed.
The loader then gets: The loader then gets:
24(15) = Pointer to the structure describing the object. 48(15) = Pointer to the structure describing the object.
28(15) = Offset in symbol table 56(15) = Offset in symbol table
The loader must then find the module where the function is The loader must then find the module where the function is
and insert the address in the GOT. and insert the address in the GOT.
@@ -2479,7 +2479,7 @@ elf_s390_relocate_section (bfd *output_bfd,
PLT_ENTRY_SIZE; PLT_ENTRY_SIZE;
/* Offset in GOT is PLT index plus GOT headers(3) /* 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; relocation = (plt_index + 3) * GOT_ENTRY_SIZE;
if (r_type == R_390_GOTPLTENT) if (r_type == R_390_GOTPLTENT)
relocation += htab->elf.sgot->output_section->vma; 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. */ /* One entry for shared object struct ptr. */
bfd_put_64 (output_bfd, (bfd_vma) 0, htab->elf.sgotplt->contents + 8); bfd_put_64 (output_bfd, (bfd_vma) 0, htab->elf.sgotplt->contents + 8);
/* One entry for _dl_runtime_resolve. */ /* 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) elf_section_data (htab->elf.sgot->output_section)