while (h->root.type == bfd_link_hash_indirect
|| h->root.type == bfd_link_hash_warning)
h = (struct elf_link_hash_entry *) h->root.u.i.link;
+
+ /* PR15323, ref flags aren't set for references in the same
+ object. */
+ h->root.non_ir_ref = 1;
}
/* Some relocs require a global offset table. */
{
struct elf_link_hash_table *ret;
- ret = (struct elf_link_hash_table *) bfd_malloc (sizeof (* ret));
+ ret = (struct elf_link_hash_table *) bfd_zmalloc (sizeof (* ret));
if (ret == (struct elf_link_hash_table *) NULL)
return NULL;
}
/* Mark _DYNAMIC and _GLOBAL_OFFSET_TABLE_ as absolute. */
- if (strcmp (h->root.root.string, "_DYNAMIC") == 0
+ if (h == elf_hash_table (info)->hdynamic
|| h == elf_hash_table (info)->hgot)
sym->st_shndx = SHN_ABS;