From 055ebfae9acba84b49d20c8ec45d6333f0a23013 Mon Sep 17 00:00:00 2001 From: Peter Collingbourne Date: Fri, 3 Feb 2017 16:53:55 +0000 Subject: [PATCH] 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 --- include/llvm/Object/ELFObjectFile.h | 2 ++ test/Object/nm-shared-object.test | 2 ++ 2 files changed, 4 insertions(+) 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 -- 2.50.1