180814287SRaphael Isemann //===-- SBExecutionContext.cpp --------------------------------------------===// 2e85e84a7SEnrico Granata // 32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6e85e84a7SEnrico Granata // 7e85e84a7SEnrico Granata //===----------------------------------------------------------------------===// 8e85e84a7SEnrico Granata 9e85e84a7SEnrico Granata #include "lldb/API/SBExecutionContext.h" 10*1755f5b1SJonas Devlieghere #include "lldb/Utility/Instrumentation.h" 11e85e84a7SEnrico Granata 12e85e84a7SEnrico Granata #include "lldb/API/SBFrame.h" 13b9c1b51eSKate Stone #include "lldb/API/SBProcess.h" 14b9c1b51eSKate Stone #include "lldb/API/SBTarget.h" 15b9c1b51eSKate Stone #include "lldb/API/SBThread.h" 16e85e84a7SEnrico Granata 17e85e84a7SEnrico Granata #include "lldb/Target/ExecutionContext.h" 18e85e84a7SEnrico Granata 19e85e84a7SEnrico Granata using namespace lldb; 20e85e84a7SEnrico Granata using namespace lldb_private; 21e85e84a7SEnrico Granata SBExecutionContext()22*1755f5b1SJonas DevlieghereSBExecutionContext::SBExecutionContext() { LLDB_INSTRUMENT_VA(this); } 23e85e84a7SEnrico Granata SBExecutionContext(const lldb::SBExecutionContext & rhs)24b9c1b51eSKate StoneSBExecutionContext::SBExecutionContext(const lldb::SBExecutionContext &rhs) 25baf5664fSJonas Devlieghere : m_exe_ctx_sp(rhs.m_exe_ctx_sp) { 26*1755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, rhs); 27baf5664fSJonas Devlieghere } 28e85e84a7SEnrico Granata SBExecutionContext(lldb::ExecutionContextRefSP exe_ctx_ref_sp)29b9c1b51eSKate StoneSBExecutionContext::SBExecutionContext( 30b9c1b51eSKate Stone lldb::ExecutionContextRefSP exe_ctx_ref_sp) 31baf5664fSJonas Devlieghere : m_exe_ctx_sp(exe_ctx_ref_sp) { 32*1755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, exe_ctx_ref_sp); 33baf5664fSJonas Devlieghere } 3406be059aSEnrico Granata SBExecutionContext(const lldb::SBTarget & target)35b9c1b51eSKate StoneSBExecutionContext::SBExecutionContext(const lldb::SBTarget &target) 36b9c1b51eSKate Stone : m_exe_ctx_sp(new ExecutionContextRef()) { 37*1755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, target); 38baf5664fSJonas Devlieghere 39e85e84a7SEnrico Granata m_exe_ctx_sp->SetTargetSP(target.GetSP()); 40e85e84a7SEnrico Granata } 41e85e84a7SEnrico Granata SBExecutionContext(const lldb::SBProcess & process)42b9c1b51eSKate StoneSBExecutionContext::SBExecutionContext(const lldb::SBProcess &process) 43b9c1b51eSKate Stone : m_exe_ctx_sp(new ExecutionContextRef()) { 44*1755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, process); 45baf5664fSJonas Devlieghere 46e85e84a7SEnrico Granata m_exe_ctx_sp->SetProcessSP(process.GetSP()); 47e85e84a7SEnrico Granata } 48e85e84a7SEnrico Granata SBExecutionContext(lldb::SBThread thread)49b9c1b51eSKate StoneSBExecutionContext::SBExecutionContext(lldb::SBThread thread) 50b9c1b51eSKate Stone : m_exe_ctx_sp(new ExecutionContextRef()) { 51*1755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, thread); 52baf5664fSJonas Devlieghere 53e85e84a7SEnrico Granata m_exe_ctx_sp->SetThreadPtr(thread.get()); 54e85e84a7SEnrico Granata } 55e85e84a7SEnrico Granata SBExecutionContext(const lldb::SBFrame & frame)56b9c1b51eSKate StoneSBExecutionContext::SBExecutionContext(const lldb::SBFrame &frame) 57b9c1b51eSKate Stone : m_exe_ctx_sp(new ExecutionContextRef()) { 58*1755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, frame); 59baf5664fSJonas Devlieghere 60e85e84a7SEnrico Granata m_exe_ctx_sp->SetFrameSP(frame.GetFrameSP()); 61e85e84a7SEnrico Granata } 62e85e84a7SEnrico Granata 63866b7a65SJonas Devlieghere SBExecutionContext::~SBExecutionContext() = default; 64e85e84a7SEnrico Granata 65b9c1b51eSKate Stone const SBExecutionContext &SBExecutionContext:: operator =(const lldb::SBExecutionContext & rhs)66b9c1b51eSKate Stoneoperator=(const lldb::SBExecutionContext &rhs) { 67*1755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, rhs); 68baf5664fSJonas Devlieghere 69e85e84a7SEnrico Granata m_exe_ctx_sp = rhs.m_exe_ctx_sp; 70d232abc3SJonas Devlieghere return *this; 71e85e84a7SEnrico Granata } 72e85e84a7SEnrico Granata get() const73b9c1b51eSKate StoneExecutionContextRef *SBExecutionContext::get() const { 74ffc9f1deSJim Ingham return m_exe_ctx_sp.get(); 75ffc9f1deSJim Ingham } 76ffc9f1deSJim Ingham GetTarget() const77b9c1b51eSKate StoneSBTarget SBExecutionContext::GetTarget() const { 78*1755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this); 79baf5664fSJonas Devlieghere 80e85e84a7SEnrico Granata SBTarget sb_target; 81b9c1b51eSKate Stone if (m_exe_ctx_sp) { 82e85e84a7SEnrico Granata TargetSP target_sp(m_exe_ctx_sp->GetTargetSP()); 83e85e84a7SEnrico Granata if (target_sp) 84e85e84a7SEnrico Granata sb_target.SetSP(target_sp); 85e85e84a7SEnrico Granata } 86d232abc3SJonas Devlieghere return sb_target; 87e85e84a7SEnrico Granata } 88e85e84a7SEnrico Granata GetProcess() const89b9c1b51eSKate StoneSBProcess SBExecutionContext::GetProcess() const { 90*1755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this); 91baf5664fSJonas Devlieghere 92e85e84a7SEnrico Granata SBProcess sb_process; 93b9c1b51eSKate Stone if (m_exe_ctx_sp) { 94e85e84a7SEnrico Granata ProcessSP process_sp(m_exe_ctx_sp->GetProcessSP()); 95e85e84a7SEnrico Granata if (process_sp) 96e85e84a7SEnrico Granata sb_process.SetSP(process_sp); 97e85e84a7SEnrico Granata } 98d232abc3SJonas Devlieghere return sb_process; 99e85e84a7SEnrico Granata } 100e85e84a7SEnrico Granata GetThread() const101b9c1b51eSKate StoneSBThread SBExecutionContext::GetThread() const { 102*1755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this); 103baf5664fSJonas Devlieghere 104e85e84a7SEnrico Granata SBThread sb_thread; 105b9c1b51eSKate Stone if (m_exe_ctx_sp) { 106e85e84a7SEnrico Granata ThreadSP thread_sp(m_exe_ctx_sp->GetThreadSP()); 107e85e84a7SEnrico Granata if (thread_sp) 108e85e84a7SEnrico Granata sb_thread.SetThread(thread_sp); 109e85e84a7SEnrico Granata } 110d232abc3SJonas Devlieghere return sb_thread; 111e85e84a7SEnrico Granata } 112e85e84a7SEnrico Granata GetFrame() const113b9c1b51eSKate StoneSBFrame SBExecutionContext::GetFrame() const { 114*1755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this); 115baf5664fSJonas Devlieghere 116e85e84a7SEnrico Granata SBFrame sb_frame; 117b9c1b51eSKate Stone if (m_exe_ctx_sp) { 118e85e84a7SEnrico Granata StackFrameSP frame_sp(m_exe_ctx_sp->GetFrameSP()); 119e85e84a7SEnrico Granata if (frame_sp) 120e85e84a7SEnrico Granata sb_frame.SetFrameSP(frame_sp); 121e85e84a7SEnrico Granata } 122d232abc3SJonas Devlieghere return sb_frame; 123e85e84a7SEnrico Granata } 124