From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS17314 8.43.84.0/22 X-Spam-Status: No, score=-4.1 required=3.0 tests=AWL,BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI,SPF_HELO_PASS,SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id 59D541F8C6 for ; Tue, 14 Sep 2021 23:32:39 +0000 (UTC) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 674FE3857C66 for ; Tue, 14 Sep 2021 23:32:38 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 674FE3857C66 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1631662358; bh=FLCd2EPBYn25FqmPkL09bNYgcWEdK4I99d9dZRuijf4=; h=Date:To:Subject:References:In-Reply-To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=godjZUvgDjSa2/+E49WwmskAGtIoJu/Kfn+7QPyiWTy8LmQqNR5m1GX1Xw5hz54V5 ZIWTZVOjd2yCvObQxkVv6Nbbb17zTAYXu+ZBhTlk/tIfjcK8EAxjpghtghHWrPV/kU 3L3GHde4ySMI9+4WkoHsMd4v1+7ySsm94jynk0OU= Received: from hera.aquilenet.fr (hera.aquilenet.fr [IPv6:2a0c:e300::1]) by sourceware.org (Postfix) with ESMTPS id 5010F3857800 for ; Tue, 14 Sep 2021 23:30:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 5010F3857800 Received: from localhost (localhost [127.0.0.1]) by hera.aquilenet.fr (Postfix) with ESMTP id 5C4A2693; Wed, 15 Sep 2021 01:30:24 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at aquilenet.fr Received: from hera.aquilenet.fr ([127.0.0.1]) by localhost (hera.aquilenet.fr [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id rYwxAhpHWFfI; Wed, 15 Sep 2021 01:30:23 +0200 (CEST) Received: from begin (unknown [IPv6:2a01:cb19:956:1b00:de41:a9ff:fe47:ec49]) by hera.aquilenet.fr (Postfix) with ESMTPSA id D6F7061; Wed, 15 Sep 2021 01:30:22 +0200 (CEST) Received: from samy by begin with local (Exim 4.95-RC2) (envelope-from ) id 1mQHsc-00Dvcn-3G; Wed, 15 Sep 2021 01:30:22 +0200 Date: Wed, 15 Sep 2021 01:30:22 +0200 To: Sergey Bugaev Subject: Re: [PATCH htl v3 1/5] elf: Replace most uses of THREAD_GSCOPE_IN_TCB Message-ID: <20210914233022.ubhz4ufuy6b6pq6w@begin> Mail-Followup-To: Sergey Bugaev , libc-alpha@sourceware.org, bug-hurd@gnu.org References: <20210907133325.255690-1-bugaevc@gmail.com> <20210907133325.255690-2-bugaevc@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210907133325.255690-2-bugaevc@gmail.com> Organization: I am not organized User-Agent: NeoMutt/20170609 (1.8.3) X-Spamd-Bar: -- X-Rspamd-Server: hera X-Rspamd-Queue-Id: 5C4A2693 X-Spamd-Result: default: False [-2.50 / 15.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[3]; TO_DN_SOME(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; FREEMAIL_ENVRCPT(0.00)[gmail.com]; HAS_ORG_HEADER(0.00)[]; RCVD_COUNT_THREE(0.00)[3]; FREEMAIL_TO(0.00)[gmail.com]; RCVD_NO_TLS_LAST(0.10)[]; FROM_EQ_ENVFROM(0.00)[]; MID_RHS_NOT_FQDN(0.50)[]; BAYES_HAM(-3.00)[100.00%] 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: , From: Samuel Thibault via Libc-alpha Reply-To: Samuel Thibault Cc: bug-hurd@gnu.org, libc-alpha@sourceware.org Errors-To: libc-alpha-bounces+e=80x24.org@sourceware.org Sender: "Libc-alpha" Sergey Bugaev, le mar. 07 sept. 2021 16:33:21 +0300, a ecrit: > While originally this definition was indeed used to distinguish between > the cases where the GSCOPE flag was stored in TCB or not, it has since > become used as a general way to distinguish between HTL and NPTL. > > THREAD_GSCOPE_IN_TCB will be removed in the following commits, as HTL, > which currently is the only port that does not put the flag into TCB, > will get ported to put the GSCOPE flag into the TCB as well. To prepare > for that change, migrate all code that wants to distinguish between HTL > and NPTL to use PTHREAD_IN_LIBC instead, which is a better choice since > the distinction mostly has to do with whether libc has access to the > list of thread structures and therefore can initialize thread-local > storage. > > The parts of code that actually depend on whether the GSCOPE flag is in > TCB are left unchanged. > > Signed-off-by: Sergey Bugaev Applied, thanks! > --- > elf/dl-reloc.c | 4 ++-- > elf/dl-support.c | 6 ++++-- > elf/dl-tls.c | 6 +++--- > elf/dl-tls_init_tp.c | 2 +- > sysdeps/generic/ldsodefs.h | 11 ++++++----- > 5 files changed, 16 insertions(+), 13 deletions(-) > > diff --git a/elf/dl-reloc.c b/elf/dl-reloc.c > index e13a672ade..6c957456b8 100644 > --- a/elf/dl-reloc.c > +++ b/elf/dl-reloc.c > @@ -141,7 +141,7 @@ cannot allocate memory in static TLS block")); > } > } > > -#if !THREAD_GSCOPE_IN_TCB > +#if !PTHREAD_IN_LIBC > /* Initialize static TLS area and DTV for current (only) thread. > libpthread implementations should provide their own hook > to handle all threads. */ > @@ -160,7 +160,7 @@ _dl_nothread_init_static_tls (struct link_map *map) > memset (__mempcpy (dest, map->l_tls_initimage, map->l_tls_initimage_size), > '\0', map->l_tls_blocksize - map->l_tls_initimage_size); > } > -#endif /* !THREAD_GSCOPE_IN_TCB */ > +#endif /* !PTHREAD_IN_LIBC */ > > void > _dl_relocate_object (struct link_map *l, struct r_scope_elem *scope[], > diff --git a/elf/dl-support.c b/elf/dl-support.c > index 0155718175..a317459fae 100644 > --- a/elf/dl-support.c > +++ b/elf/dl-support.c > @@ -183,7 +183,7 @@ uint64_t _dl_hwcap_mask; > * executable but this isn't true for all platforms. */ > ElfW(Word) _dl_stack_flags = DEFAULT_STACK_PERMS; > > -#if THREAD_GSCOPE_IN_TCB > +#if PTHREAD_IN_LIBC > list_t _dl_stack_used; > list_t _dl_stack_user; > list_t _dl_stack_cache; > @@ -195,9 +195,11 @@ int _dl_stack_cache_lock; > when it was not, we do it by calling this function. > It returns an errno code or zero on success. */ > int (*_dl_make_stack_executable_hook) (void **) = _dl_make_stack_executable; > -int _dl_thread_gscope_count; > void (*_dl_init_static_tls) (struct link_map *) = &_dl_nothread_init_static_tls; > #endif > +#if !THREAD_GSCOPE_IN_TCB > +int _dl_thread_gscope_count; > +#endif > struct dl_scope_free_list *_dl_scope_free_list; > > #ifdef NEED_DL_SYSINFO > diff --git a/elf/dl-tls.c b/elf/dl-tls.c > index 423e380f7c..d554ae4497 100644 > --- a/elf/dl-tls.c > +++ b/elf/dl-tls.c > @@ -29,7 +29,7 @@ > #include > #include > > -#if THREAD_GSCOPE_IN_TCB > +#if PTHREAD_IN_LIBC > # include > #endif > > @@ -1058,7 +1058,7 @@ cannot create TLS data structures")); > } > } > > -#if THREAD_GSCOPE_IN_TCB > +#if PTHREAD_IN_LIBC > static inline void __attribute__((always_inline)) > init_one_static_tls (struct pthread *curp, struct link_map *map) > { > @@ -1091,4 +1091,4 @@ _dl_init_static_tls (struct link_map *map) > > lll_unlock (GL (dl_stack_cache_lock), LLL_PRIVATE); > } > -#endif /* THREAD_GSCOPE_IN_TCB */ > +#endif /* PTHREAD_IN_LIBC */ > diff --git a/elf/dl-tls_init_tp.c b/elf/dl-tls_init_tp.c > index d84adc992c..e482f3cfa9 100644 > --- a/elf/dl-tls_init_tp.c > +++ b/elf/dl-tls_init_tp.c > @@ -36,7 +36,7 @@ rtld_lock_default_unlock_recursive (void *lock) > void > __tls_pre_init_tp (void) > { > -#if !THREAD_GSCOPE_IN_TCB > +#if !PTHREAD_IN_LIBC > GL(dl_init_static_tls) = &_dl_nothread_init_static_tls; > #endif > > diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h > index 9c15259236..02bd579ef8 100644 > --- a/sysdeps/generic/ldsodefs.h > +++ b/sysdeps/generic/ldsodefs.h > @@ -456,7 +456,7 @@ struct rtld_global > /* Generation counter for the dtv. */ > EXTERN size_t _dl_tls_generation; > > -#if !THREAD_GSCOPE_IN_TCB > +#if !PTHREAD_IN_LIBC > EXTERN void (*_dl_init_static_tls) (struct link_map *); > #endif > > @@ -466,7 +466,7 @@ struct rtld_global > size_t count; > void *list[50]; > } *_dl_scope_free_list; > -#if THREAD_GSCOPE_IN_TCB > +#if PTHREAD_IN_LIBC > /* List of active thread stacks, with memory managed by glibc. */ > EXTERN list_t _dl_stack_used; > > @@ -486,7 +486,8 @@ struct rtld_global > > /* Mutex protecting the stack lists. */ > EXTERN int _dl_stack_cache_lock; > -#else > +#endif > +#if !THREAD_GSCOPE_IN_TCB > EXTERN int _dl_thread_gscope_count; > #endif > #ifdef SHARED > @@ -1297,13 +1298,13 @@ extern void _dl_aux_init (ElfW(auxv_t) *av) > > /* Initialize the static TLS space for the link map in all existing > threads. */ > -#if THREAD_GSCOPE_IN_TCB > +#if PTHREAD_IN_LIBC > void _dl_init_static_tls (struct link_map *map) attribute_hidden; > #endif > static inline void > dl_init_static_tls (struct link_map *map) > { > -#if THREAD_GSCOPE_IN_TCB > +#if PTHREAD_IN_LIBC > /* The stack list is available to ld.so, so the initialization can > be handled within ld.so directly. */ > _dl_init_static_tls (map); > -- > 2.31.1 > -- Samuel Now, it we had this sort of thing: yield -a for yield to all traffic yield -t for yield to trucks yield -f for yield to people walking (yield foot) yield -d t* for yield on days starting with t ...you'd have a lot of dead people at intersections, and traffic jams you wouldn't believe... (Discussion in comp.os.linux.misc on the intuitiveness of commands.)