1*dda28197Spatrick //===-- LocalDebugDelegate.cpp --------------------------------------------===//
2061da546Spatrick //
3061da546Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4061da546Spatrick // See https://llvm.org/LICENSE.txt for license information.
5061da546Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6061da546Spatrick //
7061da546Spatrick //===----------------------------------------------------------------------===//
8061da546Spatrick
9061da546Spatrick #include "LocalDebugDelegate.h"
10061da546Spatrick #include "ProcessWindows.h"
11061da546Spatrick
12061da546Spatrick using namespace lldb;
13061da546Spatrick using namespace lldb_private;
14061da546Spatrick
LocalDebugDelegate(ProcessWP process)15061da546Spatrick LocalDebugDelegate::LocalDebugDelegate(ProcessWP process)
16061da546Spatrick : m_process(process) {}
17061da546Spatrick
OnExitProcess(uint32_t exit_code)18061da546Spatrick void LocalDebugDelegate::OnExitProcess(uint32_t exit_code) {
19061da546Spatrick if (ProcessWindowsSP process = GetProcessPointer())
20061da546Spatrick process->OnExitProcess(exit_code);
21061da546Spatrick }
22061da546Spatrick
OnDebuggerConnected(lldb::addr_t image_base)23061da546Spatrick void LocalDebugDelegate::OnDebuggerConnected(lldb::addr_t image_base) {
24061da546Spatrick if (ProcessWindowsSP process = GetProcessPointer())
25061da546Spatrick process->OnDebuggerConnected(image_base);
26061da546Spatrick }
27061da546Spatrick
28061da546Spatrick ExceptionResult
OnDebugException(bool first_chance,const ExceptionRecord & record)29061da546Spatrick LocalDebugDelegate::OnDebugException(bool first_chance,
30061da546Spatrick const ExceptionRecord &record) {
31061da546Spatrick if (ProcessWindowsSP process = GetProcessPointer())
32061da546Spatrick return process->OnDebugException(first_chance, record);
33061da546Spatrick else
34061da546Spatrick return ExceptionResult::MaskException;
35061da546Spatrick }
36061da546Spatrick
OnCreateThread(const HostThread & thread)37061da546Spatrick void LocalDebugDelegate::OnCreateThread(const HostThread &thread) {
38061da546Spatrick if (ProcessWindowsSP process = GetProcessPointer())
39061da546Spatrick process->OnCreateThread(thread);
40061da546Spatrick }
41061da546Spatrick
OnExitThread(lldb::tid_t thread_id,uint32_t exit_code)42061da546Spatrick void LocalDebugDelegate::OnExitThread(lldb::tid_t thread_id,
43061da546Spatrick uint32_t exit_code) {
44061da546Spatrick if (ProcessWindowsSP process = GetProcessPointer())
45061da546Spatrick process->OnExitThread(thread_id, exit_code);
46061da546Spatrick }
47061da546Spatrick
OnLoadDll(const lldb_private::ModuleSpec & module_spec,lldb::addr_t module_addr)48061da546Spatrick void LocalDebugDelegate::OnLoadDll(const lldb_private::ModuleSpec &module_spec,
49061da546Spatrick lldb::addr_t module_addr) {
50061da546Spatrick if (ProcessWindowsSP process = GetProcessPointer())
51061da546Spatrick process->OnLoadDll(module_spec, module_addr);
52061da546Spatrick }
53061da546Spatrick
OnUnloadDll(lldb::addr_t module_addr)54061da546Spatrick void LocalDebugDelegate::OnUnloadDll(lldb::addr_t module_addr) {
55061da546Spatrick if (ProcessWindowsSP process = GetProcessPointer())
56061da546Spatrick process->OnUnloadDll(module_addr);
57061da546Spatrick }
58061da546Spatrick
OnDebugString(const std::string & string)59061da546Spatrick void LocalDebugDelegate::OnDebugString(const std::string &string) {
60061da546Spatrick if (ProcessWindowsSP process = GetProcessPointer())
61061da546Spatrick process->OnDebugString(string);
62061da546Spatrick }
63061da546Spatrick
OnDebuggerError(const Status & error,uint32_t type)64061da546Spatrick void LocalDebugDelegate::OnDebuggerError(const Status &error, uint32_t type) {
65061da546Spatrick if (ProcessWindowsSP process = GetProcessPointer())
66061da546Spatrick process->OnDebuggerError(error, type);
67061da546Spatrick }
68061da546Spatrick
GetProcessPointer()69061da546Spatrick ProcessWindowsSP LocalDebugDelegate::GetProcessPointer() {
70061da546Spatrick ProcessSP process = m_process.lock();
71061da546Spatrick return std::static_pointer_cast<ProcessWindows>(process);
72061da546Spatrick }
73