aboutsummaryrefslogtreecommitdiff
path: root/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.h
diff options
context:
space:
mode:
authorEd Maste <emaste@FreeBSD.org>2013-08-23 17:46:38 +0000
committerEd Maste <emaste@FreeBSD.org>2013-08-23 17:46:38 +0000
commitf034231a6a1fd5d6395206c1651de8cd9402cca3 (patch)
treef561dabc721ad515599172c16da3a4400b7f4aec /source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.h
downloadsrc-f034231a6a1fd5d6395206c1651de8cd9402cca3.tar.gz
src-f034231a6a1fd5d6395206c1651de8cd9402cca3.zip
Import lldb as of SVN r188801
(A number of files not required for the FreeBSD build have been removed.) Sponsored by: DARPA, AFRL
Notes
Notes: svn path=/vendor/lldb/dist/; revision=254721
Diffstat (limited to 'source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.h')
-rw-r--r--source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.h147
1 files changed, 147 insertions, 0 deletions
diff --git a/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.h b/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.h
new file mode 100644
index 000000000000..cce0e4e64c1e
--- /dev/null
+++ b/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.h
@@ -0,0 +1,147 @@
+//===-- GDBRemoteCommunicationServer.h --------------------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef liblldb_GDBRemoteCommunicationServer_h_
+#define liblldb_GDBRemoteCommunicationServer_h_
+
+// C Includes
+// C++ Includes
+// Other libraries and framework includes
+// Project includes
+#include "lldb/Target/Process.h"
+
+#include "GDBRemoteCommunication.h"
+
+class ProcessGDBRemote;
+class StringExtractorGDBRemote;
+
+class GDBRemoteCommunicationServer : public GDBRemoteCommunication
+{
+public:
+ enum
+ {
+ eBroadcastBitRunPacketSent = kLoUserBroadcastBit
+ };
+ //------------------------------------------------------------------
+ // Constructors and Destructors
+ //------------------------------------------------------------------
+ GDBRemoteCommunicationServer(bool is_platform);
+
+ virtual
+ ~GDBRemoteCommunicationServer();
+
+ bool
+ GetPacketAndSendResponse (uint32_t timeout_usec,
+ lldb_private::Error &error,
+ bool &interrupt,
+ bool &quit);
+
+ virtual bool
+ GetThreadSuffixSupported ()
+ {
+ return true;
+ }
+
+ // After connecting, do a little handshake with the client to make sure
+ // we are at least communicating
+ bool
+ HandshakeWithClient (lldb_private::Error *error_ptr);
+
+ // Set both ports to zero to let the platform automatically bind to
+ // a port chosen by the OS.
+ void
+ SetPortRange (uint16_t lo_port_num, uint16_t hi_port_num)
+ {
+ m_lo_port_num = lo_port_num;
+ m_hi_port_num = hi_port_num;
+ }
+
+protected:
+ //typedef std::map<uint16_t, lldb::pid_t> PortToPIDMap;
+
+ lldb::thread_t m_async_thread;
+ lldb_private::ProcessLaunchInfo m_process_launch_info;
+ lldb_private::Error m_process_launch_error;
+ lldb_private::ProcessInstanceInfoList m_proc_infos;
+ uint32_t m_proc_infos_index;
+ uint16_t m_lo_port_num;
+ uint16_t m_hi_port_num;
+ //PortToPIDMap m_port_to_pid_map;
+
+ size_t
+ SendUnimplementedResponse (const char *packet);
+
+ size_t
+ SendErrorResponse (uint8_t error);
+
+ size_t
+ SendOKResponse ();
+
+ bool
+ Handle_A (StringExtractorGDBRemote &packet);
+
+ bool
+ Handle_qLaunchSuccess (StringExtractorGDBRemote &packet);
+
+ bool
+ Handle_qHostInfo (StringExtractorGDBRemote &packet);
+
+ bool
+ Handle_qLaunchGDBServer (StringExtractorGDBRemote &packet);
+
+ bool
+ Handle_qProcessInfoPID (StringExtractorGDBRemote &packet);
+
+ bool
+ Handle_qfProcessInfo (StringExtractorGDBRemote &packet);
+
+ bool
+ Handle_qsProcessInfo (StringExtractorGDBRemote &packet);
+
+ bool
+ Handle_qC (StringExtractorGDBRemote &packet);
+
+ bool
+ Handle_qUserName (StringExtractorGDBRemote &packet);
+
+ bool
+ Handle_qGroupName (StringExtractorGDBRemote &packet);
+
+ bool
+ Handle_qSpeedTest (StringExtractorGDBRemote &packet);
+
+ bool
+ Handle_QEnvironment (StringExtractorGDBRemote &packet);
+
+ bool
+ Handle_QSetDisableASLR (StringExtractorGDBRemote &packet);
+
+ bool
+ Handle_QSetWorkingDir (StringExtractorGDBRemote &packet);
+
+ bool
+ Handle_QStartNoAckMode (StringExtractorGDBRemote &packet);
+
+ bool
+ Handle_QSetSTDIN (StringExtractorGDBRemote &packet);
+
+ bool
+ Handle_QSetSTDOUT (StringExtractorGDBRemote &packet);
+
+ bool
+ Handle_QSetSTDERR (StringExtractorGDBRemote &packet);
+
+private:
+ //------------------------------------------------------------------
+ // For GDBRemoteCommunicationServer only
+ //------------------------------------------------------------------
+ DISALLOW_COPY_AND_ASSIGN (GDBRemoteCommunicationServer);
+};
+
+#endif // liblldb_GDBRemoteCommunicationServer_h_