diff options
| author | Ed Maste <emaste@FreeBSD.org> | 2013-11-06 16:48:53 +0000 | 
|---|---|---|
| committer | Ed Maste <emaste@FreeBSD.org> | 2013-11-06 16:48:53 +0000 | 
| commit | f21a844f60ae6c74fcf1fddca32461acce3c1ee0 (patch) | |
| tree | 56d79f94966870db1cecd65a7264510a25fd1cba /source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.h | |
| parent | 37d22554be9f5a677dad2a95b7ef22fe59c66a8a (diff) | |
Notes
Diffstat (limited to 'source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.h')
| -rw-r--r-- | source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.h | 75 | 
1 files changed, 73 insertions, 2 deletions
diff --git a/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.h b/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.h index cce0e4e64c1e8..64f6f8de1a210 100644 --- a/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.h +++ b/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.h @@ -12,10 +12,12 @@  // C Includes  // C++ Includes +#include <vector> +#include <set>  // Other libraries and framework includes  // Project includes +#include "lldb/Host/Mutex.h"  #include "lldb/Target/Process.h" -  #include "GDBRemoteCommunication.h"  class ProcessGDBRemote; @@ -60,6 +62,21 @@ public:      {          m_lo_port_num = lo_port_num;          m_hi_port_num = hi_port_num; +        m_next_port = m_lo_port_num; +        m_use_port_range = true; +    } + +    // If we are using a port range, get and update the next port to be used variable. +    // Otherwise, just return 0. +    uint16_t +    GetAndUpdateNextPort () +    { +        if (!m_use_port_range) +            return 0; +        uint16_t val = m_next_port; +        if (++m_next_port > m_hi_port_num) +            m_next_port = m_lo_port_num; +        return val;      }  protected: @@ -68,11 +85,16 @@ protected:      lldb::thread_t m_async_thread;      lldb_private::ProcessLaunchInfo m_process_launch_info;      lldb_private::Error m_process_launch_error; +    std::set<lldb::pid_t> m_spawned_pids; +    lldb_private::Mutex m_spawned_pids_mutex;      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; +    uint16_t m_next_port; +    bool m_use_port_range; +          size_t      SendUnimplementedResponse (const char *packet); @@ -85,7 +107,7 @@ protected:      bool      Handle_A (StringExtractorGDBRemote &packet); - +          bool      Handle_qLaunchSuccess (StringExtractorGDBRemote &packet); @@ -94,8 +116,14 @@ protected:      bool      Handle_qLaunchGDBServer (StringExtractorGDBRemote &packet); +     +    bool +    Handle_qKillSpawnedProcess (StringExtractorGDBRemote &packet);      bool +    Handle_qPlatform_IO_MkDir (StringExtractorGDBRemote &packet); +     +    bool      Handle_qProcessInfoPID (StringExtractorGDBRemote &packet);      bool @@ -120,6 +148,9 @@ protected:      Handle_QEnvironment  (StringExtractorGDBRemote &packet);      bool +    Handle_QLaunchArch (StringExtractorGDBRemote &packet); +     +    bool      Handle_QSetDisableASLR (StringExtractorGDBRemote &packet);      bool @@ -137,7 +168,47 @@ protected:      bool      Handle_QSetSTDERR (StringExtractorGDBRemote &packet); +    bool +    Handle_vFile_Open (StringExtractorGDBRemote &packet); + +    bool +    Handle_vFile_Close (StringExtractorGDBRemote &packet); + +    bool +    Handle_vFile_pRead (StringExtractorGDBRemote &packet); + +    bool +    Handle_vFile_pWrite (StringExtractorGDBRemote &packet); + +    bool +    Handle_vFile_Size (StringExtractorGDBRemote &packet); +     +    bool +    Handle_vFile_Mode (StringExtractorGDBRemote &packet); + +    bool +    Handle_vFile_Exists (StringExtractorGDBRemote &packet); + +    bool +    Handle_vFile_Stat (StringExtractorGDBRemote &packet); +     +    bool +    Handle_vFile_MD5 (StringExtractorGDBRemote &packet); +     +    bool +    Handle_qPlatform_RunCommand (StringExtractorGDBRemote &packet); +  private: +    bool +    DebugserverProcessReaped (lldb::pid_t pid); +     +    static bool +    ReapDebugserverProcess (void *callback_baton, +                            lldb::pid_t pid, +                            bool exited, +                            int signal, +                            int status); +      //------------------------------------------------------------------      // For GDBRemoteCommunicationServer only      //------------------------------------------------------------------  | 
