summaryrefslogtreecommitdiff
path: root/contrib/llvm-project/lldb/source/Target/ThreadPlanTracer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm-project/lldb/source/Target/ThreadPlanTracer.cpp')
-rw-r--r--contrib/llvm-project/lldb/source/Target/ThreadPlanTracer.cpp30
1 files changed, 18 insertions, 12 deletions
diff --git a/contrib/llvm-project/lldb/source/Target/ThreadPlanTracer.cpp b/contrib/llvm-project/lldb/source/Target/ThreadPlanTracer.cpp
index 4e79b6b1e59d..b50c1636b7ff 100644
--- a/contrib/llvm-project/lldb/source/Target/ThreadPlanTracer.cpp
+++ b/contrib/llvm-project/lldb/source/Target/ThreadPlanTracer.cpp
@@ -46,7 +46,7 @@ Stream *ThreadPlanTracer::GetLogStream() {
else {
TargetSP target_sp(m_thread.CalculateTarget());
if (target_sp)
- return target_sp->GetDebugger().GetOutputFile().get();
+ return &(target_sp->GetDebugger().GetOutputStream());
}
return nullptr;
}
@@ -93,15 +93,20 @@ Disassembler *ThreadPlanAssemblyTracer::GetDisassembler() {
TypeFromUser ThreadPlanAssemblyTracer::GetIntPointerType() {
if (!m_intptr_type.IsValid()) {
- TargetSP target_sp(m_thread.CalculateTarget());
- if (target_sp) {
- TypeSystem *type_system =
- target_sp->GetScratchTypeSystemForLanguage(nullptr, eLanguageTypeC);
- if (type_system)
- m_intptr_type =
- TypeFromUser(type_system->GetBuiltinTypeForEncodingAndBitSize(
+ if (auto target_sp = m_thread.CalculateTarget()) {
+ auto type_system_or_err =
+ target_sp->GetScratchTypeSystemForLanguage(eLanguageTypeC);
+ if (auto err = type_system_or_err.takeError()) {
+ LLDB_LOG_ERROR(
+ lldb_private::GetLogIfAnyCategoriesSet(LIBLLDB_LOG_TYPES),
+ std::move(err),
+ "Unable to get integer pointer type from TypeSystem");
+ } else {
+ m_intptr_type = TypeFromUser(
+ type_system_or_err->GetBuiltinTypeForEncodingAndBitSize(
eEncodingUint,
target_sp->GetArchitecture().GetAddressByteSize() * 8));
+ }
}
}
return m_intptr_type;
@@ -110,10 +115,6 @@ TypeFromUser ThreadPlanAssemblyTracer::GetIntPointerType() {
ThreadPlanAssemblyTracer::~ThreadPlanAssemblyTracer() = default;
void ThreadPlanAssemblyTracer::TracingStarted() {
- RegisterContext *reg_ctx = m_thread.GetRegisterContext().get();
-
- if (m_register_values.empty())
- m_register_values.resize(reg_ctx->GetRegisterCount());
}
void ThreadPlanAssemblyTracer::TracingEnded() { m_register_values.clear(); }
@@ -203,6 +204,11 @@ void ThreadPlanAssemblyTracer::Log() {
}
}
+ if (m_register_values.empty()) {
+ RegisterContext *reg_ctx = m_thread.GetRegisterContext().get();
+ m_register_values.resize(reg_ctx->GetRegisterCount());
+ }
+
RegisterValue reg_value;
for (uint32_t reg_num = 0, num_registers = reg_ctx->GetRegisterCount();
reg_num < num_registers; ++reg_num) {