From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03on2070.outbound.protection.outlook.com [40.107.105.70]) by sourceware.org (Postfix) with ESMTPS id 81FB1385842B for ; Wed, 2 Nov 2022 12:13:18 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 81FB1385842B Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=SQjgRFp9kGHFkbyrPH6Aa5GgExPjiBKq+6S3RqdlRyDiVab5OBD5ZypOU1//W8xluaXeMjz+MeUp3c3otTEWpshwBWQlK/vScUFkPO4DQZUT+lH0hNdoE4jZ1beENNLTNxTaBKB6gn5906gXZSZaxsTKugaI/ofy3R+wIzyV4UqR8/Mm7EbyWezs2g8F38KxV7m07O1X4Yt4xEog9/uTPPllQjm12ZYtE/AXy9b/QbUkeqXwWleHcgSrdLKDt7EqUV7Qvl9yzwZaAio/uhRkGwv71nykIU26MLvodK5em0/FTPVU/Ya9jWLhRtRdJd55SNZWCAhqbuFLvVlgxb34lA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=io4dkLeg+iA+P0tCgol70udfgq4WdnRS+bGPa5kcYo4=; b=FS+XW7qTnL3KHxp+j5W9/6AWNMZsxzJVx3YeCDsC/sxUoYkVZCplokMX5kokdnLv08hL1PWuQD5nito2I1FQsfLeH4R+mCG8EayXLOyu9ixaCUBLyNswTOh42BvutaWuNhFog/hLxgI0QMZvlsonHSx/ZIdZMDhDAekLpPm6Z5yIxfsvDGAQltBdV4y8KzRJnJiv6JoZ0vQcbCTXP2mXnzLy8329Y8NjfZOIaIAf5uAZjKkHKnlsP52+yJ5jcQ9xP+Ds9B0ipBlOvo3b2xFs0Kp6R5Y8GCOjOurIUN6xrfJ4kpU7xF+CSepf9200iwsl51CMHD9Yv7UoNq902jb9+Q== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=sourceware.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=io4dkLeg+iA+P0tCgol70udfgq4WdnRS+bGPa5kcYo4=; b=33+Z/C/r732EgQBaMRXIziFB1H0M00NQvUDf5LWSotk5iDHmoP2aLYxGSnUqVKw5S0RmnsyZeeYMq+cfs+oMxc5DcZpnVVPIo1T+xLibZ2hB16M6nDqNZeJb0aBe4VAPGwBXpUI9vA3L5mk40hIRYAtZLzfKmzyxOg9axzmprYQ= Received: from DUZPR01CA0023.eurprd01.prod.exchangelabs.com (2603:10a6:10:46b::17) by AM8PR08MB5858.eurprd08.prod.outlook.com (2603:10a6:20b:1dc::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5769.21; Wed, 2 Nov 2022 12:13:15 +0000 Received: from DBAEUR03FT058.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:46b:cafe::10) by DUZPR01CA0023.outlook.office365.com (2603:10a6:10:46b::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5746.23 via Frontend Transport; Wed, 2 Nov 2022 12:13:15 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DBAEUR03FT058.mail.protection.outlook.com (100.127.142.120) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5791.20 via Frontend Transport; Wed, 2 Nov 2022 12:13:15 +0000 Received: ("Tessian outbound 2ff13c8f2c05:v130"); Wed, 02 Nov 2022 12:13:15 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: cda8fdd401ec29b1 X-CR-MTA-TID: 64aa7808 Received: from 8d501c8e7539.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 94249675-8B20-4D79-92C8-AF65F8ABA531.1; Wed, 02 Nov 2022 12:13:09 +0000 Received: from EUR01-VE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 8d501c8e7539.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 02 Nov 2022 12:13:09 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QfJiuxYEQ7oleE87ziYplp4Rf2mt+Y9K3zREQVmuOonMoD5XJwi/7Qqxa8QVf5L7FnXmscYAjA+k1RlyM4CqDlbfBsu/QB5GrIucci65/p0petcS6/fsKG733B6KK7nHpQCCzaW65JYFDORSXh1zBiWRZNqjThKF6LFwWKUfLaksOBk1YOnxqhIqxZA8F41PiJx4YotSs393ovcCfjpEB9FKwo+ymJbUK6uEjkK0ZaUW5oIu3YGMdIWSI+STym9/UQkOn7KYdz1AoBpFE9QyYP1RQWHXWdlW+Lz5QGNYNpeWcIeIb5Rz1XCAiLtm8d9vjoJHXYG7VT72hIKte0pLiw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=io4dkLeg+iA+P0tCgol70udfgq4WdnRS+bGPa5kcYo4=; b=lCcHn9R3AKWFgpYKH5pnwkasNQ4EqTN6/WlhhOrXc7kQs8UMUszbX8bVnE+LKJAgx1Lc+E/IfmflleQAkRk1qWrrsXdwzYEw05haH/zlnOugPh2nmcYBoN1EVyjCERdCckTmT7RbmsycUbzrS4LrPJm7hH+KRCMxL61aJd14Y+x9r6ijICGv3t++hQl52OpVVaXVLcZcqQSTuWhz1VwA3Lywhan5UeiBb4zGSeozReXD5CAGGC3/Marv66cpP3Hqet2KbDA45Dx8GzhvK/g+NbyVXApLP71YGbDQullukWuXU7Zp0Yno5DYgla9r/vjdwUvR37SPnfLOt+OGMKjsOg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=io4dkLeg+iA+P0tCgol70udfgq4WdnRS+bGPa5kcYo4=; b=33+Z/C/r732EgQBaMRXIziFB1H0M00NQvUDf5LWSotk5iDHmoP2aLYxGSnUqVKw5S0RmnsyZeeYMq+cfs+oMxc5DcZpnVVPIo1T+xLibZ2hB16M6nDqNZeJb0aBe4VAPGwBXpUI9vA3L5mk40hIRYAtZLzfKmzyxOg9axzmprYQ= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from DB9PR08MB7179.eurprd08.prod.outlook.com (2603:10a6:10:2cc::19) by GV1PR08MB8380.eurprd08.prod.outlook.com (2603:10a6:150:80::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5769.15; Wed, 2 Nov 2022 12:13:07 +0000 Received: from DB9PR08MB7179.eurprd08.prod.outlook.com ([fe80::8999:7c8d:d088:d198]) by DB9PR08MB7179.eurprd08.prod.outlook.com ([fe80::8999:7c8d:d088:d198%5]) with mapi id 15.20.5769.021; Wed, 2 Nov 2022 12:13:06 +0000 Date: Wed, 2 Nov 2022 12:12:51 +0000 From: Szabolcs Nagy To: Adhemerval Zanella Cc: libc-alpha@sourceware.org, Christian Brauner Subject: Re: [PATCH v2 4/9] aarch64: Add the clone3 wrapper Message-ID: References: <20220930192613.3491147-1-adhemerval.zanella@linaro.org> <20220930192613.3491147-5-adhemerval.zanella@linaro.org> Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20220930192613.3491147-5-adhemerval.zanella@linaro.org> X-ClientProxiedBy: LO4P123CA0546.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:319::17) To DB9PR08MB7179.eurprd08.prod.outlook.com (2603:10a6:10:2cc::19) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: DB9PR08MB7179:EE_|GV1PR08MB8380:EE_|DBAEUR03FT058:EE_|AM8PR08MB5858:EE_ X-MS-Office365-Filtering-Correlation-Id: f21f0834-02db-4ff5-2305-08dabccb9f0f x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: mIB253FU4G9RHfmofWRIHZw8qj8czi/o7+k0YhvwBZycxgPDrVdnB7ALojcCio8vKaA83j+vEq125h2gb/iX8yWpY1QP0CpJ+xkaFHXkIHTWQni+MUIIEHRHwPTaHUezUPhrFdNn8BJuegrwEr/1fthRyPZ0e8zBBYXVBT3WKZSaEhfb+dSTbULXCdn6lWks/ZNIEA1kQX9n/snTJqCsWKgIt+lTIjI/dk/LDSiCEu/5NCrOxxn9Z9O1f3kvO6SdRqindE/1Xqj+Jp+FevcdKlX3DukrTi3X+FVSDHDU1A2P0D5iuhpgEYOsU+lo+ZeKO/oIii23SpxInn2AcWCbTJ8Ma0RIDZj3JB9c7ui9jCstsdsBKHPZv+36ve/ZYmdjFPbht2gw5M7yKRY9zMB2Le+B498qUMRoim66O6QH53LjLh9VzVVCi196DBinhQ/5jt/mANDHubnLhy1oaol+1Y99aZk+frjCf9fUsV4P7LAhcaBQPCmuMWNMACM0kjP/NUvSdnDlgbv4Xj+oMXKGC3Nyi4/2hodjURSht3HJud8NeXjGF7YLBFSYOcJQRNhkO57P4CQmM8ByQTZywBSG7hvyKqcGyzF6324JR4n1ZanhJN5Ta7MvNuSqr/YZPrlxI8eoT4jp+eVv12jK2nw0cqZhIp4pO4nUba/D3fad1/QMy+paBjNKZbXu7/NLenpmSMPNv8KBnDxshRrHh6GgHgaENb3oOXq3AEmNM9RTRbzINTRVhN7bAj0g8w7fbh2Ql3zIJ7m/1gWivEr/XGO2XA== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB9PR08MB7179.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(366004)(346002)(396003)(39860400002)(136003)(376002)(451199015)(36756003)(38100700002)(8936002)(44832011)(186003)(5660300002)(86362001)(83380400001)(8676002)(6916009)(66476007)(26005)(2616005)(316002)(6666004)(478600001)(6512007)(6486002)(41300700001)(6506007)(66946007)(4326008)(66556008)(2906002)(2004002);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB8380 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DBAEUR03FT058.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 0c5539f6-32d0-490b-4bb7-08dabccb9932 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: k/RZLPFVhI0Z9OEpuPLh7pMNHYLVXj3FpsGDjAvw6VY6GPs8NMdhAZ4cocoyhRwvWzlGuHnwigg2YOLqB0WNAUYawMfhk+jRxp4spKdWcgmHb70/vfFGLr6HQN7OfVaALGFWkVrase8wrsln5eDlC4ZI29K1Y+d6I9Yx1hJ/zzpk68fnSSEtYip8b4RxOZKAyDhanCOkZOSY4miXSdiIFBLARHM5tZgKXLQbm2fqETBkiv+i340KRuieciw6vi7LqgfB40bnId/QpW4/GFmevSyttSLmtB4u9rXD3BUfp8fJVulLzUtE296y9IbhRnS1TsJR+5oCVvuZrGSe3WaMrCRMHz9CoDytXTYxW+2Wkvc5Z8MS4UDO8Ht7wxaUWE0s8DT4kukAEf+G9i1171qfBCLHu6cu6cutMUm3ZQiZhG7jbiyEWDAaokh9w5yckJE1vHsUjuUwNKNGn6BcLhwnLgb96X3E+EzmWZq1FbRGvVAfQ3Gs/5hpGyU5YqoUfglCN/O/jAbxcdX6r3VTaHJKIm/mnX5h1UofkeqBiNSF8G+xleiarTnSG4TOqXuIpupKDxzD5UoYZM4kNyqH61v/2Sj4Uo6lcYIjMlfuNTkk6YD5SPOmn7mX8+Reh9MuNY9KUPgZEP94wkO9uAU500FOsHjpU2RnH+fMYdGA/QNpY6YwAEhZ+pgOhZSm1W5yiNEhHyOlh06gJ0EHTNjsN9jZheCRFqSzQ/fuisJu/q0SotjYyMS6HFap5C+i6zdkWAUCEPjnu4ZBllzhJhAM2y5oPdNgMT6NnuSkDZlrhiR5SQSnbP7df/jyFUKyFOHpTbaD X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(13230022)(4636009)(346002)(136003)(396003)(376002)(39860400002)(451199015)(40470700004)(36840700001)(46966006)(2906002)(316002)(81166007)(47076005)(336012)(86362001)(356005)(83380400001)(36860700001)(82740400003)(5660300002)(44832011)(6862004)(70586007)(4326008)(82310400005)(70206006)(41300700001)(6506007)(2616005)(186003)(107886003)(26005)(40460700003)(6512007)(40480700001)(8676002)(8936002)(6486002)(6666004)(478600001)(36756003)(2004002);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2022 12:13:15.8986 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f21f0834-02db-4ff5-2305-08dabccb9f0f X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DBAEUR03FT058.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR08MB5858 X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_NONE,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: The 09/30/2022 16:26, Adhemerval Zanella via Libc-alpha wrote: > It follow the internal signature: > > extern int clone3 (struct clone_args *__cl_args, size_t __size, > int (*__func) (void *__arg), void *__arg); > > And x86_64 semantics to return EINVAL if either cl_args or func > is NULL. The stack is 16-byte aligned prior executing func. "x86_64 semantics" sounds wrong: maybe this should be documented? i'd expect 0 cl_args/func to be UB like in most posix apis. and aligning sp in the child fails if signals are allowed there (pthreads does not allow signals now, direct callers might). i dont know if that's a concert (or if unaligned stack is something we should fix up in clone3). > > Checked on aarch64-linux-gnu. > --- > sysdeps/unix/sysv/linux/aarch64/clone3.S | 90 ++++++++++++++++++++++++ > sysdeps/unix/sysv/linux/aarch64/sysdep.h | 2 + > 2 files changed, 92 insertions(+) > create mode 100644 sysdeps/unix/sysv/linux/aarch64/clone3.S > > diff --git a/sysdeps/unix/sysv/linux/aarch64/clone3.S b/sysdeps/unix/sysv/linux/aarch64/clone3.S > new file mode 100644 > index 0000000000..dba93430eb > --- /dev/null > +++ b/sysdeps/unix/sysv/linux/aarch64/clone3.S > @@ -0,0 +1,90 @@ > +/* The clone3 syscall wrapper. Linux/aarch64 version. > + Copyright (C) 2022 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 > +#define _ERRNO_H 1 > +#include > + > +/* The userland implementation is: > + int clone3 (struct clone_args *cl_args, size_t size, > + int (*func)(void *arg), void *arg); > + > + the kernel entry is: > + int clone3 (struct clone_args *cl_args, size_t size); > + > + The parameters are passed in registers from userland: > + x0: cl_args > + x1: size > + x2: func > + x3: arg */ > + > + .text > +ENTRY(__clone3) > + PTR_ARG (0) > + PTR_ARG (1) > + PTR_ARG (3) > + PTR_ARG (4) > + /* Save args for the child. */ > + mov x10, x0 /* cl_args */ > + mov x11, x2 /* func */ > + mov x12, x3 /* args */ > + > + /* Sanity check args. */ > + mov x0, #-EINVAL > + cbz x10, .Lsyscall_error /* No NULL cl_args pointer. */ > + cbz x2, .Lsyscall_error /* No NULL function pointer. */ > + > + /* Do the system call, the kernel expects: > + x8: system call number > + x0: cl_args > + x1: size */ > + mov x0, x10 > + mov x8, #SYS_ify(clone3) > + svc 0x0 > + > + cmp x0, #0 > + beq thread_start > + blt .Lsyscall_error > + RET > +PSEUDO_END (__clone3) > + > + .align 4 > + .type thread_start, %function > +thread_start: > + cfi_startproc > + cfi_undefined (x30) > + mov x29, 0 > + > + /* Align sp. */ > + mov x0, sp > + and x0, x0, -16 > + mov sp, x0 > + > + /* Pick the function arg and execute. */ > + mov x0, x12 > + blr x11 > + > + /* We are done, pass the return value through x0. */ > + mov x8, #SYS_ify(exit) > + svc 0x0 > + cfi_endproc > + .size thread_start, .-thread_start > + > +libc_hidden_def (__clone3) > +weak_alias (__clone3, clone3) > diff --git a/sysdeps/unix/sysv/linux/aarch64/sysdep.h b/sysdeps/unix/sysv/linux/aarch64/sysdep.h > index f1853e012f..42bb22f5e6 100644 > --- a/sysdeps/unix/sysv/linux/aarch64/sysdep.h > +++ b/sysdeps/unix/sysv/linux/aarch64/sysdep.h > @@ -164,6 +164,8 @@ > # define HAVE_CLOCK_GETTIME64_VSYSCALL "__kernel_clock_gettime" > # define HAVE_GETTIMEOFDAY_VSYSCALL "__kernel_gettimeofday" > > +# define HAVE_CLONE3_WRAPPER 1 > + > # undef INTERNAL_SYSCALL_RAW > # define INTERNAL_SYSCALL_RAW(name, nr, args...) \ > ({ long _sys_result; \ > -- > 2.34.1 >