[Lldb-commits] [PATCH] D122192: [trace] Use vector instead of ArrayRef when reading data
walter erquinigo via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Mon Mar 21 15:49:15 PDT 2022
wallace created this revision.
wallace added reviewers: jj10306, zrthxn.
Herald added a project: All.
wallace requested review of this revision.
Herald added a project: LLDB.
Herald added a subscriber: lldb-commits.
I incorrectly returned an ArrayRef when the underlying object didn't own
the data. Instead, returning a vector<uint8_t> is what we should do.
This fixes an issue when trying to access an intel-pt trace buffer
larger than 16 MB.
repro
go to a breakpoint
thread trace start -s 16777216
n
thread trace dump instructions # this doesn't fail anymore
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D122192
Files:
lldb/include/lldb/Target/Trace.h
lldb/source/Target/Trace.cpp
Index: lldb/source/Target/Trace.cpp
===================================================================
--- lldb/source/Target/Trace.cpp
+++ lldb/source/Target/Trace.cpp
@@ -142,7 +142,7 @@
return data_it->second;
}
-Expected<ArrayRef<uint8_t>>
+Expected<std::vector<uint8_t>>
Trace::GetLiveThreadBinaryData(lldb::tid_t tid, llvm::StringRef kind) {
if (!m_live_process)
return createStringError(inconvertibleErrorCode(),
@@ -160,7 +160,7 @@
return m_live_process->TraceGetBinaryData(request);
}
-Expected<ArrayRef<uint8_t>>
+Expected<std::vector<uint8_t>>
Trace::GetLiveProcessBinaryData(llvm::StringRef kind) {
if (!m_live_process)
return createStringError(inconvertibleErrorCode(),
Index: lldb/include/lldb/Target/Trace.h
===================================================================
--- lldb/include/lldb/Target/Trace.h
+++ lldb/include/lldb/Target/Trace.h
@@ -253,7 +253,7 @@
/// \return
/// A vector of bytes with the requested data, or an \a llvm::Error in
/// case of failures.
- llvm::Expected<llvm::ArrayRef<uint8_t>>
+ llvm::Expected<std::vector<uint8_t>>
GetLiveThreadBinaryData(lldb::tid_t tid, llvm::StringRef kind);
/// Get binary data of the current process given a data identifier.
@@ -264,7 +264,7 @@
/// \return
/// A vector of bytes with the requested data, or an \a llvm::Error in
/// case of failures.
- llvm::Expected<llvm::ArrayRef<uint8_t>>
+ llvm::Expected<std::vector<uint8_t>>
GetLiveProcessBinaryData(llvm::StringRef kind);
/// Get the size of the data returned by \a GetLiveThreadBinaryData
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D122192.417121.patch
Type: text/x-patch
Size: 1610 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20220321/ca5b0ff6/attachment.bin>
More information about the lldb-commits
mailing list