From patchwork Mon Jun 28 09:09:07 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Weimer X-Patchwork-Id: 44029 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id A760E395192B for ; Mon, 28 Jun 2021 09:10:15 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A760E395192B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1624871415; bh=fDOWr2dflipEO0KCJ/OnSVMSJ89eSilv/hkBgmg/UEA=; h=To:Subject:In-Reply-To:References:Date:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=ZJA0yTy35qes2kOHKfq8P1h93ztbUze58zYgP5AvPpcAZEbQWSN5cT2a9UAF2OPGA vhJTky58EvdlLigwzg/mNPjGDDHXdb+xSk+R3tJ1nhMI0kzGOypTYT4sGSc4xV6ng2 GfQMqaZ/4xTAPkwEY4cUb2tOkjF/v+ODErfls+vg= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by sourceware.org (Postfix) with ESMTP id A7F3B39518AC for ; Mon, 28 Jun 2021 09:09:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org A7F3B39518AC Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-17-KLE0flR-OeubN2wH7yjeRg-1; Mon, 28 Jun 2021 05:09:11 -0400 X-MC-Unique: KLE0flR-OeubN2wH7yjeRg-1 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id EA60B1835AC7 for ; Mon, 28 Jun 2021 09:09:10 +0000 (UTC) Received: from oldenburg.str.redhat.com (ovpn-112-228.ams2.redhat.com [10.36.112.228]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 7B6DA60C9F for ; Mon, 28 Jun 2021 09:09:09 +0000 (UTC) To: libc-alpha@sourceware.org Subject: [PATCH 1/3] nptl_db: Clean up main/rtld variable handling In-Reply-To: References: X-From-Line: cd11e45467f47c8d12bb5c0d6e6a8638eb041032 Mon Sep 17 00:00:00 2001 Message-Id: Date: Mon, 28 Jun 2021 11:09:07 +0200 User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-12.7 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Florian Weimer via Libc-alpha From: Florian Weimer Reply-To: Florian Weimer Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" Most symbols are now in libc.so.6. The "main" (exempted from coverage checks) status is therefore not necessary. Use DB_MAIN_VARIABLE for the remaining separate symbol, __nptl_initial_report_events. DB_RTLD_VARIABLE is now unused, so remove it. Reviewed-by: Carlos O'Donell Tested-by: Carlos O'Donell --- nptl_db/db-symbols.awk | 1 - nptl_db/structs.def | 14 +++++--------- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/nptl_db/db-symbols.awk b/nptl_db/db-symbols.awk index 6f326cf379..ef1d91b167 100644 --- a/nptl_db/db-symbols.awk +++ b/nptl_db/db-symbols.awk @@ -2,7 +2,6 @@ # we've just built. It checks for all the symbols used in td_symbol_list. BEGIN { -%define DB_RTLD_VARIABLE(name) /* Nothing. */ %define DB_MAIN_VARIABLE(name) /* Nothing. */ %define DB_MAIN_SYMBOL(name) /* Nothing. */ %define DB_MAIN_ARRAY_VARIABLE(name) /* Nothing. */ diff --git a/nptl_db/structs.def b/nptl_db/structs.def index 6a726f207e..fb7bb9367d 100644 --- a/nptl_db/structs.def +++ b/nptl_db/structs.def @@ -22,10 +22,6 @@ # define STRUCTS_DEF_DEFAULTS 1 #endif -#ifndef DB_RTLD_VARIABLE -# define DB_RTLD_VARIABLE(name) DB_VARIABLE (name) -#endif - /* DB_MAIN_VARIABLE, DB_MAIN_SYMBOL, DB_MAIN_ARRAY_VARIABLE are not covered by the libc symbol check in db-symbols.awk. */ #ifndef DB_MAIN_VARIABLE @@ -78,14 +74,14 @@ DB_STRUCT_FIELD (td_eventbuf_t, eventnum) DB_STRUCT_FIELD (td_eventbuf_t, eventdata) DB_SYMBOL (nptl_version) -DB_MAIN_SYMBOL (__nptl_create_event) -DB_MAIN_SYMBOL (__nptl_death_event) +DB_SYMBOL (__nptl_create_event) +DB_SYMBOL (__nptl_death_event) DB_SYMBOL (__nptl_threads_events) -DB_MAIN_VARIABLE (__nptl_nthreads) +DB_VARIABLE (__nptl_nthreads) DB_VARIABLE (__nptl_last_event) -DB_RTLD_VARIABLE (__nptl_initial_report_events) +DB_MAIN_VARIABLE (__nptl_initial_report_events) -DB_MAIN_ARRAY_VARIABLE (__pthread_keys) +DB_ARRAY_VARIABLE (__pthread_keys) DB_STRUCT (pthread_key_struct) DB_STRUCT_FIELD (pthread_key_struct, seq) DB_STRUCT_FIELD (pthread_key_struct, destr) From patchwork Mon Jun 28 09:09:12 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Weimer X-Patchwork-Id: 44031 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id CD0BA3953074 for ; Mon, 28 Jun 2021 09:14:50 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org CD0BA3953074 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1624871690; bh=ZOrcsL5eN1UsYpXp/OD7hmtBhKihucm9AxTBHQ7/vC4=; h=To:Subject:In-Reply-To:References:Date:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=H7tmVvAHJ1Ew4x5WpJ2W++sFx3M2TdSS1MvZObhjzsFMvVFCsvBzkYx4GK2uNTmt5 1j/m8JzNaJBYlX7rLZT38lLMERXop+1QfEpoI9+8QkVvdI9KJ+PEYa2uMfTmTDP3Bq KCrukhU5r8Xnm/kjxFsXDn+L5YYwtRpLDrfnqlAY= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTP id 02C323951C9F for ; Mon, 28 Jun 2021 09:14:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 02C323951C9F Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-210-lT3eQhW0PSq10y8xBREeWA-1; Mon, 28 Jun 2021 05:14:23 -0400 X-MC-Unique: lT3eQhW0PSq10y8xBREeWA-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 5AC42101C8A8 for ; Mon, 28 Jun 2021 09:09:15 +0000 (UTC) Received: from oldenburg.str.redhat.com (ovpn-112-228.ams2.redhat.com [10.36.112.228]) by smtp.corp.redhat.com (Postfix) with ESMTPS id B1DF75D6AD for ; Mon, 28 Jun 2021 09:09:14 +0000 (UTC) To: libc-alpha@sourceware.org Subject: [PATCH 2/3] nptl: Rename nptl_version to __nptl_version In-Reply-To: References: X-From-Line: e9139bb399b2d1450a4b4930d6dc89f012cc9eb3 Mon Sep 17 00:00:00 2001 Message-Id: Date: Mon, 28 Jun 2021 11:09:12 +0200 User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-12.7 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Florian Weimer via Libc-alpha From: Florian Weimer Reply-To: Florian Weimer Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" This prepares it for exporting as a dynamic symbol. Reviewed-by: Carlos O'Donell Tested-by: Carlos O'Donell --- nptl_db/structs.def | 2 +- nptl_db/td_ta_new.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/nptl_db/structs.def b/nptl_db/structs.def index fb7bb9367d..248ecf4335 100644 --- a/nptl_db/structs.def +++ b/nptl_db/structs.def @@ -73,7 +73,7 @@ DB_STRUCT (td_eventbuf_t) DB_STRUCT_FIELD (td_eventbuf_t, eventnum) DB_STRUCT_FIELD (td_eventbuf_t, eventdata) -DB_SYMBOL (nptl_version) +DB_SYMBOL (__nptl_version) DB_SYMBOL (__nptl_create_event) DB_SYMBOL (__nptl_death_event) DB_SYMBOL (__nptl_threads_events) diff --git a/nptl_db/td_ta_new.c b/nptl_db/td_ta_new.c index 501d922ea2..eeca29d5a0 100644 --- a/nptl_db/td_ta_new.c +++ b/nptl_db/td_ta_new.c @@ -39,7 +39,7 @@ td_ta_new (struct ps_prochandle *ps, td_thragent_t **ta) LOG ("td_ta_new"); /* Check whether the versions match. */ - if (td_lookup (ps, SYM_nptl_version, &versaddr) != PS_OK) + if (td_lookup (ps, SYM___nptl_version, &versaddr) != PS_OK) return TD_NOLIBTHREAD; if (ps_pdread (ps, versaddr, versbuf, sizeof (versbuf)) != PS_OK) return TD_ERR; From patchwork Mon Jun 28 09:09:17 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Weimer X-Patchwork-Id: 44030 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id BE1D43951CBD for ; Mon, 28 Jun 2021 09:11:24 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org BE1D43951CBD DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1624871484; bh=twNwiTjATQrpXOvokoeoFvX6Gwc1KvGSCPAyZCkbMYA=; h=To:Subject:In-Reply-To:References:Date:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=XmektXSH9+Gsa2kInpNIFehNV+p/KyYTU7/pZkwJwJeHEv1NDmBe6H4f/Fy0pLviL 3n46FBwlsGB6zhEiANTQKIJcHz+jpfXDWCsz3HUL0aFWtKosREdpz4EbctMkC5TYaC i2nHK9Fqrf/yN1ct9GsdWjfGjayevvYHucyUGBqc= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTP id AD80C3953CEC for ; Mon, 28 Jun 2021 09:09:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org AD80C3953CEC Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-472-yb1iJRzzNqirO2kpvuHaKg-1; Mon, 28 Jun 2021 05:09:21 -0400 X-MC-Unique: yb1iJRzzNqirO2kpvuHaKg-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 44EAA100B3AC for ; Mon, 28 Jun 2021 09:09:20 +0000 (UTC) Received: from oldenburg.str.redhat.com (ovpn-112-228.ams2.redhat.com [10.36.112.228]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 718AC5D9C6 for ; Mon, 28 Jun 2021 09:09:19 +0000 (UTC) To: libc-alpha@sourceware.org Subject: [PATCH 3/3] nptl: Export libthread_db-used symbols under GLIBC_PRIVATE In-Reply-To: References: X-From-Line: 1e3eebf3a3f1d006ac589e0ebcab9ea998759866 Mon Sep 17 00:00:00 2001 Message-Id: <1e3eebf3a3f1d006ac589e0ebcab9ea998759866.1624871226.git.fweimer@redhat.com> Date: Mon, 28 Jun 2021 11:09:17 +0200 User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-12.0 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP, URIBL_BLACK autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Florian Weimer via Libc-alpha From: Florian Weimer Reply-To: Florian Weimer Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" This allows distributions to strip debugging information from libc.so.6 without impacting the debugging experience. The commit also enhances the checks in nptl/db-symbols.awk to cover both the _thread_db_* descriptor symbols and the actual symbols themselves. --- nptl/Versions | 58 ++++++++++++++++++++++++++++++++++++++++++ nptl/pthread_create.c | 13 ++++++---- nptl_db/Makefile | 2 +- nptl_db/db-symbols.awk | 16 ++++++++++-- 4 files changed, 81 insertions(+), 8 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. */ diff --git a/nptl_db/Makefile b/nptl_db/Makefile index 1f79c018a1..c04aa6140a 100644 --- a/nptl_db/Makefile +++ b/nptl_db/Makefile @@ -55,7 +55,7 @@ include ../Rules $(objpfx)db-symbols.out: $(objpfx)db-symbols.v.i \ $(common-objpfx)libc.so - LC_ALL=C $(READELF) -W -s $(filter %.so,$^) | $(AWK) -f $< > $@; \ + LC_ALL=C $(READELF) -W -D -s $(filter %.so,$^) | $(AWK) -f $< > $@; \ $(evaluate-test) $(objpfx)db-symbols.v.i: db-symbols.awk diff --git a/nptl_db/db-symbols.awk b/nptl_db/db-symbols.awk index ef1d91b167..a9289b4686 100644 --- a/nptl_db/db-symbols.awk +++ b/nptl_db/db-symbols.awk @@ -1,7 +1,8 @@ -# This script processes the output of 'readelf -W -s' on the libpthread.so +# This script processes the output of 'readelf -W -D -s' on the libc.so # we've just built. It checks for all the symbols used in td_symbol_list. BEGIN { +# This processes the _thread_db_* names. %define DB_MAIN_VARIABLE(name) /* Nothing. */ %define DB_MAIN_SYMBOL(name) /* Nothing. */ %define DB_MAIN_ARRAY_VARIABLE(name) /* Nothing. */ @@ -9,10 +10,19 @@ BEGIN { %define DB_LOOKUP_NAME_TH_UNIQUE(idx, name) th_unique[STRINGIFY (name)] = 1; %include "db-symbols.h" +# And this processes the symbol names themselves. +%define DB_STRUCT(...) /* Nothing. */ +%define DB_STRUCT_FIELD(...) /* Nothing. */ +%define DB_STRUCT_FLEXIBLE_ARRAY(...) /* Nothing. */ +%define DB_SYMBOL(name) required[STRINGIFY (name)] = 1; +%define DB_FUNCTION(name) required[STRINGIFY (name)] = 1; +%define DB_VARIABLE(name) required[STRINGIFY (name)] = 1; +%include "structs.def" + in_symtab = 0; } -/Symbol table '.symtab'/ { in_symtab=1; next } +/Symbol table for image/ { in_symtab=1; next } NF == 0 { in_symtab=0; next } !in_symtab { next } @@ -23,6 +33,7 @@ END { status = 0; for (s in required) { + s = s "@@GLIBC_PRIVATE" if (s in seen) print s, "ok"; else { status = 1; @@ -32,6 +43,7 @@ END { any = ""; for (s in th_unique) { + s = s "@@GLIBC_PRIVATE" if (s in seen) { any = s; break;