[llvm] r360878 - Revert r360876 "[Object] Change object::SectionRef::getContents() to return Expected<StringRef>"

Hans Wennborg via llvm-commits llvm-commits at lists.llvm.org
Thu May 16 05:08:35 PDT 2019


Author: hans
Date: Thu May 16 05:08:34 2019
New Revision: 360878

URL: http://llvm.org/viewvc/llvm-project?rev=360878&view=rev
Log:
Revert r360876 "[Object] Change object::SectionRef::getContents() to return Expected<StringRef>"

It broke the Clang build, see llvm-commits thread.

> Expected<ArrayRef<uint8_t>> may be better but use Expected<StringRef> for now.
>
> Follow-up of D61781.

Modified:
    llvm/trunk/include/llvm/Object/ObjectFile.h
    llvm/trunk/lib/DebugInfo/DWARF/DWARFContext.cpp
    llvm/trunk/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp
    llvm/trunk/lib/DebugInfo/Symbolize/Symbolize.cpp
    llvm/trunk/lib/ExecutionEngine/JITLink/MachOAtomGraphBuilder.cpp
    llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp
    llvm/trunk/lib/Object/ELFObjectFile.cpp
    llvm/trunk/lib/Object/IRObjectFile.cpp
    llvm/trunk/lib/Object/Object.cpp
    llvm/trunk/lib/ProfileData/Coverage/CoverageMappingReader.cpp
    llvm/trunk/lib/XRay/InstrumentationMap.cpp
    llvm/trunk/tools/dsymutil/DwarfLinker.cpp
    llvm/trunk/tools/dsymutil/DwarfStreamer.cpp
    llvm/trunk/tools/llvm-cfi-verify/lib/FileAnalysis.cpp
    llvm/trunk/tools/llvm-cov/TestingSupport.cpp
    llvm/trunk/tools/llvm-cxxdump/llvm-cxxdump.cpp
    llvm/trunk/tools/llvm-dwp/llvm-dwp.cpp
    llvm/trunk/tools/llvm-objdump/MachODump.cpp
    llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp
    llvm/trunk/tools/llvm-pdbutil/DumpOutputStyle.cpp
    llvm/trunk/tools/llvm-pdbutil/InputFile.cpp
    llvm/trunk/tools/llvm-readobj/COFFDumper.cpp
    llvm/trunk/tools/llvm-readobj/MachODumper.cpp
    llvm/trunk/tools/llvm-readobj/ObjDumper.cpp
    llvm/trunk/tools/sancov/sancov.cpp

Modified: llvm/trunk/include/llvm/Object/ObjectFile.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/ObjectFile.h?rev=360878&r1=360877&r2=360878&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Object/ObjectFile.h (original)
+++ llvm/trunk/include/llvm/Object/ObjectFile.h Thu May 16 05:08:34 2019
@@ -98,7 +98,7 @@ public:
   uint64_t getAddress() const;
   uint64_t getIndex() const;
   uint64_t getSize() const;
-  Expected<StringRef> getContents() const;
+  std::error_code getContents(StringRef &Result) const;
 
   /// Get the alignment of this section as the actual value (not log 2).
   uint64_t getAlignment() const;
@@ -454,12 +454,13 @@ inline uint64_t SectionRef::getSize() co
   return OwningObject->getSectionSize(SectionPimpl);
 }
 
