diff options
author | Will Newton <will.newton@linaro.org> | 2013-11-25 11:07:07 +0000 |
---|---|---|
committer | Will Newton <will.newton@linaro.org> | 2013-11-26 15:24:54 +0000 |
commit | b1ee0cc48909c2116709038e6e1f2ffa7c3bd99c (patch) | |
tree | 1484096e5f4d20e7d2e6a81c858bfc6fba65d5f5 /bfd/elfnn-aarch64.c | |
parent | 158599681f7c57e4d233a3e14c2e01faeaae55aa (diff) | |
download | gdb-b1ee0cc48909c2116709038e6e1f2ffa7c3bd99c.zip gdb-b1ee0cc48909c2116709038e6e1f2ffa7c3bd99c.tar.gz gdb-b1ee0cc48909c2116709038e6e1f2ffa7c3bd99c.tar.bz2 |
bfd/elfnn-aarch64.c: Fix miscalculation of GOTPLT offset for ifunc syms.
The .got.plt header size was not being correctly taken into account
when calculating the offset for relocations against ifunc symbols.
bfd/ChangeLog:
2013-11-26 Will Newton <will.newton@linaro.org>
* elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Ensure
PLT_INDEX is calculated using correct header size.
ld/testsuite/ChangeLog:
2013-11-26 Will Newton <will.newton@linaro.org>
* ld-aarch64/aarch64-elf.exp: Add ifunc-21 test.
* ld-aarch64/ifunc-21.d: New file.
* ld-aarch64/ifunc-21.s: Likewise.
Diffstat (limited to 'bfd/elfnn-aarch64.c')
-rw-r--r-- | bfd/elfnn-aarch64.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c index 48fa3d2..7cce6f4 100644 --- a/bfd/elfnn-aarch64.c +++ b/bfd/elfnn-aarch64.c @@ -3589,7 +3589,8 @@ elfNN_aarch64_final_link_relocate (reloc_howto_type *howto, if (globals->root.splt != NULL) { - plt_index = h->plt.offset / globals->plt_entry_size - 1; + plt_index = ((h->plt.offset - globals->plt_header_size) / + globals->plt_entry_size); off = (plt_index + 3) * GOT_ENTRY_SIZE; base_got = globals->root.sgotplt; } |