mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-20 15:03:31 +08:00
* elflink.c (_bfd_elf_merge_symbol): Allow type changes for
plugin symbols. Fix segfault on linker scrip defined syms.
This commit is contained in:
parent
7529d48023
commit
3a5dbfb250
@ -1,3 +1,8 @@
|
||||
2011-06-22 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* elflink.c (_bfd_elf_merge_symbol): Allow type changes for
|
||||
plugin symbols. Fix segfault on linker scrip defined syms.
|
||||
|
||||
2011-06-20 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR ld/12570
|
||||
|
@ -1080,11 +1080,15 @@ _bfd_elf_merge_symbol (bfd *abfd,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Plugin symbol type isn't currently set. Stop bogus errors. */
|
||||
if (oldbfd != NULL && (oldbfd->flags & BFD_PLUGIN) != 0)
|
||||
*type_change_ok = TRUE;
|
||||
|
||||
/* Check TLS symbol. We don't check undefined symbol introduced by
|
||||
"ld -u". */
|
||||
if ((ELF_ST_TYPE (sym->st_info) == STT_TLS || h->type == STT_TLS)
|
||||
&& ELF_ST_TYPE (sym->st_info) != h->type
|
||||
&& oldbfd != NULL)
|
||||
else if (oldbfd != NULL
|
||||
&& ELF_ST_TYPE (sym->st_info) != h->type
|
||||
&& (ELF_ST_TYPE (sym->st_info) == STT_TLS || h->type == STT_TLS))
|
||||
{
|
||||
bfd *ntbfd, *tbfd;
|
||||
bfd_boolean ntdef, tdef;
|
||||
@ -1423,7 +1427,8 @@ _bfd_elf_merge_symbol (bfd *abfd,
|
||||
if (newdef && olddef && newweak)
|
||||
{
|
||||
/* Don't skip new non-IR weak syms. */
|
||||
if (!((oldbfd->flags & BFD_PLUGIN) != 0
|
||||
if (!(oldbfd != NULL
|
||||
&& (oldbfd->flags & BFD_PLUGIN) != 0
|
||||
&& (abfd->flags & BFD_PLUGIN) == 0))
|
||||
*skip = TRUE;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user