xref: /openbsd-src/gnu/llvm/lldb/source/Plugins/Trace/common/ThreadPostMortemTrace.cpp (revision f6aab3d83b51b91c24247ad2c2573574de475a82)
1be691f3bSpatrick //===-- ThreadPostMortemTrace.cpp -----------------------------------------===//
2be691f3bSpatrick //
3be691f3bSpatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4be691f3bSpatrick // See https://llvm.org/LICENSE.txt for license information.
5be691f3bSpatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6be691f3bSpatrick //
7be691f3bSpatrick //===----------------------------------------------------------------------===//
8be691f3bSpatrick 
9be691f3bSpatrick #include "ThreadPostMortemTrace.h"
10be691f3bSpatrick 
11be691f3bSpatrick #include <memory>
12*f6aab3d8Srobert #include <optional>
13be691f3bSpatrick 
14be691f3bSpatrick #include "Plugins/Process/Utility/RegisterContextHistory.h"
15be691f3bSpatrick #include "lldb/Target/Process.h"
16be691f3bSpatrick #include "lldb/Target/RegisterContext.h"
17be691f3bSpatrick 
18be691f3bSpatrick using namespace lldb;
19be691f3bSpatrick using namespace lldb_private;
20*f6aab3d8Srobert using namespace llvm;
21be691f3bSpatrick 
RefreshStateAfterStop()22be691f3bSpatrick void ThreadPostMortemTrace::RefreshStateAfterStop() {}
23be691f3bSpatrick 
GetRegisterContext()24be691f3bSpatrick RegisterContextSP ThreadPostMortemTrace::GetRegisterContext() {
25be691f3bSpatrick   if (!m_reg_context_sp)
26be691f3bSpatrick     m_reg_context_sp = CreateRegisterContextForFrame(nullptr);
27be691f3bSpatrick 
28be691f3bSpatrick   return m_reg_context_sp;
29be691f3bSpatrick }
30be691f3bSpatrick 
31be691f3bSpatrick RegisterContextSP
CreateRegisterContextForFrame(StackFrame * frame)32be691f3bSpatrick ThreadPostMortemTrace::CreateRegisterContextForFrame(StackFrame *frame) {
33be691f3bSpatrick   // Eventually this will calculate the register context based on the current
34be691f3bSpatrick   // trace position.
35be691f3bSpatrick   return std::make_shared<RegisterContextHistory>(
36be691f3bSpatrick       *this, 0, GetProcess()->GetAddressByteSize(), LLDB_INVALID_ADDRESS);
37be691f3bSpatrick }
38be691f3bSpatrick 
CalculateStopInfo()39be691f3bSpatrick bool ThreadPostMortemTrace::CalculateStopInfo() { return false; }
40be691f3bSpatrick 
GetTraceFile() const41*f6aab3d8Srobert const std::optional<FileSpec> &ThreadPostMortemTrace::GetTraceFile() const {
42be691f3bSpatrick   return m_trace_file;
43be691f3bSpatrick }
44