xref: /llvm-project/lldb/source/API/SBExecutionContext.cpp (revision 1755f5b1d7b7871672abdf0fde5ccd091b8dbc04)
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 Devlieghere SBExecutionContext::SBExecutionContext() { LLDB_INSTRUMENT_VA(this); }
23e85e84a7SEnrico Granata 
SBExecutionContext(const lldb::SBExecutionContext & rhs)24b9c1b51eSKate Stone SBExecutionContext::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 Stone SBExecutionContext::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 Stone SBExecutionContext::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 Stone SBExecutionContext::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 Stone SBExecutionContext::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 Stone SBExecutionContext::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 Stone operator=(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 Stone ExecutionContextRef *SBExecutionContext::get() const {
74ffc9f1deSJim Ingham   return m_exe_ctx_sp.get();
75ffc9f1deSJim Ingham }
76ffc9f1deSJim Ingham 
GetTarget() const77b9c1b51eSKate Stone SBTarget 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 Stone SBProcess 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 Stone SBThread 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 Stone SBFrame 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