diff options
| author | Todd Fiala <todd.fiala@gmail.com> | 2014-08-29 17:35:57 +0000 |
|---|---|---|
| committer | Todd Fiala <todd.fiala@gmail.com> | 2014-08-29 17:35:57 +0000 |
| commit | 4ceced3f597f71e3b28d9e4f208d2786fff1ff45 (patch) | |
| tree | 362e9f32a697d2b21c9f68c67e09646f00249e4c /lldb/source/Plugins/Process/Linux | |
| parent | b5796cb40e6f7a5e504d8da41d0f31d4539d7110 (diff) | |
| download | bcm5719-llvm-4ceced3f597f71e3b28d9e4f208d2786fff1ff45.tar.gz bcm5719-llvm-4ceced3f597f71e3b28d9e4f208d2786fff1ff45.zip | |
Consolidate UnixSignals setting/getting in Process.
See http://reviews.llvm.org/D5108 for details.
This change does the following:
* eliminates the Process::GetUnixSignals() virtual method and replaces with a fixed getter.
* replaces the Process UnixSignals storage with a shared pointer.
* adds a Process constructor variant that can be passed the UnixSignalsSP. When the constructor without the UnixSignalsSP is specified, the Host's default UnixSignals is used.
* adds a host-specific version of GetUnixSignals() that is used when we need the host's appropriate UnixSignals variant.
* replaces GetUnixSignals() overrides in PlatformElfCore, ProcessGDBRemote, ProcessFreeBSD and ProcessLinux with code that appropriately sets the Process::UnixSignals for the process.
This change also enables some future patches that will enable llgs to be used for local Linux debugging.
llvm-svn: 216748
Diffstat (limited to 'lldb/source/Plugins/Process/Linux')
| -rw-r--r-- | lldb/source/Plugins/Process/Linux/ProcessLinux.cpp | 13 | ||||
| -rw-r--r-- | lldb/source/Plugins/Process/Linux/ProcessLinux.h | 14 |
2 files changed, 12 insertions, 15 deletions
diff --git a/lldb/source/Plugins/Process/Linux/ProcessLinux.cpp b/lldb/source/Plugins/Process/Linux/ProcessLinux.cpp index dae14d1c44c..81151b682d4 100644 --- a/lldb/source/Plugins/Process/Linux/ProcessLinux.cpp +++ b/lldb/source/Plugins/Process/Linux/ProcessLinux.cpp @@ -22,12 +22,23 @@ #include "ProcessLinux.h" #include "ProcessPOSIXLog.h" #include "Plugins/Process/Utility/InferiorCallPOSIX.h" +#include "Plugins/Process/Utility/LinuxSignals.h" #include "ProcessMonitor.h" #include "LinuxThread.h" using namespace lldb; using namespace lldb_private; +namespace +{ + UnixSignalsSP& + GetStaticLinuxSignalsSP () + { + static UnixSignalsSP s_unix_signals_sp (new process_linux::LinuxSignals ()); + return s_unix_signals_sp; + } +} + //------------------------------------------------------------------------------ // Static functions. @@ -64,7 +75,7 @@ ProcessLinux::Initialize() // Constructors and destructors. ProcessLinux::ProcessLinux(Target& target, Listener &listener, FileSpec *core_file) - : ProcessPOSIX(target, listener), m_core_file(core_file), m_stopping_threads(false) + : ProcessPOSIX(target, listener, GetStaticLinuxSignalsSP ()), m_core_file(core_file), m_stopping_threads(false) { #if 0 // FIXME: Putting this code in the ctor and saving the byte order in a diff --git a/lldb/source/Plugins/Process/Linux/ProcessLinux.h b/lldb/source/Plugins/Process/Linux/ProcessLinux.h index da7eb437ba3..8618bcc1ef8 100644 --- a/lldb/source/Plugins/Process/Linux/ProcessLinux.h +++ b/lldb/source/Plugins/Process/Linux/ProcessLinux.h @@ -20,8 +20,6 @@ #include "ProcessMessage.h" #include "ProcessPOSIX.h" -#include "Plugins/Process/Utility/LinuxSignals.h" - class ProcessMonitor; class ProcessLinux : @@ -84,15 +82,6 @@ public: EnablePluginLogging(lldb_private::Stream *strm, lldb_private::Args &command); - //------------------------------------------------------------------ - // Plug-in process overrides - //------------------------------------------------------------------ - virtual lldb_private::UnixSignals & - GetUnixSignals () - { - return m_linux_signals; - } - virtual bool CanDebug(lldb_private::Target &target, bool plugin_specified_by_name); @@ -107,9 +96,6 @@ public: private: - /// Linux-specific signal set. - process_linux::LinuxSignals m_linux_signals; - lldb_private::FileSpec *m_core_file; // Flag to avoid recursion when stopping all threads. |

