From patchwork Mon Apr 26 17:00:01 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Weimer X-Patchwork-Id: 43138 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 656E8389247B; Mon, 26 Apr 2021 16:59:42 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 656E8389247B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1619456382; bh=G0MMlZ78Qo7Si1KmK6zfsPxM/D+1R8zBpbqQwdL8PAQ=; 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=cceIHVRr5/Jl8XrO35a+DvngoIdf3YgPYyjKouYG1tCSAtzKKSPx34NTwqFuMovDL 9ttei1uR9tF8yisJMm7n+hlYawyu81BWjcUOs/yKt8ciK0NvCAVVJHsPpG3zTNqx0x I8e8kl6xQMEWxxPo4uJl9RQOd6MFaq89altNV1Jk= 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 6EAA73838038 for ; Mon, 26 Apr 2021 16:59:39 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 6EAA73838038 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-411-sTu7vrxHMRS5hGDAsEsd0g-1; Mon, 26 Apr 2021 12:59:37 -0400 X-MC-Unique: sTu7vrxHMRS5hGDAsEsd0g-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 9BBBB1922046 for ; Mon, 26 Apr 2021 16:59:36 +0000 (UTC) Received: from oldenburg.str.redhat.com (ovpn-113-20.ams2.redhat.com [10.36.113.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C40ED5D71F for ; Mon, 26 Apr 2021 16:59:35 +0000 (UTC) To: libc-alpha@sourceware.org Subject: [PATCH 01/19] Add pthread-in-libc, libpthread-routines-var, librt-routines-var In-Reply-To: References: Message-Id: <62101950200ba00285cf57a6e83aa4ef03816160.1619456219.git.fweimer@redhat.com> Date: Mon, 26 Apr 2021 19:00:01 +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.6 required=5.0 tests=BAYES_00, DKIM_INVALID, DKIM_SIGNED, GIT_PATCH_0, KAM_DMARC_STATUS, 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@sourceware.org Sender: "Libc-alpha" These make variables can be used to add routines to different libraries for the Hurd and Linux builds. Reviewed-by: Carlos O'Donell Tested-by: Carlos O'Donell --- Makeconfig | 11 +++++++++++ config.h.in | 3 +++ config.make.in | 1 + configure | 8 ++++++++ configure.ac | 6 ++++++ rt/Makefile | 2 ++ sysdeps/mach/hurd/configure | 3 +++ sysdeps/mach/hurd/configure.ac | 3 +++ sysdeps/pthread/Makefile | 3 +++ 9 files changed, 40 insertions(+) diff --git a/Makeconfig b/Makeconfig index 01f8638c2e..1d5e45926c 100644 --- a/Makeconfig +++ b/Makeconfig @@ -1328,6 +1328,17 @@ endif sysd-rules-targets := $(sort $(foreach p,$(sysd-rules-patterns),\ $(firstword $(subst :, ,$p)))) +# $(libpthread-routines-var) and $(librt-routines-var) are the make +# variable to which pthread routines need to be added to land in the +# right library. +ifeq ($(pthread-in-libc),yes) +libpthread-routines-var = routines +librt-routines-var = routines +else +libpthread-routines-var = libpthread-routines +librt-routines-var = libpthread-routines +endif + # A sysdeps Makeconfig fragment may set libc-reentrant to yes. ifeq (yes,$(libc-reentrant)) defines += -D_LIBC_REENTRANT diff --git a/config.h.in b/config.h.in index ea56e5b4a4..99036b887f 100644 --- a/config.h.in +++ b/config.h.in @@ -200,6 +200,9 @@ multiple symbol versions for one symbol. */ #define SYMVER_NEEDS_ALIAS 0 +/* Define to 1 if libpthread actually resides in libc. */ +#define PTHREAD_IN_LIBC 0 + /* */ diff --git a/config.make.in b/config.make.in index 7f47f0caa4..cbf59114b0 100644 --- a/config.make.in +++ b/config.make.in @@ -103,6 +103,7 @@ use-nscd = @use_nscd@ build-hardcoded-path-in-tests= @hardcoded_path_in_tests@ build-pt-chown = @build_pt_chown@ have-tunables = @have_tunables@ +pthread-in-libc = @pthread_in_libc@ # Build tools. CC = @CC@ diff --git a/configure b/configure index e64b7f8efe..4cc462613c 100755 --- a/configure +++ b/configure @@ -588,6 +588,7 @@ ac_unique_file="include/features.h" enable_option_checking=no ac_subst_vars='LTLIBOBJS LIBOBJS +pthread_in_libc RELEASE VERSION mach_interface_list @@ -6780,6 +6781,7 @@ libc_cv_sysconfdir=$sysconfdir libc_cv_localstatedir=$localstatedir libc_cv_gcc_unwind_find_fde=no libc_cv_idn=no +pthread_in_libc=yes # Iterate over all the sysdep directories we will use, running their # configure fragments. @@ -6939,6 +6941,12 @@ RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h` +if test "$pthread_in_libc" = yes; then + $as_echo "#define PTHREAD_IN_LIBC 1" >>confdefs.h + +fi + + ac_config_files="$ac_config_files config.make Makefile" ac_config_commands="$ac_config_commands default" diff --git a/configure.ac b/configure.ac index cc47e56e82..64be29d877 100644 --- a/configure.ac +++ b/configure.ac @@ -1777,6 +1777,7 @@ libc_cv_sysconfdir=$sysconfdir libc_cv_localstatedir=$localstatedir libc_cv_gcc_unwind_find_fde=no libc_cv_idn=no +pthread_in_libc=yes # Iterate over all the sysdep directories we will use, running their # configure fragments. @@ -1903,6 +1904,11 @@ RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h` AC_SUBST(VERSION) AC_SUBST(RELEASE) +if test "$pthread_in_libc" = yes; then + AC_DEFINE(PTHREAD_IN_LIBC) +fi +AC_SUBST(pthread_in_libc) + AC_CONFIG_FILES([config.make Makefile]) AC_CONFIG_COMMANDS([default],[[ case $CONFIG_FILES in *config.make*) diff --git a/rt/Makefile b/rt/Makefile index 7b374f2073..c1a0fdeb46 100644 --- a/rt/Makefile +++ b/rt/Makefile @@ -39,6 +39,8 @@ librt-routines = $(aio-routines) \ $(timer-routines) \ $(shm-routines) $(mq-routines) +$(librt-routines-var) = \ + tests := tst-shm tst-timer tst-timer2 \ tst-aio tst-aio64 tst-aio2 tst-aio3 tst-aio4 tst-aio5 tst-aio6 \ tst-aio7 tst-aio8 tst-aio9 tst-aio10 \ diff --git a/sysdeps/mach/hurd/configure b/sysdeps/mach/hurd/configure index 537f235077..4876e1f176 100644 --- a/sysdeps/mach/hurd/configure +++ b/sysdeps/mach/hurd/configure @@ -45,3 +45,6 @@ fi if test -n "$sysheaders"; then CPPFLAGS=$OLD_CPPFLAGS fi + +# Hurd has libpthread as a separate library. +pthread_in_libc=no diff --git a/sysdeps/mach/hurd/configure.ac b/sysdeps/mach/hurd/configure.ac index eab0e5b6c1..9a049b1d86 100644 --- a/sysdeps/mach/hurd/configure.ac +++ b/sysdeps/mach/hurd/configure.ac @@ -26,3 +26,6 @@ fi if test -n "$sysheaders"; then CPPFLAGS=$OLD_CPPFLAGS fi + +# Hurd has libpthread as a separate library. +pthread_in_libc=no diff --git a/sysdeps/pthread/Makefile b/sysdeps/pthread/Makefile index ed15c1e433..8133bcda8f 100644 --- a/sysdeps/pthread/Makefile +++ b/sysdeps/pthread/Makefile @@ -39,6 +39,9 @@ libpthread-routines += thrd_create thrd_detach thrd_exit thrd_join \ cnd_destroy cnd_init cnd_signal cnd_timedwait cnd_wait \ tss_create tss_delete tss_get tss_set +$(libpthread-routines-var) += \ + + tests += tst-cnd-basic tst-mtx-trylock tst-cnd-broadcast \ tst-cnd-timedwait tst-thrd-detach tst-mtx-basic tst-thrd-sleep \ tst-mtx-recursive tst-tss-basic tst-call-once tst-mtx-timedlock \