From: Peter Collingbourne Date: Fri, 3 Feb 2017 16:53:55 +0000 (+0000) Subject: Object: Handle files without a dynamic symbol table. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=055ebfae9acba84b49d20c8ec45d6333f0a23013;p=llvm Object: Handle files without a dynamic symbol table. Differential Revision: https://reviews.llvm.org/D29482 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294013 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Object/ELFObjectFile.h b/include/llvm/Object/ELFObjectFile.h index 64b1921143c..9e95f2958aa 100644 --- a/include/llvm/Object/ELFObjectFile.h +++ b/include/llvm/Object/ELFObjectFile.h @@ -895,6 +895,8 @@ elf_symbol_iterator ELFObjectFile::dynamic_symbol_begin() const { template elf_symbol_iterator ELFObjectFile::dynamic_symbol_end() const { const Elf_Shdr *SymTab = DotDynSymSec; + if (!SymTab) + return dynamic_symbol_begin(); DataRefImpl Sym = toDRI(SymTab, SymTab->sh_size / sizeof(Elf_Sym)); return basic_symbol_iterator(SymbolRef(Sym, this)); } diff --git a/test/Object/nm-shared-object.test b/test/Object/nm-shared-object.test index 32ae6a86152..975cf760ba9 100644 --- a/test/Object/nm-shared-object.test +++ b/test/Object/nm-shared-object.test @@ -29,3 +29,5 @@ RUN: not llvm-nm -D %p/Inputs/trivial-object-test.coff-i386 2>&1 \ RUN: | FileCheck %s -check-prefix ERROR ERROR: File format has no dynamic symbol table. + +RUN: llvm-nm -D %p/Inputs/trivial-object-test.elf-i386 | count 0