summaryrefslogtreecommitdiffstats
path: root/lldb/source/Utility/DataBufferLLVM.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Utility/DataBufferLLVM.cpp')
-rw-r--r--lldb/source/Utility/DataBufferLLVM.cpp23
1 files changed, 19 insertions, 4 deletions
diff --git a/lldb/source/Utility/DataBufferLLVM.cpp b/lldb/source/Utility/DataBufferLLVM.cpp
index 2f6654d4c9a..cd1bb3a3328 100644
--- a/lldb/source/Utility/DataBufferLLVM.cpp
+++ b/lldb/source/Utility/DataBufferLLVM.cpp
@@ -24,13 +24,28 @@ DataBufferLLVM::DataBufferLLVM(std::unique_ptr<llvm::MemoryBuffer> MemBuffer)
DataBufferLLVM::~DataBufferLLVM() {}
std::shared_ptr<DataBufferLLVM>
-DataBufferLLVM::CreateFromPath(const llvm::Twine &Path, uint64_t Size,
- uint64_t Offset) {
+DataBufferLLVM::CreateSliceFromPath(const llvm::Twine &Path, uint64_t Size,
+ uint64_t Offset, bool Private) {
// If the file resides non-locally, pass the volatile flag so that we don't
// mmap it.
- bool Volatile = !llvm::sys::fs::is_local(Path);
+ if (!Private)
+ Private = !llvm::sys::fs::is_local(Path);
- auto Buffer = llvm::MemoryBuffer::getFileSlice(Path, Size, Offset, Volatile);
+ auto Buffer = llvm::MemoryBuffer::getFileSlice(Path, Size, Offset, Private);
+ if (!Buffer)
+ return nullptr;
+ return std::shared_ptr<DataBufferLLVM>(
+ new DataBufferLLVM(std::move(*Buffer)));
+}
+
+std::shared_ptr<DataBufferLLVM>
+DataBufferLLVM::CreateFromPath(const llvm::Twine &Path, bool NullTerminate, bool Private) {
+ // If the file resides non-locally, pass the volatile flag so that we don't
+ // mmap it.
+ if (!Private)
+ Private = !llvm::sys::fs::is_local(Path);
+
+ auto Buffer = llvm::MemoryBuffer::getFile(Path, -1, NullTerminate, Private);
if (!Buffer)
return nullptr;
return std::shared_ptr<DataBufferLLVM>(
OpenPOWER on IntegriCloud