diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2015-08-07 23:27:14 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2015-08-07 23:27:14 +0000 |
commit | 8bab889b0f271665239fa1a7546a49f221ce4ac7 (patch) | |
tree | b573c2c60588c1566182c94733f38aca1b8be07b /llvm/tools/llvm-readobj | |
parent | eeebc41b580cc5d77f22da312a8d413f96c63edd (diff) | |
download | bcm5719-llvm-8bab889b0f271665239fa1a7546a49f221ce4ac7.tar.gz bcm5719-llvm-8bab889b0f271665239fa1a7546a49f221ce4ac7.zip |
Convert getSymbolSection to return an ErrorOr.
This function can actually fail since the symbol contains an index to the
section and that can be invalid.
llvm-svn: 244375
Diffstat (limited to 'llvm/tools/llvm-readobj')
-rw-r--r-- | llvm/tools/llvm-readobj/ARMWinEHPrinter.cpp | 5 | ||||
-rw-r--r-- | llvm/tools/llvm-readobj/MachODumper.cpp | 5 | ||||
-rw-r--r-- | llvm/tools/llvm-readobj/Win64EHDumper.cpp | 7 |
3 files changed, 8 insertions, 9 deletions
diff --git a/llvm/tools/llvm-readobj/ARMWinEHPrinter.cpp b/llvm/tools/llvm-readobj/ARMWinEHPrinter.cpp index bf5ff8e1d03..650955d1d75 100644 --- a/llvm/tools/llvm-readobj/ARMWinEHPrinter.cpp +++ b/llvm/tools/llvm-readobj/ARMWinEHPrinter.cpp @@ -630,9 +630,10 @@ bool Decoder::dumpUnpackedEntry(const COFFObjectFile &COFF, SW.printString("ExceptionRecord", formatSymbol(*Name, Address)); - section_iterator SI = COFF.section_end(); - if (XDataRecord->getSection(SI)) + ErrorOr<section_iterator> SIOrErr = XDataRecord->getSection(); + if (!SIOrErr) return false; + section_iterator SI = *SIOrErr; return dumpXDataRecord(COFF, *SI, FunctionAddress, Address); } else { diff --git a/llvm/tools/llvm-readobj/MachODumper.cpp b/llvm/tools/llvm-readobj/MachODumper.cpp index b226e5f35b5..6b1889a66b6 100644 --- a/llvm/tools/llvm-readobj/MachODumper.cpp +++ b/llvm/tools/llvm-readobj/MachODumper.cpp @@ -542,8 +542,9 @@ void MachODumper::printSymbol(const SymbolRef &Symbol) { getSymbol(Obj, Symbol.getRawDataRefImpl(), MOSymbol); StringRef SectionName = ""; - section_iterator SecI(Obj->section_begin()); - error(Symbol.getSection(SecI)); + ErrorOr<section_iterator> SecIOrErr = Symbol.getSection(); + error(SecIOrErr.getError()); + section_iterator SecI = *SecIOrErr; if (SecI != Obj->section_end()) error(SecI->getName(SectionName)); diff --git a/llvm/tools/llvm-readobj/Win64EHDumper.cpp b/llvm/tools/llvm-readobj/Win64EHDumper.cpp index 076f137d6ee..ffb0855606a 100644 --- a/llvm/tools/llvm-readobj/Win64EHDumper.cpp +++ b/llvm/tools/llvm-readobj/Win64EHDumper.cpp @@ -149,11 +149,8 @@ static std::error_code resolveRelocation(const Dumper::Context &Ctx, return EC; ResolvedAddress = *ResolvedAddressOrErr; - section_iterator SI = Ctx.COFF.section_begin(); - if (std::error_code EC = Symbol.getSection(SI)) - return EC; - - ResolvedSection = Ctx.COFF.getCOFFSection(*SI); + ErrorOr<section_iterator> SI = Symbol.getSection(); + ResolvedSection = Ctx.COFF.getCOFFSection(**SI); return std::error_code(); } |