Line 5667... |
Line 5667... |
{
|
{
|
struct bfd_link_info *info = (struct bfd_link_info *) inf;
|
struct bfd_link_info *info = (struct bfd_link_info *) inf;
|
struct ppc_link_hash_entry *eh = (struct ppc_link_hash_entry *) h;
|
struct ppc_link_hash_entry *eh = (struct ppc_link_hash_entry *) h;
|
struct ppc_link_hash_entry *fdh;
|
struct ppc_link_hash_entry *fdh;
|
|
|
if (eh->elf.root.type == bfd_link_hash_warning)
|
|
eh = (struct ppc_link_hash_entry *) eh->elf.root.u.i.link;
|
|
|
|
/* Dynamic linking info is on the func descriptor sym. */
|
/* Dynamic linking info is on the func descriptor sym. */
|
fdh = defined_func_desc (eh);
|
fdh = defined_func_desc (eh);
|
if (fdh != NULL)
|
if (fdh != NULL)
|
eh = fdh;
|
eh = fdh;
|
|
|
Line 6212... |
Line 6209... |
|
|
fh = (struct ppc_link_hash_entry *) h;
|
fh = (struct ppc_link_hash_entry *) h;
|
if (fh->elf.root.type == bfd_link_hash_indirect)
|
if (fh->elf.root.type == bfd_link_hash_indirect)
|
return TRUE;
|
return TRUE;
|
|
|
if (fh->elf.root.type == bfd_link_hash_warning)
|
|
fh = (struct ppc_link_hash_entry *) fh->elf.root.u.i.link;
|
|
|
|
info = inf;
|
info = inf;
|
htab = ppc_hash_table (info);
|
htab = ppc_hash_table (info);
|
if (htab == NULL)
|
if (htab == NULL)
|
return FALSE;
|
return FALSE;
|
|
|
Line 6740... |
Line 6734... |
struct _opd_sec_data *opd;
|
struct _opd_sec_data *opd;
|
|
|
if (h->root.type == bfd_link_hash_indirect)
|
if (h->root.type == bfd_link_hash_indirect)
|
return TRUE;
|
return TRUE;
|
|
|
if (h->root.type == bfd_link_hash_warning)
|
|
h = (struct elf_link_hash_entry *) h->root.u.i.link;
|
|
|
|
if (h->root.type != bfd_link_hash_defined
|
if (h->root.type != bfd_link_hash_defined
|
&& h->root.type != bfd_link_hash_defweak)
|
&& h->root.type != bfd_link_hash_defweak)
|
return TRUE;
|
return TRUE;
|
|
|
eh = (struct ppc_link_hash_entry *) h;
|
eh = (struct ppc_link_hash_entry *) h;
|
Line 7903... |
Line 7894... |
unsigned long i;
|
unsigned long i;
|
|
|
if (h->root.type == bfd_link_hash_indirect)
|
if (h->root.type == bfd_link_hash_indirect)
|
return TRUE;
|
return TRUE;
|
|
|
if (h->root.type == bfd_link_hash_warning)
|
|
h = (struct elf_link_hash_entry *) h->root.u.i.link;
|
|
|
|
if (h->root.type != bfd_link_hash_defined
|
if (h->root.type != bfd_link_hash_defined
|
&& h->root.type != bfd_link_hash_defweak)
|
&& h->root.type != bfd_link_hash_defweak)
|
return TRUE;
|
return TRUE;
|
|
|
eh = (struct ppc_link_hash_entry *) h;
|
eh = (struct ppc_link_hash_entry *) h;
|
Line 8601... |
Line 8589... |
struct got_entry **pgent, *gent;
|
struct got_entry **pgent, *gent;
|
|
|
if (h->root.type == bfd_link_hash_indirect)
|
if (h->root.type == bfd_link_hash_indirect)
|
return TRUE;
|
return TRUE;
|
|
|
if (h->root.type == bfd_link_hash_warning)
|
|
h = (struct elf_link_hash_entry *) h->root.u.i.link;
|
|
|
|
info = (struct bfd_link_info *) inf;
|
info = (struct bfd_link_info *) inf;
|
htab = ppc_hash_table (info);
|
htab = ppc_hash_table (info);
|
if (htab == NULL)
|
if (htab == NULL)
|
return FALSE;
|
return FALSE;
|
|
|
Line 8844... |
Line 8829... |
readonly_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
readonly_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
{
|
{
|
struct ppc_link_hash_entry *eh;
|
struct ppc_link_hash_entry *eh;
|
struct elf_dyn_relocs *p;
|
struct elf_dyn_relocs *p;
|
|
|
if (h->root.type == bfd_link_hash_warning)
|
|
h = (struct elf_link_hash_entry *) h->root.u.i.link;
|
|
|
|
eh = (struct ppc_link_hash_entry *) h;
|
eh = (struct ppc_link_hash_entry *) h;
|
for (p = eh->dyn_relocs; p != NULL; p = p->next)
|
for (p = eh->dyn_relocs; p != NULL; p = p->next)
|
{
|
{
|
asection *s = p->sec->output_section;
|
asection *s = p->sec->output_section;
|
|
|
Line 10215... |
Line 10197... |
merge_global_got (struct elf_link_hash_entry *h, void *inf ATTRIBUTE_UNUSED)
|
merge_global_got (struct elf_link_hash_entry *h, void *inf ATTRIBUTE_UNUSED)
|
{
|
{
|
if (h->root.type == bfd_link_hash_indirect)
|
if (h->root.type == bfd_link_hash_indirect)
|
return TRUE;
|
return TRUE;
|
|
|
if (h->root.type == bfd_link_hash_warning)
|
|
h = (struct elf_link_hash_entry *) h->root.u.i.link;
|
|
|
|
merge_got_entries (&h->got.glist);
|
merge_got_entries (&h->got.glist);
|
|
|
return TRUE;
|
return TRUE;
|
}
|
}
|
|
|
Line 10234... |
Line 10213... |
struct got_entry *gent;
|
struct got_entry *gent;
|
|
|
if (h->root.type == bfd_link_hash_indirect)
|
if (h->root.type == bfd_link_hash_indirect)
|
return TRUE;
|
return TRUE;
|
|
|
if (h->root.type == bfd_link_hash_warning)
|
|
h = (struct elf_link_hash_entry *) h->root.u.i.link;
|
|
|
|
for (gent = h->got.glist; gent != NULL; gent = gent->next)
|
for (gent = h->got.glist; gent != NULL; gent = gent->next)
|
if (!gent->is_indirect)
|
if (!gent->is_indirect)
|
allocate_got (h, (struct bfd_link_info *) inf, gent);
|
allocate_got (h, (struct bfd_link_info *) inf, gent);
|
return TRUE;
|
return TRUE;
|
}
|
}
|
Line 11491... |
Line 11467... |
struct ppc_link_hash_entry *eh;
|
struct ppc_link_hash_entry *eh;
|
|
|
if (h->root.type == bfd_link_hash_indirect)
|
if (h->root.type == bfd_link_hash_indirect)
|
return TRUE;
|
return TRUE;
|
|
|
if (h->root.type == bfd_link_hash_warning)
|
|
h = (struct elf_link_hash_entry *) h->root.u.i.link;
|
|
|
|
eh = (struct ppc_link_hash_entry *) h;
|
eh = (struct ppc_link_hash_entry *) h;
|
if (eh->elf.root.type != bfd_link_hash_undefweak || !eh->was_undefined)
|
if (eh->elf.root.type != bfd_link_hash_undefweak || !eh->was_undefined)
|
return TRUE;
|
return TRUE;
|
|
|
eh->elf.root.type = bfd_link_hash_undefined;
|
eh->elf.root.type = bfd_link_hash_undefined;
|