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()22be691f3bSpatrickvoid ThreadPostMortemTrace::RefreshStateAfterStop() {} 23be691f3bSpatrick GetRegisterContext()24be691f3bSpatrickRegisterContextSP 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)32be691f3bSpatrickThreadPostMortemTrace::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()39be691f3bSpatrickbool ThreadPostMortemTrace::CalculateStopInfo() { return false; } 40be691f3bSpatrick GetTraceFile() const41*f6aab3d8Srobertconst std::optional<FileSpec> &ThreadPostMortemTrace::GetTraceFile() const { 42be691f3bSpatrick return m_trace_file; 43be691f3bSpatrick } 44