From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp0.migadu.com ([2001:41d0:303:e224::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms13.migadu.com with LMTPS id sBbIJdg3PGc9pQAAqHPOHw:P1 (envelope-from ) for ; Tue, 19 Nov 2024 07:01:44 +0000 Received: from aspmx1.migadu.com ([2001:41d0:303:e224::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp0.migadu.com with LMTPS id sBbIJdg3PGc9pQAAqHPOHw (envelope-from ) for ; Tue, 19 Nov 2024 08:01:44 +0100 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=debbugs.gnu.org header.s=debbugs-gnu-org header.b=PZGgzg5+; dkim=fail ("headers rsa verify failed") header.d=gnu.org header.s=fencepost-gnu-org header.b=PetO24wt; dmarc=pass (policy=none) header.from=gnu.org; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" ARC-Seal: i=1; s=key1; d=yhetil.org; t=1731999704; a=rsa-sha256; cv=none; b=YN6z8ZNhlghRMumULecUMp9oFqWKc4wacPam2Vo5PpUJMd8Sr+TeI6nvdLQsheEfvxYcq9 Y8pIX2KB0m/EtP1w4kcbcUwJcGzZcRO7UirP/447TWkVf0/KEWDPExVrh6Xpn74Y0PU3sp Bpe/df2q18kjJc+9zEMrD84HFbEswBvZ38NfCT7FMjRm/AMkCdzrFGTlmQpU+ZYHxs0M2E pPEz4Vk3Oh9QPdkbxOSKtL4avCuH6AwLxk3K5h9w9MMJA7q71CW2LdxjW5YlQJeSEAtyNV 39Bwbf52mXdd+d5n52lYd99FmywWbixAUMueVZrki9JuQFdVbGmR6Ocguhfu7g== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=debbugs.gnu.org header.s=debbugs-gnu-org header.b=PZGgzg5+; dkim=fail ("headers rsa verify failed") header.d=gnu.org header.s=fencepost-gnu-org header.b=PetO24wt; dmarc=pass (policy=none) header.from=gnu.org; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1731999704; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding:resent-cc: resent-from:resent-sender:resent-message-id:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=WT4b+T35rkO17WBj2DteiflhVb8/afw7UIcDzgEmjVE=; b=SRrHEyrW/i5DPDRu3W1QFTgo8T/apY6OVroKMum36D0gZwfgywbhSoPHZZTfE713GOKljv ckHRC8DskBmOlk0VOuXHvsAeNAl0gFchuntLzVZ1v4jb8NP76YQiR7tn+Vrnfa9/i8egHE 6mXtuls3pqRKXY6/on0305mgtkhF88ZZUxIor7v7rQFhO5BxMGgut7ziilDPvcDwSUqgxW HOFuhpQWEGq/Q+9afvgCE2GUxfh9c09AnGc6B1RO4VJY/5iu9nlShhLfzguTC1mBVSpLt2 tBGbbvt0ZdM5zIfpvZf23P1cVMINJwdtZgiYKa13jWz4VrollSgQGsZiGhR17Q== Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 44D7E898B7 for ; Tue, 19 Nov 2024 08:01:44 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tDICg-0008Ml-JQ; Tue, 19 Nov 2024 01:59:14 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tDICf-0008M5-Gh for guix-patches@gnu.org; Tue, 19 Nov 2024 01:59:13 -0500 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tDICf-0004Jg-6z; Tue, 19 Nov 2024 01:59:13 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:References:In-Reply-To:Date:From:To:Subject; bh=WT4b+T35rkO17WBj2DteiflhVb8/afw7UIcDzgEmjVE=; b=PZGgzg5+ajnmYKL2IKsxXp5//OHDG2hkRngc2tzu4lqzCJ12BXy8ZWTcKTvp+gAFUNnDHHk6jJ5eiJV3gSqhBdM860OWtVFIsb36EmZG5AldY0vgiK1LxIIFGVgJuFjd75CIOVl8rhl6hRUSno0MQRlN/f/safCep32c3ALIN6yMZmzIuJAFudDVXEQF9isx99uHAWsfW8ZaGmcnDM06Up4uhrB6wsKQljGZMjkkUtjt+MmAk7rKJ7jQoV6235D5U8Z2Pdg3NX6RAAxcR3aXrYFMn6Kd7MtWZl4j/bLnPMtVNn/grYTiqdhYuxUwNIGOF3v7uFpGUVKHGz3QXW0Yiw==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1tDICe-0005H2-V8; Tue, 19 Nov 2024 01:59:12 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#74290] [PATCH v3 12/51] gnu: glibc/hurd: Add patches for the 64bit Hurd. Resent-From: Janneke Nieuwenhuizen Original-Sender: "Debbugs-submit" Resent-CC: andreas@enge.fr, ludo@gnu.org, guix-patches@gnu.org Resent-Date: Tue, 19 Nov 2024 06:59:12 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 74290 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 74290@debbugs.gnu.org Cc: Andreas Enge , Ludovic =?UTF-8?Q?Court=C3=A8s?= X-Debbugs-Original-Xcc: Andreas Enge , Ludovic =?UTF-8?Q?Court=C3=A8s?= Received: via spool by 74290-submit@debbugs.gnu.org id=B74290.173199950719779 (code B ref 74290); Tue, 19 Nov 2024 06:59:12 +0000 Received: (at 74290) by debbugs.gnu.org; 19 Nov 2024 06:58:27 +0000 Received: from localhost ([127.0.0.1]:40471 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tDIBu-00058o-9P for submit@debbugs.gnu.org; Tue, 19 Nov 2024 01:58:27 -0500 Received: from eggs.gnu.org ([209.51.188.92]:48500) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tDIBl-00056O-BI for 74290@debbugs.gnu.org; Tue, 19 Nov 2024 01:58:18 -0500 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 1tDI9Z-0003xo-Di; Tue, 19 Nov 2024 01:56:01 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:References:In-Reply-To:Date:Subject:To: From; bh=WT4b+T35rkO17WBj2DteiflhVb8/afw7UIcDzgEmjVE=; b=PetO24wt2lKSr/a+8q/K vFxRhNTay+NvXF6Fu/MQWIo0lxgG82Sps8dDmJpPrP8g6MeN/2uDGhACaSOC+3ufp+UDxxQm/d/wi OVzyHLFLncUNIUCuhHer0OLGRJd18vtSEcCnmhIhsZ3LfkdzWHqybmT8m81+yA4ZMqhAVByAEUrqj l9MmgXuif/Gx9AQ0L37/+vRH7Vfkf/jkRu8PrEj2oDGDIFIlhjodhqq76ubB4QYRhZNBTEGTzh2Ht GFYtcG4jJ0PnAF6vbJd9bxNk7/hHZwYvcdihybRrOKdqhj4Ep/W/sJcTlplkF3awJ0ybwcyfTr4Y+ Gogvo0kcn6HNqw==; From: Janneke Nieuwenhuizen Date: Tue, 19 Nov 2024 07:54:42 +0100 Message-ID: <0f1b235cb863ff70acda30d9e11d45770e2dade8.1731999203.git.janneke@gnu.org> X-Mailer: git-send-email 2.46.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: guix-patches-bounces+larch=yhetil.org@gnu.org X-Migadu-Flow: FLOW_IN X-Migadu-Country: US X-Migadu-Spam-Score: -0.02 X-Spam-Score: -0.02 X-Migadu-Queue-Id: 44D7E898B7 X-Migadu-Scanner: mx12.migadu.com X-TUID: 4at/4pa3HMfL These patches fix: * Statically linked tar to hang/segfault upon issuing the "--mtime=@1" warning; this is also applicable for the 32bit Hurd using glibc-2.39! See . * Shell replacement problems for the 64bit Hurd. See . * gnu/packages/patches/glibc-hurd-pthread_setcancelstate.patch, gnu/packages/patches/glibc-hurd64-fault.patch, gnu/packages/patches/glibc-hurd64-intr-msg-clobber.patch: New files. * gnu/local.mk (dist_patch_DATA): Register them. * gnu/packages/base.scm (glibc/hurd): Use them. Change-Id: I9ee65983876cd22ad1dc01aabb41a34074631599 --- gnu/local.mk | 3 + gnu/packages/base.scm | 11 ++- .../glibc-hurd-pthread_setcancelstate.patch | 92 +++++++++++++++++++ gnu/packages/patches/glibc-hurd64-fault.patch | 32 +++++++ .../glibc-hurd64-intr-msg-clobber.patch | 62 +++++++++++++ 5 files changed, 199 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/glibc-hurd-pthread_setcancelstate.patch create mode 100644 gnu/packages/patches/glibc-hurd64-fault.patch create mode 100644 gnu/packages/patches/glibc-hurd64-intr-msg-clobber.patch diff --git a/gnu/local.mk b/gnu/local.mk index 9a775cc160..eb50df6e13 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1439,7 +1439,10 @@ dist_patch_DATA = \ %D%/packages/patches/glibc-hurd-getauxval.patch \ %D%/packages/patches/glibc-hurd-gettyent.patch \ %D%/packages/patches/glibc-hurd-mach-print.patch \ + %D%/packages/patches/glibc-hurd-pthread_setcancelstate.patch \ %D%/packages/patches/glibc-hurd-signal-sa-siginfo.patch \ + %D%/packages/patches/glibc-hurd64-fault.patch \ + %D%/packages/patches/glibc-hurd64-intr-msg-clobber.patch \ %D%/packages/patches/glibc-ldd-powerpc.patch \ %D%/packages/patches/glibc-ldd-x86_64.patch \ %D%/packages/patches/glibc-locales.patch \ diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 83f8c0d9e9..bab1f258c6 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -1588,7 +1588,16 @@ (define-public which command.") (license gpl3+))) ; some files are under GPLv2+ -(define-public glibc/hurd glibc) +(define-public glibc/hurd + (package/inherit glibc + (source + (origin + (inherit (package-source glibc)) + (patches + (append (origin-patches (package-source glibc)) + (search-patches "glibc-hurd-pthread_setcancelstate.patch" + "glibc-hurd64-fault.patch" + "glibc-hurd64-intr-msg-clobber.patch"))))))) (define-public glibc/hurd-headers (package/inherit glibc/hurd diff --git a/gnu/packages/patches/glibc-hurd-pthread_setcancelstate.patch b/gnu/packages/patches/glibc-hurd-pthread_setcancelstate.patch new file mode 100644 index 0000000000..1d7c81b98e --- /dev/null +++ b/gnu/packages/patches/glibc-hurd-pthread_setcancelstate.patch @@ -0,0 +1,92 @@ +Upstream-status: Taken from . + +This is needed for the 64bit Hurd statically linked tar non to hang when +issuing a warning. + +since the move of libpthread functions to libc, glibc dropped the use +of __libc_ptf_call. But htl hasn't made the move yet, so we have to use +__libc_ptf_call there for now. + +Index: glibc-2.36/misc/error.c +=================================================================== +--- glibc-2.36.orig/misc/error.c ++++ glibc-2.36/misc/error.c +@@ -240,7 +240,8 @@ __error_internal (int status, int errnum + /* We do not want this call to be cut short by a thread + cancellation. Therefore disable cancellation for now. */ + int state = PTHREAD_CANCEL_ENABLE; +- __pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &state); ++ __libc_ptf_call (__pthread_setcancelstate, ++ (PTHREAD_CANCEL_DISABLE, &state), 0); + #endif + + flush_stdout (); +@@ -262,7 +263,7 @@ __error_internal (int status, int errnum + + #ifdef _LIBC + _IO_funlockfile (stderr); +- __pthread_setcancelstate (state, NULL); ++ __libc_ptf_call (__pthread_setcancelstate, (state, NULL), 0); + #endif + } + +@@ -306,7 +307,9 @@ __error_at_line_internal (int status, in + /* We do not want this call to be cut short by a thread + cancellation. Therefore disable cancellation for now. */ + int state = PTHREAD_CANCEL_ENABLE; +- __pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &state); ++ __libc_ptf_call (__pthread_setcancelstate, ++ (PTHREAD_CANCEL_DISABLE, &state), ++ 0); + #endif + + flush_stdout (); +@@ -336,7 +339,7 @@ __error_at_line_internal (int status, in + + #ifdef _LIBC + _IO_funlockfile (stderr); +- __pthread_setcancelstate (state, NULL); ++ __libc_ptf_call (__pthread_setcancelstate, (state, NULL), 0); + #endif + } + +Index: glibc-2.36/libio/iopopen.c +=================================================================== +--- glibc-2.36.orig/libio/iopopen.c ++++ glibc-2.36/libio/iopopen.c +@@ -281,9 +281,10 @@ _IO_new_proc_close (FILE *fp) + do + { + int state; +- __pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &state); ++ __libc_ptf_call (__pthread_setcancelstate, ++ (PTHREAD_CANCEL_DISABLE, &state), 0); + wait_pid = __waitpid (((_IO_proc_file *) fp)->pid, &wstatus, 0); +- __pthread_setcancelstate (state, NULL); ++ __libc_ptf_call (__pthread_setcancelstate, (state, NULL), 0); + } + while (wait_pid == -1 && errno == EINTR); + if (wait_pid == -1) +Index: glibc-2.36/stdlib/fmtmsg.c +=================================================================== +--- glibc-2.36.orig/stdlib/fmtmsg.c ++++ glibc-2.36/stdlib/fmtmsg.c +@@ -124,7 +124,8 @@ fmtmsg (long int classification, const c + /* We do not want this call to be cut short by a thread + cancellation. Therefore disable cancellation for now. */ + int state = PTHREAD_CANCEL_ENABLE; +- __pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &state); ++ __libc_ptf_call (__pthread_setcancelstate, ++ (PTHREAD_CANCEL_DISABLE, &state), 0); + + __libc_lock_lock (lock); + +@@ -193,7 +194,7 @@ fmtmsg (long int classification, const c + + __libc_lock_unlock (lock); + +- __pthread_setcancelstate (state, NULL); ++ __libc_ptf_call (__pthread_setcancelstate, (state, NULL), 0); + + return result; + } diff --git a/gnu/packages/patches/glibc-hurd64-fault.patch b/gnu/packages/patches/glibc-hurd64-fault.patch new file mode 100644 index 0000000000..24980e8c2a --- /dev/null +++ b/gnu/packages/patches/glibc-hurd64-fault.patch @@ -0,0 +1,32 @@ +Upstream-status: Taken from: . + +See . + +commit 11ad033e1c09c8b8e7bbaa72420f41ab8bcf0f63 +Author: Flavio Cruz +Date: Tue Jul 30 00:51:20 2024 -0400 + + x86_64 hurd: ensure we have a large enough buffer to receive exception_raise requests. + + Message-ID: + +diff --git a/hurd/hurdfault.c b/hurd/hurdfault.c +index 5110c6030f..1fe973f54d 100644 +--- a/hurd/hurdfault.c ++++ b/hurd/hurdfault.c +@@ -121,7 +121,14 @@ faulted (void) + struct + { + mach_msg_header_t head; +- char buf[64]; ++ /* This is the size of the exception_raise request ++ * including mach_msg_header_t. ++ * See generated code in faultexc_server.c. */ ++#ifdef __LP64__ ++ char buf[112]; ++#else ++ char buf[64]; ++#endif + } request; + mig_reply_header_t reply; + extern int _hurdsig_fault_exc_server (mach_msg_header_t *, diff --git a/gnu/packages/patches/glibc-hurd64-intr-msg-clobber.patch b/gnu/packages/patches/glibc-hurd64-intr-msg-clobber.patch new file mode 100644 index 0000000000..600f89a711 --- /dev/null +++ b/gnu/packages/patches/glibc-hurd64-intr-msg-clobber.patch @@ -0,0 +1,62 @@ +Upstream-status: Taken from . + +See , +and . + +Commited for 2.40 + +commit c8b4ce0b368115714bd4cce131e1683759471099 +Author: Samuel Thibault +Date: Sat Jul 13 17:00:55 2024 +0200 + + hurd: Fix restoring message to be retried + + save_data stores the start of the original message to be retried, + overwritten by the EINTR reply. In 64b builds the overwrite is however + rounded up to the 64b pointer size, so we have to save more than just + the 32b err. + + Thanks a lot to Luca Dariz for the investigation! + +diff --git a/hurd/intr-msg.c b/hurd/intr-msg.c +index 2c2e7dc463..424c1fc700 100644 +--- a/hurd/intr-msg.c ++++ b/hurd/intr-msg.c +@@ -42,7 +42,10 @@ _hurd_intr_rpc_mach_msg (mach_msg_header_t *msg, + struct clobber + { + mach_msg_type_t type; +- error_t err; ++ union { ++ error_t err; ++ uintptr_t align; ++ }; + }; + union msg + { + +Taken from: + +Force putting save_data on the stack rather than in SSE register + +The signal management does not yet properly save SSE state, so that save_data +would get overwritten by signal handlers, notably leading to `` shell +replacement getting empty content because then the io_read RPC retry gets an +MIG_BAD_ARGUMENTS error. + +XXX: This is only temporary to fix the common shll replacement issue, and is +waiting for proper SSE state restoration. + +Index: glibc-2.38/hurd/intr-msg.c +=================================================================== +--- glibc-2.38.orig/hurd/intr-msg.c ++++ glibc-2.38/hurd/intr-msg.c +@@ -79,7 +79,7 @@ _hurd_intr_rpc_mach_msg (mach_msg_header + mach_msg_bits_t msgh_bits; + mach_port_t remote_port; + mach_msg_id_t msgid; +- struct clobber save_data; ++ volatile struct clobber save_data; + + if ((option & (MACH_SEND_MSG|MACH_RCV_MSG)) != (MACH_SEND_MSG|MACH_RCV_MSG) + || _hurd_msgport_thread == MACH_PORT_NULL) -- 2.46.0