LLDB mainline
lldb_private::process_aix::NativeProcessAIX Class Reference

Manages communication with the inferior (debugee) process. More...

#include <NativeProcessAIX.h>

Inheritance diagram for lldb_private::process_aix::NativeProcessAIX:
[legend]

Classes

class  Manager

Public Member Functions

 ~NativeProcessAIX () override
Status Resume (const ResumeActionList &resume_actions) override
Status Halt () override
Status Detach () override
Status Signal (int signo) override
 Sends a process a UNIX signal signal.
Status Interrupt () override
 Tells a process to interrupt all operations as if by a Ctrl-C.
Status Kill () override
lldb::addr_t GetSharedLibraryInfoAddress () override
Status ReadMemory (lldb::addr_t addr, void *buf, size_t size, size_t &bytes_read) override
Status WriteMemory (lldb::addr_t addr, const void *buf, size_t size, size_t &bytes_written) override
size_t UpdateThreads () override
const ArchSpecGetArchitecture () const override
Status SetBreakpoint (lldb::addr_t addr, uint32_t size, bool hardware) override
Status RemoveBreakpoint (lldb::addr_t addr, bool hardware=false) override
Status GetLoadedModuleFileSpec (const char *module_path, FileSpec &file_spec) override
llvm::ErrorOr< std::unique_ptr< llvm::MemoryBuffer > > GetAuxvData () const override
Status GetFileLoadAddress (const llvm::StringRef &file_name, lldb::addr_t &load_addr) override
bool SupportHardwareSingleStepping () const
Public Member Functions inherited from lldb_private::NativeProcessProtocol
virtual ~NativeProcessProtocol ()=default
virtual Status IgnoreSignals (llvm::ArrayRef< int > signals)
virtual Status GetMemoryRegionInfo (lldb::addr_t load_addr, MemoryRegionInfo &range_info)
Status ReadMemoryWithoutTrap (lldb::addr_t addr, void *buf, size_t size, size_t &bytes_read)
virtual Status ReadMemoryTags (int32_t type, lldb::addr_t addr, size_t len, std::vector< uint8_t > &tags)
virtual Status WriteMemoryTags (int32_t type, lldb::addr_t addr, size_t len, const std::vector< uint8_t > &tags)
llvm::Expected< llvm::StringRef > ReadCStringFromMemory (lldb::addr_t addr, char *buffer, size_t max_size, size_t &total_bytes_read)
 Reads a null terminated string from memory.
virtual llvm::Expected< lldb::addr_tAllocateMemory (size_t size, uint32_t permissions)
virtual llvm::Error DeallocateMemory (lldb::addr_t addr)
virtual llvm::Expected< std::vector< SVR4LibraryInfo > > GetLoadedSVR4Libraries ()
virtual bool IsAlive () const
virtual const HardwareBreakpointMapGetHardwareBreakpointMap () const
virtual Status SetHardwareBreakpoint (lldb::addr_t addr, size_t size)
virtual Status RemoveHardwareBreakpoint (lldb::addr_t addr)
virtual const NativeWatchpointList::WatchpointMapGetWatchpointMap () const
virtual std::optional< std::pair< uint32_t, uint32_t > > GetHardwareDebugSupportInfo () const
virtual Status SetWatchpoint (lldb::addr_t addr, size_t size, uint32_t watch_flags, bool hardware)
virtual Status RemoveWatchpoint (lldb::addr_t addr)
lldb::pid_t GetID () const
lldb::StateType GetState () const
bool IsRunning () const
bool IsStepping () const
bool CanResume () const
lldb::ByteOrder GetByteOrder () const
uint32_t GetAddressByteSize () const
virtual std::optional< WaitStatusGetExitStatus ()
virtual bool SetExitStatus (WaitStatus status, bool bNotifyStateChange)
NativeThreadProtocolGetThreadAtIndex (uint32_t idx)
NativeThreadProtocolGetThreadByID (lldb::tid_t tid)
void SetCurrentThreadID (lldb::tid_t tid)
lldb::tid_t GetCurrentThreadID () const
NativeThreadProtocolGetCurrentThread ()
ThreadIterable Threads () const
virtual int GetTerminalFileDescriptor ()
uint32_t GetStopID () const
virtual void NotifyTracersProcessWillResume ()
 Notify tracers that the target process will resume.
virtual void NotifyTracersProcessDidStop ()
 Notify tracers that the target process just stopped.
virtual llvm::Error TraceStart (llvm::StringRef json_params, llvm::StringRef type)
 Start tracing a process or its threads.
virtual llvm::Error TraceStop (const TraceStopRequest &request)
 Stop tracing a live process or its threads.
virtual llvm::Expected< llvm::json::Value > TraceGetState (llvm::StringRef type)
 Get the current tracing state of the process and its threads.
virtual llvm::Expected< std::vector< uint8_t > > TraceGetBinaryData (const TraceGetBinaryDataRequest &request)
 Get binary data given a trace technology and a data identifier.
virtual llvm::Expected< TraceSupportedResponseTraceSupported ()
 Get the processor tracing type supported for this process.
