[Lldb-commits] [lldb] [lldb] Fix Intel PT plugin compile errors (PR #77252)
Nicholas Mosier via lldb-commits
lldb-commits at lists.llvm.org
Mon Jan 8 08:13:26 PST 2024
https://github.com/nmosier updated https://github.com/llvm/llvm-project/pull/77252
>From a4876e327f4e248ab4a48538f64507f60023d9d2 Mon Sep 17 00:00:00 2001
From: Nicholas Mosier <nmosier at stanford.edu>
Date: Sun, 7 Jan 2024 20:06:55 +0000
Subject: [PATCH] [lldb] Fix Intel PT plugin compile errors
Fix #77251.
---
lldb/include/lldb/Target/ProcessTrace.h | 2 +-
.../intel-pt/CommandObjectTraceStartIntelPT.cpp | 4 +---
lldb/source/Plugins/Trace/intel-pt/DecodedThread.h | 7 +++++--
.../source/Plugins/Trace/intel-pt/LibiptDecoder.cpp | 4 ++--
.../Plugins/Trace/intel-pt/TraceCursorIntelPT.cpp | 4 ++--
.../Trace/intel-pt/TraceIntelPTBundleLoader.cpp | 13 ++++++-------
6 files changed, 17 insertions(+), 17 deletions(-)
diff --git a/lldb/include/lldb/Target/ProcessTrace.h b/lldb/include/lldb/Target/ProcessTrace.h
index 037dea232cc024..201754e975e4fb 100644
--- a/lldb/include/lldb/Target/ProcessTrace.h
+++ b/lldb/include/lldb/Target/ProcessTrace.h
@@ -71,7 +71,7 @@ class ProcessTrace : public PostMortemProcess {
bool DoUpdateThreadList(ThreadList &old_thread_list,
ThreadList &new_thread_list) override;
-private:
+public:
static lldb::ProcessSP CreateInstance(lldb::TargetSP target_sp,
lldb::ListenerSP listener_sp,
const FileSpec *crash_file_path,
diff --git a/lldb/source/Plugins/Trace/intel-pt/CommandObjectTraceStartIntelPT.cpp b/lldb/source/Plugins/Trace/intel-pt/CommandObjectTraceStartIntelPT.cpp
index d4f7dc354e9fed..44224229e625bf 100644
--- a/lldb/source/Plugins/Trace/intel-pt/CommandObjectTraceStartIntelPT.cpp
+++ b/lldb/source/Plugins/Trace/intel-pt/CommandObjectTraceStartIntelPT.cpp
@@ -158,7 +158,7 @@ CommandObjectProcessTraceStartIntelPT::CommandOptions::GetDefinitions() {
return llvm::ArrayRef(g_process_trace_start_intel_pt_options);
}
-bool CommandObjectProcessTraceStartIntelPT::DoExecute(
+void CommandObjectProcessTraceStartIntelPT::DoExecute(
Args &command, CommandReturnObject &result) {
if (Error err = m_trace.Start(
m_options.m_ipt_trace_size, m_options.m_process_buffer_size_limit,
@@ -167,8 +167,6 @@ bool CommandObjectProcessTraceStartIntelPT::DoExecute(
result.SetError(Status(std::move(err)));
else
result.SetStatus(eReturnStatusSuccessFinishResult);
-
- return result.Succeeded();
}
std::optional<uint64_t>
diff --git a/lldb/source/Plugins/Trace/intel-pt/DecodedThread.h b/lldb/source/Plugins/Trace/intel-pt/DecodedThread.h
index 5745cdb67ab68f..ba66a09d3e762e 100644
--- a/lldb/source/Plugins/Trace/intel-pt/DecodedThread.h
+++ b/lldb/source/Plugins/Trace/intel-pt/DecodedThread.h
@@ -276,6 +276,9 @@ class DecodedThread : public std::enable_shared_from_this<DecodedThread> {
/// The string message of this item if it's an error
std::string error;
+
+ TraceItemStorage() {}
+ ~TraceItemStorage() {}
};
/// Create a new trace item.
@@ -285,10 +288,10 @@ class DecodedThread : public std::enable_shared_from_this<DecodedThread> {
DecodedThread::TraceItemStorage &CreateNewTraceItem(lldb::TraceItemKind kind);
/// Most of the trace data is stored here.
- std::vector<TraceItemStorage> m_item_data;
+ std::deque<TraceItemStorage> m_item_data;
/// The TraceItemKind for each trace item encoded as uint8_t. We don't include
/// it in TraceItemStorage to avoid padding.
- std::vector<uint8_t> m_item_kinds;
+ std::deque<uint8_t> m_item_kinds;
/// This map contains the TSCs of the decoded trace items. It maps
/// `item index -> TSC`, where `item index` is the first index
diff --git a/lldb/source/Plugins/Trace/intel-pt/LibiptDecoder.cpp b/lldb/source/Plugins/Trace/intel-pt/LibiptDecoder.cpp
index cdf81954eee902..f8241ef6a79329 100644
--- a/lldb/source/Plugins/Trace/intel-pt/LibiptDecoder.cpp
+++ b/lldb/source/Plugins/Trace/intel-pt/LibiptDecoder.cpp
@@ -572,7 +572,7 @@ Error lldb_private::trace_intel_pt::DecodeSingleTraceForThread(
Expected<PSBBlockDecoder> decoder = PSBBlockDecoder::Create(
trace_intel_pt, block, buffer.slice(block.psb_offset, block.size),
*decoded_thread.GetThread()->GetProcess(),
- i + 1 < blocks->size() ? blocks->at(i + 1).starting_ip : None,
+ i + 1 < blocks->size() ? blocks->at(i + 1).starting_ip : std::nullopt,
decoded_thread, std::nullopt);
if (!decoder)
return decoder.takeError();
@@ -640,7 +640,7 @@ Error lldb_private::trace_intel_pt::DecodeSystemWideTraceForThread(
*decoded_thread.GetThread()->GetProcess(),
j + 1 < execution.psb_blocks.size()
? execution.psb_blocks[j + 1].starting_ip
- : None,
+ : std::nullopt,
decoded_thread, execution.thread_execution.GetEndTSC());
if (!decoder)
return decoder.takeError();
diff --git a/lldb/source/Plugins/Trace/intel-pt/TraceCursorIntelPT.cpp b/lldb/source/Plugins/Trace/intel-pt/TraceCursorIntelPT.cpp
index 66d342196cf10d..dda6cd74343f0f 100644
--- a/lldb/source/Plugins/Trace/intel-pt/TraceCursorIntelPT.cpp
+++ b/lldb/source/Plugins/Trace/intel-pt/TraceCursorIntelPT.cpp
@@ -35,7 +35,7 @@ void TraceCursorIntelPT::Next() {
void TraceCursorIntelPT::ClearTimingRangesIfInvalid() {
if (m_tsc_range_calculated) {
if (!m_tsc_range || m_pos < 0 || !m_tsc_range->InRange(m_pos)) {
- m_tsc_range = None;
+ m_tsc_range = std::nullopt;
m_tsc_range_calculated = false;
}
}
@@ -43,7 +43,7 @@ void TraceCursorIntelPT::ClearTimingRangesIfInvalid() {
if (m_nanoseconds_range_calculated) {
if (!m_nanoseconds_range || m_pos < 0 ||
!m_nanoseconds_range->InRange(m_pos)) {
- m_nanoseconds_range = None;
+ m_nanoseconds_range = std::nullopt;
m_nanoseconds_range_calculated = false;
}
}
diff --git a/lldb/source/Plugins/Trace/intel-pt/TraceIntelPTBundleLoader.cpp b/lldb/source/Plugins/Trace/intel-pt/TraceIntelPTBundleLoader.cpp
index bd9cca675f2d74..e290207a53e4ba 100644
--- a/lldb/source/Plugins/Trace/intel-pt/TraceIntelPTBundleLoader.cpp
+++ b/lldb/source/Plugins/Trace/intel-pt/TraceIntelPTBundleLoader.cpp
@@ -15,6 +15,7 @@
#include "lldb/Core/Debugger.h"
#include "lldb/Core/Module.h"
#include "lldb/Target/Process.h"
+#include "lldb/Target/ProcessTrace.h"
#include "lldb/Target/Target.h"
#include <optional>
@@ -103,12 +104,10 @@ TraceIntelPTBundleLoader::CreateEmptyProcess(lldb::pid_t pid,
ParsedProcess parsed_process;
parsed_process.target_sp = target_sp;
- // This should instead try to directly create an instance of ProcessTrace.
- // ProcessSP process_sp = target_sp->CreateProcess(
- // /*listener*/ nullptr, "trace",
- // /*crash_file*/ nullptr,
- // /*can_connect*/ false);
-
+ ProcessSP process_sp =
+ ProcessTrace::CreateInstance(target_sp, /*listener*/ nullptr,
+ /*crash_file*/ nullptr,
+ /*can_connect*/ false);
process_sp->SetID(static_cast<lldb::pid_t>(pid));
return parsed_process;
@@ -344,7 +343,7 @@ Error TraceIntelPTBundleLoader::AugmentThreadsFromContextSwitches(
if (indexed_threads[proc->second].count(tid))
return;
indexed_threads[proc->second].insert(tid);
- proc->second->threads.push_back({tid, /*ipt_trace=*/None});
+ proc->second->threads.push_back({tid, /*ipt_trace=*/std::nullopt});
};
for (const JSONCpu &cpu : *bundle_description.cpus) {
More information about the lldb-commits
mailing list