diff options
4 files changed, 18 insertions, 58 deletions
diff --git a/llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldCOFFI386.h b/llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldCOFFI386.h index 4ce83798950..468ce111486 100644 --- a/llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldCOFFI386.h +++ b/llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldCOFFI386.h @@ -46,23 +46,13 @@ public: report_fatal_error("Unknown symbol in relocation"); Expected<StringRef> TargetNameOrErr = Symbol->getName(); - if (!TargetNameOrErr) { - std::string Buf; - raw_string_ostream OS(Buf); - logAllUnhandledErrors(TargetNameOrErr.takeError(), OS, ""); - OS.flush(); - report_fatal_error(Buf); - } + if (!TargetNameOrErr) + return TargetNameOrErr.takeError(); StringRef TargetName = *TargetNameOrErr; auto SectionOrErr = Symbol->getSection(); - if (!SectionOrErr) { - std::string Buf; - raw_string_ostream OS(Buf); - logAllUnhandledErrors(SectionOrErr.takeError(), OS, ""); - OS.flush(); - report_fatal_error(Buf); - } + if (!SectionOrErr) + return SectionOrErr.takeError(); auto Section = *SectionOrErr; uint64_t RelType = RelI->getType(); diff --git a/llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldCOFFX86_64.h b/llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldCOFFX86_64.h index f3a32eefa3e..df8681da24d 100644 --- a/llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldCOFFX86_64.h +++ b/llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldCOFFX86_64.h @@ -118,13 +118,8 @@ public: if (Symbol == Obj.symbol_end()) report_fatal_error("Unknown symbol in relocation"); auto SectionOrError = Symbol->getSection(); - if (!SectionOrError) { - std::string Buf; - raw_string_ostream OS(Buf); - logAllUnhandledErrors(SectionOrError.takeError(), OS, ""); - OS.flush(); - report_fatal_error(Buf); - } + if (!SectionOrError) + return SectionOrError.takeError(); section_iterator SecI = *SectionOrError; // If there is no section, this must be an external reference. const bool IsExtern = SecI == Obj.section_end(); @@ -161,13 +156,8 @@ public: } Expected<StringRef> TargetNameOrErr = Symbol->getName(); - if (!TargetNameOrErr) { - std::string Buf; - raw_string_ostream OS(Buf); - logAllUnhandledErrors(TargetNameOrErr.takeError(), OS, ""); - OS.flush(); - report_fatal_error(Buf); - } + if (!TargetNameOrErr) + return TargetNameOrErr.takeError(); StringRef TargetName = *TargetNameOrErr; DEBUG(dbgs() << "\t\tIn Section " << SectionID << " Offset " << Offset diff --git a/llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOAArch64.h b/llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOAArch64.h index 7d1a62f08e1..63598f19707 100644 --- a/llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOAArch64.h +++ b/llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOAArch64.h @@ -417,7 +417,7 @@ private: addRelocationForSection(TargetRE, RE.SectionID); } - relocation_iterator + Expected<relocation_iterator> processSubtractRelocation(unsigned SectionID, relocation_iterator RelI, const ObjectFile &BaseObjT, ObjSectionToIDMap &ObjSectionToID) { @@ -432,13 +432,8 @@ private: unsigned NumBytes = 1 << Size; Expected<StringRef> SubtrahendNameOrErr = RelI->getSymbol()->getName(); - if (!SubtrahendNameOrErr) { - std::string Buf; - raw_string_ostream OS(Buf); - logAllUnhandledErrors(SubtrahendNameOrErr.takeError(), OS, ""); - OS.flush(); - report_fatal_error(Buf); - } + if (!SubtrahendNameOrErr) + return SubtrahendNameOrErr.takeError(); auto SubtrahendI = GlobalSymbolTable.find(*SubtrahendNameOrErr); unsigned SectionBID = SubtrahendI->second.getSectionID(); uint64_t SectionBOffset = SubtrahendI->second.getOffset(); @@ -447,13 +442,8 @@ private: ++RelI; Expected<StringRef> MinuendNameOrErr = RelI->getSymbol()->getName(); - if (!MinuendNameOrErr) { - std::string Buf; - raw_string_ostream OS(Buf); - logAllUnhandledErrors(MinuendNameOrErr.takeError(), OS, ""); - OS.flush(); - report_fatal_error(Buf); - } + if (!MinuendNameOrErr) + return MinuendNameOrErr.takeError(); auto MinuendI = GlobalSymbolTable.find(*MinuendNameOrErr); unsigned SectionAID = MinuendI->second.getSectionID(); uint64_t SectionAOffset = MinuendI->second.getOffset(); diff --git a/llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOX86_64.h b/llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOX86_64.h index 2aad3c832e2..0f1407dd8de 100644 --- a/llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOX86_64.h +++ b/llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOX86_64.h @@ -155,7 +155,7 @@ private: resolveRelocation(TargetRE, (uint64_t)Addr); } - relocation_iterator + Expected<relocation_iterator> processSubtractRelocation(unsigned SectionID, relocation_iterator RelI, const ObjectFile &BaseObjT, ObjSectionToIDMap &ObjSectionToID) { @@ -170,13 +170,8 @@ private: unsigned NumBytes = 1 << Size; Expected<StringRef> SubtrahendNameOrErr = RelI->getSymbol()->getName(); - if (!SubtrahendNameOrErr) { - std::string Buf; - raw_string_ostream OS(Buf); - logAllUnhandledErrors(SubtrahendNameOrErr.takeError(), OS, ""); - OS.flush(); - report_fatal_error(Buf); - } + if (!SubtrahendNameOrErr) + return SubtrahendNameOrErr.takeError(); auto SubtrahendI = GlobalSymbolTable.find(*SubtrahendNameOrErr); unsigned SectionBID = SubtrahendI->second.getSectionID(); uint64_t SectionBOffset = SubtrahendI->second.getOffset(); @@ -185,13 +180,8 @@ private: ++RelI; Expected<StringRef> MinuendNameOrErr = RelI->getSymbol()->getName(); - if (!MinuendNameOrErr) { - std::string Buf; - raw_string_ostream OS(Buf); - logAllUnhandledErrors(MinuendNameOrErr.takeError(), OS, ""); - OS.flush(); - report_fatal_error(Buf); - } + if (!MinuendNameOrErr) + return MinuendNameOrErr.takeError(); auto MinuendI = GlobalSymbolTable.find(*MinuendNameOrErr); unsigned SectionAID = MinuendI->second.getSectionID(); uint64_t SectionAOffset = MinuendI->second.getOffset(); |