summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2021-05-17 09:59:14 +0200
committerFlorian Weimer <fweimer@redhat.com>2021-05-17 10:04:06 +0200
commita78e5979a92c7985eadad7246740f3874271303f (patch)
tree7f81163f014fa77b5270950f1679e4a188cdf92a /sysdeps/nptl
parentEnable support for GCC 11 -Wmismatched-dealloc. (diff)
downloadglibc-a78e5979a92c7985eadad7246740f3874271303f.tar.gz
glibc-a78e5979a92c7985eadad7246740f3874271303f.tar.bz2
glibc-a78e5979a92c7985eadad7246740f3874271303f.zip
nptl: Move __nptl_initial_report_events into ld.so/startup code
The initialization of the report_events TCB field is now performed in __tls_init_tp instead of __pthread_initialize_minimal_internal (in libpthread). The events interface is difficult to test because GDB stopped using it in 2015. The td_thr_get_info change to ignore lookup issues is enough to support GDB with this change. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Diffstat (limited to 'sysdeps/nptl')
-rw-r--r--sysdeps/nptl/dl-tls_init_tp.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/sysdeps/nptl/dl-tls_init_tp.c b/sysdeps/nptl/dl-tls_init_tp.c
index f1aaa5aa9d..1f7790297f 100644
--- a/sysdeps/nptl/dl-tls_init_tp.c
+++ b/sysdeps/nptl/dl-tls_init_tp.c
@@ -27,6 +27,9 @@ bool __nptl_set_robust_list_avail __attribute__ ((nocommon));
rtld_hidden_data_def (__nptl_set_robust_list_avail)
#endif
+bool __nptl_initial_report_events __attribute__ ((nocommon));
+rtld_hidden_def (__nptl_initial_report_events)
+
#ifdef SHARED
/* Dummy implementation. See __rtld_mutex_init. */
static int
@@ -63,6 +66,11 @@ __tls_init_tp (void)
THREAD_SETMEM (pd, specific[0], &pd->specific_1stblock[0]);
THREAD_SETMEM (pd, user_stack, true);
+ /* Before initializing GL (dl_stack_user), the debugger could not
+ find us and had to set __nptl_initial_report_events. Propagate
+ its setting. */
+ THREAD_SETMEM (pd, report_events, __nptl_initial_report_events);
+
/* Initialize the robust mutex data. */
{
#if __PTHREAD_MUTEX_HAVE_PREV