diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2014-01-24 21:32:21 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2014-01-24 21:32:21 +0000 |
commit | afcc3df7f4db85832b13a6f4d58e24ac9e7ccc43 (patch) | |
tree | e608147b8d62c19296d96c7e00de10c220811fe4 /llvm/lib/Object/COFFObjectFile.cpp | |
parent | 1b392619907d1b5bed4d8533ea8c0cf7e19c5b48 (diff) | |
download | bcm5719-llvm-afcc3df7f4db85832b13a6f4d58e24ac9e7ccc43.tar.gz bcm5719-llvm-afcc3df7f4db85832b13a6f4d58e24ac9e7ccc43.zip |
Make ObjectFile ownership of the MemoryBuffer optional.
This allows llvm-ar to mmap the input files only once.
llvm-svn: 200040
Diffstat (limited to 'llvm/lib/Object/COFFObjectFile.cpp')
-rw-r--r-- | llvm/lib/Object/COFFObjectFile.cpp | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/llvm/lib/Object/COFFObjectFile.cpp b/llvm/lib/Object/COFFObjectFile.cpp index a7b06885008..c28f88484fb 100644 --- a/llvm/lib/Object/COFFObjectFile.cpp +++ b/llvm/lib/Object/COFFObjectFile.cpp @@ -463,11 +463,12 @@ error_code COFFObjectFile::initExportTablePtr() { return object_error::success; } -COFFObjectFile::COFFObjectFile(MemoryBuffer *Object, error_code &EC) - : ObjectFile(Binary::ID_COFF, Object), COFFHeader(0), PE32Header(0), - DataDirectory(0), SectionTable(0), SymbolTable(0), StringTable(0), - StringTableSize(0), ImportDirectory(0), NumberOfImportDirectory(0), - ExportDirectory(0) { +COFFObjectFile::COFFObjectFile(MemoryBuffer *Object, error_code &EC, + bool BufferOwned) + : ObjectFile(Binary::ID_COFF, Object, BufferOwned), COFFHeader(0), + PE32Header(0), DataDirectory(0), SectionTable(0), SymbolTable(0), + StringTable(0), StringTableSize(0), ImportDirectory(0), + NumberOfImportDirectory(0), ExportDirectory(0) { // Check that we at least have enough room for a header. if (!checkSize(Data, EC, sizeof(coff_file_header))) return; @@ -1015,9 +1016,10 @@ error_code ExportDirectoryEntryRef::getSymbolName(StringRef &Result) const { return object_error::success; } -ErrorOr<ObjectFile *> ObjectFile::createCOFFObjectFile(MemoryBuffer *Object) { +ErrorOr<ObjectFile *> ObjectFile::createCOFFObjectFile(MemoryBuffer *Object, + bool BufferOwned) { error_code EC; - OwningPtr<COFFObjectFile> Ret(new COFFObjectFile(Object, EC)); + OwningPtr<COFFObjectFile> Ret(new COFFObjectFile(Object, EC, BufferOwned)); if (EC) return EC; return Ret.take(); |