From 1f80b0a8e0d8be11ec14c6395a1f6ea49ee7e791 Mon Sep 17 00:00:00 2001 From: David Majnemer Date: Thu, 13 Nov 2014 07:42:11 +0000 Subject: [PATCH] Object, COFF: getRelocationSymbol shouldn't assert lib/Object is supposed to be robust to malformed object files. Don't assert if we don't have a symbol table. I'll try to come up with a test case later. llvm-svn: 221870 --- llvm/lib/Object/COFFObjectFile.cpp | 2 +- llvm/tools/llvm-readobj/COFFDumper.cpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/llvm/lib/Object/COFFObjectFile.cpp b/llvm/lib/Object/COFFObjectFile.cpp index 8d8711c..8312fed 100644 --- a/llvm/lib/Object/COFFObjectFile.cpp +++ b/llvm/lib/Object/COFFObjectFile.cpp @@ -996,7 +996,7 @@ symbol_iterator COFFObjectFile::getRelocationSymbol(DataRefImpl Rel) const { else if (SymbolTable32) Ref.p = reinterpret_cast(SymbolTable32 + R->SymbolTableIndex); else - llvm_unreachable("no symbol table pointer!"); + return symbol_end(); return symbol_iterator(SymbolRef(Ref, this)); } diff --git a/llvm/tools/llvm-readobj/COFFDumper.cpp b/llvm/tools/llvm-readobj/COFFDumper.cpp index 7c12f06..bb43158 100644 --- a/llvm/tools/llvm-readobj/COFFDumper.cpp +++ b/llvm/tools/llvm-readobj/COFFDumper.cpp @@ -800,7 +800,7 @@ void COFFDumper::printRelocation(const SectionRef &Section, if (error(Reloc.getTypeName(RelocName))) return; symbol_iterator Symbol = Reloc.getSymbol(); - if (error(Symbol->getName(SymbolName))) + if (Symbol != Obj->symbol_end() && error(Symbol->getName(SymbolName))) return; if (error(Section.getContents(Contents))) return; @@ -809,12 +809,12 @@ void COFFDumper::printRelocation(const SectionRef &Section, DictScope Group(W, "Relocation"); W.printHex("Offset", Offset); W.printNumber("Type", RelocName, RelocType); - W.printString("Symbol", SymbolName.size() > 0 ? SymbolName : "-"); + W.printString("Symbol", SymbolName.empty() ? "-" : SymbolName); } else { raw_ostream& OS = W.startLine(); OS << W.hex(Offset) << " " << RelocName - << " " << (SymbolName.size() > 0 ? SymbolName : "-") + << " " << (SymbolName.empty() ? "-" : SymbolName) << "\n"; } } -- 2.7.4