diff options
author | Nico Weber <thakis@chromium.org> | 2020-06-05 21:20:11 -0400 |
---|---|---|
committer | Nico Weber <thakis@chromium.org> | 2020-06-05 21:20:11 -0400 |
commit | 101fbc01382edd89ea7b671104c68b30b2446cc0 (patch) | |
tree | 7e4e8488e1dd39d0d78ba7b47019794253ee6c19 /llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp | |
parent | d81b76cfe69b8a76481608d613138f77a0c9ac1d (diff) | |
download | llvm-101fbc01382edd89ea7b671104c68b30b2446cc0.zip llvm-101fbc01382edd89ea7b671104c68b30b2446cc0.tar.gz llvm-101fbc01382edd89ea7b671104c68b30b2446cc0.tar.bz2 |
Revert "Migrate the rest of COFFObjectFile to Error"
This reverts commit b5289656b865d2a73cf90819e20a96fb8414ab0b.
__attribute__((optnone)) doesn't build with msvc, see
http://lab.llvm.org:8011/builders/clang-x64-windows-msvc/builds/16326
Diffstat (limited to 'llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp')
-rw-r--r-- | llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp | 40 |
1 files changed, 19 insertions, 21 deletions
diff --git a/llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp b/llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp index 8452419..9835fc0 100644 --- a/llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp +++ b/llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp @@ -35,7 +35,7 @@ using namespace llvm; using namespace object; using namespace symbolize; -Expected<std::unique_ptr<SymbolizableObjectFile>> +ErrorOr<std::unique_ptr<SymbolizableObjectFile>> SymbolizableObjectFile::create(const object::ObjectFile *Obj, std::unique_ptr<DIContext> DICtx, bool UntagAddresses) { @@ -50,12 +50,12 @@ SymbolizableObjectFile::create(const object::ObjectFile *Obj, for (section_iterator Section : Obj->sections()) { Expected<StringRef> NameOrErr = Section->getName(); if (!NameOrErr) - return NameOrErr.takeError(); + return errorToErrorCode(NameOrErr.takeError()); if (*NameOrErr == ".opd") { Expected<StringRef> E = Section->getContents(); if (!E) - return E.takeError(); + return errorToErrorCode(E.takeError()); OpdExtractor.reset(new DataExtractor(*E, Obj->isLittleEndian(), Obj->getBytesInAddress())); OpdAddress = Section->getAddress(); @@ -66,16 +66,14 @@ SymbolizableObjectFile::create(const object::ObjectFile *Obj, std::vector<std::pair<SymbolRef, uint64_t>> Symbols = computeSymbolSizes(*Obj); for (auto &P : Symbols) - if (Error E = - res->addSymbol(P.first, P.second, OpdExtractor.get(), OpdAddress)) - return std::move(E); + res->addSymbol(P.first, P.second, OpdExtractor.get(), OpdAddress); // If this is a COFF object and we didn't find any symbols, try the export // table. if (Symbols.empty()) { if (auto *CoffObj = dyn_cast<COFFObjectFile>(Obj)) - if (Error E = res->addCoffExportSymbols(CoffObj)) - return std::move(E); + if (auto EC = res->addCoffExportSymbols(CoffObj)) + return EC; } std::vector<std::pair<SymbolDesc, StringRef>> &Fs = res->Functions, @@ -119,7 +117,7 @@ struct OffsetNamePair { } // end anonymous namespace -Error SymbolizableObjectFile::addCoffExportSymbols( +std::error_code SymbolizableObjectFile::addCoffExportSymbols( const COFFObjectFile *CoffObj) { // Get all export names and offsets. std::vector<OffsetNamePair> ExportSyms; @@ -133,7 +131,7 @@ Error SymbolizableObjectFile::addCoffExportSymbols( ExportSyms.push_back(OffsetNamePair{Offset, Name}); } if (ExportSyms.empty()) - return Error::success(); + return std::error_code(); // Sort by ascending offset. array_pod_sort(ExportSyms.begin(), ExportSyms.end()); @@ -150,27 +148,27 @@ Error SymbolizableObjectFile::addCoffExportSymbols( SymbolDesc SD = {SymbolStart, SymbolSize}; Functions.emplace_back(SD, Export.Name); } - return Error::success(); + return std::error_code(); } -Error SymbolizableObjectFile::addSymbol(const SymbolRef &Symbol, - uint64_t SymbolSize, - DataExtractor *OpdExtractor, - uint64_t OpdAddress) { +std::error_code SymbolizableObjectFile::addSymbol(const SymbolRef &Symbol, + uint64_t SymbolSize, + DataExtractor *OpdExtractor, + uint64_t OpdAddress) { // Avoid adding symbols from an unknown/undefined section. const ObjectFile *Obj = Symbol.getObject(); Expected<section_iterator> Sec = Symbol.getSection(); if (!Sec || (Obj && Obj->section_end() == *Sec)) - return Error::success(); + return std::error_code(); Expected<SymbolRef::Type> SymbolTypeOrErr = Symbol.getType(); if (!SymbolTypeOrErr) - return SymbolTypeOrErr.takeError(); + return errorToErrorCode(SymbolTypeOrErr.takeError()); SymbolRef::Type SymbolType = *SymbolTypeOrErr; if (SymbolType != SymbolRef::ST_Function && SymbolType != SymbolRef::ST_Data) - return Error::success(); + return std::error_code(); Expected<uint64_t> SymbolAddressOrErr = Symbol.getAddress(); if (!SymbolAddressOrErr) - return SymbolAddressOrErr.takeError(); + return errorToErrorCode(SymbolAddressOrErr.takeError()); uint64_t SymbolAddress = *SymbolAddressOrErr; if (UntagAddresses) { // For kernel addresses, bits 56-63 need to be set, so we sign extend bit 55 @@ -190,7 +188,7 @@ Error SymbolizableObjectFile::addSymbol(const SymbolRef &Symbol, } Expected<StringRef> SymbolNameOrErr = Symbol.getName(); if (!SymbolNameOrErr) - return SymbolNameOrErr.takeError(); + return errorToErrorCode(SymbolNameOrErr.takeError()); StringRef SymbolName = *SymbolNameOrErr; // Mach-O symbol table names have leading underscore, skip it. if (Module->isMachO() && !SymbolName.empty() && SymbolName[0] == '_') @@ -200,7 +198,7 @@ Error SymbolizableObjectFile::addSymbol(const SymbolRef &Symbol, auto &M = SymbolType == SymbolRef::ST_Function ? Functions : Objects; SymbolDesc SD = { SymbolAddress, SymbolSize }; M.emplace_back(SD, SymbolName); - return Error::success(); + return std::error_code(); } // Return true if this is a 32-bit x86 PE COFF module. |