summaryrefslogtreecommitdiff
path: root/lldb/source/Plugins/Process/Linux/IntelPTThreadTraceCollection.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Plugins/Process/Linux/IntelPTThreadTraceCollection.cpp')
-rw-r--r--lldb/source/Plugins/Process/Linux/IntelPTThreadTraceCollection.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/lldb/source/Plugins/Process/Linux/IntelPTThreadTraceCollection.cpp b/lldb/source/Plugins/Process/Linux/IntelPTThreadTraceCollection.cpp
index d7206b193e8f..bd06e033f160 100644
--- a/lldb/source/Plugins/Process/Linux/IntelPTThreadTraceCollection.cpp
+++ b/lldb/source/Plugins/Process/Linux/IntelPTThreadTraceCollection.cpp
@@ -71,3 +71,21 @@ void IntelPTThreadTraceCollection::Clear() {
size_t IntelPTThreadTraceCollection::GetTracedThreadsCount() const {
return m_thread_traces.size();
}
+
+llvm::Expected<llvm::Optional<std::vector<uint8_t>>>
+IntelPTThreadTraceCollection::TryGetBinaryData(
+ const TraceGetBinaryDataRequest &request) {
+ if (!request.tid)
+ return None;
+ if (request.kind != IntelPTDataKinds::kTraceBuffer)
+ return None;
+
+ if (!TracesThread(*request.tid))
+ return None;
+
+ if (Expected<IntelPTSingleBufferTrace &> trace =
+ GetTracedThread(*request.tid))
+ return trace->GetTraceBuffer(request.offset, request.size);
+ else
+ return trace.takeError();
+}