diff options
author | Florian Weimer <fweimer@redhat.com> | 2021-06-28 14:33:53 +0200 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2021-06-28 15:05:42 +0200 |
commit | fef400a2f976d1fd6a4639e6980f6c50ee13fbf5 (patch) | |
tree | cb92de8390f3c38c40f54e6dc496b39ae449563a /nptl | |
parent | b369cc4e9c2436b9b4f56128059313b69b0c300d (diff) | |
download | glibc-fef400a2f976d1fd6a4639e6980f6c50ee13fbf5.tar.gz glibc-fef400a2f976d1fd6a4639e6980f6c50ee13fbf5.tar.xz glibc-fef400a2f976d1fd6a4639e6980f6c50ee13fbf5.zip |
nptl: Export libthread_db-used symbols under GLIBC_PRIVATE
This allows distributions to strip debugging information from libc.so.6 without impacting the debugging experience. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Diffstat (limited to 'nptl')
-rw-r--r-- | nptl/Versions | 58 | ||||
-rw-r--r-- | nptl/pthread_create.c | 13 |
2 files changed, 66 insertions, 5 deletions
diff --git a/nptl/Versions b/nptl/Versions index e4fae73c0b..060d8d5dec 100644 --- a/nptl/Versions +++ b/nptl/Versions @@ -403,10 +403,14 @@ libc { __nptl_deallocate_tsd; __nptl_death_event; __nptl_free_tcb; + __nptl_last_event; __nptl_nthreads; + __nptl_rtld_global; __nptl_setxid_sighandler; __nptl_stack_list_add; __nptl_stack_list_del; + __nptl_threads_events; + __nptl_version; __pthread_attr_copy; __pthread_attr_destroy; __pthread_attr_init; @@ -430,6 +434,60 @@ libc { __pthread_unwind; __sched_fifo_max_prio; __sched_fifo_min_prio; + _thread_db___nptl_last_event; + _thread_db___nptl_nthreads; + _thread_db___nptl_rtld_global; + _thread_db___pthread_keys; + _thread_db_const_thread_area; + _thread_db_dtv_dtv; + _thread_db_dtv_slotinfo_gen; + _thread_db_dtv_slotinfo_list_len; + _thread_db_dtv_slotinfo_list_next; + _thread_db_dtv_slotinfo_list_slotinfo; + _thread_db_dtv_slotinfo_map; + _thread_db_dtv_t_counter; + _thread_db_dtv_t_pointer_val; + _thread_db_link_map_l_tls_modid; + _thread_db_link_map_l_tls_offset; + _thread_db_list_t_next; + _thread_db_list_t_prev; + _thread_db_pthread_cancelhandling; + _thread_db_pthread_dtvp; + _thread_db_pthread_eventbuf; + _thread_db_pthread_eventbuf_eventmask; + _thread_db_pthread_eventbuf_eventmask_event_bits; + _thread_db_pthread_key_data_data; + _thread_db_pthread_key_data_level2_data; + _thread_db_pthread_key_data_seq; + _thread_db_pthread_key_struct_destr; + _thread_db_pthread_key_struct_seq; + _thread_db_pthread_list; + _thread_db_pthread_nextevent; + _thread_db_pthread_report_events; + _thread_db_pthread_schedparam_sched_priority; + _thread_db_pthread_schedpolicy; + _thread_db_pthread_specific; + _thread_db_pthread_start_routine; + _thread_db_pthread_tid; + _thread_db_register32; + _thread_db_register32_thread_area; + _thread_db_register64; + _thread_db_register64_thread_area; + _thread_db_rtld_global__dl_stack_used; + _thread_db_rtld_global__dl_stack_user; + _thread_db_rtld_global__dl_tls_dtv_slotinfo_list; + _thread_db_sizeof_dtv_slotinfo; + _thread_db_sizeof_dtv_slotinfo_list; + _thread_db_sizeof_list_t; + _thread_db_sizeof_pthread; + _thread_db_sizeof_pthread_key_data; + _thread_db_sizeof_pthread_key_data_level2; + _thread_db_sizeof_pthread_key_struct; + _thread_db_sizeof_td_eventbuf_t; + _thread_db_sizeof_td_thr_events_t; + _thread_db_td_eventbuf_t_eventdata; + _thread_db_td_eventbuf_t_eventnum; + _thread_db_td_thr_events_t_event_bits; } } diff --git a/nptl/pthread_create.c b/nptl/pthread_create.c index 3f017f1e26..d1b6817a81 100644 --- a/nptl/pthread_create.c +++ b/nptl/pthread_create.c @@ -43,21 +43,24 @@ /* Globally enabled events. */ -static td_thr_events_t __nptl_threads_events __attribute_used__; +td_thr_events_t __nptl_threads_events __attribute__ ((nocommon)); +libc_hidden_proto (__nptl_threads_events) +libc_hidden_data_def (__nptl_threads_events) /* Pointer to descriptor with the last event. */ -static struct pthread *__nptl_last_event __attribute_used__; +struct pthread *__nptl_last_event __attribute__ ((nocommon)); +libc_hidden_proto (__nptl_last_event) +libc_hidden_data_def (__nptl_last_event) #ifdef SHARED /* This variable is used to access _rtld_global from libthread_db. If GDB loads libpthread before ld.so, it is not possible to resolve _rtld_global directly during libpthread initialization. */ -static struct rtld_global *__nptl_rtld_global __attribute_used__ - = &_rtld_global; +struct rtld_global *__nptl_rtld_global = &_rtld_global; #endif /* Version of the library, used in libthread_db to detect mismatches. */ -static const char nptl_version[] __attribute_used__ = VERSION; +const char __nptl_version[] = VERSION; /* This performs the initialization necessary when going from single-threaded to multi-threaded mode for the first time. */ |