From patchwork Thu Nov 13 23:06:22 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Samuel Thibault X-Patchwork-Id: 124211 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 ABE6D385841E for ; Thu, 13 Nov 2025 23:08:45 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org ABE6D385841E X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from sonata.ens-lyon.org (domu-toccata.ens-lyon.fr [140.77.166.138]) by sourceware.org (Postfix) with ESMTPS id 7F5AE385840D for ; Thu, 13 Nov 2025 23:06:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7F5AE385840D Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=ens-lyon.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=bounce.ens-lyon.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 7F5AE385840D Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=140.77.166.138 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1763075186; cv=none; b=YJmWc/3Jjin8QEjSrZzPHT/1FmdLe2YJtwdr9wuQbhk3FM9pfNEXVu5S4j6D8tis+Jd1QnvNlSPzyzl08ZfqudenQfPEO6GMD0st0Jb3TY7WX3y7XTndWO5mX7TVCmaOJB8pYOskoA3tTxM/uVbihIl4QLxnGQA3HWMTh0nNPzU= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1763075186; c=relaxed/simple; bh=cvgoL//dZJC4EzFo/DMuAmu93r4Y1/RMr93BKCAv+6o=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=E02/wQxjoIQQHjbXIcbxKDVr33ywFXlzx5ZQ7ucpqSWGb996kKiRGJk5nq1OSxfgjfVHYGSaMlhplh9l+amimhmYFmmDEMRgbjXnL45214XSg/+vsWtLgxkb85WRiNaku7IgbJwc45NOZzyEaKg4d37BCy1Bn55860+rU93ab4Y= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7F5AE385840D Received: from localhost (localhost [127.0.0.1]) by sonata.ens-lyon.org (Postfix) with ESMTP id 8DF1BA1AB4; Fri, 14 Nov 2025 00:06:25 +0100 (CET) Received: from sonata.ens-lyon.org ([127.0.0.1]) by localhost (sonata.ens-lyon.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id uQxmdOVsw7mh; Fri, 14 Nov 2025 00:06:25 +0100 (CET) Received: from end (aamiens-653-1-40-48.w83-192.abo.wanadoo.fr [83.192.199.48]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by sonata.ens-lyon.org (Postfix) with ESMTPSA id 1F076A1A3E; Fri, 14 Nov 2025 00:06:25 +0100 (CET) Received: from samy by end with local (Exim 4.98.2) (envelope-from ) id 1vJgOW-00000001NEl-2msB; Fri, 14 Nov 2025 00:06:24 +0100 From: Samuel Thibault To: libc-alpha@sourceware.org Cc: Samuel Thibault , commit-hurd@gnu.org Subject: [hurd,commited 3/4] htl: Drop pthread-functions infrastructure Date: Fri, 14 Nov 2025 00:06:22 +0100 Message-ID: <20251113230623.327626-4-samuel.thibault@ens-lyon.org> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251113230623.327626-1-samuel.thibault@ens-lyon.org> References: <20251113230623.327626-1-samuel.thibault@ens-lyon.org> MIME-Version: 1.0 X-Spam-Status: No, score=-13.0 required=5.0 tests=BAYES_00, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, KAM_SHORT, RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED, 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 X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces~patchwork=sourceware.org@sourceware.org All previously forwarded functions are now called directly (either via local call in libc, or through a __export).t --- .../strcoll-inputs/filelist#en_US.UTF-8 | 2 - htl/Makefile | 4 -- htl/Versions | 1 - htl/forward.c | 29 ------------- htl/libc_pthread_init.c | 33 --------------- htl/pt-initialize.c | 41 ------------------- htl/pt-internal.h | 3 -- sysdeps/htl/libc-lockP.h | 35 ---------------- sysdeps/htl/pthread-functions.h | 40 ------------------ sysdeps/mach/hurd/htl/pt-sysdep.c | 3 -- sysdeps/nptl/libc-lockP.h | 7 ---- 11 files changed, 198 deletions(-) delete mode 100644 htl/forward.c delete mode 100644 htl/libc_pthread_init.c delete mode 100644 htl/pt-initialize.c delete mode 100644 sysdeps/htl/pthread-functions.h diff --git a/benchtests/strcoll-inputs/filelist#en_US.UTF-8 b/benchtests/strcoll-inputs/filelist#en_US.UTF-8 index e02df872dc..3f0a5a79d3 100644 --- a/benchtests/strcoll-inputs/filelist#en_US.UTF-8 +++ b/benchtests/strcoll-inputs/filelist#en_US.UTF-8 @@ -8029,7 +8029,6 @@ configure.ac tst-mqueue8x.c Subdirs pthread.h -pthread-functions.h alpha bsd-setjmp.S ldiv.S @@ -12602,7 +12601,6 @@ tst-atfork1.c tst-mutex4.c tst-mutex1.c tst-exit3.c -libc_pthread_init.c sem_open.c pthread_mutexattr_setprotocol.c tst-popen1.c diff --git a/htl/Makefile b/htl/Makefile index 2f2ad0cccb..4307c27203 100644 --- a/htl/Makefile +++ b/htl/Makefile @@ -26,7 +26,6 @@ LCLHDRS := libpthread-routines := \ pt-create \ - pt-initialize \ pt-spin-inlines \ pt-hurd-cond-wait \ pt-hurd-cond-timedwait \ @@ -69,9 +68,7 @@ distribute := routines := \ alloca_cutoff \ - forward \ htlfreeres \ - libc_pthread_init \ pt-alloc \ pt-attr \ pt-attr-destroy \ @@ -210,7 +207,6 @@ routines := \ sem_routines \ sem_unlink \ # routines -shared-only-routines = forward extra-libs := libpthread extra-libs-others := $(extra-libs) diff --git a/htl/Versions b/htl/Versions index 009c0d0e35..4da6204f88 100644 --- a/htl/Versions +++ b/htl/Versions @@ -247,7 +247,6 @@ libc { GLIBC_PRIVATE { __libc_alloca_cutoff; - __libc_pthread_init; __pthread_total; ___pthread_self; __pthread_alloc; diff --git a/htl/forward.c b/htl/forward.c deleted file mode 100644 index 9294d25724..0000000000 --- a/htl/forward.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Libc stubs for pthread functions. Hurd pthread version. - Copyright (C) 2002-2025 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include -#include -#include - -/* Pointers to the libc functions. */ -struct pthread_functions __libc_pthread_functions attribute_hidden; -int __libc_pthread_functions_init attribute_hidden; diff --git a/htl/libc_pthread_init.c b/htl/libc_pthread_init.c deleted file mode 100644 index b61a3a1d0a..0000000000 --- a/htl/libc_pthread_init.c +++ /dev/null @@ -1,33 +0,0 @@ -/* libc initialization for libpthread. Hurd pthread version. - Copyright (C) 2002-2025 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include - -void -__libc_pthread_init (const struct pthread_functions *functions) -{ -#ifdef SHARED - /* We copy the content of the variable pointed to by the FUNCTIONS - parameter to one in libc.so since this means access to the array - can be done with one memory access instead of two. */ - memcpy (&__libc_pthread_functions, functions, - sizeof (__libc_pthread_functions)); - __libc_pthread_functions_init = 1; -#endif -} diff --git a/htl/pt-initialize.c b/htl/pt-initialize.c deleted file mode 100644 index bc8bb1e501..0000000000 --- a/htl/pt-initialize.c +++ /dev/null @@ -1,41 +0,0 @@ -/* Initialize pthreads library. - Copyright (C) 2000-2025 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include - -#include -#include -#include - -#include -#include - -#if IS_IN (libpthread) -static const struct pthread_functions pthread_functions = { -}; -#endif /* IS_IN (libpthread) */ - -/* Initialize the pthreads library. */ -void -___pthread_init (void) -{ -#if IS_IN (libpthread) - __libc_pthread_init (&pthread_functions); -#endif -} diff --git a/htl/pt-internal.h b/htl/pt-internal.h index 2bc9d82d59..c0aa4aa9dc 100644 --- a/htl/pt-internal.h +++ b/htl/pt-internal.h @@ -194,9 +194,6 @@ extern struct __pthread *_pthread_self (void); #endif -/* Initialize the pthreads library. */ -extern void ___pthread_init (void); - /* Internal version of pthread_create. Rather than return the new tid, we return the whole __pthread structure in *PTHREAD. */ extern int __pthread_create_internal (struct __pthread **__restrict pthread, diff --git a/sysdeps/htl/libc-lockP.h b/sysdeps/htl/libc-lockP.h index e9977e46a1..82e769ea00 100644 --- a/sysdeps/htl/libc-lockP.h +++ b/sysdeps/htl/libc-lockP.h @@ -20,7 +20,6 @@ #define _BITS_LIBC_LOCKP_H 1 #include -#include /* If we check for a weakly referenced symbol and then perform a normal jump to it te code generated for some platforms in case of @@ -36,40 +35,6 @@ (FUNC != NULL ? FUNC ARGS : ELSE) #endif -/* Call thread functions through the function pointer table. */ -#if defined SHARED && IS_IN (libc) -# define PTFAVAIL(NAME) __libc_pthread_functions_init -# define __libc_ptf_call(FUNC, ARGS, ELSE) \ - (__libc_pthread_functions_init ? PTHFCT_CALL (ptr_##FUNC, ARGS) : ELSE) -# define __libc_ptf_call_always(FUNC, ARGS) \ - PTHFCT_CALL (ptr_##FUNC, ARGS) -#elif IS_IN (libpthread) -# define PTFAVAIL(NAME) 1 -# define __libc_ptf_call(FUNC, ARGS, ELSE) \ - FUNC ARGS -# define __libc_ptf_call_always(FUNC, ARGS) \ - FUNC ARGS -#else -# define PTFAVAIL(NAME) (NAME != NULL) -# define __libc_ptf_call(FUNC, ARGS, ELSE) \ - __libc_maybe_call (FUNC, ARGS, ELSE) -# define __libc_ptf_call_always(FUNC, ARGS) \ - FUNC ARGS -#endif - -/* Create thread-specific key. */ -#define __libc_key_create(KEY, DESTRUCTOR) \ - __libc_ptf_call (__pthread_key_create, (KEY, DESTRUCTOR), 1) - -/* Get thread-specific data. */ -#define __libc_getspecific(KEY) \ - __libc_ptf_call (__pthread_getspecific, (KEY), NULL) - -/* Set thread-specific data. */ -#define __libc_setspecific(KEY, VALUE) \ - __libc_ptf_call (__pthread_setspecific, (KEY, VALUE), 0) - - /* Functions that are used by this file and are internal to the GNU C library. */ diff --git a/sysdeps/htl/pthread-functions.h b/sysdeps/htl/pthread-functions.h deleted file mode 100644 index 4fab472e50..0000000000 --- a/sysdeps/htl/pthread-functions.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Declaration of libc stubs for pthread functions. Hurd version. - Copyright (C) 2003-2025 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#ifndef _PTHREAD_FUNCTIONS_H -#define _PTHREAD_FUNCTIONS_H 1 - -#include - -/* Data type shared with libc. The libc uses it to pass on calls to - the thread functions. Wine pokes directly into this structure, - so if possible avoid breaking it and append new hooks to the end. */ -struct pthread_functions -{ -}; - -/* Variable in libc.so. */ -extern struct pthread_functions __libc_pthread_functions attribute_hidden; -extern int __libc_pthread_functions_init attribute_hidden; - -void __libc_pthread_init (const struct pthread_functions *functions); - -#define PTHFCT_CALL(fct, params) \ - __libc_pthread_functions.fct params - -#endif /* pthread-functions.h */ diff --git a/sysdeps/mach/hurd/htl/pt-sysdep.c b/sysdeps/mach/hurd/htl/pt-sysdep.c index 735dc5b68d..43745095bf 100644 --- a/sysdeps/mach/hurd/htl/pt-sysdep.c +++ b/sysdeps/mach/hurd/htl/pt-sysdep.c @@ -48,9 +48,6 @@ _init_routine (void *stack) /* Already initialized */ return; - /* Initialize the library. */ - ___pthread_init (); - if (stack != NULL) { /* We are given a stack, use it. */ diff --git a/sysdeps/nptl/libc-lockP.h b/sysdeps/nptl/libc-lockP.h index 1be3dd1ec1..74ae581a7c 100644 --- a/sysdeps/nptl/libc-lockP.h +++ b/sysdeps/nptl/libc-lockP.h @@ -90,13 +90,6 @@ _Static_assert (LLL_LOCK_INITIALIZER == 0, "LLL_LOCK_INITIALIZER != 0"); (FUNC != NULL ? FUNC ARGS : ELSE) #endif -/* All previously forwarded functions are now called directly (either - via local call in libc, or through a __export), but __libc_ptf_call - is still used in generic code shared with Hurd. */ -#define PTFAVAIL(NAME) 1 -#define __libc_ptf_call(FUNC, ARGS, ELSE) FUNC ARGS -#define __libc_ptf_call_always(FUNC, ARGS) FUNC ARGS - /* Initialize the named lock variable, leaving it in a consistent, unlocked state. */ #define __libc_lock_init(NAME) ((void) ((NAME) = LLL_LOCK_INITIALIZER))