* elf64-ppc.c (ppc_size_one_stub): Size relbrlt. Accept info arg
rather than htab. (ppc64_elf_size_stubs): Adjust ppc_size_one_stub traversal. Zero relbrlt size. (ppc64_elf_build_stubs): Allocate space for relbrlt.
This commit is contained in:
parent
e1918d2387
commit
63bc6f6c39
|
@ -1,3 +1,11 @@
|
|||
2003-11-04 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* elf64-ppc.c (ppc_size_one_stub): Size relbrlt. Accept info arg
|
||||
rather than htab.
|
||||
(ppc64_elf_size_stubs): Adjust ppc_size_one_stub traversal. Zero
|
||||
relbrlt size.
|
||||
(ppc64_elf_build_stubs): Allocate space for relbrlt.
|
||||
|
||||
2003-11-04 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* bfd-in.h (_bfd_elf_tls_setup): Declare.
|
||||
|
|
|
@ -6354,13 +6354,16 @@ static bfd_boolean
|
|||
ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
|
||||
{
|
||||
struct ppc_stub_hash_entry *stub_entry;
|
||||
struct bfd_link_info *info;
|
||||
struct ppc_link_hash_table *htab;
|
||||
bfd_vma off;
|
||||
int size;
|
||||
|
||||
/* Massage our args to the form they really have. */
|
||||
stub_entry = (struct ppc_stub_hash_entry *) gen_entry;
|
||||
htab = in_arg;
|
||||
info = in_arg;
|
||||
|
||||
htab = ppc_hash_table (info);
|
||||
|
||||
if (stub_entry->stub_type == ppc_stub_plt_call)
|
||||
{
|
||||
|
@ -6427,6 +6430,9 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
|
|||
br_entry->iter = htab->stub_iteration;
|
||||
br_entry->offset = htab->brlt->_raw_size;
|
||||
htab->brlt->_raw_size += 8;
|
||||
|
||||
if (info->shared)
|
||||
htab->relbrlt->_raw_size += sizeof (Elf64_External_Rela);
|
||||
}
|
||||
|
||||
stub_entry->stub_type += ppc_stub_plt_branch - ppc_stub_long_branch;
|
||||
|
@ -7007,8 +7013,13 @@ ppc64_elf_size_stubs (bfd *output_bfd,
|
|||
}
|
||||
htab->brlt->_raw_size = 0;
|
||||
htab->brlt->_cooked_size = 0;
|
||||
if (info->shared)
|
||||
{
|
||||
htab->relbrlt->_raw_size = 0;
|
||||
htab->relbrlt->_cooked_size = 0;
|
||||
}
|
||||
|
||||
bfd_hash_traverse (&htab->stub_hash_table, ppc_size_one_stub, htab);
|
||||
bfd_hash_traverse (&htab->stub_hash_table, ppc_size_one_stub, info);
|
||||
|
||||
/* Ask the linker to do its stuff. */
|
||||
(*htab->layout_sections_again) ();
|
||||
|
@ -7211,6 +7222,13 @@ ppc64_elf_build_stubs (bfd_boolean emit_stub_syms,
|
|||
if (htab->brlt->contents == NULL)
|
||||
return FALSE;
|
||||
}
|
||||
if (info->shared && htab->relbrlt->_raw_size != 0)
|
||||
{
|
||||
htab->relbrlt->contents = bfd_zalloc (htab->relbrlt->owner,
|
||||
htab->relbrlt->_raw_size);
|
||||
if (htab->relbrlt->contents == NULL)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Build the stubs as directed by the stub hash table. */
|
||||
bfd_hash_traverse (&htab->stub_hash_table, ppc_build_one_stub, info);
|
||||
|
|
Loading…
Reference in New Issue