ignore common definitions of function symbols in unlinked archives
This commit is contained in:
parent
7340082dc8
commit
7da9d88fe4
|
@ -1,3 +1,10 @@
|
||||||
|
2001-02-07 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* elflink.h (is_global_symbol_definition): Rename to
|
||||||
|
is_global_data_symbol_definition and have it reject function
|
||||||
|
symbols.
|
||||||
|
(elf_link_is_defined_archive_symbol): Use renamed function.
|
||||||
|
|
||||||
2001-02-07 Todd Vierling <tv@wasabisystems.com>
|
2001-02-07 Todd Vierling <tv@wasabisystems.com>
|
||||||
|
|
||||||
* libbfd-in.h (bfd_target_vector): Change extern array to pointer.
|
* libbfd-in.h (bfd_target_vector): Change extern array to pointer.
|
||||||
|
|
|
@ -80,9 +80,9 @@ elf_bfd_link_add_symbols (abfd, info)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return true iff this is a non-common definition of a symbol. */
|
/* Return true iff this is a non-common, definition of a non-function symbol. */
|
||||||
static boolean
|
static boolean
|
||||||
is_global_symbol_definition (abfd, sym)
|
is_global_data_symbol_definition (abfd, sym)
|
||||||
bfd * abfd ATTRIBUTE_UNUSED;
|
bfd * abfd ATTRIBUTE_UNUSED;
|
||||||
Elf_Internal_Sym * sym;
|
Elf_Internal_Sym * sym;
|
||||||
{
|
{
|
||||||
|
@ -91,6 +91,10 @@ is_global_symbol_definition (abfd, sym)
|
||||||
&& ELF_ST_BIND (sym->st_info) < STB_LOOS)
|
&& ELF_ST_BIND (sym->st_info) < STB_LOOS)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
/* Function symbols do not count. */
|
||||||
|
if (ELF_ST_TYPE (sym->st_info) == STT_FUNC)
|
||||||
|
return false;
|
||||||
|
|
||||||
/* If the section is undefined, then so is the symbol. */
|
/* If the section is undefined, then so is the symbol. */
|
||||||
if (sym->st_shndx == SHN_UNDEF)
|
if (sym->st_shndx == SHN_UNDEF)
|
||||||
return false;
|
return false;
|
||||||
|
@ -116,7 +120,7 @@ is_global_symbol_definition (abfd, sym)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Search the symbol table of the archive element of the archive ABFD
|
/* Search the symbol table of the archive element of the archive ABFD
|
||||||
whoes archove map contains a mention of SYMDEF, and determine if
|
whoes archive map contains a mention of SYMDEF, and determine if
|
||||||
the symbol is defined in this element. */
|
the symbol is defined in this element. */
|
||||||
static boolean
|
static boolean
|
||||||
elf_link_is_defined_archive_symbol (abfd, symdef)
|
elf_link_is_defined_archive_symbol (abfd, symdef)
|
||||||
|
@ -201,7 +205,7 @@ elf_link_is_defined_archive_symbol (abfd, symdef)
|
||||||
|
|
||||||
if (strcmp (name, symdef->name) == 0)
|
if (strcmp (name, symdef->name) == 0)
|
||||||
{
|
{
|
||||||
result = is_global_symbol_definition (abfd, & sym);
|
result = is_global_data_symbol_definition (abfd, & sym);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue