mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-07-01 01:45:51 +08:00
* elfcode.h (NAME(bfd_elf,record_link_assignment)): Add provide
argument. * bfd-in.h (bfd_elf32_record_link_assignment): Update prototype. (bfd_elf64_record_link_assignment): Likewise. * bfd-in2.h: Rebuild. PR 7164.
This commit is contained in:
@ -1,5 +1,11 @@
|
|||||||
Tue Jul 4 12:22:21 1995 Ian Lance Taylor <ian@cygnus.com>
|
Tue Jul 4 12:22:21 1995 Ian Lance Taylor <ian@cygnus.com>
|
||||||
|
|
||||||
|
* elfcode.h (NAME(bfd_elf,record_link_assignment)): Add provide
|
||||||
|
argument.
|
||||||
|
* bfd-in.h (bfd_elf32_record_link_assignment): Update prototype.
|
||||||
|
(bfd_elf64_record_link_assignment): Likewise.
|
||||||
|
* bfd-in2.h: Rebuild.
|
||||||
|
|
||||||
* libelf.h (struct elf_link_hash_table): Add needed field. Remove
|
* libelf.h (struct elf_link_hash_table): Add needed field. Remove
|
||||||
saw_needed field.
|
saw_needed field.
|
||||||
* elfcode.h (elf_link_add_object_symbols): If elf_dt_needed_name
|
* elfcode.h (elf_link_add_object_symbols): If elf_dt_needed_name
|
||||||
|
@ -592,9 +592,9 @@ extern boolean bfd_mips_ecoff_create_embedded_relocs
|
|||||||
/* Externally visible ELF routines. */
|
/* Externally visible ELF routines. */
|
||||||
|
|
||||||
extern boolean bfd_elf32_record_link_assignment
|
extern boolean bfd_elf32_record_link_assignment
|
||||||
PARAMS ((bfd *, struct bfd_link_info *, const char *));
|
PARAMS ((bfd *, struct bfd_link_info *, const char *, boolean));
|
||||||
extern boolean bfd_elf64_record_link_assignment
|
extern boolean bfd_elf64_record_link_assignment
|
||||||
PARAMS ((bfd *, struct bfd_link_info *, const char *));
|
PARAMS ((bfd *, struct bfd_link_info *, const char *, boolean));
|
||||||
struct bfd_elf_link_needed_list
|
struct bfd_elf_link_needed_list
|
||||||
{
|
{
|
||||||
struct bfd_elf_link_needed_list *next;
|
struct bfd_elf_link_needed_list *next;
|
||||||
|
@ -592,9 +592,9 @@ extern boolean bfd_mips_ecoff_create_embedded_relocs
|
|||||||
/* Externally visible ELF routines. */
|
/* Externally visible ELF routines. */
|
||||||
|
|
||||||
extern boolean bfd_elf32_record_link_assignment
|
extern boolean bfd_elf32_record_link_assignment
|
||||||
PARAMS ((bfd *, struct bfd_link_info *, const char *));
|
PARAMS ((bfd *, struct bfd_link_info *, const char *, boolean));
|
||||||
extern boolean bfd_elf64_record_link_assignment
|
extern boolean bfd_elf64_record_link_assignment
|
||||||
PARAMS ((bfd *, struct bfd_link_info *, const char *));
|
PARAMS ((bfd *, struct bfd_link_info *, const char *, boolean));
|
||||||
struct bfd_elf_link_needed_list
|
struct bfd_elf_link_needed_list
|
||||||
{
|
{
|
||||||
struct bfd_elf_link_needed_list *next;
|
struct bfd_elf_link_needed_list *next;
|
||||||
|
@ -5107,10 +5107,11 @@ elf_link_read_relocs (abfd, o, external_relocs, internal_relocs, keep_memory)
|
|||||||
|
|
||||||
/*ARGSUSED*/
|
/*ARGSUSED*/
|
||||||
boolean
|
boolean
|
||||||
NAME(bfd_elf,record_link_assignment) (output_bfd, info, name)
|
NAME(bfd_elf,record_link_assignment) (output_bfd, info, name, provide)
|
||||||
bfd *output_bfd;
|
bfd *output_bfd;
|
||||||
struct bfd_link_info *info;
|
struct bfd_link_info *info;
|
||||||
const char *name;
|
const char *name;
|
||||||
|
boolean provide;
|
||||||
{
|
{
|
||||||
struct elf_link_hash_entry *h;
|
struct elf_link_hash_entry *h;
|
||||||
|
|
||||||
@ -5121,6 +5122,15 @@ NAME(bfd_elf,record_link_assignment) (output_bfd, info, name)
|
|||||||
if (h == NULL)
|
if (h == NULL)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
/* If this symbol is being provided by the linker script, and it is
|
||||||
|
currently defined by a dynamic object, but not by a regular
|
||||||
|
object, then mark it as undefined so that the generic linker will
|
||||||
|
force the correct value. */
|
||||||
|
if (provide
|
||||||
|
&& (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) != 0
|
||||||
|
&& (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0)
|
||||||
|
h->root.type = bfd_link_hash_undefined;
|
||||||
|
|
||||||
h->elf_link_hash_flags |= ELF_LINK_HASH_DEF_REGULAR;
|
h->elf_link_hash_flags |= ELF_LINK_HASH_DEF_REGULAR;
|
||||||
h->type = STT_OBJECT;
|
h->type = STT_OBJECT;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user