summaryrefslogtreecommitdiffstats
path: root/llvm/include
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2016-11-03 13:43:30 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2016-11-03 13:43:30 +0000
commit9ea68341b96dd571f5fc0318ea035523b6f4bf77 (patch)
treed551f42ea2a715de809a94b8906bf0b470a3fb41 /llvm/include
parent6d18d388c5da61ac7f4c14a43d6008f3f5e64edd (diff)
downloadbcm5719-llvm-9ea68341b96dd571f5fc0318ea035523b6f4bf77.tar.gz
bcm5719-llvm-9ea68341b96dd571f5fc0318ea035523b6f4bf77.zip
Replace a report_fatal_error with an ErrorOr.
llvm-svn: 285905
Diffstat (limited to 'llvm/include')
-rw-r--r--llvm/include/llvm/Object/ELF.h17
-rw-r--r--llvm/include/llvm/Object/ELFObjectFile.h4
2 files changed, 12 insertions, 9 deletions
diff --git a/llvm/include/llvm/Object/ELF.h b/llvm/include/llvm/Object/ELF.h
index 5fd2d38793c..d5ce410d58c 100644
--- a/llvm/include/llvm/Object/ELF.h
+++ b/llvm/include/llvm/Object/ELF.h
@@ -111,13 +111,10 @@ public:
ErrorOr<Elf_Shdr_Range> sections() const;
- Elf_Sym_Range symbols(const Elf_Shdr *Sec) const {
+ ErrorOr<Elf_Sym_Range> symbols(const Elf_Shdr *Sec) const {
if (!Sec)
return makeArrayRef<Elf_Sym>(nullptr, nullptr);
- auto V = getSectionContentsAsArray<Elf_Sym>(Sec);
- if (!V)
- report_fatal_error(V.getError().message());
- return *V;
+ return getSectionContentsAsArray<Elf_Sym>(Sec);
}
Elf_Rela_Range relas(const Elf_Shdr *Sec) const {
@@ -164,7 +161,10 @@ public:
ErrorOr<const Elf_Sym *> getSymbol(const Elf_Shdr *Sec,
uint32_t Index) const {
- Elf_Sym_Range Symbols = symbols(Sec);
+ auto SymtabOrErr = symbols(Sec);
+ if (std::error_code EC = SymtabOrErr.getError())
+ return object_error::parse_failed;
+ Elf_Sym_Range Symbols = *SymtabOrErr;
if (Index >= Symbols.size())
return object_error::invalid_symbol_index;
return &Symbols[Index];
@@ -195,7 +195,10 @@ template <class ELFT>
uint32_t ELFFile<ELFT>::getExtendedSymbolTableIndex(
const Elf_Sym *Sym, const Elf_Shdr *SymTab,
ArrayRef<Elf_Word> ShndxTable) const {
- return getExtendedSymbolTableIndex(Sym, symbols(SymTab).begin(), ShndxTable);
+ auto SymsOrErr = symbols(SymTab);
+ if (std::error_code EC = SymsOrErr.getError())
+ report_fatal_error(EC.message());
+ return getExtendedSymbolTableIndex(Sym, SymsOrErr->begin(), ShndxTable);
}
template <class ELFT>
diff --git a/llvm/include/llvm/Object/ELFObjectFile.h b/llvm/include/llvm/Object/ELFObjectFile.h
index 179f07a76cc..ad1c2e12ce1 100644
--- a/llvm/include/llvm/Object/ELFObjectFile.h
+++ b/llvm/include/llvm/Object/ELFObjectFile.h
@@ -507,8 +507,8 @@ uint32_t ELFObjectFile<ELFT>::getSymbolFlags(DataRefImpl Sym) const {
Result |= SymbolRef::SF_Absolute;
if (ESym->getType() == ELF::STT_FILE || ESym->getType() == ELF::STT_SECTION ||
- ESym == EF.symbols(DotSymtabSec).begin() ||
- ESym == EF.symbols(DotDynSymSec).begin())
+ ESym == (*EF.symbols(DotSymtabSec)).begin() ||
+ ESym == (*EF.symbols(DotDynSymSec)).begin())
Result |= SymbolRef::SF_FormatSpecific;
if (EF.getHeader()->e_machine == ELF::EM_ARM) {
OpenPOWER on IntegriCloud