This patch combines common code from Linux and FreeBSD into
a new POSIX platform.  It also contains fixes for 64bit FreeBSD.

The patch is based on changes by Mark Peek <mp@FreeBSD.org> and
"K. Macy" <kmacy@freebsd.org> in their github repo located at
https://github.com/fbsd/lldb.


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@147609 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Plugins/Process/Linux/ProcessLinux.h b/source/Plugins/Process/Linux/ProcessLinux.h
index 1f67d54..cef8a66 100644
--- a/source/Plugins/Process/Linux/ProcessLinux.h
+++ b/source/Plugins/Process/Linux/ProcessLinux.h
@@ -19,11 +19,12 @@
 #include "lldb/Target/Process.h"
 #include "LinuxSignals.h"
 #include "ProcessMessage.h"
+#include "ProcessPOSIX.h"
 
 class ProcessMonitor;
 
 class ProcessLinux :
-    public lldb_private::Process
+    public ProcessPOSIX
 {
 public:
     //------------------------------------------------------------------
@@ -51,97 +52,8 @@
     ProcessLinux(lldb_private::Target& target,
                  lldb_private::Listener &listener);
 
-    virtual
-    ~ProcessLinux();
-
-    //------------------------------------------------------------------
-    // Process protocol.
-    //------------------------------------------------------------------
-    virtual bool
-    CanDebug(lldb_private::Target &target, bool plugin_specified_by_name);
-
-    virtual lldb_private::Error
-    WillLaunch(lldb_private::Module *module);
-
-    virtual lldb_private::Error
-    DoAttachToProcessWithID(lldb::pid_t pid);
-
-    virtual lldb_private::Error
-    DoLaunch (lldb_private::Module *exe_module, 
-              const lldb_private::ProcessLaunchInfo &launch_info);
-
-    virtual void
-    DidLaunch();
-
-    virtual lldb_private::Error
-    DoResume();
-
-    virtual lldb_private::Error
-    DoHalt(bool &caused_stop);
-
-    virtual lldb_private::Error
-    DoDetach();
-
-    virtual lldb_private::Error
-    DoSignal(int signal);
-
-    virtual lldb_private::Error
-    DoDestroy();
-
-    virtual void
-    RefreshStateAfterStop();
-
-    virtual bool
-    IsAlive();
-
-    virtual size_t
-    DoReadMemory(lldb::addr_t vm_addr,
-                 void *buf,
-                 size_t size,
-                 lldb_private::Error &error);
-
-    virtual size_t
-    DoWriteMemory(lldb::addr_t vm_addr, const void *buf, size_t size,
-                  lldb_private::Error &error);
-
-    virtual lldb::addr_t
-    DoAllocateMemory(size_t size, uint32_t permissions,
-                     lldb_private::Error &error);
-
-    virtual lldb_private::Error
-    DoDeallocateMemory(lldb::addr_t ptr);
-
-    virtual size_t
-    GetSoftwareBreakpointTrapOpcode(lldb_private::BreakpointSite* bp_site);
-
-    virtual lldb_private::Error
-    EnableBreakpoint(lldb_private::BreakpointSite *bp_site);
-
-    virtual lldb_private::Error
-    DisableBreakpoint(lldb_private::BreakpointSite *bp_site);
-
     virtual uint32_t
-    UpdateThreadListIfNeeded();
-
-    uint32_t
-    UpdateThreadList(lldb_private::ThreadList &old_thread_list, 
-                     lldb_private::ThreadList &new_thread_list);
-
-    virtual lldb::ByteOrder
-    GetByteOrder() const;
-
-    virtual lldb::addr_t
-    GetImageInfoAddress();
-
-    virtual size_t
-    PutSTDIN(const char *buf, size_t len, lldb_private::Error &error);
-
-    virtual size_t
-    GetSTDOUT(char *buf, size_t len, lldb_private::Error &error);
-
-    virtual size_t
-    GetSTDERR(char *buf, size_t len, lldb_private::Error &error);
-
+    UpdateThreadList(lldb_private::ThreadList &old_thread_list, lldb_private::ThreadList &new_thread_list);
     //------------------------------------------------------------------
     // PluginInterface protocol
     //------------------------------------------------------------------
@@ -165,59 +77,11 @@
     EnablePluginLogging(lldb_private::Stream *strm,
                         lldb_private::Args &command);
 
-    //--------------------------------------------------------------------------
-    // ProcessLinux internal API.
-
-    /// Registers the given message with this process.
-    void SendMessage(const ProcessMessage &message);
-
-    ProcessMonitor &
-    GetMonitor() { assert(m_monitor); return *m_monitor; }
-
-    lldb_private::UnixSignals &
-    GetUnixSignals();
-
 private:
-    /// Target byte order.
-    lldb::ByteOrder m_byte_order;
-
-    /// Process monitor;
-    ProcessMonitor *m_monitor;
-
-    /// The module we are executing.
-    lldb_private::Module *m_module;
-
-    /// Message queue notifying this instance of inferior process state changes.
-    lldb_private::Mutex m_message_mutex;
-    std::queue<ProcessMessage> m_message_queue;
-
-    /// True when the process has entered a state of "limbo".
-    ///
-    /// This flag qualifies eStateStopped.  It lets us know that when we
-    /// continue from this state the process will exit.  Also, when true,
-    /// Process::m_exit_status is set.
-    bool m_in_limbo;
-
-    /// Drive any exit events to completion.
-    bool m_exit_now;
 
     /// Linux-specific signal set.
     LinuxSignals m_linux_signals;
 
-    /// Updates the loaded sections provided by the executable.
-    ///
-    /// FIXME:  It would probably be better to delegate this task to the
-    /// DynamicLoader plugin, when we have one.
-    void UpdateLoadedSections();
-
-    /// Returns true if the process has exited.
-    bool HasExited();
-
-    /// Returns true if the process is stopped.
-    bool IsStopped();
-
-    typedef std::map<lldb::addr_t, lldb::addr_t> MMapMap;
-    MMapMap m_addr_to_mmap_size;
 };
 
 #endif  // liblldb_MacOSXProcess_H_