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
diff --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
index b50f071..f35d954 100644
--- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
+++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
@@ -287,8 +287,7 @@
     m_waiting_for_attach (false),
     m_destroy_tried_resuming (false),
     m_command_sp (),
-    m_breakpoint_pc_offset (0),
-    m_unix_signals_sp (new UnixSignals ())
+    m_breakpoint_pc_offset (0)
 {
     m_async_broadcaster.SetEventName (eBroadcastBitAsyncThreadShouldExit,   "async thread should exit");
     m_async_broadcaster.SetEventName (eBroadcastBitAsyncContinue,           "async thread continue");
@@ -713,19 +712,19 @@
             switch (arch_spec.GetTriple ().getOS ())
             {
             case llvm::Triple::Linux:
-                m_unix_signals_sp.reset (new process_linux::LinuxSignals ());
+                SetUnixSignals (UnixSignalsSP (new process_linux::LinuxSignals ()));
                 if (log)
                     log->Printf ("ProcessGDBRemote::%s using Linux unix signals type for pid %" PRIu64, __FUNCTION__, GetID ());
                 break;
             case llvm::Triple::OpenBSD:
             case llvm::Triple::FreeBSD:
             case llvm::Triple::NetBSD:
-                m_unix_signals_sp.reset (new FreeBSDSignals ());
+                SetUnixSignals (UnixSignalsSP (new FreeBSDSignals ()));
                 if (log)
                     log->Printf ("ProcessGDBRemote::%s using *BSD unix signals type for pid %" PRIu64, __FUNCTION__, GetID ());
                 break;
             default:
-                m_unix_signals_sp.reset (new UnixSignals ());
+                SetUnixSignals (UnixSignalsSP (new UnixSignals ()));
                 if (log)
                     log->Printf ("ProcessGDBRemote::%s using generic unix signals type for pid %" PRIu64, __FUNCTION__, GetID ());
                 break;
@@ -1086,13 +1085,6 @@
     DidLaunchOrAttach (process_arch);
 }
 
-UnixSignals&
-ProcessGDBRemote::GetUnixSignals ()
-{
-    assert (m_unix_signals_sp && "m_unix_signals_sp is null");
-    return *m_unix_signals_sp;
-}
-
 Error
 ProcessGDBRemote::DoAttachToProcessWithID (lldb::pid_t attach_pid)
 {