From: Fangrui Song Date: Fri, 10 May 2019 09:59:04 +0000 (+0000) Subject: [Object] Change SymbolicFile::printSymbolName to use Error X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d726f663b47cb525e40265697df303d687d8cf90;p=llvm [Object] Change SymbolicFile::printSymbolName to use Error git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@360414 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Object/COFFImportFile.h b/include/llvm/Object/COFFImportFile.h index d051d7f09d0..e07060cea2b 100644 --- a/include/llvm/Object/COFFImportFile.h +++ b/include/llvm/Object/COFFImportFile.h @@ -36,12 +36,11 @@ public: void moveSymbolNext(DataRefImpl &Symb) const override { ++Symb.p; } - std::error_code printSymbolName(raw_ostream &OS, - DataRefImpl Symb) const override { + Error printSymbolName(raw_ostream &OS, DataRefImpl Symb) const override { if (Symb.p == 0) OS << "__imp_"; OS << StringRef(Data.getBufferStart() + sizeof(coff_import_header)); - return std::error_code(); + return Error::success(); } uint32_t getSymbolFlags(DataRefImpl Symb) const override { diff --git a/include/llvm/Object/IRObjectFile.h b/include/llvm/Object/IRObjectFile.h index 39454b05f0d..08b92f1bae5 100644 --- a/include/llvm/Object/IRObjectFile.h +++ b/include/llvm/Object/IRObjectFile.h @@ -37,8 +37,7 @@ class IRObjectFile : public SymbolicFile { public: ~IRObjectFile() override; void moveSymbolNext(DataRefImpl &Symb) const override; - std::error_code printSymbolName(raw_ostream &OS, - DataRefImpl Symb) const override; + Error printSymbolName(raw_ostream &OS, DataRefImpl Symb) const override; uint32_t getSymbolFlags(DataRefImpl Symb) const override; basic_symbol_iterator symbol_begin() const override; basic_symbol_iterator symbol_end() const override; diff --git a/include/llvm/Object/ObjectFile.h b/include/llvm/Object/ObjectFile.h index 3d293c6969e..a3cd907684a 100644 --- a/include/llvm/Object/ObjectFile.h +++ b/include/llvm/Object/ObjectFile.h @@ -244,7 +244,7 @@ protected: friend class SymbolRef; virtual Expected getSymbolName(DataRefImpl Symb) const = 0; - std::error_code printSymbolName(raw_ostream &OS, + Error printSymbolName(raw_ostream &OS, DataRefImpl Symb) const override; virtual Expected getSymbolAddress(DataRefImpl Symb) const = 0; virtual uint64_t getSymbolValueImpl(DataRefImpl Symb) const = 0; diff --git a/include/llvm/Object/SymbolicFile.h b/include/llvm/Object/SymbolicFile.h index 6d95d7a895f..1398fa134c8 100644 --- a/include/llvm/Object/SymbolicFile.h +++ b/include/llvm/Object/SymbolicFile.h @@ -126,7 +126,7 @@ public: void moveNext(); - std::error_code printName(raw_ostream &OS) const; + Error printName(raw_ostream &OS) const; /// Get symbol flags (bitwise OR of SymbolRef::Flags) uint32_t getFlags() const; @@ -145,8 +145,7 @@ public: // virtual interface. virtual void moveSymbolNext(DataRefImpl &Symb) const = 0; - virtual std::error_code printSymbolName(raw_ostream &OS, - DataRefImpl Symb) const = 0; + virtual Error printSymbolName(raw_ostream &OS, DataRefImpl Symb) const = 0; virtual uint32_t getSymbolFlags(DataRefImpl Symb) const = 0; @@ -193,7 +192,7 @@ inline void BasicSymbolRef::moveNext() { return OwningObject->moveSymbolNext(SymbolPimpl); } -inline std::error_code BasicSymbolRef::printName(raw_ostream &OS) const { +inline Error BasicSymbolRef::printName(raw_ostream &OS) const { return OwningObject->printSymbolName(OS, SymbolPimpl); } diff --git a/lib/Object/ArchiveWriter.cpp b/lib/Object/ArchiveWriter.cpp index 1092b9d5c2a..849d2835772 100644 --- a/lib/Object/ArchiveWriter.cpp +++ b/lib/Object/ArchiveWriter.cpp @@ -376,8 +376,8 @@ getSymbols(MemoryBufferRef Buf, raw_ostream &SymNames, bool &HasObject) { if (!isArchiveSymbol(S)) continue; Ret.push_back(SymNames.tell()); - if (auto EC = S.printName(SymNames)) - return errorCodeToError(EC); + if (Error E = S.printName(SymNames)) + return std::move(E); SymNames << '\0'; } return Ret; diff --git a/lib/Object/IRObjectFile.cpp b/lib/Object/IRObjectFile.cpp index d157908a856..debe7899bfe 100644 --- a/lib/Object/IRObjectFile.cpp +++ b/lib/Object/IRObjectFile.cpp @@ -42,10 +42,9 @@ void IRObjectFile::moveSymbolNext(DataRefImpl &Symb) const { Symb.p += sizeof(ModuleSymbolTable::Symbol); } -std::error_code IRObjectFile::printSymbolName(raw_ostream &OS, - DataRefImpl Symb) const { +Error IRObjectFile::printSymbolName(raw_ostream &OS, DataRefImpl Symb) const { SymTab.printSymbolName(OS, getSym(Symb)); - return std::error_code(); + return Error::success(); } uint32_t IRObjectFile::getSymbolFlags(DataRefImpl Symb) const { diff --git a/lib/Object/ObjectFile.cpp b/lib/Object/ObjectFile.cpp index cc0b282665d..3744721773f 100644 --- a/lib/Object/ObjectFile.cpp +++ b/lib/Object/ObjectFile.cpp @@ -56,13 +56,12 @@ uint64_t ObjectFile::getSymbolValue(DataRefImpl Ref) const { return getSymbolValueImpl(Ref); } -std::error_code ObjectFile::printSymbolName(raw_ostream &OS, - DataRefImpl Symb) const { +Error ObjectFile::printSymbolName(raw_ostream &OS, DataRefImpl Symb) const { Expected Name = getSymbolName(Symb); if (!Name) - return errorToErrorCode(Name.takeError()); + return Name.takeError(); OS << *Name; - return std::error_code(); + return Error::success(); } uint32_t ObjectFile::getSymbolAlignment(DataRefImpl DRI) const { return 0; } diff --git a/tools/llvm-nm/llvm-nm.cpp b/tools/llvm-nm/llvm-nm.cpp index d7ac98c5b2c..6bc043feffc 100644 --- a/tools/llvm-nm/llvm-nm.cpp +++ b/tools/llvm-nm/llvm-nm.cpp @@ -1219,11 +1219,12 @@ dumpSymbolNamesFromObject(SymbolicFile &Obj, bool printName, } S.TypeName = getNMTypeName(Obj, Sym); S.TypeChar = getNMSectionTagAndName(Obj, Sym, S.SectionName); - std::error_code EC = Sym.printName(OS); - if (EC && MachO) - OS << "bad string index"; - else - error(EC); + if (Error E = Sym.printName(OS)) { + if (MachO) + OS << "bad string index"; + else + error(std::move(E), Obj.getFileName()); + } OS << '\0'; S.Sym = Sym; SymbolList.push_back(S); diff --git a/tools/llvm-objdump/COFFDump.cpp b/tools/llvm-objdump/COFFDump.cpp index 5489bcf9801..a81068c2ca4 100644 --- a/tools/llvm-objdump/COFFDump.cpp +++ b/tools/llvm-objdump/COFFDump.cpp @@ -634,7 +634,7 @@ void printCOFFSymbolTable(const object::COFFImportFile *i) { std::string Name; raw_string_ostream NS(Name); - Sym.printName(NS); + cantFail(Sym.printName(NS)); NS.flush(); outs() << "[" << format("%2d", Index) << "]" diff --git a/tools/llvm-readobj/COFFImportDumper.cpp b/tools/llvm-readobj/COFFImportDumper.cpp index 1d9e7c8ff0e..c9d5e82263d 100644 --- a/tools/llvm-readobj/COFFImportDumper.cpp +++ b/tools/llvm-readobj/COFFImportDumper.cpp @@ -50,7 +50,7 @@ void dumpCOFFImportFile(const COFFImportFile *File, ScopedPrinter &Writer) { for (const object::BasicSymbolRef &Sym : File->symbols()) { raw_ostream &OS = Writer.startLine(); OS << "Symbol: "; - Sym.printName(OS); + cantFail(Sym.printName(OS)); OS << "\n"; } }