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) {