]> granicus.if.org Git - llvm/commitdiff
Remove the last use of report_fatal_error from ELF.h.
authorRafael Espindola <rafael.espindola@gmail.com>
Thu, 3 Nov 2016 19:07:15 +0000 (19:07 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Thu, 3 Nov 2016 19:07:15 +0000 (19:07 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285955 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Object/ELF.h
tools/llvm-readobj/ARMEHABIPrinter.h
tools/llvm-readobj/ELFDumper.cpp
tools/obj2yaml/elf2yaml.cpp

index 33a3b75b47bc6969d695dff5db4607e5c570e067..8b5c12b0a74415e0691a4554a2a9b83efe2579d1 100644 (file)
@@ -117,18 +117,12 @@ public:
     return getSectionContentsAsArray<Elf_Sym>(Sec);
   }
 
-  Elf_Rela_Range relas(const Elf_Shdr *Sec) const {
-    auto V = getSectionContentsAsArray<Elf_Rela>(Sec);
-    if (!V)
-      report_fatal_error(V.getError().message());
-    return *V;
+  ErrorOr<Elf_Rela_Range> relas(const Elf_Shdr *Sec) const {
+    return getSectionContentsAsArray<Elf_Rela>(Sec);
   }
 
-  Elf_Rel_Range rels(const Elf_Shdr *Sec) const {
-    auto V = getSectionContentsAsArray<Elf_Rel>(Sec);
-    if (!V)
-      report_fatal_error(V.getError().message());
-    return *V;
+  ErrorOr<Elf_Rel_Range> rels(const Elf_Shdr *Sec) const {
+    return getSectionContentsAsArray<Elf_Rel>(Sec);
   }
 
   /// \brief Iterate over program header table.
index 2e10d8a917fe411f78b341e9dd912576dd785e65..78060e3abcd38e8a799bb072b7feca48342b9e33 100644 (file)
@@ -387,7 +387,7 @@ PrinterContext<ET>::FindExceptionTable(unsigned IndexSectionIndex,
     error(SymTabOrErr.getError());
     const Elf_Shdr *SymTab = *SymTabOrErr;
 
-    for (const Elf_Rel &R : ELF->rels(&Sec)) {
+    for (const Elf_Rel &R : unwrapOrError(ELF->rels(&Sec))) {
       if (R.r_offset != static_cast<unsigned>(IndexTableOffset))
         continue;
 
index bde7a6ebbea029eea89f72a1054464002e211ace..0fdf3919470b032c0f4bbe1ee0d5d5ba218e5f3a 100644 (file)
@@ -2067,7 +2067,7 @@ template <class ELFT> void MipsGOTParser<ELFT>::parsePLT() {
 
     switch (PLTRelShdr->sh_type) {
     case ELF::SHT_REL:
-      for (const Elf_Rel &Rel : Obj->rels(PLTRelShdr)) {
+      for (const Elf_Rel &Rel : unwrapOrError(Obj->rels(PLTRelShdr))) {
         const Elf_Sym *Sym =
             unwrapOrError(Obj->getRelocationSymbol(&Rel, SymTable));
         printPLTEntry(PLTShdr->sh_addr, PLTBegin, It, StrTable, Sym);
@@ -2076,7 +2076,7 @@ template <class ELFT> void MipsGOTParser<ELFT>::parsePLT() {
       }
       break;
     case ELF::SHT_RELA:
-      for (const Elf_Rela &Rel : Obj->relas(PLTRelShdr)) {
+      for (const Elf_Rela &Rel : unwrapOrError(Obj->relas(PLTRelShdr))) {
         const Elf_Sym *Sym =
             unwrapOrError(Obj->getRelocationSymbol(&Rel, SymTable));
         printPLTEntry(PLTShdr->sh_addr, PLTBegin, It, StrTable, Sym);
@@ -2531,7 +2531,7 @@ template <class ELFT> void GNUStyle<ELFT>::printRelocations(const ELFO *Obj) {
     printRelocHeader(OS,  ELFT::Is64Bits, (Sec.sh_type == ELF::SHT_RELA));
     const Elf_Shdr *SymTab = unwrapOrError(Obj->getSection(Sec.sh_link));
     if (Sec.sh_type == ELF::SHT_REL) {
-      for (const auto &R : Obj->rels(&Sec)) {
+      for (const auto &R : unwrapOrError(Obj->rels(&Sec))) {
         Elf_Rela Rela;
         Rela.r_offset = R.r_offset;
         Rela.r_info = R.r_info;
@@ -2539,7 +2539,7 @@ template <class ELFT> void GNUStyle<ELFT>::printRelocations(const ELFO *Obj) {
         printRelocation(Obj, SymTab, Rela, false);
       }
     } else {
-      for (const auto &R : Obj->relas(&Sec))
+      for (const auto &R : unwrapOrError(Obj->relas(&Sec)))
         printRelocation(Obj, SymTab, R, true);
     }
   }
@@ -3388,7 +3388,7 @@ void LLVMStyle<ELFT>::printRelocations(const Elf_Shdr *Sec, const ELFO *Obj) {
 
   switch (Sec->sh_type) {
   case ELF::SHT_REL:
-    for (const Elf_Rel &R : Obj->rels(Sec)) {
+    for (const Elf_Rel &R : unwrapOrError(Obj->rels(Sec))) {
       Elf_Rela Rela;
       Rela.r_offset = R.r_offset;
       Rela.r_info = R.r_info;
@@ -3397,7 +3397,7 @@ void LLVMStyle<ELFT>::printRelocations(const Elf_Shdr *Sec, const ELFO *Obj) {
     }
     break;
   case ELF::SHT_RELA:
-    for (const Elf_Rela &R : Obj->relas(Sec))
+    for (const Elf_Rela &R : unwrapOrError(Obj->relas(Sec)))
       printRelocation(Obj, R, SymTab);
     break;
   }
index dbb8c7d436b1c25d9a99ba6491d6c8c51c01dc8c..ffcb2d0ece4b89b5e55154bdba861bfa7b78fe74 100644 (file)
@@ -295,7 +295,10 @@ ELFDumper<ELFT>::dumpRelSection(const Elf_Shdr *Shdr) {
     return EC;
   const Elf_Shdr *SymTab = *SymTabOrErr;
 
-  for (const Elf_Rel &Rel : Obj.rels(Shdr)) {
+  auto Rels = Obj.rels(Shdr);
+  if (std::error_code EC = Rels.getError())
+    return EC;
+  for (const Elf_Rel &Rel : *Rels) {
     ELFYAML::Relocation R;
     if (std::error_code EC = dumpRelocation(&Rel, SymTab, R))
       return EC;
@@ -319,7 +322,10 @@ ELFDumper<ELFT>::dumpRelaSection(const Elf_Shdr *Shdr) {
     return EC;
   const Elf_Shdr *SymTab = *SymTabOrErr;
 
-  for (const Elf_Rela &Rel : Obj.relas(Shdr)) {
+  auto Rels = Obj.relas(Shdr);
+  if (std::error_code EC = Rels.getError())
+    return EC;
+  for (const Elf_Rela &Rel : *Rels) {
     ELFYAML::Relocation R;
     if (std::error_code EC = dumpRelocation(&Rel, SymTab, R))
       return EC;