1*4ad5def9SAdrian McCarthy //===-- LocalDebugDelegate.cpp ----------------------------------*- C++ -*-===//
2*4ad5def9SAdrian McCarthy //
3*4ad5def9SAdrian McCarthy //                     The LLVM Compiler Infrastructure
4*4ad5def9SAdrian McCarthy //
5*4ad5def9SAdrian McCarthy // This file is distributed under the University of Illinois Open Source
6*4ad5def9SAdrian McCarthy // License. See LICENSE.TXT for details.
7*4ad5def9SAdrian McCarthy //
8*4ad5def9SAdrian McCarthy //===----------------------------------------------------------------------===//
9*4ad5def9SAdrian McCarthy 
10*4ad5def9SAdrian McCarthy #include "LocalDebugDelegate.h"
11*4ad5def9SAdrian McCarthy #include "ProcessWindows.h"
12*4ad5def9SAdrian McCarthy 
13*4ad5def9SAdrian McCarthy using namespace lldb;
14*4ad5def9SAdrian McCarthy using namespace lldb_private;
15*4ad5def9SAdrian McCarthy 
16*4ad5def9SAdrian McCarthy LocalDebugDelegate::LocalDebugDelegate(ProcessWP process)
17*4ad5def9SAdrian McCarthy     : m_process(process) {}
18*4ad5def9SAdrian McCarthy 
19*4ad5def9SAdrian McCarthy void LocalDebugDelegate::OnExitProcess(uint32_t exit_code) {
20*4ad5def9SAdrian McCarthy   if (ProcessWindowsSP process = GetProcessPointer())
21*4ad5def9SAdrian McCarthy     process->OnExitProcess(exit_code);
22*4ad5def9SAdrian McCarthy }
23*4ad5def9SAdrian McCarthy 
24*4ad5def9SAdrian McCarthy void LocalDebugDelegate::OnDebuggerConnected(lldb::addr_t image_base) {
25*4ad5def9SAdrian McCarthy   if (ProcessWindowsSP process = GetProcessPointer())
26*4ad5def9SAdrian McCarthy     process->OnDebuggerConnected(image_base);
27*4ad5def9SAdrian McCarthy }
28*4ad5def9SAdrian McCarthy 
29*4ad5def9SAdrian McCarthy ExceptionResult
30*4ad5def9SAdrian McCarthy LocalDebugDelegate::OnDebugException(bool first_chance,
31*4ad5def9SAdrian McCarthy                                      const ExceptionRecord &record) {
32*4ad5def9SAdrian McCarthy   if (ProcessWindowsSP process = GetProcessPointer())
33*4ad5def9SAdrian McCarthy     return process->OnDebugException(first_chance, record);
34*4ad5def9SAdrian McCarthy   else
35*4ad5def9SAdrian McCarthy     return ExceptionResult::MaskException;
36*4ad5def9SAdrian McCarthy }
37*4ad5def9SAdrian McCarthy 
38*4ad5def9SAdrian McCarthy void LocalDebugDelegate::OnCreateThread(const HostThread &thread) {
39*4ad5def9SAdrian McCarthy   if (ProcessWindowsSP process = GetProcessPointer())
40*4ad5def9SAdrian McCarthy     process->OnCreateThread(thread);
41*4ad5def9SAdrian McCarthy }
42*4ad5def9SAdrian McCarthy 
43*4ad5def9SAdrian McCarthy void LocalDebugDelegate::OnExitThread(lldb::tid_t thread_id,
44*4ad5def9SAdrian McCarthy                                       uint32_t exit_code) {
45*4ad5def9SAdrian McCarthy   if (ProcessWindowsSP process = GetProcessPointer())
46*4ad5def9SAdrian McCarthy     process->OnExitThread(thread_id, exit_code);
47*4ad5def9SAdrian McCarthy }
48*4ad5def9SAdrian McCarthy 
49*4ad5def9SAdrian McCarthy void LocalDebugDelegate::OnLoadDll(const lldb_private::ModuleSpec &module_spec,
50*4ad5def9SAdrian McCarthy                                    lldb::addr_t module_addr) {
51*4ad5def9SAdrian McCarthy   if (ProcessWindowsSP process = GetProcessPointer())
52*4ad5def9SAdrian McCarthy     process->OnLoadDll(module_spec, module_addr);
53*4ad5def9SAdrian McCarthy }
54*4ad5def9SAdrian McCarthy 
55*4ad5def9SAdrian McCarthy void LocalDebugDelegate::OnUnloadDll(lldb::addr_t module_addr) {
56*4ad5def9SAdrian McCarthy   if (ProcessWindowsSP process = GetProcessPointer())
57*4ad5def9SAdrian McCarthy     process->OnUnloadDll(module_addr);
58*4ad5def9SAdrian McCarthy }
59*4ad5def9SAdrian McCarthy 
60*4ad5def9SAdrian McCarthy void LocalDebugDelegate::OnDebugString(const std::string &string) {
61*4ad5def9SAdrian McCarthy   if (ProcessWindowsSP process = GetProcessPointer())
62*4ad5def9SAdrian McCarthy     process->OnDebugString(string);
63*4ad5def9SAdrian McCarthy }
64*4ad5def9SAdrian McCarthy 
65*4ad5def9SAdrian McCarthy void LocalDebugDelegate::OnDebuggerError(const Error &error, uint32_t type) {
66*4ad5def9SAdrian McCarthy   if (ProcessWindowsSP process = GetProcessPointer())
67*4ad5def9SAdrian McCarthy     process->OnDebuggerError(error, type);
68*4ad5def9SAdrian McCarthy }
69*4ad5def9SAdrian McCarthy 
70*4ad5def9SAdrian McCarthy ProcessWindowsSP LocalDebugDelegate::GetProcessPointer() {
71*4ad5def9SAdrian McCarthy   ProcessSP process = m_process.lock();
72*4ad5def9SAdrian McCarthy   return std::static_pointer_cast<ProcessWindows>(process);
73*4ad5def9SAdrian McCarthy }
74