mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-18 10:24:45 +00:00
Return ErrorOr from SymbolRef::getName.
This function can really fail since the string table offset can be out of bounds. Using ErrorOr makes sure the error is checked. Hopefully a lot of the boilerplate code in tools/* can go away once we have a diagnostic manager in Object. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241297 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -139,8 +139,10 @@ std::error_code COFFDumper::resolveSymbolName(const coff_section *Section,
|
||||
SymbolRef Symbol;
|
||||
if (std::error_code EC = resolveSymbol(Section, Offset, Symbol))
|
||||
return EC;
|
||||
if (std::error_code EC = Symbol.getName(Name))
|
||||
ErrorOr<StringRef> NameOrErr = Symbol.getName();
|
||||
if (std::error_code EC = NameOrErr.getError())
|
||||
return EC;
|
||||
Name = *NameOrErr;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
@@ -809,8 +811,12 @@ void COFFDumper::printRelocation(const SectionRef &Section,
|
||||
StringRef SymbolName;
|
||||
Reloc.getTypeName(RelocName);
|
||||
symbol_iterator Symbol = Reloc.getSymbol();
|
||||
if (Symbol != Obj->symbol_end() && error(Symbol->getName(SymbolName)))
|
||||
return;
|
||||
if (Symbol != Obj->symbol_end()) {
|
||||
ErrorOr<StringRef> SymbolNameOrErr = Symbol->getName();
|
||||
if (error(SymbolNameOrErr.getError()))
|
||||
return;
|
||||
SymbolName = *SymbolNameOrErr;
|
||||
}
|
||||
|
||||
if (opts::ExpandRelocs) {
|
||||
DictScope Group(W, "Relocation");
|
||||
|
Reference in New Issue
Block a user