From: Tom Tromey Date: Sat, 12 Oct 2019 19:06:18 +0000 (-0600) Subject: Set names of worker threads X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=4da8c3a8a5d1962d24fb374122c473f930eba386;p=binutils-gdb.git Set names of worker threads This adds some configury so that gdb can set the names of worker threads. This makes them show up more nicely when debugging gdb itself. 2019-11-26 Tom Tromey * gdbsupport/thread-pool.c (thread_pool::set_thread_count): Set name of worker thread. * gdbsupport/common.m4 (GDB_AC_COMMON): Check for pthread_setname_np. * configure, config.in: Rebuild. gdb/gdbserver/ChangeLog 2019-11-26 Tom Tromey * configure, config.in: Rebuild. Change-Id: I60473d65ae9ae14d8c56ddde39684240c16aaf35 --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 0c5aab26d30..94a8bdc8dc1 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2019-11-26 Tom Tromey + + * gdbsupport/thread-pool.c (thread_pool::set_thread_count): Set + name of worker thread. + * gdbsupport/common.m4 (GDB_AC_COMMON): Check for + pthread_setname_np. + * configure, config.in: Rebuild. + 2019-11-26 Tom Tromey * python/python.c (class gdbpy_gil): New. diff --git a/gdb/config.in b/gdb/config.in index 61e63e23300..1caf76481b9 100644 --- a/gdb/config.in +++ b/gdb/config.in @@ -342,6 +342,9 @@ /* Have PTHREAD_PRIO_INHERIT. */ #undef HAVE_PTHREAD_PRIO_INHERIT +/* Define to 1 if you have the `pthread_setname_np' function. */ +#undef HAVE_PTHREAD_SETNAME_NP + /* Define to 1 if you have the `pthread_sigmask' function. */ #undef HAVE_PTHREAD_SIGMASK diff --git a/gdb/configure b/gdb/configure index dd936d247e3..6b64619df7a 100755 --- a/gdb/configure +++ b/gdb/configure @@ -14333,12 +14333,13 @@ $as_echo "$gdb_cv_cxx_std_thread" >&6; } # This check must be here, while LIBS includes any necessary # threading library. - for ac_func in pthread_sigmask + for ac_func in pthread_sigmask pthread_setname_np do : - ac_fn_cxx_check_func "$LINENO" "pthread_sigmask" "ac_cv_func_pthread_sigmask" -if test "x$ac_cv_func_pthread_sigmask" = xyes; then : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_cxx_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF -#define HAVE_PTHREAD_SIGMASK 1 +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog index 00b0a0df025..de6c311e076 100644 --- a/gdb/gdbserver/ChangeLog +++ b/gdb/gdbserver/ChangeLog @@ -1,3 +1,7 @@ +2019-11-26 Tom Tromey + + * configure, config.in: Rebuild. + 2019-11-26 Tom Tromey * remote-utils.c (block_unblock_async_io): Use gdb_sigmask. diff --git a/gdb/gdbserver/config.in b/gdb/gdbserver/config.in index 3027ffa1b1c..14cf7099e39 100644 --- a/gdb/gdbserver/config.in +++ b/gdb/gdbserver/config.in @@ -195,6 +195,9 @@ /* Have PTHREAD_PRIO_INHERIT. */ #undef HAVE_PTHREAD_PRIO_INHERIT +/* Define to 1 if you have the `pthread_setname_np' function. */ +#undef HAVE_PTHREAD_SETNAME_NP + /* Define to 1 if you have the `pthread_sigmask' function. */ #undef HAVE_PTHREAD_SIGMASK diff --git a/gdb/gdbserver/configure b/gdb/gdbserver/configure index 8d34a6c3059..da17f8cb2cc 100755 --- a/gdb/gdbserver/configure +++ b/gdb/gdbserver/configure @@ -7725,12 +7725,13 @@ $as_echo "$gdb_cv_cxx_std_thread" >&6; } # This check must be here, while LIBS includes any necessary # threading library. - for ac_func in pthread_sigmask + for ac_func in pthread_sigmask pthread_setname_np do : - ac_fn_cxx_check_func "$LINENO" "pthread_sigmask" "ac_cv_func_pthread_sigmask" -if test "x$ac_cv_func_pthread_sigmask" = xyes; then : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_cxx_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF -#define HAVE_PTHREAD_SIGMASK 1 +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi diff --git a/gdb/gdbsupport/common.m4 b/gdb/gdbsupport/common.m4 index e993b202487..4f2bb5218d5 100644 --- a/gdb/gdbsupport/common.m4 +++ b/gdb/gdbsupport/common.m4 @@ -57,7 +57,7 @@ AC_DEFUN([GDB_AC_COMMON], [ # This check must be here, while LIBS includes any necessary # threading library. - AC_CHECK_FUNCS([pthread_sigmask]) + AC_CHECK_FUNCS([pthread_sigmask pthread_setname_np]) LIBS="$save_LIBS" CXXFLAGS="$save_CXXFLAGS" diff --git a/gdb/gdbsupport/thread-pool.c b/gdb/gdbsupport/thread-pool.c index 8282ea374bc..d19ae02e3ef 100644 --- a/gdb/gdbsupport/thread-pool.c +++ b/gdb/gdbsupport/thread-pool.c @@ -26,6 +26,19 @@ #include "gdbsupport/block-signals.h" #include +/* On the off chance that we have the pthread library on a Windows + host, but std::thread is not using it, avoid calling + pthread_setname_np on Windows. */ +#ifndef _WIN32 +#ifdef HAVE_PTHREAD_SETNAME_NP +#define USE_PTHREAD_SETNAME_NP +#endif +#endif + +#ifdef USE_PTHREAD_SETNAME_NP +#include +#endif + namespace gdb { @@ -62,6 +75,9 @@ thread_pool::set_thread_count (size_t num_threads) for (size_t i = m_thread_count; i < num_threads; ++i) { std::thread thread (&thread_pool::thread_function, this); +#ifdef USE_PTHREAD_SETNAME_NP + pthread_setname_np (thread.native_handle (), "gdb worker"); +#endif thread.detach (); } }