diff options
author | Zachary Turner <zturner@google.com> | 2017-02-24 18:56:49 +0000 |
---|---|---|
committer | Zachary Turner <zturner@google.com> | 2017-02-24 18:56:49 +0000 |
commit | 3f4a4b36818ace88fb0263ba7e999115a2c7d7af (patch) | |
tree | 19d9cc32fa7886197d7c83324ac0febc4063cc59 /lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp | |
parent | bb361fcba1ab832ccfde2bc55fef9bbbafd6b9c9 (diff) | |
download | bcm5719-llvm-3f4a4b36818ace88fb0263ba7e999115a2c7d7af.tar.gz bcm5719-llvm-3f4a4b36818ace88fb0263ba7e999115a2c7d7af.zip |
Delete DataBufferMemoryMap.
After a series of patches on the LLVM side to get the mmaping
code up to compatibility with LLDB's needs, it is now ready
to go, which means LLDB's custom mmapping code is redundant.
So this patch deletes it all and uses LLVM's code instead.
In the future, we could take this one step further and delete
even the lldb DataBuffer base class and rely entirely on
LLVM's facilities, but this is a job for another day.
Differential Revision: https://reviews.llvm.org/D30054
llvm-svn: 296159
Diffstat (limited to 'lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp')
-rw-r--r-- | lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp b/lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp index 60eb5fcfe02..c1cdefe7f8c 100644 --- a/lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp +++ b/lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp @@ -13,8 +13,8 @@ #include "llvm/Support/COFF.h" #include "lldb/Core/ArchSpec.h" -#include "lldb/Core/DataBuffer.h" #include "lldb/Core/DataBufferHeap.h" +#include "lldb/Core/DataBufferLLVM.h" #include "lldb/Core/FileSpecList.h" #include "lldb/Core/Module.h" #include "lldb/Core/ModuleSpec.h" @@ -30,6 +30,8 @@ #include "lldb/Target/Target.h" #include "lldb/Utility/StreamString.h" +#include "llvm/Support/MemoryBuffer.h" + #define IMAGE_DOS_SIGNATURE 0x5A4D // MZ #define IMAGE_NT_SIGNATURE 0x00004550 // PE00 #define OPT_HEADER_MAGIC_PE32 0x010b @@ -65,20 +67,28 @@ ObjectFile *ObjectFilePECOFF::CreateInstance(const lldb::ModuleSP &module_sp, lldb::offset_t file_offset, lldb::offset_t length) { if (!data_sp) { - data_sp = file->MemoryMapFileContentsIfLocal(file_offset, length); + data_sp = DataBufferLLVM::CreateFromFileSpec(*file, length, file_offset); + if (!data_sp) + return nullptr; data_offset = 0; } - if (ObjectFilePECOFF::MagicBytesMatch(data_sp)) { - // Update the data to contain the entire file if it doesn't already - if (data_sp->GetByteSize() < length) - data_sp = file->MemoryMapFileContentsIfLocal(file_offset, length); - std::unique_ptr<ObjectFile> objfile_ap(new ObjectFilePECOFF( - module_sp, data_sp, data_offset, file, file_offset, length)); - if (objfile_ap.get() && objfile_ap->ParseHeader()) - return objfile_ap.release(); + if (!ObjectFilePECOFF::MagicBytesMatch(data_sp)) + return nullptr; + + // Update the data to contain the entire file if it doesn't already + if (data_sp->GetByteSize() < length) { + data_sp = DataBufferLLVM::CreateFromFileSpec(*file, length, file_offset); + if (!data_sp) + return nullptr; } - return NULL; + + auto objfile_ap = llvm::make_unique<ObjectFilePECOFF>( + module_sp, data_sp, data_offset, file, file_offset, length); + if (!objfile_ap || !objfile_ap->ParseHeader()) + return nullptr; + + return objfile_ap.release(); } ObjectFile *ObjectFilePECOFF::CreateMemoryInstance( |