diff options
author | Alan Modra <amodra@gmail.com> | 2013-03-25 06:02:28 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2013-03-25 06:02:28 +0000 |
commit | 191c0c4245f0372726aaa6d7972fd7187f7cccb9 (patch) | |
tree | f1376b309d44e922d5d7f1d52219830f728a8897 | |
parent | 5d13b3b31966d19c8cd83b8e4116db437fb820e2 (diff) | |
download | gdb-191c0c4245f0372726aaa6d7972fd7187f7cccb9.zip gdb-191c0c4245f0372726aaa6d7972fd7187f7cccb9.tar.gz gdb-191c0c4245f0372726aaa6d7972fd7187f7cccb9.tar.bz2 |
* 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.
-rw-r--r-- | bfd/ChangeLog | 7 | ||||
-rw-r--r-- | bfd/elflink.c | 28 |
2 files changed, 22 insertions, 13 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 74d0900..04e2f2c 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,5 +1,12 @@ 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. (_bfd_elf_init_reloc_shdr): Delete. * elf.c (_bfd_elf_init_reloc_shdr): Make static. diff --git a/bfd/elflink.c b/bfd/elflink.c index b5d9415..1e341da 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -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; |