[Lldb-commits] [lldb] 31e44c0 - [trace] Use vector instead of ArrayRef when reading data
Walter Erquinigo via lldb-commits
lldb-commits at lists.llvm.org
Mon Mar 21 16:03:44 PDT 2022
Author: Walter Erquinigo
Date: 2022-03-21T16:03:37-07:00
New Revision: 31e44c01e3b5cc2cc7a9f1dc49806b3f050efb82
URL: https://github.com/llvm/llvm-project/commit/31e44c01e3b5cc2cc7a9f1dc49806b3f050efb82
DIFF: https://github.com/llvm/llvm-project/commit/31e44c01e3b5cc2cc7a9f1dc49806b3f050efb82.diff
LOG: [trace] Use vector instead of ArrayRef when reading data
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
```
Differential Revision: https://reviews.llvm.org/D122192
Added:
Modified:
lldb/include/lldb/Target/Trace.h
lldb/source/Target/Trace.cpp
Removed:
################################################################################
diff --git a/lldb/include/lldb/Target/Trace.h b/lldb/include/lldb/Target/Trace.h
index 643b761cdb897..c4ca192a1c263 100644
--- a/lldb/include/lldb/Target/Trace.h
+++ b/lldb/include/lldb/Target/Trace.h
@@ -253,7 +253,7 @@ class Trace : public PluginInterface,
/// \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 @@ class Trace : public PluginInterface,
/// \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
diff --git a/lldb/source/Target/Trace.cpp b/lldb/source/Target/Trace.cpp
index 38b3a7cb006df..7f9ae54455cb1 100644
--- a/lldb/source/Target/Trace.cpp
+++ b/lldb/source/Target/Trace.cpp
@@ -142,7 +142,7 @@ Optional<size_t> Trace::GetLiveProcessBinaryDataSize(llvm::StringRef kind) {
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 @@ Trace::GetLiveThreadBinaryData(lldb::tid_t tid, llvm::StringRef kind) {
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(),
More information about the lldb-commits
mailing list