-inline Expected<StringRef> SectionRef::getContents() const {
+inline std::error_code SectionRef::getContents(StringRef &Result) const {
   Expected<ArrayRef<uint8_t>> Res =
       OwningObject->getSectionContents(SectionPimpl);
   if (!Res)
-    return Res.takeError();
-  return StringRef(reinterpret_cast<const char *>(Res->data()), Res->size());
+    return errorToErrorCode(Res.takeError());
+  Result = StringRef(reinterpret_cast<const char *>(Res->data()), Res->size());
+  return std::error_code();
 }
 
 inline uint64_t SectionRef::getAlignment() const {

Modified: llvm/trunk/lib/DebugInfo/DWARF/DWARFContext.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARF/DWARFContext.cpp?rev=360878&r1=360877&r2=360878&view=diff
==============================================================================
--- llvm/trunk/lib/DebugInfo/DWARF/DWARFContext.cpp (original)
+++ llvm/trunk/lib/DebugInfo/DWARF/DWARFContext.cpp Thu May 16 05:08:34 2019
@@ -1410,14 +1410,8 @@ public:
       // Try to obtain an already relocated version of this section.
       // Else use the unrelocated section from the object file. We'll have to
       // apply relocations ourselves later.
-      if (!L || !L->getLoadedSectionContents(*RelocatedSection, Data)) {
-        Expected<StringRef> E = Section.getContents();
-        if (E)
-          Data = *E;
-        else
-          // maybeDecompress below will error.
-          consumeError(E.takeError());
-      }
+      if (!L || !L->getLoadedSectionContents(*RelocatedSection, Data))
+        Section.getContents(Data);
 
       if (auto Err = maybeDecompress(Section, Name, Data)) {
         ErrorPolicy EP = HandleError(createError(

Modified: llvm/trunk/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp?rev=360878&r1=360877&r2=360878&view=diff
==============================================================================
--- llvm/trunk/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp (original)
+++ llvm/trunk/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp Thu May 16 05:08:34 2019
@@ -53,13 +53,13 @@ SymbolizableObjectFile::create(object::O
   if (Obj->getArch() == Triple::ppc64) {
     for (section_iterator Section : Obj->sections()) {
       StringRef Name;
+      StringRef Data;
       if (auto EC = Section->getName(Name))
         return EC;
       if (Name == ".opd") {
-        Expected<StringRef> E = Section->getContents();
-        if (!E)
-          return errorToErrorCode(E.takeError());
-        OpdExtractor.reset(new DataExtractor(*E, Obj->isLittleEndian(),
+        if (auto EC = Section->getContents(Data))
+          return EC;
+        OpdExtractor.reset(new DataExtractor(Data, Obj->isLittleEndian(),
                                              Obj->getBytesInAddress()));
         OpdAddress = Section->getAddress();
         break;

Modified: llvm/trunk/lib/DebugInfo/Symbolize/Symbolize.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/Symbolize/Symbolize.cpp?rev=360878&r1=360877&r2=360878&view=diff
==============================================================================
--- llvm/trunk/lib/DebugInfo/Symbolize/Symbolize.cpp (original)
+++ llvm/trunk/lib/DebugInfo/Symbolize/Symbolize.cpp Thu May 16 05:08:34 2019
@@ -221,12 +221,9 @@ bool getGNUDebuglinkContents(const Objec
     Section.getName(Name);
     Name = Name.substr(Name.find_first_not_of("._"));
     if (Name == "gnu_debuglink") {
-      Expected<StringRef> ContentsOrErr = Section.getContents();
-      if (!ContentsOrErr) {
-        consumeError(ContentsOrErr.takeError());
-        return false;
-      }
-      DataExtractor DE(*ContentsOrErr, Obj->isLittleEndian(), 0);
+      StringRef Data;
+      Section.getContents(Data);
+      DataExtractor DE(Data, Obj->isLittleEndian(), 0);
       uint32_t Offset = 0;
       if (const char *DebugNameStr = DE.getCStr(&Offset)) {
         // 4-byte align the offset.

Modified: llvm/trunk/lib/ExecutionEngine/JITLink/MachOAtomGraphBuilder.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/JITLink/MachOAtomGraphBuilder.cpp?rev=360878&r1=360877&r2=360878&view=diff
==============================================================================
--- llvm/trunk/lib/ExecutionEngine/JITLink/MachOAtomGraphBuilder.cpp (original)
+++ llvm/trunk/lib/ExecutionEngine/JITLink/MachOAtomGraphBuilder.cpp Thu May 16 05:08:34 2019
@@ -136,14 +136,14 @@ Error MachOAtomGraphBuilder::parseSectio
 
     if (!SecRef.isVirtual()) {
       // If this section has content then record it.
-      Expected<StringRef> Content = SecRef.getContents();
-      if (!Content)
-        return Content.takeError();
-      if (Content->size() != SecRef.getSize())
+      StringRef Content;
+      if (auto EC = SecRef.getContents(Content))
+        return errorCodeToError(EC);
+      if (Content.size() != SecRef.getSize())
         return make_error<JITLinkError>("Section content size does not match "
                                         "declared size for " +
                                         Name);
-      MachOSec.setContent(*Content);
+      MachOSec.setContent(Content);
     } else {
       // If this is a zero-fill section then just record the size.
       MachOSec.setZeroFill(SecRef.getSize());

Modified: llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp?rev=360878&r1=360877&r2=360878&view=diff
==============================================================================
--- llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp (original)
+++ llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp Thu May 16 05:08:34 2019
@@ -792,10 +792,8 @@ RuntimeDyldImpl::emitSection(const Objec
   if (!IsVirtual && !IsZeroInit) {
     // In either case, set the location of the unrelocated section in memory,
     // since we still process relocations for it even if we're not applying them.
-    if (Expected<StringRef> E = Section.getContents())
-      data = *E;
-    else
-      return E.takeError();
+    if (auto EC = Section.getContents(data))
+      return errorCodeToError(EC);
     pData = data.data();
   }
 

Modified: llvm/trunk/lib/Object/ELFObjectFile.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/ELFObjectFile.cpp?rev=360878&r1=360877&r2=360878&view=diff
==============================================================================
--- llvm/trunk/lib/Object/ELFObjectFile.cpp (original)
+++ llvm/trunk/lib/Object/ELFObjectFile.cpp Thu May 16 05:08:34 2019
@@ -377,13 +377,12 @@ ELFObjectFileBase::getPltAddresses() con
   }
   if (!Plt || !RelaPlt || !GotPlt)
     return {};
-  Expected<StringRef> PltContents = Plt->getContents();
-  if (!PltContents) {
-    consumeError(PltContents.takeError());
+  StringRef PltContents;
+  if (Plt->getContents(PltContents))
     return {};
-  }
-  auto PltEntries = MIA->findPltEntries(Plt->getAddress(),
-                                        arrayRefFromStringRef(*PltContents),
+  ArrayRef<uint8_t> PltBytes((const uint8_t *)PltContents.data(),
+                             Plt->getSize());
+  auto PltEntries = MIA->findPltEntries(Plt->getAddress(), PltBytes,
                                         GotPlt->getAddress(), Triple);
   // Build a map from GOT entry virtual address to PLT entry virtual address.
   DenseMap<uint64_t, uint64_t> GotToPlt;

Modified: llvm/trunk/lib/Object/IRObjectFile.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/IRObjectFile.cpp?rev=360878&r1=360877&r2=360878&view=diff
==============================================================================
--- llvm/trunk/lib/Object/IRObjectFile.cpp (original)
+++ llvm/trunk/lib/Object/IRObjectFile.cpp Thu May 16 05:08:34 2019
@@ -74,12 +74,12 @@ Expected<MemoryBufferRef>
 IRObjectFile::findBitcodeInObject(const ObjectFile &Obj) {
   for (const SectionRef &Sec : Obj.sections()) {
     if (Sec.isBitcode()) {
-      Expected<StringRef> Contents = Sec.getContents();
-      if (!Contents)
-        return Contents.takeError();
-      if (Contents->size() <= 1)
+      StringRef SecContents;
+      if (std::error_code EC = Sec.getContents(SecContents))
+        return errorCodeToError(EC);
+      if (SecContents.size() <= 1)
         return errorCodeToError(object_error::bitcode_section_not_found);
-      return MemoryBufferRef(*Contents, Obj.getFileName());
+      return MemoryBufferRef(SecContents, Obj.getFileName());
     }
   }
 

Modified: llvm/trunk/lib/Object/Object.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/Object.cpp?rev=360878&r1=360877&r2=360878&view=diff
==============================================================================
--- llvm/trunk/lib/Object/Object.cpp (original)
+++ llvm/trunk/lib/Object/Object.cpp Thu May 16 05:08:34 2019
@@ -247,10 +247,10 @@ uint64_t LLVMGetSectionSize(LLVMSectionI
 }
 
 const char *LLVMGetSectionContents(LLVMSectionIteratorRef SI) {
-  if (Expected<StringRef> E = (*unwrap(SI))->getContents())
-    return E->data();
-  else
-    report_fatal_error(E.takeError());
+  StringRef ret;
+  if (std::error_code ec = (*unwrap(SI))->getContents(ret))
+    report_fatal_error(ec.message());
+  return ret.data();
 }
 
 uint64_t LLVMGetSectionAddress(LLVMSectionIteratorRef SI) {

Modified: llvm/trunk/lib/ProfileData/Coverage/CoverageMappingReader.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ProfileData/Coverage/CoverageMappingReader.cpp?rev=360878&r1=360877&r2=360878&view=diff
==============================================================================
--- llvm/trunk/lib/ProfileData/Coverage/CoverageMappingReader.cpp (original)
+++ llvm/trunk/lib/ProfileData/Coverage/CoverageMappingReader.cpp Thu May 16 05:08:34 2019
@@ -348,10 +348,8 @@ Expected<bool> RawCoverageMappingDummyCh
 }
 
 Error InstrProfSymtab::create(SectionRef &Section) {
-  Expected<StringRef> DataOrErr = Section.getContents();
-  if (!DataOrErr)
-    return DataOrErr.takeError();
-  Data = *DataOrErr;
+  if (auto EC = Section.getContents(Data))
+    return errorCodeToError(EC);
   Address = Section.getAddress();
 
   // If this is a linked PE/COFF file, then we have to skip over the null byte
@@ -689,11 +687,8 @@ static Error loadBinaryFormat(MemoryBuff
     return E;
 
   // Get the contents of the given sections.
-  if (Expected<StringRef> E = CoverageSection->getContents())
-    CoverageMapping = *E;
-  else
-    return E.takeError();
-
+  if (auto EC = CoverageSection->getContents(CoverageMapping))
+    return errorCodeToError(EC);
   if (Error E = ProfileNames.create(*NamesSection))
     return E;
 

Modified: llvm/trunk/lib/XRay/InstrumentationMap.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/XRay/InstrumentationMap.cpp?rev=360878&r1=360877&r2=360878&view=diff
==============================================================================
--- llvm/trunk/lib/XRay/InstrumentationMap.cpp (original)
+++ llvm/trunk/lib/XRay/InstrumentationMap.cpp Thu May 16 05:08:34 2019
@@ -78,10 +78,9 @@ loadObj(StringRef Filename, object::Owni
         "Failed to find XRay instrumentation map.",
         std::make_error_code(std::errc::executable_format_error));
 
-  if (Expected<StringRef> E = I->getContents())
-    Contents = *E;
-  else
-    return E.takeError();
+  if (I->getContents(Contents))
+    return errorCodeToError(
+        std::make_error_code(std::errc::executable_format_error));
 
   RelocMap Relocs;
   if (ObjFile.getBinary()->isELF()) {

Modified: llvm/trunk/tools/dsymutil/DwarfLinker.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/dsymutil/DwarfLinker.cpp?rev=360878&r1=360877&r2=360878&view=diff
==============================================================================
--- llvm/trunk/tools/dsymutil/DwarfLinker.cpp (original)
+++ llvm/trunk/tools/dsymutil/DwarfLinker.cpp Thu May 16 05:08:34 2019
@@ -436,13 +436,9 @@ static bool isMachOPairedReloc(uint64_t
 void DwarfLinker::RelocationManager::findValidRelocsMachO(
     const object::SectionRef &Section, const object::MachOObjectFile &Obj,
     const DebugMapObject &DMO) {
-  Expected<StringRef> ContentsOrErr = Section.getContents();
-  if (!ContentsOrErr) {
-    consumeError(ContentsOrErr.takeError());
-    Linker.reportWarning("error reading section", DMO);
-    return;
-  }
-  DataExtractor Data(*ContentsOrErr, Obj.isLittleEndian(), 0);
+  StringRef Contents;
+  Section.getContents(Contents);
+  DataExtractor Data(Contents, Obj.isLittleEndian(), 0);
   bool SkipNext = false;
 
   for (const object::RelocationRef &Reloc : Section.relocations()) {

Modified: llvm/trunk/tools/dsymutil/DwarfStreamer.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/dsymutil/DwarfStreamer.cpp?rev=360878&r1=360877&r2=360878&view=diff
==============================================================================
--- llvm/trunk/tools/dsymutil/DwarfStreamer.cpp (original)
+++ llvm/trunk/tools/dsymutil/DwarfStreamer.cpp Thu May 16 05:08:34 2019
@@ -667,12 +667,10 @@ void DwarfStreamer::translateLineTable(D
 
 static void emitSectionContents(const object::ObjectFile &Obj,
                                 StringRef SecName, MCStreamer *MS) {
-  if (auto Sec = getSectionByName(Obj, SecName)) {
-    if (Expected<StringRef> E = Sec->getContents())
-      MS->EmitBytes(*E);
-    else
-      consumeError(E.takeError());
-  }
+  StringRef Contents;
+  if (auto Sec = getSectionByName(Obj, SecName))
+    if (!Sec->getContents(Contents))
+      MS->EmitBytes(Contents);
 }
 
 void DwarfStreamer::copyInvariantDebugSection(const object::ObjectFile &Obj) {

Modified: llvm/trunk/tools/llvm-cfi-verify/lib/FileAnalysis.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-cfi-verify/lib/FileAnalysis.cpp?rev=360878&r1=360877&r2=360878&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-cfi-verify/lib/FileAnalysis.cpp (original)
+++ llvm/trunk/tools/llvm-cfi-verify/lib/FileAnalysis.cpp Thu May 16 05:08:34 2019
@@ -453,11 +453,13 @@ Error FileAnalysis::parseCodeSections()
     if (!Section.getName(SectionName) && SectionName == ".plt")
       continue;
 
-    Expected<StringRef> Contents = Section.getContents();
-    if (!Contents)
-      return Contents.takeError();
-    ArrayRef<uint8_t> SectionBytes = arrayRefFromStringRef(*Contents);
+    StringRef SectionContents;
+    if (Section.getContents(SectionContents))
+      return make_error<StringError>("Failed to retrieve section contents",
+                                     inconvertibleErrorCode());
 
+    ArrayRef<uint8_t> SectionBytes((const uint8_t *)SectionContents.data(),
+                                   Section.getSize());
     parseSectionContents(SectionBytes,
                          {Section.getAddress(), Section.getIndex()});
   }

Modified: llvm/trunk/tools/llvm-cov/TestingSupport.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-cov/TestingSupport.cpp?rev=360878&r1=360877&r2=360878&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-cov/TestingSupport.cpp (original)
+++ llvm/trunk/tools/llvm-cov/TestingSupport.cpp Thu May 16 05:08:34 2019
@@ -69,18 +69,9 @@ int convertForTestingMain(int argc, cons
   uint64_t ProfileNamesAddress = ProfileNames.getAddress();
   StringRef CoverageMappingData;
   StringRef ProfileNamesData;
-  if (Expected<StringRef> E = CoverageMapping.getContents())
-    CoverageMappingData = *E;
-  else {
-    consumeError(E.takeError());
+  if (CoverageMapping.getContents(CoverageMappingData) ||
+      ProfileNames.getContents(ProfileNamesData))
     return 1;
-  }
-  if (Expected<StringRef> E = ProfileNames.getContents())
-    ProfileNamesData = *E;
-  else {
-    consumeError(E.takeError());
-    return 1;
-  }
 
   int FD;
   if (auto Err = sys::fs::openFileForWrite(OutputFilename, FD)) {

Modified: llvm/trunk/tools/llvm-cxxdump/llvm-cxxdump.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-cxxdump/llvm-cxxdump.cpp?rev=360878&r1=360877&r2=360878&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-cxxdump/llvm-cxxdump.cpp (original)
+++ llvm/trunk/tools/llvm-cxxdump/llvm-cxxdump.cpp Thu May 16 05:08:34 2019
@@ -48,20 +48,15 @@ static void error(std::error_code EC) {
   exit(1);
 }
 
-LLVM_ATTRIBUTE_NORETURN static void error(Error Err) {
+static void error(Error Err) {
+  if (!Err)
+    return;
   logAllUnhandledErrors(std::move(Err), WithColor::error(outs()),
                         "reading file: ");
   outs().flush();
   exit(1);
 }
 
-template <typename T>
-T unwrapOrError(Expected<T> EO) {
-  if (!EO)
-    error(EO.takeError());
-  return std::move(*EO);
-}
-
 } // namespace llvm
 
 static void reportError(StringRef Input, StringRef Message) {
@@ -200,7 +195,8 @@ static void dumpCXXData(const ObjectFile
     // Skip virtual or BSS sections.
     if (Sec.isBSS() || Sec.isVirtual())
       continue;
-    StringRef SecContents = unwrapOrError(Sec.getContents());
+    StringRef SecContents;
+    error(Sec.getContents(SecContents));
     Expected<uint64_t> SymAddressOrErr = Sym.getAddress();
     error(errorToErrorCode(SymAddressOrErr.takeError()));
     uint64_t SymAddress = *SymAddressOrErr;
@@ -514,8 +510,7 @@ static void dumpArchive(const Archive *A
     else
       reportError(Arc->getFileName(), cxxdump_error::unrecognized_file_format);
   }
-  if (Err)
-    error(std::move(Err));
+  error(std::move(Err));
 }
 
 static void dumpInput(StringRef File) {

Modified: llvm/trunk/tools/llvm-dwp/llvm-dwp.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-dwp/llvm-dwp.cpp?rev=360878&r1=360877&r2=360878&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-dwp/llvm-dwp.cpp (original)
+++ llvm/trunk/tools/llvm-dwp/llvm-dwp.cpp Thu May 16 05:08:34 2019
@@ -410,10 +410,9 @@ static Error handleSection(
   if (std::error_code Err = Section.getName(Name))
     return errorCodeToError(Err);
 
-  Expected<StringRef> ContentsOrErr = Section.getContents();
-  if (!ContentsOrErr)
-    return ContentsOrErr.takeError();
-  StringRef Contents = *ContentsOrErr;
+  StringRef Contents;
+  if (auto Err = Section.getContents(Contents))
+    return errorCodeToError(Err);
 
   if (auto Err = handleCompressedSection(UncompressedSections, Name, Contents))
     return Err;

Modified: llvm/trunk/tools/llvm-objdump/MachODump.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-objdump/MachODump.cpp?rev=360878&r1=360877&r2=360878&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-objdump/MachODump.cpp (original)
+++ llvm/trunk/tools/llvm-objdump/MachODump.cpp Thu May 16 05:08:34 2019
@@ -1482,8 +1482,8 @@ static void DumpLiteralPointerSection(Ma
       section_type = Sec.flags & MachO::SECTION_TYPE;
     }
 
-    StringRef BytesStr = unwrapOrError(Sect->getContents(), O->getFileName());
-
+    StringRef BytesStr;
+    Sect->getContents(BytesStr);
     const char *Contents = reinterpret_cast<const char *>(BytesStr.data());
 
     switch (section_type) {
@@ -1697,8 +1697,8 @@ static void DumpSectionContents(StringRe
         }
         uint32_t section_type = section_flags & MachO::SECTION_TYPE;
 
-        StringRef BytesStr =
-            unwrapOrError(Section.getContents(), O->getFileName());
+        StringRef BytesStr;
+        Section.getContents(BytesStr);
         const char *sect = reinterpret_cast<const char *>(BytesStr.data());
         uint32_t sect_size = BytesStr.size();
         uint64_t sect_addr = Section.getAddress();
@@ -1782,8 +1782,8 @@ static void DumpInfoPlistSectionContents
     if (SegName == "__TEXT" && SectName == "__info_plist") {
       if (!NoLeadingHeaders)
         outs() << "Contents of (" << SegName << "," << SectName << ") section\n";
-      StringRef BytesStr =
-          unwrapOrError(Section.getContents(), O->getFileName());
+      StringRef BytesStr;
+      Section.getContents(BytesStr);
       const char *sect = reinterpret_cast<const char *>(BytesStr.data());
       outs() << format("%.*s", BytesStr.size(), sect) << "\n";
       return;
@@ -3194,8 +3194,8 @@ static const char *get_pointer_64(uint64
       S = (*(info->Sections))[SectIdx];
       offset = Address - SectAddress;
       left = SectSize - offset;
-      StringRef SectContents = unwrapOrError(
-          ((*(info->Sections))[SectIdx]).getContents(), info->O->getFileName());
+      StringRef SectContents;
+      ((*(info->Sections))[SectIdx]).getContents(SectContents);
       return SectContents.data() + offset;
     }
   }
@@ -3998,7 +3998,8 @@ walk_pointer_list_64(const char *listnam
   StringRef SegName = O->getSectionFinalSegmentName(Ref);
   outs() << "Contents of (" << SegName << "," << SectName << ") section\n";
 
-  StringRef BytesStr = unwrapOrError(S.getContents(), O->getFileName());
+  StringRef BytesStr;
+  S.getContents(BytesStr);
   const char *Contents = reinterpret_cast<const char *>(BytesStr.data());
 
   for (uint32_t i = 0; i < S.getSize(); i += sizeof(uint64_t)) {
@@ -4048,7 +4049,8 @@ walk_pointer_list_32(const char *listnam
   StringRef SegName = O->getSectionFinalSegmentName(Ref);
   outs() << "Contents of (" << SegName << "," << SectName << ") section\n";
 
-  StringRef BytesStr = unwrapOrError(S.getContents(), O->getFileName());
+  StringRef BytesStr;
+  S.getContents(BytesStr);
   const char *Contents = reinterpret_cast<const char *>(BytesStr.data());
 
   for (uint32_t i = 0; i < S.getSize(); i += sizeof(uint32_t)) {
@@ -7240,8 +7242,8 @@ static void DisassembleMachO(StringRef F
     if (SegmentName != DisSegName)
       continue;
 
-    StringRef BytesStr =
-        unwrapOrError(Sections[SectIdx].getContents(), Filename);
+    StringRef BytesStr;
+    Sections[SectIdx].getContents(BytesStr);
     ArrayRef<uint8_t> Bytes = arrayRefFromStringRef(BytesStr);
     uint64_t SectAddress = Sections[SectIdx].getAddress();
 
@@ -7694,8 +7696,9 @@ printMachOCompactUnwindSection(const Mac
   uint32_t PointerSize = Is64 ? sizeof(uint64_t) : sizeof(uint32_t);
   uint32_t EntrySize = 3 * PointerSize + 2 * sizeof(uint32_t);
 
-  StringRef Contents =
-      unwrapOrError(CompactUnwind.getContents(), Obj->getFileName());
+  StringRef Contents;
+  CompactUnwind.getContents(Contents);
+
   SmallVector<CompactUnwindEntry, 4> CompactUnwinds;
 
   // First populate the initial raw offsets, encodings and so on from the entry.
@@ -7836,8 +7839,8 @@ static void printMachOUnwindInfoSection(
 
   outs() << "Contents of __unwind_info section:\n";
 
-  StringRef Contents =
-      unwrapOrError(UnwindInfo.getContents(), Obj->getFileName());
+  StringRef Contents;
+  UnwindInfo.getContents(Contents);
   ptrdiff_t Pos = 0;
 
   //===----------------------------------

Modified: llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp?rev=360878&r1=360877&r2=360878&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp (original)
+++ llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp Thu May 16 05:08:34 2019
@@ -1126,8 +1126,9 @@ static void disassembleObject(const Targ
     SmallString<40> Comments;
     raw_svector_ostream CommentStream(Comments);
 
-    ArrayRef<uint8_t> Bytes = arrayRefFromStringRef(
-        unwrapOrError(Section.getContents(), Obj->getFileName()));
+    StringRef BytesStr;
+    error(Section.getContents(BytesStr));
+    ArrayRef<uint8_t> Bytes = arrayRefFromStringRef(BytesStr);
 
     uint64_t VMAAdjustment = 0;
     if (shouldAdjustVA(Section))
@@ -1560,6 +1561,7 @@ void printSectionHeaders(const ObjectFil
 void printSectionContents(const ObjectFile *Obj) {
   for (const SectionRef &Section : ToolSectionFilter(*Obj)) {
     StringRef Name;
+    StringRef Contents;
     error(Section.getName(Name));
     uint64_t BaseAddr = Section.getAddress();
     uint64_t Size = Section.getSize();
@@ -1574,7 +1576,7 @@ void printSectionContents(const ObjectFi
       continue;
     }
 
-    StringRef Contents = unwrapOrError(Section.getContents(), Obj->getFileName());
+    error(Section.getContents(Contents));
 
     // Dump out the content as hex and printable ascii characters.
     for (std::size_t Addr = 0, End = Contents.size(); Addr < End; Addr += 16) {
@@ -1762,8 +1764,8 @@ void printRawClangAST(const ObjectFile *
   if (!ClangASTSection)
     return;
 
-  StringRef ClangASTContents = unwrapOrError(
-      ClangASTSection.getValue().getContents(), Obj->getFileName());
+  StringRef ClangASTContents;
+  error(ClangASTSection.getValue().getContents(ClangASTContents));
   outs().write(ClangASTContents.data(), ClangASTContents.size());
 }
 
@@ -1799,8 +1801,9 @@ static void printFaultMaps(const ObjectF
     return;
   }
 
-  StringRef FaultMapContents =
-      unwrapOrError(FaultMapSection.getValue().getContents(), Obj->getFileName());
+  StringRef FaultMapContents;
+  error(FaultMapSection.getValue().getContents(FaultMapContents));
+
   FaultMapParser FMP(FaultMapContents.bytes_begin(),
                      FaultMapContents.bytes_end());
 

Modified: llvm/trunk/tools/llvm-pdbutil/DumpOutputStyle.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbutil/DumpOutputStyle.cpp?rev=360878&r1=360877&r2=360878&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-pdbutil/DumpOutputStyle.cpp (original)
+++ llvm/trunk/tools/llvm-pdbutil/DumpOutputStyle.cpp Thu May 16 05:08:34 2019
@@ -1376,12 +1376,12 @@ Error DumpOutputStyle::dumpTypesFromObje
     else
       continue;
 
-    Expected<StringRef> ContentsOrErr = S.getContents();
-    if (!ContentsOrErr)
-      return ContentsOrErr.takeError();
+    StringRef Contents;
+    if (auto EC = S.getContents(Contents))
+      return errorCodeToError(EC);
 
     uint32_t Magic;
-    BinaryStreamReader Reader(*ContentsOrErr, llvm::support::little);
+    BinaryStreamReader Reader(Contents, llvm::support::little);
     if (auto EC = Reader.readInteger(Magic))
       return EC;
     if (Magic != COFF::DEBUG_SECTION_MAGIC)

Modified: llvm/trunk/tools/llvm-pdbutil/InputFile.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbutil/InputFile.cpp?rev=360878&r1=360877&r2=360878&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-pdbutil/InputFile.cpp (original)
+++ llvm/trunk/tools/llvm-pdbutil/InputFile.cpp Thu May 16 05:08:34 2019
@@ -66,20 +66,17 @@ getModuleDebugStream(PDBFile &File, Stri
 static inline bool isCodeViewDebugSubsection(object::SectionRef Section,
                                              StringRef Name,
                                              BinaryStreamReader &Reader) {
-  StringRef SectionName;
+  StringRef SectionName, Contents;
   if (Section.getName(SectionName))
     return false;
 
   if (SectionName != Name)
     return false;
 
-  Expected<StringRef> ContentsOrErr = Section.getContents();
-  if (!ContentsOrErr) {
-    consumeError(ContentsOrErr.takeError());
+  if (Section.getContents(Contents))
     return false;
-  }
 
-  Reader = BinaryStreamReader(*ContentsOrErr, support::little);
+  Reader = BinaryStreamReader(Contents, support::little);
   uint32_t Magic;
   if (Reader.bytesRemaining() < sizeof(uint32_t))
     return false;

Modified: llvm/trunk/tools/llvm-readobj/COFFDumper.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-readobj/COFFDumper.cpp?rev=360878&r1=360877&r2=360878&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-readobj/COFFDumper.cpp (original)
+++ llvm/trunk/tools/llvm-readobj/COFFDumper.cpp Thu May 16 05:08:34 2019
@@ -933,7 +933,8 @@ void COFFDumper::initializeFileAndString
 
 void COFFDumper::printCodeViewSymbolSection(StringRef SectionName,
                                             const SectionRef &Section) {
-  StringRef SectionContents = unwrapOrError(Section.getContents());
+  StringRef SectionContents;
+  error(Section.getContents(SectionContents));
   StringRef Data = SectionContents;
 
   SmallVector<StringRef, 10> FunctionNames;
@@ -1217,7 +1218,8 @@ void COFFDumper::mergeCodeViewTypes(Merg
     StringRef SectionName;
     error(S.getName(SectionName));
     if (SectionName == ".debug$T") {
-      StringRef Data = unwrapOrError(S.getContents());
+      StringRef Data;
+      error(S.getContents(Data));
       uint32_t Magic;
       error(consume(Data, Magic));
       if (Magic != 4)
@@ -1253,7 +1255,8 @@ void COFFDumper::printCodeViewTypeSectio
   ListScope D(W, "CodeViewTypes");
   W.printNumber("Section", SectionName, Obj->getSectionID(Section));
 
-  StringRef Data = unwrapOrError(Section.getContents());
+  StringRef Data;
+  error(Section.getContents(Data));
   if (opts::CodeViewSubsectionBytes)
     W.printBinaryBlock("Data", Data);
 
@@ -1313,7 +1316,9 @@ void COFFDumper::printSectionHeaders() {
 
     if (opts::SectionData &&
         !(Section->Characteristics & COFF::IMAGE_SCN_CNT_UNINITIALIZED_DATA)) {
-      StringRef Data = unwrapOrError(Sec.getContents());
+      StringRef Data;
+      error(Sec.getContents(Data));
+
       W.printBinaryBlock("SectionData", Data);
     }
   }
@@ -1655,13 +1660,15 @@ void COFFDumper::printCOFFExports() {
 
 void COFFDumper::printCOFFDirectives() {
   for (const SectionRef &Section : Obj->sections()) {
+    StringRef Contents;
     StringRef Name;
 
     error(Section.getName(Name));
     if (Name != ".drectve")
       continue;
 
-    StringRef Contents = unwrapOrError(Section.getContents());
+    error(Section.getContents(Contents));
+
     W.printString("Directive(s)", Contents);
   }
 }
@@ -1700,7 +1707,8 @@ void COFFDumper::printCOFFResources() {
     if (!Name.startswith(".rsrc"))
       continue;
 
-    StringRef Ref = unwrapOrError(S.getContents());
+    StringRef Ref;
+    error(S.getContents(Ref));
 
     if ((Name == ".rsrc") || (Name == ".rsrc$01")) {
       ResourceSectionRef RSF(Ref);
@@ -1826,7 +1834,8 @@ void COFFDumper::printStackMap() const {
   if (StackMapSection == object::SectionRef())
     return;
 
-  StringRef StackMapContents = unwrapOrError(StackMapSection.getContents());
+  StringRef StackMapContents;
+  StackMapSection.getContents(StackMapContents);
   ArrayRef<uint8_t> StackMapContentsArray =
       arrayRefFromStringRef(StackMapContents);
 
@@ -1852,7 +1861,8 @@ void COFFDumper::printAddrsig() {
   if (AddrsigSection == object::SectionRef())
     return;
 
-  StringRef AddrsigContents = unwrapOrError(AddrsigSection.getContents());
+  StringRef AddrsigContents;
+  AddrsigSection.getContents(AddrsigContents);
   ArrayRef<uint8_t> AddrsigContentsArray(AddrsigContents.bytes_begin(),
                                          AddrsigContents.size());
 

Modified: llvm/trunk/tools/llvm-readobj/MachODumper.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-readobj/MachODumper.cpp?rev=360878&r1=360877&r2=360878&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-readobj/MachODumper.cpp (original)
+++ llvm/trunk/tools/llvm-readobj/MachODumper.cpp Thu May 16 05:08:34 2019
@@ -483,8 +483,15 @@ void MachODumper::printSectionHeaders(co
       }
     }
 
-    if (opts::SectionData && !Section.isBSS())
-      W.printBinaryBlock("SectionData", unwrapOrError(Section.getContents()));
+    if (opts::SectionData) {
+      bool IsBSS = Section.isBSS();
+      if (!IsBSS) {
+        StringRef Data;
+        error(Section.getContents(Data));
+
+        W.printBinaryBlock("SectionData", Data);
+      }
+    }
   }
 }
 
@@ -653,7 +660,8 @@ void MachODumper::printStackMap() const
   if (StackMapSection == object::SectionRef())
     return;
 
-  StringRef StackMapContents = unwrapOrError(StackMapSection.getContents());
+  StringRef StackMapContents;
+  StackMapSection.getContents(StackMapContents);
   ArrayRef<uint8_t> StackMapContentsArray =
       arrayRefFromStringRef(StackMapContents);
 

Modified: llvm/trunk/tools/llvm-readobj/ObjDumper.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-readobj/ObjDumper.cpp?rev=360878&r1=360877&r2=360878&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-readobj/ObjDumper.cpp (original)
+++ llvm/trunk/tools/llvm-readobj/ObjDumper.cpp Thu May 16 05:08:34 2019
@@ -73,7 +73,8 @@ void ObjDumper::printSectionAsString(con
     error(E);
   W.startLine() << "String dump of section '" << SectionName << "':\n";
 
-  StringRef SectionContent = unwrapOrError(Section.getContents());
+  StringRef SectionContent;
+  Section.getContents(SectionContent);
 
   const uint8_t *SecContent = SectionContent.bytes_begin();
   const uint8_t *CurrentWord = SecContent;
@@ -106,7 +107,8 @@ void ObjDumper::printSectionAsHex(const
     error(E);
   W.startLine() << "Hex dump of section '" << SectionName << "':\n";
 
-  StringRef SectionContent = unwrapOrError(Section.getContents());
+  StringRef SectionContent;
+  Section.getContents(SectionContent);
   const uint8_t *SecContent = SectionContent.bytes_begin();
   const uint8_t *SecEnd = SecContent + SectionContent.size();
 

Modified: llvm/trunk/tools/sancov/sancov.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/sancov/sancov.cpp?rev=360878&r1=360877&r2=360878&view=diff
==============================================================================
--- llvm/trunk/tools/sancov/sancov.cpp (original)
+++ llvm/trunk/tools/sancov/sancov.cpp Thu May 16 05:08:34 2019
@@ -841,9 +841,9 @@ static void getObjectCoveragePoints(cons
     if (!SectSize)
       continue;
 
-    Expected<StringRef> BytesStr = Section.getContents();
-    failIfError(BytesStr);
-    ArrayRef<uint8_t> Bytes = arrayRefFromStringRef(*BytesStr);
+    StringRef BytesStr;
+    failIfError(Section.getContents(BytesStr));
+    ArrayRef<uint8_t> Bytes = arrayRefFromStringRef(BytesStr);
 
     for (uint64_t Index = 0, Size = 0; Index < Section.getSize();
          Index += Size) {




More information about the llvm-commits mailing list