mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-02 09:33:59 +00:00
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@221870 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f7046b7244
commit
344411bd12
@ -996,7 +996,7 @@ symbol_iterator COFFObjectFile::getRelocationSymbol(DataRefImpl Rel) const {
|
||||
else if (SymbolTable32)
|
||||
Ref.p = reinterpret_cast<uintptr_t>(SymbolTable32 + R->SymbolTableIndex);
|
||||
else
|
||||
llvm_unreachable("no symbol table pointer!");
|
||||
return symbol_end();
|
||||
return symbol_iterator(SymbolRef(Ref, this));
|
||||
}
|
||||
|
||||
|
@ -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";
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user