summaryrefslogtreecommitdiff
path: root/bfd/elf64-sparc.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@bigpond.net.au>2002-11-11 23:42:29 +0000
committerAlan Modra <amodra@bigpond.net.au>2002-11-11 23:42:29 +0000
commit634515ea9d16b8ffc67da5dc1bf7a49a829eda3e (patch)
tree9daa7072fe3a749aa4ea34b595f2b3824a2c8adb /bfd/elf64-sparc.c
parenta0845814ae5cb6b34858f173aea875a478267cf1 (diff)
downloadbinutils-redhat-634515ea9d16b8ffc67da5dc1bf7a49a829eda3e.tar.gz
* elf64-sparc.c (sparc64_elf_adjust_dynamic_symbol): Correct
references to large plt symbols.
Diffstat (limited to 'bfd/elf64-sparc.c')
-rw-r--r--bfd/elf64-sparc.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/bfd/elf64-sparc.c b/bfd/elf64-sparc.c
index e3a120bba0..184179e7b0 100644
--- a/bfd/elf64-sparc.c
+++ b/bfd/elf64-sparc.c
@@ -1563,6 +1563,9 @@ sparc64_elf_adjust_dynamic_symbol (info, h)
if (s->_raw_size == 0)
s->_raw_size = PLT_HEADER_SIZE;
+ /* To simplify matters later, just store the plt index here. */
+ h->plt.offset = s->_raw_size / PLT_ENTRY_SIZE;
+
/* If this symbol is not defined in a regular file, and we are
not generating a shared library, then set the symbol to this
location in the .plt. This is required to make function
@@ -1572,12 +1575,9 @@ sparc64_elf_adjust_dynamic_symbol (info, h)
&& (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0)
{
h->root.u.def.section = s;
- h->root.u.def.value = s->_raw_size;
+ h->root.u.def.value = sparc64_elf_plt_entry_offset (h->plt.offset);
}
- /* To simplify matters later, just store the plt index here. */
- h->plt.offset = s->_raw_size / PLT_ENTRY_SIZE;
-
/* Make room for this entry. */
s->_raw_size += PLT_ENTRY_SIZE;