* elf32-ppc.c (ppc_elf_size_dynamic_sections): Correct value of

_GLOBAL_OFFSET_TABLE_ for > 32k GOT.
This commit is contained in:
Alan Modra 2005-08-02 23:09:16 +00:00
parent 4a78a1f4de
commit 4d9620504f
2 changed files with 11 additions and 3 deletions

View File

@ -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.

View File

@ -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;
}