LLDB mainline
Classes | Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
lldb_private::NativeProcessELF Class Reference

Abstract class that extends NativeProcessProtocol with ELF specific logic. More...

#include <NativeProcessELF.h>

Inheritance diagram for lldb_private::NativeProcessELF:
Inheritance graph
[legend]

Classes

struct  ELFLinkMap
 

Public Member Functions

std::optional< uint64_t > GetAuxValue (enum AuxVector::EntryType type)
 
- Public Member Functions inherited from lldb_private::NativeProcessProtocol
virtual ~NativeProcessProtocol ()=default
 
virtual Status Resume (const ResumeActionList &resume_actions)=0
 
virtual Status Halt ()=0
 
virtual Status Detach ()=0
 
virtual Status Signal (int signo)=0
 Sends a process a UNIX signal signal.
 
virtual Status Interrupt ()
 Tells a process to interrupt all operations as if by a Ctrl-C.
 
virtual Status Kill ()=0
 
virtual Status IgnoreSignals (llvm::ArrayRef< int > signals)
 
virtual Status GetMemoryRegionInfo (lldb::addr_t load_addr, MemoryRegionInfo &range_info)
 
virtual Status ReadMemory (lldb::addr_t addr, void *buf, size_t size, size_t &bytes_read)=0
 
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 Status WriteMemory (lldb::addr_t addr, const void *buf, size_t size, size_t &bytes_written)=0
 
virtual llvm::Expected< lldb::addr_tAllocateMemory (size_t size, uint32_t permissions)
 
virtual llvm::Error DeallocateMemory (lldb::addr_t addr)
 
virtual lldb::addr_t GetSharedLibraryInfoAddress ()=0
 
virtual llvm::Expected< std::vector< SVR4LibraryInfo > > GetLoadedSVR4Libraries ()
 
virtual bool IsAlive () const
 
virtual size_t UpdateThreads ()=0
 
virtual const ArchSpecGetArchitecture () const =0
 
virtual Status SetBreakpoint (lldb::addr_t addr, uint32_t size, bool hardware)=0
 
virtual Status RemoveBreakpoint (lldb::addr_t addr, bool hardware=false)
 
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 llvm::ErrorOr< std::unique_ptr< llvm::MemoryBuffer > > GetAuxvData () const =0
 
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 Status GetLoadedModuleFileSpec (const char *module_path, FileSpec &file_spec)=0
 
virtual Status GetFileLoadAddress (const llvm::StringRef &file_name, lldb::addr_t &load_addr)=0
 
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).
 

Protected Member Functions

lldb::addr_t GetSharedLibraryInfoAddress () override
 
template<typename ELF_EHDR , typename ELF_PHDR , typename ELF_DYN >
lldb::addr_t GetELFImageInfoAddress ()
 
llvm::Expected< std::vector< SVR4LibraryInfo > > GetLoadedSVR4Libraries () override
 
template<typename T >
llvm::Expected< SVR4LibraryInfoReadSVR4LibraryInfo (lldb::addr_t link_map_addr)
 
void NotifyDidExec () override
 Notify the delegate that an exec occurred.
 
- 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

std::unique_ptr< AuxVectorm_aux_vector
 
std::optional< lldb::addr_tm_shared_library_info_addr
 
- 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
 

Private Member Functions

 NativeProcessProtocol (lldb::pid_t pid, int terminal_fd, NativeDelegate &delegate)
 

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< thread_collection, NativeThreadProtocol &, thread_list_adapter, std::recursive_mutex > ThreadIterable
 
- Static Public Member Functions inherited from lldb_private::NativeProcessProtocol
template<typename I >
static NativeThreadProtocolthread_list_adapter (I &iter)
 

Detailed Description

Abstract class that extends NativeProcessProtocol with ELF specific logic.

Meant to be subclassed by ELF based NativeProcess* implementations.

Definition at line 22 of file NativeProcessELF.h.

Member Function Documentation

◆ GetAuxValue()

std::optional< uint64_t > lldb_private::NativeProcessELF::GetAuxValue ( enum AuxVector::EntryType  type)

◆ GetELFImageInfoAddress()

template<typename ELF_EHDR , typename ELF_PHDR , typename ELF_DYN >
template lldb::addr_t lldb_private::NativeProcessELF::GetELFImageInfoAddress< llvm::ELF::Elf64_Ehdr, llvm::ELF::Elf64_Phdr, llvm::ELF::Elf64_Dyn > ( )
protected

◆ GetLoadedSVR4Libraries()

llvm::Expected< std::vector< SVR4LibraryInfo > > lldb_private::NativeProcessELF::GetLoadedSVR4Libraries ( )
overrideprotectedvirtual

◆ GetSharedLibraryInfoAddress()

lldb::addr_t lldb_private::NativeProcessELF::GetSharedLibraryInfoAddress ( )
overrideprotectedvirtual

◆ NativeProcessProtocol()

NativeProcessProtocol::NativeProcessProtocol ( lldb::pid_t  pid,
int  terminal_fd,
NativeDelegate delegate 
)
private

Definition at line 452 of file NativeProcessProtocol.cpp.

◆ NotifyDidExec()

void lldb_private::NativeProcessELF::NotifyDidExec ( )
overrideprotectedvirtual

◆ ReadSVR4LibraryInfo()

template<typename T >
llvm::Expected< SVR4LibraryInfo > lldb_private::NativeProcessELF::ReadSVR4LibraryInfo ( lldb::addr_t  link_map_addr)
protected

Member Data Documentation

◆ m_aux_vector

std::unique_ptr<AuxVector> lldb_private::NativeProcessELF::m_aux_vector
protected

Definition at line 51 of file NativeProcessELF.h.

Referenced by GetAuxValue().

◆ m_shared_library_info_addr

std::optional<lldb::addr_t> lldb_private::NativeProcessELF::m_shared_library_info_addr
protected

Definition at line 52 of file NativeProcessELF.h.

Referenced by GetSharedLibraryInfoAddress(), and NotifyDidExec().


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