diff options
-rw-r--r-- | bfd/elflink.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/bfd/elflink.c b/bfd/elflink.c index c4f286e..ca16214 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -3571,12 +3571,6 @@ elf_link_is_defined_archive_symbol (bfd * abfd, carsym * symdef) if (! bfd_check_format (abfd, bfd_object)) return false; - if (elf_use_dt_symtab_p (abfd)) - { - bfd_set_error (bfd_error_wrong_format); - return false; - } - /* Select the appropriate symbol table. If we don't know if the object file is an IR object, give linker LTO plugin a chance to get the correct symbol table. */ @@ -3592,10 +3586,19 @@ elf_link_is_defined_archive_symbol (bfd * abfd, carsym * symdef) abfd = abfd->plugin_dummy_bfd; hdr = &elf_tdata (abfd)->symtab_hdr; } - else if ((abfd->flags & DYNAMIC) == 0 || elf_dynsymtab (abfd) == 0) - hdr = &elf_tdata (abfd)->symtab_hdr; else - hdr = &elf_tdata (abfd)->dynsymtab_hdr; + { + if (elf_use_dt_symtab_p (abfd)) + { + bfd_set_error (bfd_error_wrong_format); + return false; + } + + if ((abfd->flags & DYNAMIC) == 0 || elf_dynsymtab (abfd) == 0) + hdr = &elf_tdata (abfd)->symtab_hdr; + else + hdr = &elf_tdata (abfd)->dynsymtab_hdr; + } symcount = hdr->sh_size / get_elf_backend_data (abfd)->s->sizeof_sym; |