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.

llvm-svn: 360878
diff --git a/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp b/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
index 160a171..720fadb 100644
--- a/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
+++ b/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
@@ -1410,14 +1410,8 @@
       // 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(
diff --git a/llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp b/llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp
index fc52963..5d453de 100644
--- a/llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp
+++ b/llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp
@@ -53,13 +53,13 @@
   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;
diff --git a/llvm/lib/DebugInfo/Symbolize/Symbolize.cpp b/llvm/lib/DebugInfo/Symbolize/Symbolize.cpp
index 00e4139..7e91a20 100644
--- a/llvm/lib/DebugInfo/Symbolize/Symbolize.cpp
+++ b/llvm/lib/DebugInfo/Symbolize/Symbolize.cpp
@@ -221,12 +221,9 @@
     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.
diff --git a/llvm/lib/ExecutionEngine/JITLink/MachOAtomGraphBuilder.cpp b/llvm/lib/ExecutionEngine/JITLink/MachOAtomGraphBuilder.cpp
index 1501c7a..d1cf875 100644
--- a/llvm/lib/ExecutionEngine/JITLink/MachOAtomGraphBuilder.cpp
+++ b/llvm/lib/ExecutionEngine/JITLink/MachOAtomGraphBuilder.cpp
@@ -136,14 +136,14 @@
 
     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());
diff --git a/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp b/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp
index f99868d..2fd677a 100644
--- a/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp
+++ b/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp
@@ -792,10 +792,8 @@
   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();
   }
 
diff --git a/llvm/lib/Object/ELFObjectFile.cpp b/llvm/lib/Object/ELFObjectFile.cpp
index c0ac7a3..cc1eeef 100644
--- a/llvm/lib/Object/ELFObjectFile.cpp
+++ b/llvm/lib/Object/ELFObjectFile.cpp
@@ -377,13 +377,12 @@
   }
   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;
diff --git a/llvm/lib/Object/IRObjectFile.cpp b/llvm/lib/Object/IRObjectFile.cpp
index 636f152..debe789 100644
--- a/llvm/lib/Object/IRObjectFile.cpp
+++ b/llvm/lib/Object/IRObjectFile.cpp
@@ -74,12 +74,12 @@
 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());
     }
   }
 
diff --git a/llvm/lib/Object/Object.cpp b/llvm/lib/Object/Object.cpp
index e2511b7..77e27ec 100644
--- a/llvm/lib/Object/Object.cpp
+++ b/llvm/lib/Object/Object.cpp
@@ -247,10 +247,10 @@
 }
 
 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) {
diff --git a/llvm/lib/ProfileData/Coverage/CoverageMappingReader.cpp b/llvm/lib/ProfileData/Coverage/CoverageMappingReader.cpp
index b93c180..fd522dc 100644
--- a/llvm/lib/ProfileData/Coverage/CoverageMappingReader.cpp
+++ b/llvm/lib/ProfileData/Coverage/CoverageMappingReader.cpp
@@ -348,10 +348,8 @@
 }
 
 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 @@
     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;
 
diff --git a/llvm/lib/XRay/InstrumentationMap.cpp b/llvm/lib/XRay/InstrumentationMap.cpp
index 2eeb455..862949f 100644
--- a/llvm/lib/XRay/InstrumentationMap.cpp
+++ b/llvm/lib/XRay/InstrumentationMap.cpp
@@ -78,10 +78,9 @@
         "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()) {