]> granicus.if.org Git - llvm/commitdiff
Object: Handle files without a dynamic symbol table.
authorPeter Collingbourne <peter@pcc.me.uk>
Fri, 3 Feb 2017 16:53:55 +0000 (16:53 +0000)
committerPeter Collingbourne <peter@pcc.me.uk>
Fri, 3 Feb 2017 16:53:55 +0000 (16:53 +0000)
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
test/Object/nm-shared-object.test

index 64b1921143cf8cd46ea37660c076fd11a5af9b0a..9e95f2958aa4fe14ecc673fc7c6a05163e820eae 100644 (file)
@@ -895,6 +895,8 @@ elf_symbol_iterator ELFObjectFile<ELFT>::dynamic_symbol_begin() const {
 template <class ELFT>
 elf_symbol_iterator ELFObjectFile<ELFT>::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));
 }
index 32ae6a861529b567e4685e764fa8a2ee1754562e..975cf760ba9f99d65a547512f2f9d46d47fe5f9d 100644 (file)
@@ -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