diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2015-07-01 12:56:27 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2015-07-01 12:56:27 +0000 |
commit | 6def304209dd2152457c1ffda7330a6ac4e076f1 (patch) | |
tree | f0b47d1c1dcc683f50552e6850ac19aa6987ed58 /llvm/tools/llvm-readobj/ARMEHABIPrinter.h | |
parent | 6ae400d12256de0547c1b06919d126f664c78d7e (diff) | |
download | bcm5719-llvm-6def304209dd2152457c1ffda7330a6ac4e076f1.tar.gz bcm5719-llvm-6def304209dd2152457c1ffda7330a6ac4e076f1.zip |
Return ErrorOr from getSection.
This also improves the logic of what is an error:
* getSection(uint_32): only return an error if the index is out of bounds. The
index 0 corresponds to a perfectly valid entry.
* getSection(Elf_Sym): Returns null for symbols that normally don't have
sections and error for out of bound indexes.
In many places this just moves the report_fatal_error up the stack, but those
can then be fixed in smaller patches.
llvm-svn: 241156
Diffstat (limited to 'llvm/tools/llvm-readobj/ARMEHABIPrinter.h')
-rw-r--r-- | llvm/tools/llvm-readobj/ARMEHABIPrinter.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/tools/llvm-readobj/ARMEHABIPrinter.h b/llvm/tools/llvm-readobj/ARMEHABIPrinter.h index 55d10b151de..dd2490d503d 100644 --- a/llvm/tools/llvm-readobj/ARMEHABIPrinter.h +++ b/llvm/tools/llvm-readobj/ARMEHABIPrinter.h @@ -377,7 +377,10 @@ PrinterContext<ET>::FindExceptionTable(unsigned IndexSectionIndex, std::pair<const Elf_Shdr *, const Elf_Sym *> Symbol = ELF->getRelocationSymbol(&Sec, &RelA); - return ELF->getSection(Symbol.second); + ErrorOr<const Elf_Shdr *> Ret = ELF->getSection(Symbol.second); + if (std::error_code EC = Ret.getError()) + report_fatal_error(EC.message()); + return *Ret; } } } |