14ad5def9SAdrian McCarthy //===-- LocalDebugDelegate.cpp ----------------------------------*- C++ -*-===//
24ad5def9SAdrian McCarthy //
34ad5def9SAdrian McCarthy //                     The LLVM Compiler Infrastructure
44ad5def9SAdrian McCarthy //
54ad5def9SAdrian McCarthy // This file is distributed under the University of Illinois Open Source
64ad5def9SAdrian McCarthy // License. See LICENSE.TXT for details.
74ad5def9SAdrian McCarthy //
84ad5def9SAdrian McCarthy //===----------------------------------------------------------------------===//
94ad5def9SAdrian McCarthy 
104ad5def9SAdrian McCarthy #include "LocalDebugDelegate.h"
114ad5def9SAdrian McCarthy #include "ProcessWindows.h"
124ad5def9SAdrian McCarthy 
134ad5def9SAdrian McCarthy using namespace lldb;
144ad5def9SAdrian McCarthy using namespace lldb_private;
154ad5def9SAdrian McCarthy 
164ad5def9SAdrian McCarthy LocalDebugDelegate::LocalDebugDelegate(ProcessWP process)
174ad5def9SAdrian McCarthy     : m_process(process) {}
184ad5def9SAdrian McCarthy 
194ad5def9SAdrian McCarthy void LocalDebugDelegate::OnExitProcess(uint32_t exit_code) {
204ad5def9SAdrian McCarthy   if (ProcessWindowsSP process = GetProcessPointer())
214ad5def9SAdrian McCarthy     process->OnExitProcess(exit_code);
224ad5def9SAdrian McCarthy }
234ad5def9SAdrian McCarthy 
244ad5def9SAdrian McCarthy void LocalDebugDelegate::OnDebuggerConnected(lldb::addr_t image_base) {
254ad5def9SAdrian McCarthy   if (ProcessWindowsSP process = GetProcessPointer())
264ad5def9SAdrian McCarthy     process->OnDebuggerConnected(image_base);
274ad5def9SAdrian McCarthy }
284ad5def9SAdrian McCarthy 
294ad5def9SAdrian McCarthy ExceptionResult
304ad5def9SAdrian McCarthy LocalDebugDelegate::OnDebugException(bool first_chance,
314ad5def9SAdrian McCarthy                                      const ExceptionRecord &record) {
324ad5def9SAdrian McCarthy   if (ProcessWindowsSP process = GetProcessPointer())
334ad5def9SAdrian McCarthy     return process->OnDebugException(first_chance, record);
344ad5def9SAdrian McCarthy   else
354ad5def9SAdrian McCarthy     return ExceptionResult::MaskException;
364ad5def9SAdrian McCarthy }
374ad5def9SAdrian McCarthy 
384ad5def9SAdrian McCarthy void LocalDebugDelegate::OnCreateThread(const HostThread &thread) {
394ad5def9SAdrian McCarthy   if (ProcessWindowsSP process = GetProcessPointer())
404ad5def9SAdrian McCarthy     process->OnCreateThread(thread);
414ad5def9SAdrian McCarthy }
424ad5def9SAdrian McCarthy 
434ad5def9SAdrian McCarthy void LocalDebugDelegate::OnExitThread(lldb::tid_t thread_id,
444ad5def9SAdrian McCarthy                                       uint32_t exit_code) {
454ad5def9SAdrian McCarthy   if (ProcessWindowsSP process = GetProcessPointer())
464ad5def9SAdrian McCarthy     process->OnExitThread(thread_id, exit_code);
474ad5def9SAdrian McCarthy }
484ad5def9SAdrian McCarthy 
494ad5def9SAdrian McCarthy void LocalDebugDelegate::OnLoadDll(const lldb_private::ModuleSpec &module_spec,
504ad5def9SAdrian McCarthy                                    lldb::addr_t module_addr) {
514ad5def9SAdrian McCarthy   if (ProcessWindowsSP process = GetProcessPointer())
524ad5def9SAdrian McCarthy     process->OnLoadDll(module_spec, module_addr);
534ad5def9SAdrian McCarthy }
544ad5def9SAdrian McCarthy 
554ad5def9SAdrian McCarthy void LocalDebugDelegate::OnUnloadDll(lldb::addr_t module_addr) {
564ad5def9SAdrian McCarthy   if (ProcessWindowsSP process = GetProcessPointer())
574ad5def9SAdrian McCarthy     process->OnUnloadDll(module_addr);
584ad5def9SAdrian McCarthy }
594ad5def9SAdrian McCarthy 
604ad5def9SAdrian McCarthy void LocalDebugDelegate::OnDebugString(const std::string &string) {
614ad5def9SAdrian McCarthy   if (ProcessWindowsSP process = GetProcessPointer())
624ad5def9SAdrian McCarthy     process->OnDebugString(string);
634ad5def9SAdrian McCarthy }
644ad5def9SAdrian McCarthy 
65*97206d57SZachary Turner void LocalDebugDelegate::OnDebuggerError(const Status &error, uint32_t type) {
664ad5def9SAdrian McCarthy   if (ProcessWindowsSP process = GetProcessPointer())
674ad5def9SAdrian McCarthy     process->OnDebuggerError(error, type);
684ad5def9SAdrian McCarthy }
694ad5def9SAdrian McCarthy 
704ad5def9SAdrian McCarthy ProcessWindowsSP LocalDebugDelegate::GetProcessPointer() {
714ad5def9SAdrian McCarthy   ProcessSP process = m_process.lock();
724ad5def9SAdrian McCarthy   return std::static_pointer_cast<ProcessWindows>(process);
734ad5def9SAdrian McCarthy }
74