From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1792) id 6F0F03858D3C; Sat, 27 May 2023 22:32:07 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 6F0F03858D3C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1685226727; bh=huS0oqs+leM8d3EJFt76gtfklJIM3qikHlxBJ2TiyjQ=; h=From:To:Subject:Date:From; b=yRtTY24BRcVSOSSmN4cXtT5JAmD+uEj1sKfIaUsaNt2ZUk+4HeVRtBpKOCmAETIs1 j7lo9/9eALWLchIgLlMxhIQvX5AxFadUL6sCHlEQwSZhbNvmjQf22ycAtUYFfh5Rn7 QJxFv6OpBXqJ6YjdTW+CKW9xIPKBAdXjvRXP0Jxo= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Samuel Thibault To: glibc-cvs@sourceware.org Subject: [glibc] hurd: Fix setting up signal thread stack alignment X-Act-Checkin: glibc X-Git-Author: Samuel Thibault X-Git-Refname: refs/heads/master X-Git-Oldrev: 0660ab264fdfd49555430790267b539d1177192f X-Git-Newrev: 9ffdcf5b79acacffc35506812ca8d99ea1dde618 Message-Id: <20230527223207.6F0F03858D3C@sourceware.org> Date: Sat, 27 May 2023 22:32:07 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=9ffdcf5b79acacffc35506812ca8d99ea1dde618 commit 9ffdcf5b79acacffc35506812ca8d99ea1dde618 Author: Samuel Thibault Date: Sun May 28 00:29:14 2023 +0200 hurd: Fix setting up signal thread stack alignment x86_64 needs special alignment when calling functions, so we have to use MACHINE_THREAD_STATE_SETUP_CALL for the signal thread when forking. Diff: --- sysdeps/mach/hurd/_Fork.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/sysdeps/mach/hurd/_Fork.c b/sysdeps/mach/hurd/_Fork.c index 77cd29171e..9981699a5a 100644 --- a/sysdeps/mach/hurd/_Fork.c +++ b/sysdeps/mach/hurd/_Fork.c @@ -481,13 +481,11 @@ retry: MACHINE_THREAD_STATE_FLAVOR, (natural_t *) &state, &statecount)) LOSE; -#ifdef STACK_GROWTH_UP - state.SP = __hurd_sigthread_stack_base; -#else - state.SP = __hurd_sigthread_stack_end; -#endif - MACHINE_THREAD_STATE_SET_PC (&state, - (unsigned long int) _hurd_msgport_receive); + + MACHINE_THREAD_STATE_SETUP_CALL(&state, + __hurd_sigthread_stack_base, + __hurd_sigthread_stack_end - __hurd_sigthread_stack_base, + (uintptr_t) _hurd_msgport_receive); /* Do special signal thread setup for TLS if needed. */ if (err = _hurd_tls_fork (sigthread, _hurd_msgport_thread, &state))