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
/// \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.
/// \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
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(),
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(),