* elflink.h (elf_link_add_object_symbols): Consistently treat

uninitialized symbols in shared objects as common symbols.
This commit is contained in:
Ian Lance Taylor
1997-05-15 21:38:26 +00:00
parent 4c4badea81
commit 77bd8dfa1f
2 changed files with 11 additions and 20 deletions

View File

@ -11,7 +11,8 @@ Thu May 15 14:31:28 1997 Nick Clifton <nickc@cygnus.com>
Thu May 15 16:40:20 1997 Ian Lance Taylor <ian@cygnus.com> Thu May 15 16:40:20 1997 Ian Lance Taylor <ian@cygnus.com>
* elflink.h (elf_link_add_object_symbols): Force ELF symbol size * elflink.h (elf_link_add_object_symbols): Force ELF symbol size
to common symbol size. to common symbol size. Consistently treat uninitialized symbols
in shared objects as common symbols.
Fri May 9 10:15:27 1997 Nick Clifton <nickc@cygnus.com> Fri May 9 10:15:27 1997 Nick Clifton <nickc@cygnus.com>

View File

@ -913,27 +913,17 @@ elf_link_add_object_symbols (abfd, info)
&& definition && definition
&& h->root.type == bfd_link_hash_common && h->root.type == bfd_link_hash_common
&& (sec->flags & SEC_ALLOC) != 0 && (sec->flags & SEC_ALLOC) != 0
&& (sec->flags & SEC_LOAD) == 0) && (sec->flags & SEC_LOAD) == 0
{ && sym.st_size > 0
if (! ((*info->callbacks->multiple_common) && bind != STB_WEAK
(info, h->root.root.string, && ELF_ST_TYPE (sym.st_info) != STT_FUNC)
h->root.u.c.p->section->owner, bfd_link_hash_common,
h->root.u.c.size, abfd, bfd_link_hash_common,
sym.st_size)))
goto error_return;
/* If the symbol in the shared library is smaller than
the one we already have, then override it to stick
with the larger symbol. Set SIZE_CHANGE_OK because
we only want to warn if requested with --warn-common. */
if (sym.st_size < h->size)
{ {
override = true; override = true;
sec = bfd_und_section_ptr; sec = bfd_com_section_ptr;
definition = false; definition = false;
value = sym.st_size;
size_change_ok = true; size_change_ok = true;
} }
}
/* Similarly, if we are not looking at a dynamic object, and /* Similarly, if we are not looking at a dynamic object, and
we have a definition, we want to override any definition we have a definition, we want to override any definition