Revert "Wrap clang module files in a Mach-O, ELF, or COFF container."

This reverts commit r230044 while dealing with buildbot breakage.

Conflicts:
	test/Modules/module_container.m

llvm-svn: 230052
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp
index 69d8f11..bb6a450 100644
--- a/clang/lib/Serialization/ASTReader.cpp
+++ b/clang/lib/Serialization/ASTReader.cpp
@@ -46,8 +46,6 @@
 #include "llvm/ADT/Hashing.h"
 #include "llvm/ADT/StringExtras.h"
 #include "llvm/Bitcode/BitstreamReader.h"
-#include "llvm/Object/COFF.h"
-#include "llvm/Object/ObjectFile.h"
 #include "llvm/Support/ErrorHandling.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/MemoryBuffer.h"
@@ -634,27 +632,6 @@
 // AST reader implementation
 //===----------------------------------------------------------------------===//
 
-void ASTReader::InitStreamFileWithModule(llvm::MemoryBufferRef Buffer,
-                                         llvm::BitstreamReader &StreamFile) {
-  if (auto OF = llvm::object::ObjectFile::createObjectFile(Buffer)) {
-    bool IsCOFF = isa<llvm::object::COFFObjectFile>(OF.get().get());
-    // Find the clang AST section in the container.
-    for (auto &Section : OF->get()->sections()) {
-      StringRef Name;
-      Section.getName(Name);
-      if ((!IsCOFF && Name == "__clangast") ||
-          ( IsCOFF && Name ==   "clangast")) {
-        StringRef Buf;
-        Section.getContents(Buf);
-        return StreamFile.init((const unsigned char*)Buf.begin(),
-                               (const unsigned char*)Buf.end());
-      }
-    }
-  }
-  StreamFile.init((const unsigned char *)Buffer.getBufferStart(),
-                  (const unsigned char *)Buffer.getBufferEnd());
-}
-
 void ASTReader::setDeserializationListener(ASTDeserializationListener *Listener,
                                            bool TakeOwnership) {
   DeserializationListener = Listener;
@@ -3906,10 +3883,9 @@
 
   ModuleFile &F = *M;
   BitstreamCursor &Stream = F.Stream;
-  InitStreamFileWithModule(F.Buffer->getMemBufferRef(), F.StreamFile);
   Stream.init(&F.StreamFile);
-  F.SizeInBits = F.StreamFile.getBitcodeBytes().getExtent() * 8;
-
+  F.SizeInBits = F.Buffer->getBufferSize() * 8;
+  
   // Sniff for the signature.
   if (Stream.Read(8) != 'C' ||
       Stream.Read(8) != 'P' ||
@@ -4198,7 +4174,8 @@
 
   // Initialize the stream
   llvm::BitstreamReader StreamFile;
-  InitStreamFileWithModule((*Buffer)->getMemBufferRef(), StreamFile);
+  StreamFile.init((const unsigned char *)(*Buffer)->getBufferStart(),
+                  (const unsigned char *)(*Buffer)->getBufferEnd());
   BitstreamCursor Stream(StreamFile);
 
   // Sniff for the signature.
@@ -4293,7 +4270,8 @@
 
   // Initialize the stream
   llvm::BitstreamReader StreamFile;
-  InitStreamFileWithModule((*Buffer)->getMemBufferRef(), StreamFile);
+  StreamFile.init((const unsigned char *)(*Buffer)->getBufferStart(),
+                  (const unsigned char *)(*Buffer)->getBufferEnd());
   BitstreamCursor Stream(StreamFile);
 
   // Sniff for the signature.
diff --git a/clang/lib/Serialization/CMakeLists.txt b/clang/lib/Serialization/CMakeLists.txt
index a1a5ad4..d885db2 100644
--- a/clang/lib/Serialization/CMakeLists.txt
+++ b/clang/lib/Serialization/CMakeLists.txt
@@ -1,6 +1,5 @@
 set(LLVM_LINK_COMPONENTS
   BitReader
-  Object
   Support
   )
 
diff --git a/clang/lib/Serialization/GeneratePCH.cpp b/clang/lib/Serialization/GeneratePCH.cpp
index 0cd01dc..b5031fd 100644
--- a/clang/lib/Serialization/GeneratePCH.cpp
+++ b/clang/lib/Serialization/GeneratePCH.cpp
@@ -19,6 +19,7 @@
 #include "clang/Lex/Preprocessor.h"
 #include "clang/Sema/SemaConsumer.h"
 #include "llvm/Bitcode/BitstreamWriter.h"
+#include "llvm/Support/raw_ostream.h"
 #include <string>
 
 using namespace clang;
@@ -27,11 +28,10 @@
                            StringRef OutputFile,
                            clang::Module *Module,
                            StringRef isysroot,
-                           bool AllowASTWithErrors)
+                           raw_ostream *OS, bool AllowASTWithErrors)
   : PP(PP), OutputFile(OutputFile), Module(Module), 
