* elflink.h (elf_adjust_dynamic_symbol): If a common symbol got

defined in a regular file, set ELF_LINK_HASH_DEF_REGULAR.
This commit is contained in:
Ian Lance Taylor 1996-04-01 17:42:59 +00:00
parent 251b8ab932
commit ce6a773183
2 changed files with 17 additions and 0 deletions

View File

@ -1,3 +1,8 @@
Mon Apr 1 12:35:36 1996 Ian Lance Taylor <ian@cygnus.com>
* elflink.h (elf_adjust_dynamic_symbol): If a common symbol got
defined in a regular file, set ELF_LINK_HASH_DEF_REGULAR.
Sun Mar 31 01:58:41 1996 steve chamberlain <sac@slash.cygnus.com>
* peicode.h (coff_swap_aouthdr_out): Delete test for .junk.

View File

@ -1554,6 +1554,18 @@ elf_adjust_dynamic_symbol (h, data)
}
}
/* If this is a final link, and the symbol was defined as a common
symbol in a regular object file, and there was no definition in
any dynamic object, then the linker will have allocated space for
the symbol in a common section but the ELF_LINK_HASH_DEF_REGULAR
flag will not have been set. */
if (h->root.type == bfd_link_hash_defined
&& (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0
&& (h->elf_link_hash_flags & ELF_LINK_HASH_REF_REGULAR) != 0
&& (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) == 0
&& (h->root.u.def.section->owner->flags & DYNAMIC) == 0)
h->elf_link_hash_flags |= ELF_LINK_HASH_DEF_REGULAR;
/* If -Bsymbolic was used (which means to bind references to global
symbols to the definition within the shared object), and this
symbol was defined in a regular object, then it actually doesn't