diff options
author | Alan Modra <amodra@gmail.com> | 2005-08-02 23:09:16 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2005-08-02 23:09:16 +0000 |
commit | 4d9620504f6c74c3145515151433b560c15865e3 (patch) | |
tree | 9d97eee9100c766b43463015b37ef9c9a24ffd99 /bfd | |
parent | 4a78a1f4ded9fdacf59af5a38eedeabd7a34465b (diff) | |
download | gdb-4d9620504f6c74c3145515151433b560c15865e3.zip gdb-4d9620504f6c74c3145515151433b560c15865e3.tar.gz gdb-4d9620504f6c74c3145515151433b560c15865e3.tar.bz2 |
* elf32-ppc.c (ppc_elf_size_dynamic_sections): Correct value of
_GLOBAL_OFFSET_TABLE_ for > 32k GOT.
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/elf32-ppc.c | 9 |
2 files changed, 11 insertions, 3 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 841bb02..fe62cb8 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2005-08-03 Alan Modra <amodra@bigpond.net.au> + + * elf32-ppc.c (ppc_elf_size_dynamic_sections): Correct value of + _GLOBAL_OFFSET_TABLE_ for > 32k GOT. + 2005-08-02 Andreas Schwab <schwab@suse.de> * elfxx-ia64.c (struct elfNN_ia64_allocate_data): Add only_got. diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c index 6239438..454e9e0 100644 --- a/bfd/elf32-ppc.c +++ b/bfd/elf32-ppc.c @@ -4676,14 +4676,17 @@ ppc_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED, { unsigned int g_o_t = 32768; - /* If we haven't allocated the header, do so now. */ + /* If we haven't allocated the header, do so now. When we get here, + for old plt/got the got size will be 0 to 32764 (not allocated), + or 32780 to 65536 (header allocated). For new plt/got, the + corresponding ranges are 0 to 32768 and 32780 to 65536. */ if (htab->got->size <= 32768) { g_o_t = htab->got->size; + if (htab->old_plt) + g_o_t += 4; htab->got->size += htab->got_header_size; } - if (htab->old_plt && !htab->is_vxworks) - g_o_t += 4; htab->elf.hgot->root.u.def.value = g_o_t; } |