Skip extra relocations in .rel.plt/.rela.plt

Extra relocations may be added to the .rel.plt/.rela.plt section, which
are unrelated to PLT.  We should skip them when retrieving PLT entry
symbol values.

	PR binutils/18437
	* elf32-i386.c (elf_i386_get_plt_sym_val): Skip extra relocations
	in .rel.plt/.rela.plt.
	* elf64-x86-64.c (elf_x86_64_get_plt_sym_val): Likewise.
This commit is contained in:
H.J. Lu 2015-05-20 07:55:45 -07:00
parent ce33678882
commit fca6ae69c4
3 changed files with 17 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2015-05-26 H.J. Lu <hongjiu.lu@intel.com>
PR binutils/18437
* elf32-i386.c (elf_i386_get_plt_sym_val): Skip extra relocations
in .rel.plt/.rela.plt.
* elf64-x86-64.c (elf_x86_64_get_plt_sym_val): Likewise.
2015-05-19 Jiong Wang <jiong.wang@arm.com>
* elfnn-aarch64.c (aarch64_tls_transition_without_check): Sort

View File

@ -5260,6 +5260,11 @@ bad_return:
abort ();
plt_sym_val[reloc_index] = plt->vma + plt_offset;
plt_offset += bed->plt->plt_entry_size;
/* PR binutils/18437: Skip extra relocations in the .rel.plt
section. */
if (plt_offset >= plt->size)
break;
}
free (plt_contents);

View File

@ -5649,6 +5649,11 @@ bad_return:
else
plt_sym_val[reloc_index] = plt->vma + plt_offset;
plt_offset += bed->plt_entry_size;
/* PR binutils/18437: Skip extra relocations in the .rela.plt
section. */
if (plt_offset >= plt->size)
break;
}
free (plt_contents);