Fix thread name updating in Linux. "thread list" should report correct names always now.
Created new LinuxThread class inherited from POSIXThread and removed linux / freebsd ifdefs
Removed several un-needed set thread name calls

CR (and multiple suggestions): mkopec

llvm-svn: 187545
diff --git a/lldb/source/Plugins/Process/Linux/LinuxThread.cpp b/lldb/source/Plugins/Process/Linux/LinuxThread.cpp
new file mode 100644
index 0000000..edb21bd
--- /dev/null
+++ b/lldb/source/Plugins/Process/Linux/LinuxThread.cpp
@@ -0,0 +1,63 @@
+//===-- LinuxThread.cpp -----------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// C Includes
+// C++ Includes
+// Other libraries and framework includes
+// Project includes
+#include "LinuxThread.h"
+
+using namespace lldb;
+using namespace lldb_private;
+
+//------------------------------------------------------------------------------
+// Constructors and destructors.
+
+LinuxThread::LinuxThread(Process &process, lldb::tid_t tid)
+    : POSIXThread(process, tid)
+{
+}
+
+LinuxThread::~LinuxThread()
+{
+}
+
+//------------------------------------------------------------------------------
+// ProcessInterface protocol.
+
+void
+LinuxThread::RefreshStateAfterStop()
+{
+    // Invalidate the thread names every time we get a stop event on Linux so we
+    // will re-read the procfs comm virtual file when folks ask for the thread name.
+    m_thread_name_valid = false;
+
+    POSIXThread::RefreshStateAfterStop();
+}
+
+void
+LinuxThread::TraceNotify(const ProcessMessage &message)
+{
+    RegisterContextPOSIX* reg_ctx = GetRegisterContextPOSIX();
+    if (reg_ctx)
+    {
+        uint32_t num_hw_wps = reg_ctx->NumSupportedHardwareWatchpoints();
+        uint32_t wp_idx;
+        for (wp_idx = 0; wp_idx < num_hw_wps; wp_idx++)
+        {
+            if (reg_ctx->IsWatchpointHit(wp_idx))
+            {
+                WatchNotify(message);
+                return;
+            }
+        }
+    }
+    
+    POSIXThread::TraceNotify (message);
+}
\ No newline at end of file