LLDB mainline
NativeProcessNetBSD.h
Go to the documentation of this file.
1//===-- NativeProcessNetBSD.h --------------------------------- -*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef liblldb_NativeProcessNetBSD_H_
10#define liblldb_NativeProcessNetBSD_H_
11
16
17#include "NativeThreadNetBSD.h"
18
19namespace lldb_private {
20namespace process_netbsd {
21/// \class NativeProcessNetBSD
22/// Manages communication with the inferior (debugee) process.
23///
24/// Upon construction, this class prepares and launches an inferior process
25/// for debugging.
26///
27/// Changes in the inferior process state are broadcasted.
29public:
31 public:
32 llvm::Expected<std::unique_ptr<NativeProcessProtocol>>
33 Launch(ProcessLaunchInfo &launch_info, NativeDelegate &native_delegate,
34 MainLoop &mainloop) const override;
35
36 llvm::Expected<std::unique_ptr<NativeProcessProtocol>>
37 Attach(lldb::pid_t pid, NativeDelegate &native_delegate,
38 MainLoop &mainloop) const override;
39
40 Extension GetSupportedExtensions() const override;
41 };
42
43 // NativeProcessProtocol Interface
44 Status Resume(const ResumeActionList &resume_actions) override;
45
46 Status Halt() override;
47
48 Status Detach() override;
49
50 Status Signal(int signo) override;
51
52 Status Interrupt() override;
53
54 Status Kill() override;
55
57 MemoryRegionInfo &range_info) override;
58
59 Status ReadMemory(lldb::addr_t addr, void *buf, size_t size,
60 size_t &bytes_read) override;
61
62 Status WriteMemory(lldb::addr_t addr, const void *buf, size_t size,
63 size_t &bytes_written) override;
64
66
67 size_t UpdateThreads() override;
68
69 const ArchSpec &GetArchitecture() const override { return m_arch; }
70
72 bool hardware) override;
73
74 // The two following methods are probably not necessary and probably
75 // will never be called. Nevertheless, we implement them right now
76 // to reduce the differences between different platforms and reduce
77 // the risk of the lack of implementation actually breaking something,
78 // at least for the time being.
79 Status GetLoadedModuleFileSpec(const char *module_path,
80 FileSpec &file_spec) override;
81 Status GetFileLoadAddress(const llvm::StringRef &file_name,
82 lldb::addr_t &load_addr) override;
83
84 llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>>
85 GetAuxvData() const override;
86
87 // Interface used by NativeRegisterContext-derived classes.
88 static Status PtraceWrapper(int req, lldb::pid_t pid, void *addr = nullptr,
89 int data = 0, int *result = nullptr);
90
91 llvm::Expected<std::string> SaveCore(llvm::StringRef path_hint) override;
92
93private:
98 std::vector<std::pair<MemoryRegionInfo, FileSpec>> m_mem_region_cache;
99
100 // Private Instance Methods
101 NativeProcessNetBSD(::pid_t pid, int terminal_fd, NativeDelegate &delegate,
102 const ArchSpec &arch, MainLoop &mainloop);
103
104 bool HasThreadNoLock(lldb::tid_t thread_id);
105
107 void RemoveThread(lldb::tid_t thread_id);
108
109 void MonitorCallback(lldb::pid_t pid, int signal);
110 void MonitorExited(lldb::pid_t pid, WaitStatus status);
111 void MonitorSIGSTOP(lldb::pid_t pid);
112 void MonitorSIGTRAP(lldb::pid_t pid);
113 void MonitorSignal(lldb::pid_t pid, int signal);
114 void MonitorClone(::pid_t child_pid, bool is_vfork,
115 NativeThreadNetBSD &parent_thread);
116
118 void SigchldHandler();
119
120 Status Attach();
123};
124
125} // namespace process_netbsd
126} // namespace lldb_private
127
128#endif // #ifndef liblldb_NativeProcessNetBSD_H_
An architecture specification class.
Definition: ArchSpec.h:32
A file utility class.
Definition: FileSpec.h:56
std::unique_ptr< SignalHandle > SignalHandleUP
Definition: MainLoopPosix.h:32
Abstract class that extends NativeProcessProtocol with ELF specific logic.
Extension
Extension flag constants, returned by Factory::GetSupportedExtensions() and passed to SetEnabledExten...
An error handling class.
Definition: Status.h:44
llvm::Expected< std::unique_ptr< NativeProcessProtocol > > Launch(ProcessLaunchInfo &launch_info, NativeDelegate &native_delegate, MainLoop &mainloop) const override
Launch a process for debugging.
Extension GetSupportedExtensions() const override
Get the bitmask of extensions supported by this process plugin.
Manages communication with the inferior (debugee) process.
llvm::Expected< std::string > SaveCore(llvm::StringRef path_hint) override
Write a core dump (without crashing the program).
void MonitorClone(::pid_t child_pid, bool is_vfork, NativeThreadNetBSD &parent_thread)
Status ReadMemory(lldb::addr_t addr, void *buf, size_t size, size_t &bytes_read) override
Status Interrupt() override
Tells a process to interrupt all operations as if by a Ctrl-C.
Status GetMemoryRegionInfo(lldb::addr_t load_addr, MemoryRegionInfo &range_info) override
Status GetLoadedModuleFileSpec(const char *module_path, FileSpec &file_spec) override
Status GetFileLoadAddress(const llvm::StringRef &file_name, lldb::addr_t &load_addr) override
llvm::ErrorOr< std::unique_ptr< llvm::MemoryBuffer > > GetAuxvData() const override
Status WriteMemory(lldb::addr_t addr, const void *buf, size_t size, size_t &bytes_written) override
const ArchSpec & GetArchitecture() const override
std::vector< std::pair< MemoryRegionInfo, FileSpec > > m_mem_region_cache
Status Resume(const ResumeActionList &resume_actions) override
void MonitorExited(lldb::pid_t pid, WaitStatus status)
NativeThreadNetBSD & AddThread(lldb::tid_t thread_id)
Status SetBreakpoint(lldb::addr_t addr, uint32_t size, bool hardware) override
static Status PtraceWrapper(int req, lldb::pid_t pid, void *addr=nullptr, int data=0, int *result=nullptr)
Status Signal(int signo) override
Sends a process a UNIX signal signal.
A class that represents a running process on the host machine.
Definition: SBAttachInfo.h:14
uint64_t pid_t
Definition: lldb-types.h:85
uint64_t addr_t
Definition: lldb-types.h:83
uint64_t tid_t
Definition: lldb-types.h:86