virtual void SetEnabledExtensions (Extension flags)
 Method called in order to propagate the bitmap of protocol extensions supported by the client.
virtual llvm::Expected< std::string > SaveCore (llvm::StringRef path_hint)
 Write a core dump (without crashing the program).

Static Public Member Functions

static llvm::Expected< int > PtraceWrapper (int req, lldb::pid_t pid, void *addr=nullptr, void *data=nullptr, size_t data_size=0)

Private Member Functions

 NativeProcessAIX (::pid_t pid, int terminal_fd, NativeDelegate &delegate, const ArchSpec &arch, Manager &manager, llvm::ArrayRef<::pid_t > tids)
bool TryHandleWaitStatus (lldb::pid_t pid, WaitStatus status)
llvm::Error Detach (lldb::tid_t tid)
void SigchldHandler ()

Static Private Member Functions

static llvm::Expected< std::vector<::pid_t > > Attach (::pid_t pid)

Private Attributes

Managerm_manager
ArchSpec m_arch

Additional Inherited Members

Public Types inherited from lldb_private::NativeProcessProtocol
enum class  Extension {
  multiprocess = (1u << 0) , fork = (1u << 1) , vfork = (1u << 2) , pass_signals = (1u << 3) ,
  auxv = (1u << 4) , libraries_svr4 = (1u << 5) , memory_tagging = (1u << 6) , savecore = (1u << 7) ,
  siginfo_read = (1u << 8)
}
 Extension flag constants, returned by Manager::GetSupportedExtensions() and passed to SetEnabledExtension() More...
typedef std::vector< std::unique_ptr< NativeThreadProtocol > > thread_collection
typedef LockingAdaptedIterable< std::recursive_mutex, thread_collection, llvm::pointee_iterator< thread_collection::const_iterator > > ThreadIterable
Protected Member Functions inherited from lldb_private::NativeProcessProtocol
 NativeProcessProtocol (lldb::pid_t pid, int terminal_fd, NativeDelegate &delegate)
void SetID (lldb::pid_t pid)
void SetState (lldb::StateType state, bool notify_delegates=true)
virtual void DoStopIDBumped (uint32_t newBumpId)
Status SetSoftwareBreakpoint (lldb::addr_t addr, uint32_t size_hint)
Status RemoveSoftwareBreakpoint (lldb::addr_t addr)
virtual llvm::Expected< llvm::ArrayRef< uint8_t > > GetSoftwareBreakpointTrapOpcode (size_t size_hint)
virtual size_t GetSoftwareBreakpointPCOffset ()
 Return the offset of the PC relative to the software breakpoint that was hit.
void FixupBreakpointPCAsNeeded (NativeThreadProtocol &thread)
virtual void NotifyDidExec ()
 Notify the delegate that an exec occurred.
NativeThreadProtocolGetThreadByIDUnlocked (lldb::tid_t tid)
Protected Attributes inherited from lldb_private::NativeProcessProtocol
std::unordered_map< lldb::addr_t, SoftwareBreakpointm_software_breakpoints
lldb::pid_t m_pid
std::vector< std::unique_ptr< NativeThreadProtocol > > m_threads
lldb::tid_t m_current_thread_id = LLDB_INVALID_THREAD_ID
std::recursive_mutex m_threads_mutex
lldb::StateType m_state = lldb::eStateInvalid
std::recursive_mutex m_state_mutex
std::optional< WaitStatusm_exit_status
NativeDelegatem_delegate
NativeWatchpointList m_watchpoint_list
HardwareBreakpointMap m_hw_breakpoints_map
int m_terminal_fd
uint32_t m_stop_id = 0
llvm::DenseSet< int > m_signals_to_ignore
Extension m_enabled_extensions

Detailed Description

Manages communication with the inferior (debugee) process.

Upon construction, this class prepares and launches an inferior process for debugging.

Changes in the inferior process state are broadcasted.

Definition at line 32 of file NativeProcessAIX.h.

Constructor & Destructor Documentation

◆ ~NativeProcessAIX()

lldb_private::process_aix::NativeProcessAIX::~NativeProcessAIX ( )
inlineoverride

Definition at line 64 of file NativeProcessAIX.h.

References m_manager.

◆ NativeProcessAIX()

Member Function Documentation

◆ Attach()

llvm::Expected< std::vector<::pid_t > > NativeProcessAIX::Attach ( ::pid_t pid)
staticprivate

◆ Detach() [1/2]

Status NativeProcessAIX::Detach ( )
overridevirtual

Implements lldb_private::NativeProcessProtocol.

Definition at line 184 of file NativeProcessAIX.cpp.

References lldb_private::Status.

◆ Detach() [2/2]

llvm::Error NativeProcessAIX::Detach ( lldb::tid_t tid)
private

Definition at line 227 of file NativeProcessAIX.cpp.

References PtraceWrapper(), and lldb_private::Status::takeError().

◆ GetArchitecture()

const ArchSpec & lldb_private::process_aix::NativeProcessAIX::GetArchitecture ( ) const
inlineoverridevirtual

Implements lldb_private::NativeProcessProtocol.

Definition at line 88 of file NativeProcessAIX.h.

References m_arch.

