diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2015-05-20 07:55:45 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2015-05-20 07:55:45 -0700 |
commit | fca6ae69c41882f5adfba05da7d932b7c8bc2153 (patch) | |
tree | 953c079ecf7ac5ab3b26f3546876a3c857959f09 /bfd/elf32-i386.c | |
parent | ce336788820b5d04700cdb9ead2ade880f5e2caa (diff) | |
download | binutils-gdb-fca6ae69c41882f5adfba05da7d932b7c8bc2153.tar.gz |
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.
Diffstat (limited to 'bfd/elf32-i386.c')
-rw-r--r-- | bfd/elf32-i386.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c index c6ff7463a35..23d50e1193d 100644 --- a/bfd/elf32-i386.c +++ b/bfd/elf32-i386.c @@ -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); |