aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/Host/common/Host.cpp16
-rw-r--r--source/Host/linux/Host.cpp17
-rw-r--r--test/logging/TestLogging.py5
3 files changed, 21 insertions, 17 deletions
diff --git a/source/Host/common/Host.cpp b/source/Host/common/Host.cpp
index 5aee4ad20..2e5b6e98f 100644
--- a/source/Host/common/Host.cpp
+++ b/source/Host/common/Host.cpp
@@ -31,6 +31,7 @@
#if defined (__linux__) || defined (__FreeBSD__) || defined (__FreeBSD_kernel__)
#include <sys/wait.h>
+#include <sys/syscall.h>
#endif
#if defined (__FreeBSD__)
@@ -455,6 +456,8 @@ Host::GetCurrentThreadID()
return thread_self;
#elif defined(__FreeBSD__)
return lldb::tid_t(pthread_getthreadid_np());
+#elif defined(__linux__)
+ return lldb::tid_t(syscall(SYS_gettid));
#else
return lldb::tid_t(pthread_self());
#endif
@@ -660,7 +663,7 @@ Host::SetThreadName (lldb::pid_t pid, lldb::tid_t tid, const char *name)
// Set the pthread name if possible
if (pid == curr_pid && tid == curr_tid)
{
- ::pthread_set_name_np(::pthread_self(), name);
+ ::pthread_set_name_np (::pthread_self(), name);
return true;
}
return false;
@@ -668,21 +671,20 @@ Host::SetThreadName (lldb::pid_t pid, lldb::tid_t tid, const char *name)
void *fn = dlsym (RTLD_DEFAULT, "pthread_setname_np");
if (fn)
{
- int (*pthread_setname_np_func)(pthread_t thread, const char *name);
- *reinterpret_cast<void **> (&pthread_setname_np_func) = fn;
-
lldb::pid_t curr_pid = Host::GetCurrentProcessID();
lldb::tid_t curr_tid = Host::GetCurrentThreadID();
-
if (pid == LLDB_INVALID_PROCESS_ID)
pid = curr_pid;
if (tid == LLDB_INVALID_THREAD_ID)
tid = curr_tid;
- if (pid == curr_pid)
+ if (pid == curr_pid && tid == curr_tid)
{
- if (pthread_setname_np_func (tid, name) == 0)
+ int (*pthread_setname_np_func)(pthread_t thread, const char *name);
+ *reinterpret_cast<void **> (&pthread_setname_np_func) = fn;
+
+ if (pthread_setname_np_func (::pthread_self(), name) == 0)
return true;
}
}
diff --git a/source/Host/linux/Host.cpp b/source/Host/linux/Host.cpp
index c7120e2b7..0efc89ad7 100644
--- a/source/Host/linux/Host.cpp
+++ b/source/Host/linux/Host.cpp
@@ -451,18 +451,17 @@ Host::ThreadCreated (const char *thread_name)
std::string
Host::GetThreadName (lldb::pid_t pid, lldb::tid_t tid)
{
+ assert(pid != LLDB_INVALID_PROCESS_ID);
+ assert(tid != LLDB_INVALID_THREAD_ID);
+
// Read /proc/$TID/comm file.
lldb::DataBufferSP buf_sp = ReadProcPseudoFile (tid, "comm");
- if (buf_sp->GetByteSize())
- {
- const char *comm_str = (const char *)buf_sp->GetBytes();
- const char *cr_str = ::strchr(comm_str, '\n');
- size_t length = cr_str ? (cr_str - comm_str) : buf_sp->GetByteSize();
+ const char *comm_str = (const char *)buf_sp->GetBytes();
+ const char *cr_str = ::strchr(comm_str, '\n');
+ size_t length = cr_str ? (cr_str - comm_str) : strlen(comm_str);
- std::string thread_name(comm_str, length);
- return thread_name;
- }
- return std::string("");
+ std::string thread_name(comm_str, length);
+ return thread_name;
}
void
diff --git a/test/logging/TestLogging.py b/test/logging/TestLogging.py
index 12b3b84a9..368708f33 100644
--- a/test/logging/TestLogging.py
+++ b/test/logging/TestLogging.py
@@ -34,7 +34,10 @@ class LogTestCase(TestBase):
if (os.path.exists (log_file)):
os.remove (log_file)
- self.runCmd ("log enable -f '%s' lldb commands" % (log_file))
+ # By default, Debugger::EnableLog() will set log options to
+ # PREPEND_THREAD_NAME + OPTION_THREADSAFE. We don't want the
+ # threadnames here, so we enable just threadsafe (-t).
+ self.runCmd ("log enable -t -f '%s' lldb commands" % (log_file))
self.runCmd ("command alias bp breakpoint")