◆ GetAuxvData()

llvm::ErrorOr< std::unique_ptr< llvm::MemoryBuffer > > lldb_private::process_aix::NativeProcessAIX::GetAuxvData ( ) const
inlineoverridevirtual

◆ GetFileLoadAddress()

Status lldb_private::process_aix::NativeProcessAIX::GetFileLoadAddress ( const llvm::StringRef & file_name,
lldb::addr_t & load_addr )
overridevirtual

◆ GetLoadedModuleFileSpec()

Status NativeProcessAIX::GetLoadedModuleFileSpec ( const char * module_path,
FileSpec & file_spec )
overridevirtual

Implements lldb_private::NativeProcessProtocol.

Definition at line 209 of file NativeProcessAIX.cpp.

References lldb_private::Status.

◆ GetSharedLibraryInfoAddress()

lldb::addr_t NativeProcessAIX::GetSharedLibraryInfoAddress ( )
overridevirtual

Implements lldb_private::NativeProcessProtocol.

Definition at line 108 of file NativeProcessAIX.cpp.

References LLDB_INVALID_ADDRESS.

◆ Halt()

Status NativeProcessAIX::Halt ( )
overridevirtual

Implements lldb_private::NativeProcessProtocol.

Definition at line 182 of file NativeProcessAIX.cpp.

References lldb_private::Status.

◆ Interrupt()

Status NativeProcessAIX::Interrupt ( )
overridevirtual

Tells a process to interrupt all operations as if by a Ctrl-C.

The default implementation will send a local host's equivalent of a SIGSTOP to the process via the NativeProcessProtocol::Signal() operation.

Returns
Returns an error object.

Reimplemented from lldb_private::NativeProcessProtocol.

Definition at line 188 of file NativeProcessAIX.cpp.

References lldb_private::Status.

◆ Kill()

Status NativeProcessAIX::Kill ( )
overridevirtual

Implements lldb_private::NativeProcessProtocol.

Definition at line 190 of file NativeProcessAIX.cpp.

References lldb_private::Status.

◆ PtraceWrapper()

llvm::Expected< int > NativeProcessAIX::PtraceWrapper ( int req,
lldb::pid_t pid,
void * addr = nullptr,
void * data = nullptr,
size_t data_size = 0 )
static

Definition at line 231 of file NativeProcessAIX.cpp.

References lldb_private::GetLog(), LLDB_LOG, and lldb_private::Ptrace.

Referenced by Attach(), and Detach().

◆ ReadMemory()

Status NativeProcessAIX::ReadMemory ( lldb::addr_t addr,
void * buf,
size_t size,
size_t & bytes_read )
overridevirtual

Implements lldb_private::NativeProcessProtocol.

Definition at line 192 of file NativeProcessAIX.cpp.

References lldb_private::Status.

◆ RemoveBreakpoint()

Status NativeProcessAIX::RemoveBreakpoint ( lldb::addr_t addr,
bool hardware = false )
overridevirtual

◆ Resume()

Status NativeProcessAIX::Resume ( const ResumeActionList & resume_actions)
overridevirtual

Implements lldb_private::NativeProcessProtocol.

Definition at line 178 of file NativeProcessAIX.cpp.

References lldb_private::Status.

◆ SetBreakpoint()

Status NativeProcessAIX::SetBreakpoint ( lldb::addr_t addr,
uint32_t size,
bool hardware )
overridevirtual

◆ SigchldHandler()

void lldb_private::process_aix::NativeProcessAIX::SigchldHandler ( )
private

◆ Signal()

Status NativeProcessAIX::Signal ( int signo)
overridevirtual

Sends a process a UNIX signal signal.

Returns
Returns an error object.

Implements lldb_private::NativeProcessProtocol.

Definition at line 186 of file NativeProcessAIX.cpp.

References lldb_private::Status.

◆ SupportHardwareSingleStepping()

bool NativeProcessAIX::SupportHardwareSingleStepping ( ) const

Definition at line 176 of file NativeProcessAIX.cpp.

◆ TryHandleWaitStatus()

bool lldb_private::process_aix::NativeProcessAIX::TryHandleWaitStatus ( lldb::pid_t pid,
WaitStatus status )
private

◆ UpdateThreads()

size_t NativeProcessAIX::UpdateThreads ( )
overridevirtual

◆ WriteMemory()

Status NativeProcessAIX::WriteMemory ( lldb::addr_t addr,
const void * buf,
size_t size,
size_t & bytes_written )
overridevirtual

Implements lldb_private::NativeProcessProtocol.

Definition at line 197 of file NativeProcessAIX.cpp.

References lldb_private::Status.

Member Data Documentation

◆ m_arch

ArchSpec lldb_private::process_aix::NativeProcessAIX::m_arch
private

Definition at line 115 of file NativeProcessAIX.h.

Referenced by GetArchitecture(), and NativeProcessAIX().

◆ m_manager

Manager& lldb_private::process_aix::NativeProcessAIX::m_manager
private

Definition at line 114 of file NativeProcessAIX.h.

Referenced by NativeProcessAIX(), and ~NativeProcessAIX().


The documentation for this class was generated from the following files: