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_