* elflink.c (_bfd_elf_merge_symbol): Don't discard TLS symbols here.
Wrap long lines. (elf_link_add_object_symbols): Discard TLS symbols for --just-syms early in symbol loop.
This commit is contained in:
parent
5d13b3b319
commit
191c0c4245
@ -1,3 +1,10 @@
|
||||
2013-03-25 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* elflink.c (_bfd_elf_merge_symbol): Don't discard TLS symbols here.
|
||||
Wrap long lines.
|
||||
(elf_link_add_object_symbols): Discard TLS symbols for --just-syms
|
||||
early in symbol loop.
|
||||
|
||||
2013-03-25 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* elf-bfd.h (struct elf_backend_data <merge_symbol>): Update proto.
|
||||
|
@ -938,15 +938,6 @@ _bfd_elf_merge_symbol (bfd *abfd,
|
||||
sec = *psec;
|
||||
bind = ELF_ST_BIND (sym->st_info);
|
||||
|
||||
/* Silently discard TLS symbols from --just-syms. There's no way to
|
||||
combine a static TLS block with a new TLS block for this executable. */
|
||||
if (ELF_ST_TYPE (sym->st_info) == STT_TLS
|
||||
&& sec->sec_info_type == SEC_INFO_TYPE_JUST_SYMS)
|
||||
{
|
||||
*skip = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (! bfd_is_und_section (sec))
|
||||
h = elf_link_hash_lookup (elf_hash_table (info), name, TRUE, FALSE, FALSE);
|
||||
else
|
||||
@ -1145,19 +1136,23 @@ _bfd_elf_merge_symbol (bfd *abfd,
|
||||
|
||||
if (tdef && ntdef)
|
||||
(*_bfd_error_handler)
|
||||
(_("%s: TLS definition in %B section %A mismatches non-TLS definition in %B section %A"),
|
||||
(_("%s: TLS definition in %B section %A "
|
||||
"mismatches non-TLS definition in %B section %A"),
|
||||
tbfd, tsec, ntbfd, ntsec, h->root.root.string);
|
||||
else if (!tdef && !ntdef)
|
||||
(*_bfd_error_handler)
|
||||
(_("%s: TLS reference in %B mismatches non-TLS reference in %B"),
|
||||
(_("%s: TLS reference in %B "
|
||||
"mismatches non-TLS reference in %B"),
|
||||
tbfd, ntbfd, h->root.root.string);
|
||||
else if (tdef)
|
||||
(*_bfd_error_handler)
|
||||
(_("%s: TLS definition in %B section %A mismatches non-TLS reference in %B"),
|
||||
(_("%s: TLS definition in %B section %A "
|
||||
"mismatches non-TLS reference in %B"),
|
||||
tbfd, tsec, ntbfd, h->root.root.string);
|
||||
else
|
||||
(*_bfd_error_handler)
|
||||
(_("%s: TLS reference in %B mismatches non-TLS definition in %B section %A"),
|
||||
(_("%s: TLS reference in %B "
|
||||
"mismatches non-TLS definition in %B section %A"),
|
||||
tbfd, ntbfd, ntsec, h->root.root.string);
|
||||
|
||||
bfd_set_error (bfd_error_bad_value);
|
||||
@ -3976,6 +3971,13 @@ error_free_dyn:
|
||||
goto error_free_vers;
|
||||
}
|
||||
|
||||
/* Silently discard TLS symbols from --just-syms. There's
|
||||
no way to combine a static TLS block with a new TLS block
|
||||
for this executable. */
|
||||
if (ELF_ST_TYPE (isym->st_info) == STT_TLS
|
||||
&& sec->sec_info_type == SEC_INFO_TYPE_JUST_SYMS)
|
||||
continue;
|
||||
|
||||
if (bfd_is_und_section (sec)
|
||||
|| bfd_is_com_section (sec))
|
||||
definition = FALSE;
|
||||
|
Loading…
Reference in New Issue
Block a user