-    isysroot(isysroot.str()),
-    SemaPtr(nullptr), Stream(Buffer),
-    Writer(Stream),
+    isysroot(isysroot.str()), Out(OS), 
+    SemaPtr(nullptr), Stream(Buffer), Writer(Stream),
     AllowASTWithErrors(AllowASTWithErrors),
     HasEmittedPCH(false) {
 }
@@ -52,8 +52,14 @@
   assert(SemaPtr && "No Sema?");
   Writer.WriteAST(*SemaPtr, OutputFile, Module, isysroot, hasErrors);
 
-  if (SerializationFinishedCallback)
-    SerializationFinishedCallback(&Buffer);
+  // Write the generated bitstream to "Out".
+  Out->write((char *)&Buffer.front(), Buffer.size());
+
+  // Make sure it hits disk now.
+  Out->flush();
+
+  // Free up some memory, in case the process is kept alive.
+  Buffer.clear();
 
   HasEmittedPCH = true;
 }
diff --git a/clang/lib/Serialization/GlobalModuleIndex.cpp b/clang/lib/Serialization/GlobalModuleIndex.cpp
index 68a23ea..4791388 100644
--- a/clang/lib/Serialization/GlobalModuleIndex.cpp
+++ b/clang/lib/Serialization/GlobalModuleIndex.cpp
@@ -15,7 +15,6 @@
 #include "clang/Basic/FileManager.h"
 #include "clang/Lex/HeaderSearch.h"
 #include "clang/Serialization/ASTBitCodes.h"
-#include "clang/Serialization/ASTReader.h"
 #include "clang/Serialization/GlobalModuleIndex.h"
 #include "clang/Serialization/Module.h"
 #include "llvm/ADT/DenseMap.h"
@@ -502,8 +501,8 @@
 
   // Initialize the input stream
   llvm::BitstreamReader InStreamFile;
-  ASTReader::InitStreamFileWithModule((*Buffer)->getMemBufferRef(),
-                                      InStreamFile);
+  InStreamFile.init((const unsigned char *)(*Buffer)->getBufferStart(),
+                    (const unsigned char *)(*Buffer)->getBufferEnd());
   llvm::BitstreamCursor InStream(InStreamFile);
 
   // Sniff for the signature.
diff --git a/clang/lib/Serialization/ModuleManager.cpp b/clang/lib/Serialization/ModuleManager.cpp
index 8f1473f..ac98ca0 100644
--- a/clang/lib/Serialization/ModuleManager.cpp
+++ b/clang/lib/Serialization/ModuleManager.cpp
@@ -13,7 +13,6 @@
 //===----------------------------------------------------------------------===//
 #include "clang/Lex/HeaderSearch.h"
 #include "clang/Lex/ModuleMap.h"
-#include "clang/Serialization/ASTReader.h"
 #include "clang/Serialization/GlobalModuleIndex.h"
 #include "clang/Serialization/ModuleManager.h"
 #include "llvm/Support/MemoryBuffer.h"
@@ -136,10 +135,10 @@
 
       New->Buffer = std::move(*Buf);
     }
-
-    // Initialize the stream.
-    ASTReader::InitStreamFileWithModule(New->Buffer->getMemBufferRef(),
-                                        New->StreamFile);
+    
+    // Initialize the stream
+    New->StreamFile.init((const unsigned char *)New->Buffer->getBufferStart(),
+                         (const unsigned char *)New->Buffer->getBufferEnd());
   }
 
   if (ExpectedSignature) {