diff options
| author | Rafael Espindola <rafael.espindola@gmail.com> | 2015-07-02 20:55:21 +0000 |
|---|---|---|
| committer | Rafael Espindola <rafael.espindola@gmail.com> | 2015-07-02 20:55:21 +0000 |
| commit | 5d0c2ffadf84839b951f12a23a163acbd8162d05 (patch) | |
| tree | 664f4d3c3de6e77a695a2feb4555d261cfc9d9ab /llvm/tools/llvm-readobj/MachODumper.cpp | |
| parent | 4dc5adc731a7a157e06c78295de0f1b41846edb3 (diff) | |
| download | bcm5719-llvm-5d0c2ffadf84839b951f12a23a163acbd8162d05.tar.gz bcm5719-llvm-5d0c2ffadf84839b951f12a23a163acbd8162d05.zip | |
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.
llvm-svn: 241297
Diffstat (limited to 'llvm/tools/llvm-readobj/MachODumper.cpp')
| -rw-r--r-- | llvm/tools/llvm-readobj/MachODumper.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/llvm/tools/llvm-readobj/MachODumper.cpp b/llvm/tools/llvm-readobj/MachODumper.cpp index 049c9f5d8c1..adb99b0acd7 100644 --- a/llvm/tools/llvm-readobj/MachODumper.cpp +++ b/llvm/tools/llvm-readobj/MachODumper.cpp @@ -474,8 +474,10 @@ void MachODumper::printRelocation(const MachOObjectFile *Obj, if (IsExtern) { symbol_iterator Symbol = Reloc.getSymbol(); if (Symbol != Obj->symbol_end()) { - if (error(Symbol->getName(TargetName))) + ErrorOr<StringRef> TargetNameOrErr = Symbol->getName(); + if (error(TargetNameOrErr.getError())) return; + TargetName = *TargetNameOrErr; } } else if (!IsScattered) { section_iterator SecI = Obj->getRelocationSection(DR); @@ -538,8 +540,8 @@ void MachODumper::printDynamicSymbols() { void MachODumper::printSymbol(const SymbolRef &Symbol) { StringRef SymbolName; - if (Symbol.getName(SymbolName)) - SymbolName = ""; + if (ErrorOr<StringRef> SymbolNameOrErr = Symbol.getName()) + SymbolName = *SymbolNameOrErr; MachOSymbol MOSymbol; getSymbol(Obj, Symbol.getRawDataRefImpl(), MOSymbol); |

