From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id GFJ5IeNY6mAHCQEAgWs5BA (envelope-from ) for ; Sun, 11 Jul 2021 04:35:15 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1 with LMTPS id qFckHeNY6mAGUAAAbx9fmQ (envelope-from ) for ; Sun, 11 Jul 2021 02:35:15 +0000 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 655481F3F2 for ; Sun, 11 Jul 2021 04:35:14 +0200 (CEST) Received: from localhost ([::1]:46882 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1m2PJI-0004B1-0F for larch@yhetil.org; Sat, 10 Jul 2021 22:35:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43934) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m2PJ8-0004Ad-Ul for bug-guix@gnu.org; Sat, 10 Jul 2021 22:35:02 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:50368) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1m2PJ8-0002tO-Mi for bug-guix@gnu.org; Sat, 10 Jul 2021 22:35:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1m2PJ8-0007cc-Gc for bug-guix@gnu.org; Sat, 10 Jul 2021 22:35:02 -0400 X-Loop: help-debbugs@gnu.org Subject: bug#49516: [core-updates] glibc-2.31 patches fail to apply Resent-From: Chris Marusich Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Sun, 11 Jul 2021 02:35:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 49516 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: 49516@debbugs.gnu.org Received: via spool by 49516-submit@debbugs.gnu.org id=B49516.162597084529232 (code B ref 49516); Sun, 11 Jul 2021 02:35:02 +0000 Received: (at 49516) by debbugs.gnu.org; 11 Jul 2021 02:34:05 +0000 Received: from localhost ([127.0.0.1]:33681 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1m2PIB-0007bO-J2 for submit@debbugs.gnu.org; Sat, 10 Jul 2021 22:34:05 -0400 Received: from mail-pl1-f172.google.com ([209.85.214.172]:37859) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1m2PI7-0007as-Pc for 49516@debbugs.gnu.org; Sat, 10 Jul 2021 22:34:01 -0400 Received: by mail-pl1-f172.google.com with SMTP id a14so7165413pls.4 for <49516@debbugs.gnu.org>; Sat, 10 Jul 2021 19:33:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:references:date:in-reply-to:message-id:user-agent :mime-version; bh=yPbQmHd8wArhPEff5EpL6jfB4Wb3TZATYKMVQfE5UcI=; b=SwORNeWfs3N8ipOAadUyBWMt2YtU4S7lI7KYbT0sixmFyPr0uzAiuvxKKbyY4U7K50 n8Wi+h+RNTNIBqZzg7tkZlFa60IPRS8TDN8AMD1/mSLr2ri3BNt662m7gKm+It5nNoh0 aYBInwwdVqFU7IHCeqFD7nmwhCktI5Gyux8HjUnKej4BG8j+i3KTNHtXo7RjWrEBvelD yzkYNFVAQ9JFmwLAj3TClV+/MuLb29lgZ53Js9MO9a35FgMYD1VPwF0LTtPYueDmnk5s kkhK3qPW2Uqt8DMxjTI1O1IeEAD4uNsTEX3MjQb8n4mjcwHiAiFb6heQ3pZ9Szysd0BE PMMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=yPbQmHd8wArhPEff5EpL6jfB4Wb3TZATYKMVQfE5UcI=; b=fiYq6NvtLe1QR/SAaFhxBbEWZVL/GTrMtzRZCkKZoocX46H9ShyYNyi5u+ZSQ7RVNr EDMm4k3jMRVjEsjqgmsr80kUW26OegFIAuIHGjEFRKXTt0b/b3rmvavaFqy2ilMWiQ+i C/Suwqftll1zAfv0cRQgWiqUBZLdVlRivmKGARphGst2Mm8XTohG75C+7ZcQn9+TlRaS seV0Vcq6QpQL6BWRaDqkvUAwmSgqc48D9sus8E4MeVJwMjvDoVnEJraUEDNVi+hKgRaQ YjsQfN394JT8Bsd3UCBz77p/k9kOBx9WFK65YPfcys6KZYOcyyclmWwvd+7i1MFyCH3F P4LQ== X-Gm-Message-State: AOAM5313NzOVQf1pLrJEDNYqQVsMLA4ipurCFupeUA4DzH2tHFLGtIwh FL88TDsTR7ed28WJf9y/KTaSiaFIDS5PuA== X-Google-Smtp-Source: ABdhPJyxTjCFZyRBI9zY1hQLmTpXesIJxW36FVitgtrVB504Bcy7PVMp7qMPpJRxUM14nyLj21VtWw== X-Received: by 2002:a17:90b:4c12:: with SMTP id na18mr16744195pjb.157.1625970833407; Sat, 10 Jul 2021 19:33:53 -0700 (PDT) Received: from garuda-lan ([2601:601:9d01:3f90::a1ab]) by smtp.gmail.com with ESMTPSA id b2sm8805247pgh.9.2021.07.10.19.33.52 for <49516@debbugs.gnu.org> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Jul 2021 19:33:52 -0700 (PDT) From: Chris Marusich References: <87v95h66cg.fsf@gmail.com> Date: Sat, 10 Jul 2021 19:33:50 -0700 In-Reply-To: <87v95h66cg.fsf@gmail.com> (Chris Marusich's message of "Sat, 10 Jul 2021 17:29:19 -0700") Message-ID: <87o8b960kx.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/signed; boundary="==-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-guix@gnu.org List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+larch=yhetil.org@gnu.org Sender: "bug-Guix" X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1625970915; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: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=yPbQmHd8wArhPEff5EpL6jfB4Wb3TZATYKMVQfE5UcI=; b=tr790j5pp3ngqTvk1maYX38XUN3BqxM27FsG9IY9DuhmwO1t7u6MjiWYSQSAQKMnS6A412 88usqBRflVURepo+ZaQ637A0R64pmPdJQnk9IrYELLCa3AfY/ur8iB7vucr6J3Rc94IWoj XwPVhqX8X6x0dRkoKBB+PCk5/uB5sLnLcsgtYTCCqSsPRkVT2bnApTBMtvXYoS8Q+RU93N tpitoj4JMh7Zhjdejl8kO6pqq0rnUeOglG7fa90gphHMiU0D3qVj4QzHNzzISBzlATowQE fTPMATYGJwGCmsuTKGp5wm9/LVxDcFpK0Acl1PAuf3pP25zM9/1ktxA7yk+IZg== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1625970915; a=rsa-sha256; cv=none; b=mCmW4Srd9lKjxnGwJxW4iUfZXj0ktqK9h5tHDTEqEtK51qDeszrvtVcMKTAlBLigYi4sDu kvaDCYyqBxH3yk03TIi98gxkWv+RkFAZEfhbwI6J4hjPP18Dd/MS1tshH8K4rrPq5L533i qlZH7Mar6KNaB52Y+IOjSxTvDtOe28Q7jLiMLlZllBWt35/E3q33uyBD8PdnMfbEV3k91c gWVC/ZibLsrpjCKXPCL2Fdx3Ka6vp+atnUVmOTc4sD7NtpWn+z922CVd5FldBt847/WytP 6M9VbocEES/decil1B4gshaP2kVbELib3iJ2x1k6i3LKRebgRnI+tPaLMxFbNw== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gmail.com header.s=20161025 header.b=SwORNeWf; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of bug-guix-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=bug-guix-bounces@gnu.org X-Migadu-Spam-Score: -0.91 Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gmail.com header.s=20161025 header.b=SwORNeWf; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of bug-guix-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=bug-guix-bounces@gnu.org X-Migadu-Queue-Id: 655481F3F2 X-Spam-Score: -0.91 X-Migadu-Scanner: scn0.migadu.com X-TUID: BBl95XAZjTjH --==-=-= Content-Type: multipart/mixed; boundary="=-=-=" --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Chris Marusich writes: > On core-updates, the glibc-2.31 patch no longer apply cleanly. Looks like the other old glibc versions explicitly declare their patches, like this: =2D-8<---------------cut here---------------start------------->8--- (define-public glibc-2.30 (package (inherit glibc) (version "2.30") (source (origin (inherit (package-source glibc)) (uri (string-append "mirror://gnu/glibc/glibc-" version ".tar= .xz")) (sha256 (base32 "1bxqpg91d02qnaz837a5kamm0f43pr1il4r9pknygywsar713i72")) (patches (search-patches "glibc-ldd-x86_64.patch" "glibc-CVE-2019-19126.patch" "glibc-hidden-visibility-ldconfig.pa= tch" "glibc-versioned-locpath.patch" "glibc-allow-kernel-2.6.32.patch" "glibc-reinstate-prlimit64-fallback.= patch" "glibc-2.29-supported-locales.patch"= )))))) =2D-8<---------------cut here---------------end--------------->8--- I've updated my patch to do the same thing; see attached. As an aside, when do we remove old versions of glibc? =2D-=20 Chris --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-gnu-glibc-2.31-Restore-patches.patch Content-Transfer-Encoding: quoted-printable From=20ef169adea6f9ca971e22845b839511b015cbc76c Mon Sep 17 00:00:00 2001 From: Chris Marusich Date: Sat, 10 Jul 2021 16:49:49 -0700 Subject: [PATCH] gnu: glibc-2.31: Restore patches. Commit 87961fc965b96ac0c7a5909ac2faab2d023b5339 inadvertently modified the patch set for glibc-2.31. This change restores the original patch set. Fixes: . * gnu/packages/base.scm (glibc-2.31) [source]: Use the same patches as glib= c, but replace glibc-hurd-clock_gettime_monotonic.patch with glibc-2.31-hurd-clock_gettime_monotonic.patch, and add glibc-hurd-signal-sa-siginfo.patch. * gnu/packages/patches/glibc-2.31-hurd-clock_gettime_monotonic.patch: Add i= t. * gnu/packages/patches/glibc-hurd-signal-sa-siginfo.patch: Add it. * gnu/local.mk (dist_patch_DATA): Adjust accordingly. =2D-- gnu/local.mk | 2 + gnu/packages/base.scm | 16 +- ...bc-2.31-hurd-clock_gettime_monotonic.patch | 84 +++ .../glibc-hurd-signal-sa-siginfo.patch | 637 ++++++++++++++++++ 4 files changed, 738 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/glibc-2.31-hurd-clock_gettime_mono= tonic.patch create mode 100644 gnu/packages/patches/glibc-hurd-signal-sa-siginfo.patch diff --git a/gnu/local.mk b/gnu/local.mk index 901fc7c4ba..dfb862ed72 100644 =2D-- a/gnu/local.mk +++ b/gnu/local.mk @@ -1114,10 +1114,12 @@ dist_patch_DATA =3D \ %D%/packages/patches/glibc-dl-cache.patch \ %D%/packages/patches/glibc-hidden-visibility-ldconfig.patch \ %D%/packages/patches/glibc-hurd-clock_gettime_monotonic.patch \ + %D%/packages/patches/glibc-2.31-hurd-clock_gettime_monotonic.patch \ %D%/packages/patches/glibc-hurd-clock_t_centiseconds.patch \ %D%/packages/patches/glibc-hurd-gettyent.patch \ %D%/packages/patches/glibc-hurd-mach-print.patch \ %D%/packages/patches/glibc-hurd-magic-pid.patch \ + %D%/packages/patches/glibc-hurd-signal-sa-siginfo.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 9c1c946e4a..bdccf2702d 100644 =2D-- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -938,7 +938,21 @@ with the Linux kernel.") (uri (string-append "mirror://gnu/glibc/glibc-" version ".ta= r.xz")) (sha256 (base32 =2D "05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj"))= )))) + "05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj")) + (patches (search-patches + "glibc-ldd-powerpc.patch" + "glibc-ldd-x86_64.patch" + "glibc-dl-cache.patch" + "glibc-hidden-visibility-ldconfig.patch" + "glibc-versioned-locpath.patch" + "glibc-allow-kernel-2.6.32.patch" + "glibc-reinstate-prlimit64-fallback.patch" + "glibc-supported-locales.patch" + "glibc-hurd-clock_t_centiseconds.patch" + "glibc-2.31-hurd-clock_gettime_monotonic.patch" + "glibc-hurd-signal-sa-siginfo.patch" + "glibc-hurd-mach-print.patch" + "glibc-hurd-gettyent.patch")))))) =20 (define-public glibc-2.30 (package diff --git a/gnu/packages/patches/glibc-2.31-hurd-clock_gettime_monotonic.p= atch b/gnu/packages/patches/glibc-2.31-hurd-clock_gettime_monotonic.patch new file mode 100644 index 0000000000..1c3fe427f9 =2D-- /dev/null +++ b/gnu/packages/patches/glibc-2.31-hurd-clock_gettime_monotonic.patch @@ -0,0 +1,84 @@ +This is needed to run Python on the Hurd, especially during the build of +python-boot0. + +Adapted from https://salsa.debian.org/glibc-team/glibc/-/blob/glibc-2.31/d= ebian/patches/hurd-i386/unsubmitted-clock_t_centiseconds.diff + +Use the realtime clock for the monotonic clock. This is of course not a pr= oper +implementation (which is being done in Mach), but will permit to fix at le= ast +the iceweasel stack. + +vlc however doesn't build when _POSIX_CLOCK_SELECTION is enabled but +_POSIX_TIMERS is not, and they refuse to fix that (see #765578), so disabl= e the +former. + +From 0aa1dfd580cf9ad7b812c307b128decb782b825f Mon Sep 17 00:00:00 2001 +From: Jan Nieuwenhuizen +Date: Mon, 2 Mar 2020 18:59:04 +0100 +Subject: [PATCH 2/2] Use realtime clock for the monotonic clock. + +--- + sysdeps/mach/clock_gettime.c | 2 +- + sysdeps/mach/hurd/bits/posix_opt.h | 6 +++--- + sysdeps/posix/clock_getres.c | 1 + + sysdeps/pthread/timer_create.c | 2 +- + 4 files changed, 6 insertions(+), 5 deletions(-) + +diff --git a/sysdeps/mach/clock_gettime.c b/sysdeps/mach/clock_gettime.c +index ac3547df3c..af8681ba4e 100644 +--- a/sysdeps/mach/clock_gettime.c ++++ b/sysdeps/mach/clock_gettime.c +@@ -25,7 +25,7 @@ + int + __clock_gettime (clockid_t clock_id, struct timespec *ts) + { +- if (clock_id !=3D CLOCK_REALTIME) ++ if (clock_id !=3D CLOCK_MONOTONIC && clock_id !=3D CLOCK_REALTIME) + { + errno =3D EINVAL; + return -1; +diff --git a/sysdeps/mach/hurd/bits/posix_opt.h b/sysdeps/mach/hurd/bits/p= osix_opt.h +index 0050151332..27b3a28ab7 100644 +--- a/sysdeps/mach/hurd/bits/posix_opt.h ++++ b/sysdeps/mach/hurd/bits/posix_opt.h +@@ -163,10 +163,10 @@ + #define _POSIX_THREAD_PROCESS_SHARED -1 +=20 + /* The monotonic clock might be available. */ +-#define _POSIX_MONOTONIC_CLOCK 0 ++#define _POSIX_MONOTONIC_CLOCK 200809L +=20 +-/* The clock selection interfaces are available. */ +-#define _POSIX_CLOCK_SELECTION 200809L ++/* The clock selection interfaces are not really available yet. */ ++#define _POSIX_CLOCK_SELECTION -1 +=20 + /* Advisory information interfaces could be available in future. */ + #define _POSIX_ADVISORY_INFO 0 +diff --git a/sysdeps/posix/clock_getres.c b/sysdeps/posix/clock_getres.c +index fcd79fd554..1dd02aa449 100644 +--- a/sysdeps/posix/clock_getres.c ++++ b/sysdeps/posix/clock_getres.c +@@ -52,6 +52,7 @@ __clock_getres (clockid_t clock_id, struct timespec *res) + switch (clock_id) + { + case CLOCK_REALTIME: ++ case CLOCK_MONOTONIC: + retval =3D realtime_getres (res); + break; +=20 +diff --git a/sysdeps/pthread/timer_create.c b/sysdeps/pthread/timer_create= .c +index 9d8a9ea8ae..3430582c09 100644 +--- a/sysdeps/pthread/timer_create.c ++++ b/sysdeps/pthread/timer_create.c +@@ -48,7 +48,7 @@ timer_create (clockid_t clock_id, struct sigevent *evp, = timer_t *timerid) + return -1; + } +=20 +- if (clock_id !=3D CLOCK_REALTIME) ++ if (clock_id !=3D CLOCK_REALTIME && clock_id !=3D CLOCK_MONOTONIC) + { + __set_errno (EINVAL); + return -1; +--=20 +2.24.0 + diff --git a/gnu/packages/patches/glibc-hurd-signal-sa-siginfo.patch b/gnu/= packages/patches/glibc-hurd-signal-sa-siginfo.patch new file mode 100644 index 0000000000..36ea55e188 =2D-- /dev/null +++ b/gnu/packages/patches/glibc-hurd-signal-sa-siginfo.patch @@ -0,0 +1,637 @@ +This patch is needed to build e2fsprogs, util-linux. + +Taken from https://salsa.debian.org/glibc-team/glibc/-/blob/glibc-2.31/deb= ian/patches/hurd-i386/tg-hurdsig-SA_SIGINFO.diff + +From: Jeremie Koenig +Subject: [PATCH] implement SA_SIGINFO signal handlers. + + 52baaca Hurd signals: Copy bits/sigaction.h + 4232c66 Hurd signals: SA_SIGINFO support + 1831cfe Hurd signals: Use POSIX sigcodes + +--- + hurd/hurd/signal.h | 5 + + hurd/hurdfault.c | 2=20 + hurd/hurdinit.c | 2=20 + hurd/hurdsig.c | 6 - + sysdeps/mach/hurd/bits/sigaction.h | 86 +++++++++++++++++++++ + sysdeps/mach/hurd/i386/bits/sigcontext.h | 4=20 + sysdeps/mach/hurd/i386/exc2signal.c | 123 +++++++++++++++++++------= ----- + sysdeps/mach/hurd/i386/trampoline.c | 125 +++++++++++++++++++++++++= +++--- + sysdeps/mach/hurd/kill.c | 2=20 + sysdeps/mach/hurd/setitimer.c | 2=20 + 10 files changed, 293 insertions(+), 64 deletions(-) + +Index: glibc-2.31/hurd/hurd/signal.h +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +--- glibc-2.31.orig/hurd/hurd/signal.h ++++ glibc-2.31/hurd/hurd/signal.h +@@ -290,6 +290,11 @@ extern int _hurd_raise_signal (struct hu + extern void _hurd_exception2signal (struct hurd_signal_detail *detail, + int *signo); +=20 ++/* Translate a Mach exception into a signal with a legacy sigcode. */ ++ ++extern void _hurd_exception2signal_legacy (struct hurd_signal_detail *det= ail, ++ int *signo); ++ +=20 + /* Make the thread described by SS take the signal described by SIGNO and + DETAIL. If the process is traced, this will in fact stop with a SIGNO +Index: glibc-2.31/hurd/hurdfault.c +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +--- glibc-2.31.orig/hurd/hurdfault.c ++++ glibc-2.31/hurd/hurdfault.c +@@ -70,7 +70,7 @@ _hurdsig_fault_catch_exception_raise (ma + codes into a signal number and subcode. */ + _hurd_exception2signal (&d, &signo); +=20 +- return HURD_PREEMPT_SIGNAL_P (&_hurdsig_fault_preemptor, signo, d.code) ++ return HURD_PREEMPT_SIGNAL_P (&_hurdsig_fault_preemptor, signo, d.exc_s= ubcode) + ? 0 : EGREGIOUS; + } +=20 +Index: glibc-2.31/hurd/hurdinit.c +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +--- glibc-2.31.orig/hurd/hurdinit.c ++++ glibc-2.31/hurd/hurdinit.c +@@ -177,7 +177,7 @@ _hurd_new_proc_init (char **argv, + /* This process is "traced", meaning it should stop on signals or exe= c. + We are all set up now to handle signals. Stop ourselves, to inform + our parent (presumably a debugger) that the exec has completed. */ +- __msg_sig_post (_hurd_msgport, SIGTRAP, 0, __mach_task_self ()); ++ __msg_sig_post (_hurd_msgport, SIGTRAP, TRAP_TRACE, __mach_task_self = ()); + } +=20 + #include +Index: glibc-2.31/hurd/hurdsig.c +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +--- glibc-2.31.orig/hurd/hurdsig.c ++++ glibc-2.31/hurd/hurdsig.c +@@ -730,7 +730,7 @@ post_signal (struct hurd_sigstate *ss, + { /* PE cannot be null. */ + do + { +- if (HURD_PREEMPT_SIGNAL_P (pe, signo, detail->code)) ++ if (HURD_PREEMPT_SIGNAL_P (pe, signo, detail->exc_subcode)) + { + if (pe->preemptor) + { +@@ -1374,7 +1374,7 @@ _S_msg_sig_post (mach_port_t me, + if (err =3D signal_allowed (signo, refport)) + return err; +=20 +- d.code =3D sigcode; ++ d.code =3D d.exc_subcode =3D sigcode; + d.exc =3D 0; +=20 + /* Post the signal to a global receiver thread (or mark it pending in +@@ -1403,7 +1403,7 @@ _S_msg_sig_post_untraced (mach_port_t me + if (err =3D signal_allowed (signo, refport)) + return err; +=20 +- d.code =3D sigcode; ++ d.code =3D d.exc_subcode =3D sigcode; + d.exc =3D 0; +=20 + /* Post the signal to the designated signal-receiving thread. This will +Index: glibc-2.31/sysdeps/mach/hurd/bits/sigaction.h +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +--- /dev/null ++++ glibc-2.31/sysdeps/mach/hurd/bits/sigaction.h +@@ -0,0 +1,86 @@ ++/* Copyright (C) 1991-2015 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, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _BITS_SIGACTION_H ++#define _BITS_SIGACTION_H 1 ++ ++#ifndef _SIGNAL_H ++# error "Never include directly; use instea= d." ++#endif ++ ++/* These definitions match those used by the 4.4 BSD kernel. ++ If the operating system has a `sigaction' system call that correctly ++ implements the POSIX.1 behavior, there should be a system-dependent ++ version of this file that defines `struct sigaction' and the `SA_*' ++ constants appropriately. */ ++ ++/* Structure describing the action to be taken when a signal arrives. */ ++struct sigaction ++ { ++ /* Signal handler. */ ++#if defined __USE_POSIX199309 || defined __USE_XOPEN_EXTENDED ++ union ++ { ++ /* Used if SA_SIGINFO is not set. */ ++ __sighandler_t sa_handler; ++ /* Used if SA_SIGINFO is set. */ ++ void (*sa_sigaction) (int, siginfo_t *, void *); ++ } ++ __sigaction_handler; ++# define sa_handler __sigaction_handler.sa_handler ++# define sa_sigaction __sigaction_handler.sa_sigaction ++#else ++ __sighandler_t sa_handler; ++#endif ++ ++ /* Additional set of signals to be blocked. */ ++ __sigset_t sa_mask; ++ ++ /* Special flags. */ ++ int sa_flags; ++ }; ++ ++/* Bits in `sa_flags'. */ ++#if defined __USE_XOPEN_EXTENDED || defined __USE_MISC ++# define SA_ONSTACK 0x0001 /* Take signal on signal stack. */ ++#endif ++#if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8 ++# define SA_RESTART 0x0002 /* Restart syscall on signal return. */ ++# define SA_NODEFER 0x0010 /* Don't automatically block the signal when ++ its handler is being executed. */ ++# define SA_RESETHAND 0x0004 /* Reset to SIG_DFL on entry to handler. */ ++#endif ++#define SA_NOCLDSTOP 0x0008 /* Don't send SIGCHLD when children stop. */ ++#define SA_SIGINFO 0x0040 /* Signal handler with SA_SIGINFO args */ ++ ++#ifdef __USE_MISC ++# define SA_INTERRUPT 0 /* Historical no-op ("not SA_RESTART"). */ ++ ++/* Some aliases for the SA_ constants. */ ++# define SA_NOMASK SA_NODEFER ++# define SA_ONESHOT SA_RESETHAND ++# define SA_STACK SA_ONSTACK ++#endif ++ ++ ++/* Values for the HOW argument to `sigprocmask'. */ ++#define SIG_BLOCK 1 /* Block signals. */ ++#define SIG_UNBLOCK 2 /* Unblock signals. */ ++#define SIG_SETMASK 3 /* Set the set of blocked signals. */ ++ ++#endif +Index: glibc-2.31/sysdeps/mach/hurd/i386/bits/sigcontext.h +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +--- glibc-2.31.orig/sysdeps/mach/hurd/i386/bits/sigcontext.h ++++ glibc-2.31/sysdeps/mach/hurd/i386/bits/sigcontext.h +@@ -97,6 +97,10 @@ struct sigcontext + #define sc_ps sc_efl +=20 +=20 ++/* The deprecated sigcode values below are passed as an extra, non-portab= le ++ argument to regular signal handlers. You should use SA_SIGINFO handle= rs ++ instead, which use the standard POSIX signal codes. */ ++ + /* Codes for SIGFPE. */ + #define FPE_INTOVF_TRAP 0x1 /* integer overflow */ + #define FPE_INTDIV_FAULT 0x2 /* integer divide by zero */ +Index: glibc-2.31/sysdeps/mach/hurd/i386/exc2signal.c +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +--- glibc-2.31.orig/sysdeps/mach/hurd/i386/exc2signal.c ++++ glibc-2.31/sysdeps/mach/hurd/i386/exc2signal.c +@@ -23,8 +23,8 @@ + /* Translate the Mach exception codes, as received in an `exception_raise= ' RPC, + into a signal number and signal subcode. */ +=20 +-void +-_hurd_exception2signal (struct hurd_signal_detail *detail, int *signo) ++static void ++exception2signal (struct hurd_signal_detail *detail, int *signo, int posi= x) + { + detail->error =3D 0; +=20 +@@ -36,44 +36,62 @@ _hurd_exception2signal (struct hurd_sign + break; +=20 + case EXC_BAD_ACCESS: +- if (detail->exc_code =3D=3D KERN_INVALID_ADDRESS +- || detail->exc_code =3D=3D KERN_PROTECTION_FAILURE +- || detail->exc_code =3D=3D KERN_WRITE_PROTECTION_FAILURE) +- *signo =3D SIGSEGV; +- else +- *signo =3D SIGBUS; +- detail->code =3D detail->exc_subcode; ++ switch (detail->exc_code) ++ { ++ case KERN_INVALID_ADDRESS: ++ case KERN_MEMORY_FAILURE: ++ *signo =3D SIGSEGV; ++ detail->code =3D posix ? SEGV_MAPERR : detail->exc_subcode; ++ break; ++ ++ case KERN_PROTECTION_FAILURE: ++ case KERN_WRITE_PROTECTION_FAILURE: ++ *signo =3D SIGSEGV; ++ detail->code =3D posix ? SEGV_ACCERR : detail->exc_subcode; ++ break; ++ ++ default: ++ *signo =3D SIGBUS; ++ detail->code =3D posix ? BUS_ADRERR : detail->exc_subcode; ++ break; ++ } + detail->error =3D detail->exc_code; + break; +=20 + case EXC_BAD_INSTRUCTION: + *signo =3D SIGILL; +- if (detail->exc_code =3D=3D EXC_I386_INVOP) +- detail->code =3D ILL_INVOPR_FAULT; +- else if (detail->exc_code =3D=3D EXC_I386_STKFLT) +- detail->code =3D ILL_STACK_FAULT; +- else +- detail->code =3D 0; ++ switch (detail->exc_code) ++ { ++ case EXC_I386_INVOP: ++ detail->code =3D posix ? ILL_ILLOPC : ILL_INVOPR_FAULT; ++ break; ++ ++ case EXC_I386_STKFLT: ++ detail->code =3D posix ? ILL_BADSTK : ILL_STACK_FAULT; ++ break; ++ ++ default: ++ detail->code =3D 0; ++ break; ++ } + break; +=20 + case EXC_ARITHMETIC: ++ *signo =3D SIGFPE; + switch (detail->exc_code) + { + case EXC_I386_DIV: /* integer divide by zero */ +- *signo =3D SIGFPE; +- detail->code =3D FPE_INTDIV_FAULT; ++ detail->code =3D posix ? FPE_INTDIV : FPE_INTDIV_FAULT; + break; +=20 + case EXC_I386_INTO: /* integer overflow */ +- *signo =3D SIGFPE; +- detail->code =3D FPE_INTOVF_TRAP; ++ detail->code =3D posix ? FPE_INTOVF : FPE_INTOVF_TRAP; + break; +=20 + /* These aren't anywhere documented or used in Mach 3.0. */ + case EXC_I386_NOEXT: + case EXC_I386_EXTOVR: + default: +- *signo =3D SIGFPE; + detail->code =3D 0; + break; +=20 +@@ -82,51 +100,43 @@ _hurd_exception2signal (struct hurd_sign + Give an error code corresponding to the first bit set. */ + if (detail->exc_subcode & FPS_IE) + { +- *signo =3D SIGILL; +- detail->code =3D ILL_FPEOPR_FAULT; ++ /* NB: We used to send SIGILL here but we can't distinguish ++ POSIX vs. legacy with respect to what signal we send. */ ++ detail->code =3D posix ? FPE_FLTINV : 0 /*ILL_FPEOPR_FAULT*/; + } + else if (detail->exc_subcode & FPS_DE) + { +- *signo =3D SIGFPE; +- detail->code =3D FPE_FLTDNR_FAULT; ++ detail->code =3D posix ? FPE_FLTUND : FPE_FLTDNR_FAULT; + } + else if (detail->exc_subcode & FPS_ZE) + { +- *signo =3D SIGFPE; +- detail->code =3D FPE_FLTDIV_FAULT; ++ detail->code =3D posix ? FPE_FLTDIV : FPE_FLTDIV_FAULT; + } + else if (detail->exc_subcode & FPS_OE) + { +- *signo =3D SIGFPE; +- detail->code =3D FPE_FLTOVF_FAULT; ++ detail->code =3D posix ? FPE_FLTOVF : FPE_FLTOVF_FAULT; + } + else if (detail->exc_subcode & FPS_UE) + { +- *signo =3D SIGFPE; +- detail->code =3D FPE_FLTUND_FAULT; ++ detail->code =3D posix ? FPE_FLTUND : FPE_FLTUND_FAULT; + } + else if (detail->exc_subcode & FPS_PE) + { +- *signo =3D SIGFPE; +- detail->code =3D FPE_FLTINX_FAULT; ++ detail->code =3D posix ? FPE_FLTRES : FPE_FLTINX_FAULT; + } + else + { +- *signo =3D SIGFPE; + detail->code =3D 0; + } + break; +=20 + /* These two can only be arithmetic exceptions if we +- are in V86 mode, which sounds like emulation to me. +- (See Mach 3.0 i386/trap.c.) */ ++ are in V86 mode. (See Mach 3.0 i386/trap.c.) */ + case EXC_I386_EMERR: +- *signo =3D SIGFPE; +- detail->code =3D FPE_EMERR_FAULT; ++ detail->code =3D posix ? 0 : FPE_EMERR_FAULT; + break; + case EXC_I386_BOUND: +- *signo =3D SIGFPE; +- detail->code =3D FPE_EMBND_FAULT; ++ detail->code =3D posix ? FPE_FLTSUB : FPE_EMBND_FAULT; + break; + } + break; +@@ -143,7 +153,7 @@ _hurd_exception2signal (struct hurd_sign + if (detail->exc_code =3D=3D EXC_I386_BOUND) + { + *signo =3D SIGFPE; +- detail->code =3D FPE_SUBRNG_FAULT; ++ detail->code =3D posix ? FPE_FLTSUB : FPE_SUBRNG_FAULT; + } + else + { +@@ -154,13 +164,34 @@ _hurd_exception2signal (struct hurd_sign +=20 + case EXC_BREAKPOINT: + *signo =3D SIGTRAP; +- if (detail->exc_code =3D=3D EXC_I386_SGL) +- detail->code =3D DBG_SINGLE_TRAP; +- else if (detail->exc_code =3D=3D EXC_I386_BPT) +- detail->code =3D DBG_BRKPNT_FAULT; +- else +- detail->code =3D 0; ++ switch (detail->exc_code) ++ { ++ case EXC_I386_SGL: ++ detail->code =3D posix ? TRAP_BRKPT : DBG_SINGLE_TRAP; ++ break; ++ ++ case EXC_I386_BPT: ++ detail->code =3D posix ? TRAP_BRKPT : DBG_BRKPNT_FAULT; ++ break; ++ ++ default: ++ detail->code =3D 0; ++ break; ++ } + break; + } + } + libc_hidden_def (_hurd_exception2signal) ++ ++void ++_hurd_exception2signal (struct hurd_signal_detail *detail, int *signo) ++{ ++ exception2signal (detail, signo, 1); ++} ++ ++void ++_hurd_exception2signal_legacy (struct hurd_signal_detail *detail, int *si= gno) ++{ ++ exception2signal (detail, signo, 0); ++} ++ +Index: glibc-2.31/sysdeps/mach/hurd/i386/trampoline.c +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +--- glibc-2.31.orig/sysdeps/mach/hurd/i386/trampoline.c ++++ glibc-2.31/sysdeps/mach/hurd/i386/trampoline.c +@@ -19,13 +19,66 @@ + #include + #include + #include ++#include + #include + #include + #include + #include "hurdfault.h" + #include ++#include +=20 +=20 ++/* Fill in a siginfo_t structure for SA_SIGINFO-enabled handlers. */ ++static void fill_siginfo (siginfo_t *si, int signo, ++ const struct hurd_signal_detail *detail, ++ const struct machine_thread_all_state *state) ++{ ++ si->si_signo =3D signo; ++ si->si_errno =3D detail->error; ++ si->si_code =3D detail->code; ++ ++ /* XXX We would need a protocol change for sig_post to include ++ * this information. */ ++ si->si_pid =3D -1; ++ si->si_uid =3D -1; ++ ++ /* Address of the faulting instruction or memory access. */ ++ if (detail->exc =3D=3D EXC_BAD_ACCESS) ++ si->si_addr =3D (void *) detail->exc_subcode; ++ else ++ si->si_addr =3D (void *) state->basic.eip; ++ ++ /* XXX On SIGCHLD, this should be the exit status of the child ++ * process. We would need a protocol change for the proc server ++ * to send this information along with the signal. */ ++ si->si_status =3D 0; ++ ++ si->si_band =3D 0; /* SIGPOLL is not supported yet. */ ++ si->si_value.sival_int =3D 0; /* sigqueue() is not supported yet. */ ++} ++ ++/* Fill in a ucontext_t structure SA_SIGINFO-enabled handlers. */ ++static void fill_ucontext (ucontext_t *uc, const struct sigcontext *sc) ++{ ++ uc->uc_flags =3D 0; ++ uc->uc_link =3D NULL; ++ uc->uc_sigmask =3D sc->sc_mask; ++ uc->uc_stack.ss_sp =3D (__ptr_t) sc->sc_esp; ++ uc->uc_stack.ss_size =3D 0; ++ uc->uc_stack.ss_flags =3D 0; ++ ++ /* Registers. */ ++ memcpy (&uc->uc_mcontext.gregs[REG_GS], &sc->sc_gs, ++ (REG_TRAPNO - REG_GS) * sizeof (int)); ++ uc->uc_mcontext.gregs[REG_TRAPNO] =3D 0; ++ uc->uc_mcontext.gregs[REG_ERR] =3D 0; ++ memcpy (&uc->uc_mcontext.gregs[REG_EIP], &sc->sc_eip, ++ (NGREG - REG_EIP) * sizeof (int)); ++ ++ /* XXX FPU state. */ ++ memset (&uc->uc_mcontext.fpregs, 0, sizeof (fpregset_t)); ++} ++ + struct sigcontext * + _hurd_setup_sighandler (struct hurd_sigstate *ss, __sighandler_t handler, + int signo, struct hurd_signal_detail *detail, +@@ -43,15 +96,38 @@ _hurd_setup_sighandler (struct hurd_sigs + struct + { + int signo; +- long int sigcode; +- struct sigcontext *scp; /* Points to ctx, below. */ ++ union ++ { ++ /* Extra arguments for traditional signal handlers */ ++ struct ++ { ++ long int sigcode; ++ struct sigcontext *scp; /* Points to ctx, below. */ ++ } legacy; ++ ++ /* Extra arguments for SA_SIGINFO handlers */ ++ struct ++ { ++ siginfo_t *siginfop; /* Points to siginfo, below. */ ++ ucontext_t *uctxp; /* Points to uctx, below. */ ++ } posix; ++ }; + void *sigreturn_addr; + void *sigreturn_returns_here; + struct sigcontext *return_scp; /* Same; arg to sigreturn. */ ++ ++ /* NB: sigreturn assumes link is next to ctx. */ + struct sigcontext ctx; + struct hurd_userlink link; ++ ucontext_t ucontext; ++ siginfo_t siginfo; + } *stackframe; +=20 ++ /* sigaction for preemptors */ ++ static const struct sigaction legacy_sigaction =3D { ++ .sa_flags =3D SA_RESTART ++ }; ++ + if (ss->context) + { + /* We have a previous sigcontext that sigreturn was about +@@ -94,9 +170,13 @@ _hurd_setup_sighandler (struct hurd_sigs + the SP on sigreturn. */ + state->basic.uesp =3D state->basic.ecx; +=20 +- /* XXX what if handler !=3D action->handler (for instance, if a signal +- * preemptor took over) ? */ + action =3D & _hurd_sigstate_actions (ss) [signo]; ++ if ( (action->sa_flags & SA_SIGINFO) ++ && handler !=3D (__sighandler_t) action->sa_sigaction ++ || !(action->sa_flags & SA_SIGINFO) ++ && handler !=3D action->sa_handler) ++ /* A signal preemptor took over, use legacy semantic. */ ++ action =3D &legacy_sigaction; +=20 + if ((action->sa_flags & SA_ONSTACK) + && !(ss->sigaltstack.ss_flags & (SS_DISABLE|SS_ONSTACK))) +@@ -140,15 +220,9 @@ _hurd_setup_sighandler (struct hurd_sigs + =3D &stackframe->link.thread.next; + ss->active_resources =3D &stackframe->link; +=20 +- /* Set up the arguments for the signal handler. */ +- stackframe->signo =3D signo; +- stackframe->sigcode =3D detail->code; +- stackframe->scp =3D stackframe->return_scp =3D scp =3D &stackframe-= >ctx; +- stackframe->sigreturn_addr =3D &__sigreturn; +- stackframe->sigreturn_returns_here =3D firewall; /* Crash on return= . */ +- + /* Set up the sigcontext from the current state of the thread. */ +=20 ++ scp =3D &stackframe->ctx; + scp->sc_onstack =3D ss->sigaltstack.ss_flags & SS_ONSTACK ? 1 : 0; +=20 + /* struct sigcontext is laid out so that starting at sc_gs mimics a +@@ -162,6 +236,35 @@ _hurd_setup_sighandler (struct hurd_sigs + &state->fpu, &scp->sc_i386_float_state, + sizeof (state->fpu)); +=20 ++ /* Set up the arguments for the signal handler. */ ++ stackframe->signo =3D signo; ++ if (action->sa_flags & SA_SIGINFO) ++ { ++ stackframe->posix.siginfop =3D &stackframe->siginfo; ++ stackframe->posix.uctxp =3D &stackframe->ucontext; ++ fill_siginfo (&stackframe->siginfo, signo, detail, state); ++ fill_ucontext (&stackframe->ucontext, scp); ++ } ++ else ++ { ++ if (detail->exc) ++ { ++ int nsigno; ++ _hurd_exception2signal_legacy (detail, &nsigno); ++ assert (nsigno =3D=3D signo); ++ } ++ else ++ detail->code =3D 0; ++ ++ stackframe->legacy.sigcode =3D detail->code; ++ stackframe->legacy.scp =3D &stackframe->ctx; ++ } ++ ++ /* Set up the bottom of the stack. */ ++ stackframe->sigreturn_addr =3D &__sigreturn; ++ stackframe->sigreturn_returns_here =3D firewall; /* Crash on return= . */ ++ stackframe->return_scp =3D &stackframe->ctx; ++ + _hurdsig_end_catch_fault (); +=20 + if (! ok) +Index: glibc-2.31/sysdeps/mach/hurd/kill.c +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +--- glibc-2.31.orig/sysdeps/mach/hurd/kill.c ++++ glibc-2.31/sysdeps/mach/hurd/kill.c +@@ -64,7 +64,7 @@ __kill (pid_t pid, int sig) + { + if (msgport !=3D MACH_PORT_NULL) + /* Send a signal message to his message port. */ +- return __msg_sig_post (msgport, sig, 0, refport); ++ return __msg_sig_post (msgport, sig, SI_USER, refport); +=20 + /* The process has no message port. Perhaps try direct + frobnication of the task. */ +Index: glibc-2.31/sysdeps/mach/hurd/setitimer.c +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +--- glibc-2.31.orig/sysdeps/mach/hurd/setitimer.c ++++ glibc-2.31/sysdeps/mach/hurd/setitimer.c +@@ -105,7 +105,7 @@ timer_thread (void) + __msg_sig_post_request (_hurd_msgport, + _hurd_itimer_port, + MACH_MSG_TYPE_MAKE_SEND_ONCE, +- SIGALRM, 0, __mach_task_self ()); ++ SIGALRM, SI_TIMER, __mach_task_self ()); + break; +=20 + case MACH_RCV_INTERRUPTED: +Index: glibc-2.31/sysdeps/mach/hurd/i386/sigcontextinfo.h +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +--- glibc-2.31.orig/sysdeps/mach/hurd/i386/sigcontextinfo.h ++++ glibc-2.31/sysdeps/mach/hurd/i386/sigcontextinfo.h +@@ -18,11 +18,10 @@ + #ifndef _SIGCONTEXTINFO_H + #define _SIGCONTEXTINFO_H +=20 +-#define SIGCONTEXT struct sigcontext + static inline uintptr_t +-sigcontext_get_pc (struct sigcontext ctx) ++sigcontext_get_pc (struct ucontext_t *ctx) + { +- return ctx.sc_eip; ++ return ctx->uc_mcontext.gregs[REG_EIP]; + } +=20 + #endif =2D-=20 2.30.2 --=-=-=-- --==-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQJJBAEBCAAzFiEEy/WXVcvn5+/vGD+x3UCaFdgiRp0FAmDqWI8VHGNtbWFydXNp Y2hAZ21haWwuY29tAAoJEN1AmhXYIkadfbwQAKKqb3iOVFrTbV4BweEjk3afWm9a qKVDR+MrLezzJK+FRkd6+ZM1S9MgoZj9I678Hnz9FLq1LMYYHfaDDAJMyf2mfewR xvs4g2ISDOuLiY0wzOh7FSyX9lKtsnLw2S0DyQOcFVfVdDKCZTbcrOFiDftHYbjw 7Y6P5c3fTVgam2DQ9EKC/f+0slox65zbkv+fo7CdzO8pz60X8RPJO7TjAcIfS6oE 4SkolqsSLqXPvSVo/pha1wWOmYmhkdhpqgjVEsrVFSh708jxc+r5ZO1CCDBMcFy0 /1H94LoYRfdRWN3uhQyb8MnQN3muWfh5hgKemstS/1qb6DNOegf+p1zKb9CDhbhs /zvfN3hjSy1PAVH39ywccZ/iFphHLyiJlbB2cgIfwAJogoP9Wn3WNJt7ZYG5LAy6 q8pfxEeFFkbv8zai+i7yv5GG2Op+p8OY/u/eu1E4HlIMseE3nFdgFk5h/RgeyfD5 Roc1uaVYMq5o76Wx9N9whBE/EEBsNDp7TLAKMG5cmsCuixXO83XdR7/UGBDXf17z y49U+jz4Vysf1ddwZWp7fJtKHDx5rs02k9zCRRYzUOGdbumHvBvm3Na6pzdp2hF3 t9RzsBtHUArl2oeCW1nQ1vOIlE7uAyKhmPa9z+CGDFpYtw+Q3eHjp9jqsYEnFYFp Vl/TRUrNeFr5I6Ei =sQNc -----END PGP SIGNATURE----- --==-=-=--