mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-26 11:33:45 +08:00
* elflink.c (_bfd_elf_merge_symbol): Treat weak as strong only
when it is a definition.
This commit is contained in:
parent
a4b6e8f6a4
commit
15b43f483c
@ -1,3 +1,8 @@
|
||||
2004-04-15 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* elflink.c (_bfd_elf_merge_symbol): Treat weak as strong only
|
||||
when it is a definition.
|
||||
|
||||
2004-04-14 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* elf32-sparc.c (elf32_sparc_relocate_section): Don't abort
|
||||
|
@ -887,16 +887,20 @@ _bfd_elf_merge_symbol (bfd *abfd,
|
||||
oldweak = (h->root.type == bfd_link_hash_defweak
|
||||
|| h->root.type == bfd_link_hash_undefweak);
|
||||
|
||||
/* If a new weak symbol comes from a regular file and the old symbol
|
||||
comes from a dynamic library, we treat the new one as strong.
|
||||
Similarly, an old weak symbol from a regular file is treated as
|
||||
strong when the new symbol comes from a dynamic library. Further,
|
||||
an old weak symbol from a dynamic library is treated as strong if
|
||||
the new symbol is from a dynamic library. This reflects the way
|
||||
glibc's ld.so works. */
|
||||
if (!newdyn && olddyn)
|
||||
/* If a new weak symbol definition comes from a regular file and the
|
||||
old symbol comes from a dynamic library, we treat the new one as
|
||||
strong. Similarly, an old weak symbol definition from a regular
|
||||
file is treated as strong when the new symbol comes from a dynamic
|
||||
library. Further, an old weak symbol from a dynamic library is
|
||||
treated as strong if the new symbol is from a dynamic library.
|
||||
This reflects the way glibc's ld.so works.
|
||||
|
||||
Do this before setting *type_change_ok or *size_change_ok so that
|
||||
we warn properly when dynamic library symbols are overridden. */
|
||||
|
||||
if (newdef && !newdyn && olddyn)
|
||||
newweak = FALSE;
|
||||
if (newdyn)
|
||||
if (olddef && newdyn)
|
||||
oldweak = FALSE;
|
||||
|
||||
/* It's OK to change the type if either the existing symbol or the
|
||||
|
Loading…
Reference in New Issue
Block a user