Go to the documentation of this file.
9 #ifndef LLDB_SOURCE_PLUGINS_PROCESS_GDB_REMOTE_GDBREMOTECOMMUNICATIONSERVERLLGS_H
10 #define LLDB_SOURCE_PLUGINS_PROCESS_GDB_REMOTE_GDBREMOTECOMMUNICATIONSERVERLLGS_H
13 #include <unordered_map>
14 #include <unordered_set>
27 namespace process_gdb_remote {
29 class ProcessGDBRemote;
84 std::unique_ptr<NativeProcessProtocol> child_process)
override;
134 bool force_synchronous);
138 bool force_synchronous);
281 llvm::Expected<std::unique_ptr<llvm::MemoryBuffer>>
287 const llvm::ArrayRef<llvm::StringRef> client_features)
override;
297 llvm::Expected<std::unique_ptr<llvm::MemoryBuffer>>
BuildTargetXml();
336 #endif // LLDB_SOURCE_PLUGINS_PROCESS_GDB_REMOTE_GDBREMOTECOMMUNICATIONSERVERLLGS_H
PacketResult Handle_qFileLoadAddress(StringExtractorGDBRemote &packet)
void AppendThreadIDToResponse(Stream &response, lldb::pid_t pid, lldb::tid_t tid)
PacketResult Handle_interrupt(StringExtractorGDBRemote &packet)
PacketResult ResumeProcess(NativeProcessProtocol &process, const ResumeActionList &actions)
PacketResult Handle_qfThreadInfo(StringExtractorGDBRemote &packet)
PacketResult Handle_Z(StringExtractorGDBRemote &packet)
void InitializeDelegate(NativeProcessProtocol *process) override
PacketResult Handle_QRestoreRegisterState(StringExtractorGDBRemote &packet)
std::unordered_map< uint32_t, lldb::DataBufferSP > m_saved_registers_map
PacketResult Handle_stop_reason(StringExtractorGDBRemote &packet)
PacketResult Handle_vRun(StringExtractorGDBRemote &packet)
uint32_t GetNextSavedRegistersID()
std::recursive_mutex m_debugged_process_mutex
PacketResult Handle_p(StringExtractorGDBRemote &packet)
PacketResult Handle_qMemoryRegionInfoSupported(StringExtractorGDBRemote &packet)
PacketResult Handle_s(StringExtractorGDBRemote &packet)
void SetContinueThreadID(lldb::tid_t tid)
std::deque< std::string > m_stop_notification_queue
void SetCurrentThreadID(lldb::tid_t tid)
lldb::tid_t GetContinueThreadID() const
PacketResult Handle_g(StringExtractorGDBRemote &packet)
PacketResult Handle_qWatchpointSupportInfo(StringExtractorGDBRemote &packet)
Status AttachWaitProcess(llvm::StringRef process_name, bool include_existing)
Wait to attach to a process with a given name.
PacketResult Handle_qVAttachOrWaitSupported(StringExtractorGDBRemote &packet)
PacketResult SendStopReasonForState(NativeProcessProtocol &process, lldb::StateType process_state, bool force_synchronous)
bool m_list_threads_in_stop_reply
bool m_thread_suffix_supported
void StartSTDIOForwarding()
Status InitializeConnection(std::unique_ptr< Connection > connection)
const GDBRemoteCommunicationServerLLGS & operator=(const GDBRemoteCommunicationServerLLGS &)=delete
PacketResult Handle_QPassSignals(StringExtractorGDBRemote &packet)
PacketResult Handle_M(StringExtractorGDBRemote &packet)
PacketResult Handle_qThreadStopInfo(StringExtractorGDBRemote &packet)
PacketResult Handle_qC(StringExtractorGDBRemote &packet)
void NewSubprocess(NativeProcessProtocol *parent_process, std::unique_ptr< NativeProcessProtocol > child_process) override
std::unique_ptr< NativeProcessProtocol > process_up
PacketResult Handle_QNonStop(StringExtractorGDBRemote &packet)
PacketResult Handle_D(StringExtractorGDBRemote &packet)
MainLoop::ReadHandleUP m_stdio_handle_up
Communication m_stdio_communication
PacketResult Handle_jLLDBTraceStart(StringExtractorGDBRemote &packet)
PacketResult Handle_C(StringExtractorGDBRemote &packet)
void HandleInferiorState_Stopped(NativeProcessProtocol *process)
void StopSTDIOForwarding()
PacketResult Handle_QSetDisableASLR(StringExtractorGDBRemote &packet)
std::unique_ptr< ReadHandle > ReadHandleUP
PacketResult Handle_vStopped(StringExtractorGDBRemote &packet)
std::mutex m_saved_registers_mutex
PacketResult Handle_T(StringExtractorGDBRemote &packet)
void HandleInferiorState_Exited(NativeProcessProtocol *process)
Status SetSTDIOFileDescriptor(int fd)
PacketResult Handle_vAttachWait(StringExtractorGDBRemote &packet)
PacketResult Handle_qXfer(StringExtractorGDBRemote &packet)
llvm::StringMap< std::unique_ptr< llvm::MemoryBuffer > > m_xfer_buffer_map
llvm::Expected< std::unique_ptr< llvm::MemoryBuffer > > ReadXferObject(llvm::StringRef object, llvm::StringRef annex)
void MaybeCloseInferiorTerminalConnection()
uint32_t m_next_saved_registers_id
PacketResult Handle_jThreadsInfo(StringExtractorGDBRemote &packet)
PacketResult Handle_QListThreadsInStopReply(StringExtractorGDBRemote &packet)
lldb::tid_t m_continue_tid
void ClearProcessSpecificData()
PacketResult Handle__M(StringExtractorGDBRemote &packet)
Status AttachToProcess(lldb::pid_t pid)
Attach to a process.
StreamString PrepareStopReplyPacketForThread(NativeThreadProtocol &thread)
PacketResult Handle_QSetWorkingDir(StringExtractorGDBRemote &packet)
std::unordered_map< lldb::pid_t, DebuggedProcess > m_debugged_processes
PacketResult Handle_P(StringExtractorGDBRemote &packet)
PacketResult HandleNotificationAck(std::deque< std::string > &queue)
@ LLVM_MARK_AS_BITMASK_ENUM
PacketResult Handle_QMemTags(StringExtractorGDBRemote &packet)
string(SUBSTRING ${p} 10 -1 pStripped) if($
std::vector< std::string > HandleFeatures(const llvm::ArrayRef< llvm::StringRef > client_features) override
PacketResult Handle_z(StringExtractorGDBRemote &packet)
FileSpec FindModuleFile(const std::string &module_path, const ArchSpec &arch) override
Status LaunchProcess() override
Launch a process with the current launch settings.
void DataAvailableCallback()
PacketResult SendWResponse(NativeProcessProtocol *process)
PacketResult Handle_jLLDBTraceSupported(StringExtractorGDBRemote &packet)
std::deque< std::string > m_stdio_notification_queue
PacketResult Handle_vAttachOrWait(StringExtractorGDBRemote &packet)
PacketResult Handle_jLLDBTraceGetBinaryData(StringExtractorGDBRemote &packet)
Extension
Extension flag constants, returned by Factory::GetSupportedExtensions() and passed to SetEnabledExten...
std::string LLGSArgToURL(llvm::StringRef url_arg, bool reverse_connect)
PacketResult Handle_qsThreadInfo(StringExtractorGDBRemote &packet)
NativeProcessProtocol * m_continue_process
void ProcessStateChanged(NativeProcessProtocol *process, lldb::StateType state) override
PacketResult SendContinueSuccessResponse()
void SetEnabledExtensions(NativeProcessProtocol &process)
llvm::Expected< std::unique_ptr< llvm::MemoryBuffer > > BuildTargetXml()
PacketResult Handle_vCont_actions(StringExtractorGDBRemote &packet)
static std::string XMLEncodeAttributeValue(llvm::StringRef value)
PacketResult Handle_QThreadSuffixSupported(StringExtractorGDBRemote &packet)
PacketResult Handle_vAttach(StringExtractorGDBRemote &packet)
NativeProcessProtocol::Extension m_extensions_supported
PacketResult Handle_vStdio(StringExtractorGDBRemote &packet)
PacketResult Handle_qGetWorkingDir(StringExtractorGDBRemote &packet)
PacketResult Handle_vKill(StringExtractorGDBRemote &packet)
void DidExec(NativeProcessProtocol *process) override
void EnqueueStopReplyPackets(lldb::tid_t thread_to_skip)
PacketResult Handle_vCont(StringExtractorGDBRemote &packet)
void SetLaunchInfo(const ProcessLaunchInfo &info)
PacketResult Handle_jLLDBTraceGetState(StringExtractorGDBRemote &packet)
NativeThreadProtocol * GetThreadFromSuffix(StringExtractorGDBRemote &packet)
PacketResult Handle_jLLDBTraceStop(StringExtractorGDBRemote &packet)
void RegisterPacketHandlers()
A class that represents a running process on the host machine.
PacketResult Handle_I(StringExtractorGDBRemote &packet)
lldb::tid_t GetCurrentThreadID() const
PacketResult SendONotification(const char *buffer, uint32_t len)
PacketResult Handle_qMemoryRegionInfo(StringExtractorGDBRemote &packet)
PacketResult Handle_qProcessInfo(StringExtractorGDBRemote &packet)
PacketResult Handle_qMemTags(StringExtractorGDBRemote &packet)
PacketResult Handle_memory_read(StringExtractorGDBRemote &packet)
#define LLDB_INVALID_THREAD_ID
StateType
Process and Thread States.
GDBRemoteCommunicationServerLLGS(MainLoop &mainloop, const NativeProcessProtocol::Factory &process_factory)
bool m_disabling_non_stop
void AddProcessThreads(StreamGDBRemote &response, NativeProcessProtocol &process, bool &had_any)
PacketResult Handle_H(StringExtractorGDBRemote &packet)
PacketResult Handle_QSaveRegisterState(StringExtractorGDBRemote &packet)
PacketResult Handle_vCtrlC(StringExtractorGDBRemote &packet)
MainLoop::ReadHandleUP m_network_handle_up
PacketResult Handle__m(StringExtractorGDBRemote &packet)
PacketResult Handle_qRegisterInfo(StringExtractorGDBRemote &packet)
PacketResult Handle_qSaveCore(StringExtractorGDBRemote &packet)
lldb::tid_t m_current_tid
PacketResult Handle_c(StringExtractorGDBRemote &packet)
NativeProcessProtocol * m_current_process
PacketResult Handle_k(StringExtractorGDBRemote &packet)
PacketResult SendStopReplyPacketForThread(NativeProcessProtocol &process, lldb::tid_t tid, bool force_synchronous)
const NativeProcessProtocol::Factory & m_process_factory