mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-09-10 23:35:43 +08:00
* elf-bfd.h (struct elf_backend_data): Add struct elf_backend_data
param to elf_backend_copy_indirect_symbol. (_bfd_elf_link_hash_copy_indirect): Likewise. * elflink.h (elf_add_default_symbol, elf_fix_symbol_flags): Adjust calls to copy_indirect_symbol. * elf32-hppa.c (elf32_hppa_copy_indirect_symbol): Likewise. * elf32-i386.c (elf_i386_copy_indirect_symbol): Likewise. * elf32-s390.c (elf_s390_copy_indirect_symbol): Likewise. * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Likewise. * elf64-s390.c (elf_s390_copy_indirect_symbol): Likewise. * elf64-x86-64.c (elf64_x86_64_copy_indirect_symbol): Likewise. * elfxx-ia64.c (elfNN_ia64_hash_copy_indirect): Likewise. * elfxx-mips.c (_bfd_mips_elf_copy_indirect_symbol): Likewise. * elfxx-mips.h (_bfd_mips_elf_copy_indirect_symbol): Likewise. * elf.c (_bfd_elf_link_hash_copy_indirect): Likewise. Properly test refcounts for "used" values.
This commit is contained in:
@ -1,3 +1,22 @@
|
|||||||
|
2002-08-22 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
|
* elf-bfd.h (struct elf_backend_data): Add struct elf_backend_data
|
||||||
|
param to elf_backend_copy_indirect_symbol.
|
||||||
|
(_bfd_elf_link_hash_copy_indirect): Likewise.
|
||||||
|
* elflink.h (elf_add_default_symbol, elf_fix_symbol_flags): Adjust
|
||||||
|
calls to copy_indirect_symbol.
|
||||||
|
* elf32-hppa.c (elf32_hppa_copy_indirect_symbol): Likewise.
|
||||||
|
* elf32-i386.c (elf_i386_copy_indirect_symbol): Likewise.
|
||||||
|
* elf32-s390.c (elf_s390_copy_indirect_symbol): Likewise.
|
||||||
|
* elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Likewise.
|
||||||
|
* elf64-s390.c (elf_s390_copy_indirect_symbol): Likewise.
|
||||||
|
* elf64-x86-64.c (elf64_x86_64_copy_indirect_symbol): Likewise.
|
||||||
|
* elfxx-ia64.c (elfNN_ia64_hash_copy_indirect): Likewise.
|
||||||
|
* elfxx-mips.c (_bfd_mips_elf_copy_indirect_symbol): Likewise.
|
||||||
|
* elfxx-mips.h (_bfd_mips_elf_copy_indirect_symbol): Likewise.
|
||||||
|
* elf.c (_bfd_elf_link_hash_copy_indirect): Likewise. Properly
|
||||||
|
test refcounts for "used" values.
|
||||||
|
|
||||||
2002-08-21 John David Anglin <dave@hiauly1.hia.nrc.ca>
|
2002-08-21 John David Anglin <dave@hiauly1.hia.nrc.ca>
|
||||||
|
|
||||||
* elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Add PARAMS to
|
* elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Add PARAMS to
|
||||||
|
@ -717,7 +717,8 @@ struct elf_backend_data
|
|||||||
newly created and plt/got refcounts and dynamic indices should not
|
newly created and plt/got refcounts and dynamic indices should not
|
||||||
be copied. */
|
be copied. */
|
||||||
void (*elf_backend_copy_indirect_symbol)
|
void (*elf_backend_copy_indirect_symbol)
|
||||||
PARAMS ((struct elf_link_hash_entry *, struct elf_link_hash_entry *));
|
PARAMS ((struct elf_backend_data *, struct elf_link_hash_entry *,
|
||||||
|
struct elf_link_hash_entry *));
|
||||||
|
|
||||||
/* Modify any information related to dynamic linking such that the
|
/* Modify any information related to dynamic linking such that the
|
||||||
symbol is not exported. */
|
symbol is not exported. */
|
||||||
@ -1271,7 +1272,8 @@ extern struct bfd_hash_entry *_bfd_elf_link_hash_newfunc
|
|||||||
extern struct bfd_link_hash_table *_bfd_elf_link_hash_table_create
|
extern struct bfd_link_hash_table *_bfd_elf_link_hash_table_create
|
||||||
PARAMS ((bfd *));
|
PARAMS ((bfd *));
|
||||||
extern void _bfd_elf_link_hash_copy_indirect
|
extern void _bfd_elf_link_hash_copy_indirect
|
||||||
PARAMS ((struct elf_link_hash_entry *, struct elf_link_hash_entry *));
|
PARAMS ((struct elf_backend_data *, struct elf_link_hash_entry *,
|
||||||
|
struct elf_link_hash_entry *));
|
||||||
extern void _bfd_elf_link_hash_hide_symbol
|
extern void _bfd_elf_link_hash_hide_symbol
|
||||||
PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *, boolean));
|
PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *, boolean));
|
||||||
extern boolean _bfd_elf_link_hash_table_init
|
extern boolean _bfd_elf_link_hash_table_init
|
||||||
|
12
bfd/elf.c
12
bfd/elf.c
@ -1418,10 +1418,12 @@ _bfd_elf_link_hash_newfunc (entry, table, string)
|
|||||||
old indirect symbol. Also used for copying flags to a weakdef. */
|
old indirect symbol. Also used for copying flags to a weakdef. */
|
||||||
|
|
||||||
void
|
void
|
||||||
_bfd_elf_link_hash_copy_indirect (dir, ind)
|
_bfd_elf_link_hash_copy_indirect (bed, dir, ind)
|
||||||
|
struct elf_backend_data *bed;
|
||||||
struct elf_link_hash_entry *dir, *ind;
|
struct elf_link_hash_entry *dir, *ind;
|
||||||
{
|
{
|
||||||
bfd_signed_vma tmp;
|
bfd_signed_vma tmp;
|
||||||
|
bfd_signed_vma lowest_valid = bed->can_refcount;
|
||||||
|
|
||||||
/* Copy down any references that we may have already seen to the
|
/* Copy down any references that we may have already seen to the
|
||||||
symbol which just became indirect. */
|
symbol which just became indirect. */
|
||||||
@ -1439,22 +1441,22 @@ _bfd_elf_link_hash_copy_indirect (dir, ind)
|
|||||||
/* Copy over the global and procedure linkage table refcount entries.
|
/* Copy over the global and procedure linkage table refcount entries.
|
||||||
These may have been already set up by a check_relocs routine. */
|
These may have been already set up by a check_relocs routine. */
|
||||||
tmp = dir->got.refcount;
|
tmp = dir->got.refcount;
|
||||||
if (tmp <= 0)
|
if (tmp < lowest_valid)
|
||||||
{
|
{
|
||||||
dir->got.refcount = ind->got.refcount;
|
dir->got.refcount = ind->got.refcount;
|
||||||
ind->got.refcount = tmp;
|
ind->got.refcount = tmp;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
BFD_ASSERT (ind->got.refcount <= 0);
|
BFD_ASSERT (ind->got.refcount < lowest_valid);
|
||||||
|
|
||||||
tmp = dir->plt.refcount;
|
tmp = dir->plt.refcount;
|
||||||
if (tmp <= 0)
|
if (tmp < lowest_valid)
|
||||||
{
|
{
|
||||||
dir->plt.refcount = ind->plt.refcount;
|
dir->plt.refcount = ind->plt.refcount;
|
||||||
ind->plt.refcount = tmp;
|
ind->plt.refcount = tmp;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
BFD_ASSERT (ind->plt.refcount <= 0);
|
BFD_ASSERT (ind->plt.refcount < lowest_valid);
|
||||||
|
|
||||||
if (dir->dynindx == -1)
|
if (dir->dynindx == -1)
|
||||||
{
|
{
|
||||||
|
@ -327,7 +327,8 @@ static boolean elf32_hppa_create_dynamic_sections
|
|||||||
PARAMS ((bfd *, struct bfd_link_info *));
|
PARAMS ((bfd *, struct bfd_link_info *));
|
||||||
|
|
||||||
static void elf32_hppa_copy_indirect_symbol
|
static void elf32_hppa_copy_indirect_symbol
|
||||||
PARAMS ((struct elf_link_hash_entry *, struct elf_link_hash_entry *));
|
PARAMS ((struct elf_backend_data *, struct elf_link_hash_entry *,
|
||||||
|
struct elf_link_hash_entry *));
|
||||||
|
|
||||||
static boolean elf32_hppa_check_relocs
|
static boolean elf32_hppa_check_relocs
|
||||||
PARAMS ((bfd *, struct bfd_link_info *,
|
PARAMS ((bfd *, struct bfd_link_info *,
|
||||||
@ -1145,7 +1146,8 @@ elf32_hppa_create_dynamic_sections (abfd, info)
|
|||||||
/* Copy the extra info we tack onto an elf_link_hash_entry. */
|
/* Copy the extra info we tack onto an elf_link_hash_entry. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
elf32_hppa_copy_indirect_symbol (dir, ind)
|
elf32_hppa_copy_indirect_symbol (bed, dir, ind)
|
||||||
|
struct elf_backend_data *bed;
|
||||||
struct elf_link_hash_entry *dir, *ind;
|
struct elf_link_hash_entry *dir, *ind;
|
||||||
{
|
{
|
||||||
struct elf32_hppa_link_hash_entry *edir, *eind;
|
struct elf32_hppa_link_hash_entry *edir, *eind;
|
||||||
@ -1189,7 +1191,7 @@ elf32_hppa_copy_indirect_symbol (dir, ind)
|
|||||||
eind->dyn_relocs = NULL;
|
eind->dyn_relocs = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
_bfd_elf_link_hash_copy_indirect (dir, ind);
|
_bfd_elf_link_hash_copy_indirect (bed, dir, ind);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Look through the relocs for a section during the first phase, and
|
/* Look through the relocs for a section during the first phase, and
|
||||||
|
@ -45,7 +45,8 @@ static boolean create_got_section
|
|||||||
static boolean elf_i386_create_dynamic_sections
|
static boolean elf_i386_create_dynamic_sections
|
||||||
PARAMS((bfd *, struct bfd_link_info *));
|
PARAMS((bfd *, struct bfd_link_info *));
|
||||||
static void elf_i386_copy_indirect_symbol
|
static void elf_i386_copy_indirect_symbol
|
||||||
PARAMS ((struct elf_link_hash_entry *, struct elf_link_hash_entry *));
|
PARAMS ((struct elf_backend_data *, struct elf_link_hash_entry *,
|
||||||
|
struct elf_link_hash_entry *));
|
||||||
static int elf_i386_tls_transition
|
static int elf_i386_tls_transition
|
||||||
PARAMS ((struct bfd_link_info *, int, int));
|
PARAMS ((struct bfd_link_info *, int, int));
|
||||||
|
|
||||||
@ -767,7 +768,8 @@ elf_i386_create_dynamic_sections (dynobj, info)
|
|||||||
/* Copy the extra info we tack onto an elf_link_hash_entry. */
|
/* Copy the extra info we tack onto an elf_link_hash_entry. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
elf_i386_copy_indirect_symbol (dir, ind)
|
elf_i386_copy_indirect_symbol (bed, dir, ind)
|
||||||
|
struct elf_backend_data *bed;
|
||||||
struct elf_link_hash_entry *dir, *ind;
|
struct elf_link_hash_entry *dir, *ind;
|
||||||
{
|
{
|
||||||
struct elf_i386_link_hash_entry *edir, *eind;
|
struct elf_i386_link_hash_entry *edir, *eind;
|
||||||
@ -815,7 +817,7 @@ elf_i386_copy_indirect_symbol (dir, ind)
|
|||||||
edir->tls_type = eind->tls_type;
|
edir->tls_type = eind->tls_type;
|
||||||
eind->tls_type = GOT_UNKNOWN;
|
eind->tls_type = GOT_UNKNOWN;
|
||||||
}
|
}
|
||||||
_bfd_elf_link_hash_copy_indirect (dir, ind);
|
_bfd_elf_link_hash_copy_indirect (bed, dir, ind);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -40,7 +40,8 @@ static boolean create_got_section
|
|||||||
static boolean elf_s390_create_dynamic_sections
|
static boolean elf_s390_create_dynamic_sections
|
||||||
PARAMS((bfd *, struct bfd_link_info *));
|
PARAMS((bfd *, struct bfd_link_info *));
|
||||||
static void elf_s390_copy_indirect_symbol
|
static void elf_s390_copy_indirect_symbol
|
||||||
PARAMS ((struct elf_link_hash_entry *, struct elf_link_hash_entry *));
|
PARAMS ((struct elf_backend_data *, struct elf_link_hash_entry *,
|
||||||
|
struct elf_link_hash_entry *));
|
||||||
static boolean elf_s390_check_relocs
|
static boolean elf_s390_check_relocs
|
||||||
PARAMS ((bfd *, struct bfd_link_info *, asection *,
|
PARAMS ((bfd *, struct bfd_link_info *, asection *,
|
||||||
const Elf_Internal_Rela *));
|
const Elf_Internal_Rela *));
|
||||||
@ -562,7 +563,8 @@ elf_s390_create_dynamic_sections (dynobj, info)
|
|||||||
/* Copy the extra info we tack onto an elf_link_hash_entry. */
|
/* Copy the extra info we tack onto an elf_link_hash_entry. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
elf_s390_copy_indirect_symbol (dir, ind)
|
elf_s390_copy_indirect_symbol (bed, dir, ind)
|
||||||
|
struct elf_backend_data *bed;
|
||||||
struct elf_link_hash_entry *dir, *ind;
|
struct elf_link_hash_entry *dir, *ind;
|
||||||
{
|
{
|
||||||
struct elf_s390_link_hash_entry *edir, *eind;
|
struct elf_s390_link_hash_entry *edir, *eind;
|
||||||
@ -604,7 +606,7 @@ elf_s390_copy_indirect_symbol (dir, ind)
|
|||||||
eind->dyn_relocs = NULL;
|
eind->dyn_relocs = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
_bfd_elf_link_hash_copy_indirect (dir, ind);
|
_bfd_elf_link_hash_copy_indirect (bed, dir, ind);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Look through the relocs for a section during the first phase, and
|
/* Look through the relocs for a section during the first phase, and
|
||||||
|
@ -1952,7 +1952,8 @@ static boolean create_got_section
|
|||||||
static boolean ppc64_elf_create_dynamic_sections
|
static boolean ppc64_elf_create_dynamic_sections
|
||||||
PARAMS ((bfd *, struct bfd_link_info *));
|
PARAMS ((bfd *, struct bfd_link_info *));
|
||||||
static void ppc64_elf_copy_indirect_symbol
|
static void ppc64_elf_copy_indirect_symbol
|
||||||
PARAMS ((struct elf_link_hash_entry *, struct elf_link_hash_entry *));
|
PARAMS ((struct elf_backend_data *, struct elf_link_hash_entry *,
|
||||||
|
struct elf_link_hash_entry *));
|
||||||
static boolean ppc64_elf_check_relocs
|
static boolean ppc64_elf_check_relocs
|
||||||
PARAMS ((bfd *, struct bfd_link_info *, asection *,
|
PARAMS ((bfd *, struct bfd_link_info *, asection *,
|
||||||
const Elf_Internal_Rela *));
|
const Elf_Internal_Rela *));
|
||||||
@ -2440,7 +2441,8 @@ ppc64_elf_create_dynamic_sections (dynobj, info)
|
|||||||
/* Copy the extra info we tack onto an elf_link_hash_entry. */
|
/* Copy the extra info we tack onto an elf_link_hash_entry. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ppc64_elf_copy_indirect_symbol (dir, ind)
|
ppc64_elf_copy_indirect_symbol (bed, dir, ind)
|
||||||
|
struct elf_backend_data *bed;
|
||||||
struct elf_link_hash_entry *dir, *ind;
|
struct elf_link_hash_entry *dir, *ind;
|
||||||
{
|
{
|
||||||
struct ppc_link_hash_entry *edir, *eind;
|
struct ppc_link_hash_entry *edir, *eind;
|
||||||
@ -2486,7 +2488,7 @@ ppc64_elf_copy_indirect_symbol (dir, ind)
|
|||||||
edir->is_func_descriptor |= eind->is_func_descriptor;
|
edir->is_func_descriptor |= eind->is_func_descriptor;
|
||||||
edir->is_entry |= eind->is_entry;
|
edir->is_entry |= eind->is_entry;
|
||||||
|
|
||||||
_bfd_elf_link_hash_copy_indirect (dir, ind);
|
_bfd_elf_link_hash_copy_indirect (bed, dir, ind);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set a flag, used by ppc64_elf_gc_mark_hook, on the entry symbol and
|
/* Set a flag, used by ppc64_elf_gc_mark_hook, on the entry symbol and
|
||||||
|
@ -40,7 +40,8 @@ static boolean create_got_section
|
|||||||
static boolean elf_s390_create_dynamic_sections
|
static boolean elf_s390_create_dynamic_sections
|
||||||
PARAMS((bfd *, struct bfd_link_info *));
|
PARAMS((bfd *, struct bfd_link_info *));
|
||||||
static void elf_s390_copy_indirect_symbol
|
static void elf_s390_copy_indirect_symbol
|
||||||
PARAMS ((struct elf_link_hash_entry *, struct elf_link_hash_entry *));
|
PARAMS ((struct elf_backend_data *, struct elf_link_hash_entry *,
|
||||||
|
struct elf_link_hash_entry *));
|
||||||
static boolean elf_s390_check_relocs
|
static boolean elf_s390_check_relocs
|
||||||
PARAMS ((bfd *, struct bfd_link_info *, asection *,
|
PARAMS ((bfd *, struct bfd_link_info *, asection *,
|
||||||
const Elf_Internal_Rela *));
|
const Elf_Internal_Rela *));
|
||||||
@ -508,7 +509,8 @@ elf_s390_create_dynamic_sections (dynobj, info)
|
|||||||
/* Copy the extra info we tack onto an elf_link_hash_entry. */
|
/* Copy the extra info we tack onto an elf_link_hash_entry. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
elf_s390_copy_indirect_symbol (dir, ind)
|
elf_s390_copy_indirect_symbol (bed, dir, ind)
|
||||||
|
struct elf_backend_data *bed;
|
||||||
struct elf_link_hash_entry *dir, *ind;
|
struct elf_link_hash_entry *dir, *ind;
|
||||||
{
|
{
|
||||||
struct elf_s390_link_hash_entry *edir, *eind;
|
struct elf_s390_link_hash_entry *edir, *eind;
|
||||||
@ -550,7 +552,7 @@ elf_s390_copy_indirect_symbol (dir, ind)
|
|||||||
eind->dyn_relocs = NULL;
|
eind->dyn_relocs = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
_bfd_elf_link_hash_copy_indirect (dir, ind);
|
_bfd_elf_link_hash_copy_indirect (bed, dir, ind);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Look through the relocs for a section during the first phase, and
|
/* Look through the relocs for a section during the first phase, and
|
||||||
|
@ -134,7 +134,8 @@ static boolean create_got_section
|
|||||||
static boolean elf64_x86_64_create_dynamic_sections
|
static boolean elf64_x86_64_create_dynamic_sections
|
||||||
PARAMS((bfd *, struct bfd_link_info *));
|
PARAMS((bfd *, struct bfd_link_info *));
|
||||||
static void elf64_x86_64_copy_indirect_symbol
|
static void elf64_x86_64_copy_indirect_symbol
|
||||||
PARAMS ((struct elf_link_hash_entry *, struct elf_link_hash_entry *));
|
PARAMS ((struct elf_backend_data *, struct elf_link_hash_entry *,
|
||||||
|
struct elf_link_hash_entry *));
|
||||||
static boolean elf64_x86_64_check_relocs
|
static boolean elf64_x86_64_check_relocs
|
||||||
PARAMS ((bfd *, struct bfd_link_info *, asection *sec,
|
PARAMS ((bfd *, struct bfd_link_info *, asection *sec,
|
||||||
const Elf_Internal_Rela *));
|
const Elf_Internal_Rela *));
|
||||||
@ -494,7 +495,8 @@ elf64_x86_64_create_dynamic_sections (dynobj, info)
|
|||||||
/* Copy the extra info we tack onto an elf_link_hash_entry. */
|
/* Copy the extra info we tack onto an elf_link_hash_entry. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
elf64_x86_64_copy_indirect_symbol (dir, ind)
|
elf64_x86_64_copy_indirect_symbol (bed, dir, ind)
|
||||||
|
struct elf_backend_data *bed;
|
||||||
struct elf_link_hash_entry *dir, *ind;
|
struct elf_link_hash_entry *dir, *ind;
|
||||||
{
|
{
|
||||||
struct elf64_x86_64_link_hash_entry *edir, *eind;
|
struct elf64_x86_64_link_hash_entry *edir, *eind;
|
||||||
@ -536,7 +538,7 @@ elf64_x86_64_copy_indirect_symbol (dir, ind)
|
|||||||
eind->dyn_relocs = NULL;
|
eind->dyn_relocs = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
_bfd_elf_link_hash_copy_indirect (dir, ind);
|
_bfd_elf_link_hash_copy_indirect (bed, dir, ind);
|
||||||
}
|
}
|
||||||
|
|
||||||
static boolean
|
static boolean
|
||||||
|
@ -1044,7 +1044,7 @@ elf_add_default_symbol (abfd, info, h, name, sym, psec, value,
|
|||||||
| ELF_LINK_HASH_DEF_REGULAR)) == 0);
|
| ELF_LINK_HASH_DEF_REGULAR)) == 0);
|
||||||
|
|
||||||
ht = (struct elf_link_hash_entry *) hi->root.u.i.link;
|
ht = (struct elf_link_hash_entry *) hi->root.u.i.link;
|
||||||
(*bed->elf_backend_copy_indirect_symbol) (ht, hi);
|
(*bed->elf_backend_copy_indirect_symbol) (bed, ht, hi);
|
||||||
|
|
||||||
/* See if the new flags lead us to realize that the symbol must
|
/* See if the new flags lead us to realize that the symbol must
|
||||||
be dynamic. */
|
be dynamic. */
|
||||||
@ -1116,7 +1116,7 @@ elf_add_default_symbol (abfd, info, h, name, sym, psec, value,
|
|||||||
& (ELF_LINK_HASH_DEF_DYNAMIC
|
& (ELF_LINK_HASH_DEF_DYNAMIC
|
||||||
| ELF_LINK_HASH_DEF_REGULAR)) == 0);
|
| ELF_LINK_HASH_DEF_REGULAR)) == 0);
|
||||||
|
|
||||||
(*bed->elf_backend_copy_indirect_symbol) (h, hi);
|
(*bed->elf_backend_copy_indirect_symbol) (bed, h, hi);
|
||||||
|
|
||||||
/* See if the new flags lead us to realize that the symbol
|
/* See if the new flags lead us to realize that the symbol
|
||||||
must be dynamic. */
|
must be dynamic. */
|
||||||
@ -3903,7 +3903,7 @@ elf_fix_symbol_flags (h, eif)
|
|||||||
struct elf_backend_data *bed;
|
struct elf_backend_data *bed;
|
||||||
|
|
||||||
bed = get_elf_backend_data (elf_hash_table (eif->info)->dynobj);
|
bed = get_elf_backend_data (elf_hash_table (eif->info)->dynobj);
|
||||||
(*bed->elf_backend_copy_indirect_symbol) (weakdef, h);
|
(*bed->elf_backend_copy_indirect_symbol) (bed, weakdef, h);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -207,7 +207,8 @@ static struct bfd_hash_entry *elfNN_ia64_new_elf_hash_entry
|
|||||||
PARAMS ((struct bfd_hash_entry *entry, struct bfd_hash_table *table,
|
PARAMS ((struct bfd_hash_entry *entry, struct bfd_hash_table *table,
|
||||||
const char *string));
|
const char *string));
|
||||||
static void elfNN_ia64_hash_copy_indirect
|
static void elfNN_ia64_hash_copy_indirect
|
||||||
PARAMS ((struct elf_link_hash_entry *, struct elf_link_hash_entry *));
|
PARAMS ((struct elf_backend_data *, struct elf_link_hash_entry *,
|
||||||
|
struct elf_link_hash_entry *));
|
||||||
static void elfNN_ia64_hash_hide_symbol
|
static void elfNN_ia64_hash_hide_symbol
|
||||||
PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *, boolean));
|
PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *, boolean));
|
||||||
static struct bfd_link_hash_table *elfNN_ia64_hash_table_create
|
static struct bfd_link_hash_table *elfNN_ia64_hash_table_create
|
||||||
@ -1602,7 +1603,8 @@ elfNN_ia64_new_elf_hash_entry (entry, table, string)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
elfNN_ia64_hash_copy_indirect (xdir, xind)
|
elfNN_ia64_hash_copy_indirect (bed, xdir, xind)
|
||||||
|
struct elf_backend_data *bed ATTRIBUTE_UNUSED;
|
||||||
struct elf_link_hash_entry *xdir, *xind;
|
struct elf_link_hash_entry *xdir, *xind;
|
||||||
{
|
{
|
||||||
struct elfNN_ia64_link_hash_entry *dir, *ind;
|
struct elfNN_ia64_link_hash_entry *dir, *ind;
|
||||||
|
@ -6369,12 +6369,13 @@ _bfd_mips_elf_gc_sweep_hook (abfd, info, sec, relocs)
|
|||||||
_bfd_elf_link_hash_copy_indirect copy the flags for us. */
|
_bfd_elf_link_hash_copy_indirect copy the flags for us. */
|
||||||
|
|
||||||
void
|
void
|
||||||
_bfd_mips_elf_copy_indirect_symbol (dir, ind)
|
_bfd_mips_elf_copy_indirect_symbol (bed, dir, ind)
|
||||||
|
struct elf_backend_data *bed;
|
||||||
struct elf_link_hash_entry *dir, *ind;
|
struct elf_link_hash_entry *dir, *ind;
|
||||||
{
|
{
|
||||||
struct mips_elf_link_hash_entry *dirmips, *indmips;
|
struct mips_elf_link_hash_entry *dirmips, *indmips;
|
||||||
|
|
||||||
_bfd_elf_link_hash_copy_indirect (dir, ind);
|
_bfd_elf_link_hash_copy_indirect (bed, dir, ind);
|
||||||
|
|
||||||
if (ind->root.type != bfd_link_hash_indirect)
|
if (ind->root.type != bfd_link_hash_indirect)
|
||||||
return;
|
return;
|
||||||
|
@ -68,7 +68,8 @@ extern boolean _bfd_mips_elf_gc_sweep_hook
|
|||||||
PARAMS ((bfd *, struct bfd_link_info *, asection *,
|
PARAMS ((bfd *, struct bfd_link_info *, asection *,
|
||||||
const Elf_Internal_Rela *));
|
const Elf_Internal_Rela *));
|
||||||
extern void _bfd_mips_elf_copy_indirect_symbol
|
extern void _bfd_mips_elf_copy_indirect_symbol
|
||||||
PARAMS ((struct elf_link_hash_entry *, struct elf_link_hash_entry *));
|
PARAMS ((struct elf_backend_data *, struct elf_link_hash_entry *,
|
||||||
|
struct elf_link_hash_entry *));
|
||||||
extern void _bfd_mips_elf_hide_symbol
|
extern void _bfd_mips_elf_hide_symbol
|
||||||
PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *, boolean));
|
PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *, boolean));
|
||||||
extern boolean _bfd_mips_elf_ignore_discarded_relocs
|
extern boolean _bfd_mips_elf_ignore_discarded_relocs
|
||||||
|
Reference in New Issue
Block a user