From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from eggs.gnu.org (eggs.gnu.org [IPv6:2001:470:142:3::10]) by sourceware.org (Postfix) with ESMTPS id 663313858CDB for ; Sun, 2 Apr 2023 22:53:34 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 663313858CDB Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gnu.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gnu.org Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pj6Zp-00070e-NT; Sun, 02 Apr 2023 18:53:33 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=In-Reply-To:MIME-Version:References:Subject:To:From: Date; bh=aZCApW84/PKkCGQB6hvZlo01BmgGggTX/HRLTGmOOWg=; b=kTsflKBf2ut/sK7TO8Tz yJlZEO9cvH6HQbwvuJnzxDjOAUs7e/IrZHO5+mgNZcspExQvYelm+ZQK9BCXxuT61RMQOW/EIc/6P 980Arj8gWPY98tYzt0a+6yWOhmTAQINMVzlDGY8qMJqc6SwEqDQhwvTGxA7mgkzWNpVRfCWKdrzB3 8ioLfOi1Z+wllGiUaLZ0yuMjcfNZLev1E88fl84L4G2ofFKoXrSEAJPg9GZsoG2OETqlTuEaPV3j9 2D6cN76soz94ANB+e/fPDN4zplieFD+OhQ4PuacMWacNotG9QyaT0lqXTf/J0zWvl4DyFQj21Y7MX +yNGNBVBmfOuOw==; Received: from [2a01:cb19:4a:a400:de41:a9ff:fe47:ec49] (helo=begin) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pj6Zo-0000G9-50; Sun, 02 Apr 2023 18:53:33 -0400 Received: from samy by begin with local (Exim 4.96) (envelope-from ) id 1pj6Zn-00Arrs-0R; Mon, 03 Apr 2023 00:53:31 +0200 Date: Mon, 3 Apr 2023 00:53:31 +0200 From: Samuel Thibault To: Sergey Bugaev Cc: libc-alpha@sourceware.org, bug-hurd@gnu.org Subject: Re: [RFC PATCH glibc 05/34] hurd: Remove __hurd_threadvar_stack_{offset,mask} Message-ID: <20230402225331.rebb4f25cl45f7ug@begin> Mail-Followup-To: Sergey Bugaev , libc-alpha@sourceware.org, bug-hurd@gnu.org References: <20230319151017.531737-1-bugaevc@gmail.com> <20230319151017.531737-6-bugaevc@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20230319151017.531737-6-bugaevc@gmail.com> Organization: I am not organized User-Agent: NeoMutt/20170609 (1.8.3) X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,SPF_HELO_PASS,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Applied, thanks! Sergey Bugaev, le dim. 19 mars 2023 18:09:48 +0300, a ecrit: > Noone is or should be using __hurd_threadvar_stack_{offset,mask}, we > have proper TLS now. These two remaining variables are never set to > anything other than zero, so any code that would try to use them as > described would just dereference a zero pointer and crash. So remove > them entirely. > > Signed-off-by: Sergey Bugaev > --- > hurd/Versions | 5 ----- > hurd/hurd/threadvar.h | 15 --------------- > sysdeps/mach/hurd/Versions | 3 --- > sysdeps/mach/hurd/_Fork.c | 20 ++------------------ > sysdeps/mach/hurd/i386/libc.abilist | 2 -- > sysdeps/mach/hurd/x86/init-first.c | 3 --- > 6 files changed, 2 insertions(+), 46 deletions(-) > > diff --git a/hurd/Versions b/hurd/Versions > index 7e4f1c56..3d8b412d 100644 > --- a/hurd/Versions > +++ b/hurd/Versions > @@ -1,8 +1,5 @@ > libc { > GLIBC_2.0 { > - # variables used in macros & inline functions > - __hurd_threadvar_stack_mask; __hurd_threadvar_stack_offset; > - > # functions used in libmachuser and libhurduser > _S_catch_exception_raise; > _S_catch_exception_raise_state; > @@ -129,8 +126,6 @@ libc { > _hurd_fd_error_signal; _hurd_fd_error; > __hurd_dfail; __hurd_sockfail; > _hurd_port_locked_set; > - __hurd_threadvar_location_from_sp; > - __hurd_threadvar_location; > _hurd_userlink_link; _hurd_userlink_unlink; _hurd_userlink_clear; > } > GLIBC_2.29 { > diff --git a/hurd/hurd/threadvar.h b/hurd/hurd/threadvar.h > index 2a94f4de..f5c6a278 100644 > --- a/hurd/hurd/threadvar.h > +++ b/hurd/hurd/threadvar.h > @@ -22,21 +22,6 @@ > #include > #include > > -/* The per-thread variables are found by ANDing this mask > - with the value of the stack pointer and then adding this offset. > - > - In the multi-threaded case, cthreads initialization sets > - __hurd_threadvar_stack_mask to ~(cthread_stack_size - 1), a mask which > - finds the base of the fixed-size cthreads stack; and > - __hurd_threadvar_stack_offset to a small offset that skips the data > - cthreads itself maintains at the base of each thread's stack. > - > - In the single-threaded or libpthread case, __hurd_threadvar_stack_mask is > - zero, so the stack pointer is ignored. */ > - > -extern unsigned long int __hurd_threadvar_stack_mask; > -extern unsigned long int __hurd_threadvar_stack_offset; > - > /* The variables __hurd_sigthread_stack_base and > __hurd_sigthread_stack_end define the bounds of the stack used by the > signal thread, so that thread can always be specifically identified. */ > diff --git a/sysdeps/mach/hurd/Versions b/sysdeps/mach/hurd/Versions > index d75e674b..bf2e870a 100644 > --- a/sysdeps/mach/hurd/Versions > +++ b/sysdeps/mach/hurd/Versions > @@ -33,9 +33,6 @@ libc { > > ld { > GLIBC_2.0 { > - # variables that must be shared with libc > - __hurd_threadvar_stack_mask; __hurd_threadvar_stack_offset; > - > # functions that must be shared with libc > __close; __getpid; > __mmap; __open; __read; __sbrk; __strtoul_internal; > diff --git a/sysdeps/mach/hurd/_Fork.c b/sysdeps/mach/hurd/_Fork.c > index 4984cecd..77cd2917 100644 > --- a/sysdeps/mach/hurd/_Fork.c > +++ b/sysdeps/mach/hurd/_Fork.c > @@ -482,25 +482,9 @@ retry: > (natural_t *) &state, &statecount)) > LOSE; > #ifdef STACK_GROWTH_UP > - if (__hurd_sigthread_stack_base == 0) > - { > - state.SP &= __hurd_threadvar_stack_mask; > - state.SP += __hurd_threadvar_stack_offset; > - } > - else > - state.SP = __hurd_sigthread_stack_base; > + state.SP = __hurd_sigthread_stack_base; > #else > - if (__hurd_sigthread_stack_end == 0) > - { > - /* The signal thread has a stack assigned by pthread. > - The threadvar_stack variables conveniently tell us how > - to get to the highest address in the stack, just below > - the per-thread variables. */ > - state.SP &= __hurd_threadvar_stack_mask; > - state.SP += __hurd_threadvar_stack_offset; > - } > - else > - state.SP = __hurd_sigthread_stack_end; > + state.SP = __hurd_sigthread_stack_end; > #endif > MACHINE_THREAD_STATE_SET_PC (&state, > (unsigned long int) _hurd_msgport_receive); > diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist > index ed0c4789..da1cad67 100644 > --- a/sysdeps/mach/hurd/i386/libc.abilist > +++ b/sysdeps/mach/hurd/i386/libc.abilist > @@ -279,8 +279,6 @@ GLIBC_2.2.6 __gettimeofday F > GLIBC_2.2.6 __gmtime_r F > GLIBC_2.2.6 __h_errno_location F > GLIBC_2.2.6 __hurd_fail F > -GLIBC_2.2.6 __hurd_threadvar_stack_mask D 0x4 > -GLIBC_2.2.6 __hurd_threadvar_stack_offset D 0x4 > GLIBC_2.2.6 __isalnum_l F > GLIBC_2.2.6 __isalpha_l F > GLIBC_2.2.6 __isascii_l F > diff --git a/sysdeps/mach/hurd/x86/init-first.c b/sysdeps/mach/hurd/x86/init-first.c > index 75a5c842..6ca27155 100644 > --- a/sysdeps/mach/hurd/x86/init-first.c > +++ b/sysdeps/mach/hurd/x86/init-first.c > @@ -34,9 +34,6 @@ > extern void __mach_init (void); > extern void __init_misc (int, char **, char **); > > -unsigned long int __hurd_threadvar_stack_offset; > -unsigned long int __hurd_threadvar_stack_mask; > - > extern int __libc_argc attribute_hidden; > extern char **__libc_argv attribute_hidden; > extern char **_dl_argv; > -- > 2.39.2 > -- Samuel --- Pour une évaluation indépendante, transparente et rigoureuse ! Je soutiens la Commission d'Évaluation de l'Inria.