From patchwork Thu Jul 3 12:42:58 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Radek Barton X-Patchwork-Id: 115554 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 27146385357E for ; Thu, 3 Jul 2025 12:43:33 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 27146385357E Authentication-Results: sourceware.org; dkim=fail reason="signature verification failed" (1024-bit key, unprotected) header.d=microsoft.com header.i=@microsoft.com header.a=rsa-sha256 header.s=selector2 header.b=RVkyMQ6Q X-Original-To: newlib@sourceware.org Delivered-To: newlib@sourceware.org Received: from EUR02-VI1-obe.outbound.protection.outlook.com (mail-vi1eur02on2072a.outbound.protection.outlook.com [IPv6:2a01:111:f403:2607::72a]) by sourceware.org (Postfix) with ESMTPS id 3D317385E02F for ; Thu, 3 Jul 2025 12:43:02 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3D317385E02F Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=microsoft.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=microsoft.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 3D317385E02F Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:2607::72a ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1751546582; cv=pass; b=GwmgJ0yF85PU3pZMLBN3zdQowq1+PUTRotwf96fZwu2b64eyvgkUITnrMwEcZNkXQCfOea61AH1DSPOccg/aIZe/hI1XtBBDavozK/HD3udM0lVrw3hROB6NyF59fr8PfRPEFUoIHopQKIXCv4zgZdRqQj3hlNnPyV8oHv8VBf4= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1751546582; c=relaxed/simple; bh=DzsEH6z6eT+dyuF+tSgO1FLIztQL3Ey5KGoa6s1U2V8=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=nUll1aaW0D6cv2sMo1uTj0Q05/o5OLh0hjJ+SQD3l2iSRoUaNM1c9y6fzfvSX8Hk8o4jGJQxiVio6IxnLqX0DJd/S72ov2lGVAAhvemSwfk/cYbRNBeVvz4uDgOvmGhXbETvR7MqW+BMecbbqRrqY9kwdCOdZgwdYP6YPE/j0dU= ARC-Authentication-Results: i=2; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3D317385E02F ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wrNq22L4NIu7frYNPcGsEBcdNB33HOMdm+NNbf9/SbdCuuS8dlK92T2AOgzuQ4Umk4ihOv0g2ArysnZNQNY6kNcDi7x2Cs9026Mt1Jidn+CEVeZ98OJIvoYoEz6pEGYIXFfACMIryMLP1kgimb/MuFZdtTeI5jpdk6D7jIQbD653TkjL6Cx+WF7CeRa8nXJ2PXBHA0oZyt/xJcrXGT4dx+67cIDPT3VBYNKU2Ao7Ozba/7s6xMJuwCqmb1CXkwxp/C4k2CmJfQoBer5KjjQMtPf47twvnnvRJfZex/TEBVNxoWHBRnuttvpch7ReRLF3rgHzJ1gWl1p/R2rTGyNJLw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=P9B4eHPlfj49x9tZ6NbhX10q45inHFq9PZQEjZW7o3k=; b=MzNvIhLGPbqXp3oXkoWmYZZCB9Nfx0rLuUOGvrdenJtt1CBfSTgBYjAVP7PfDC6IF5WMOtQRlUZofcbdKkZEbPE+lRBBxS253lYOWqM9sLY9I4QmreLaLHOdteIYOQQfCSjdzi8HRIZEeznfro7PoeZ99N+eEBPq94Z1gDcWfXdXGWmrSmXCofd3dsJ70tjF1glEgkdvhPZa2oE3tkheqFafvv3TCBXPlLxHCHZ0+tJmVL//VFd5rOgp0n4GpogVf4zBkgr+VUqzFDJuiKpExO5xd/7FVGPuzokpm87xMFjvYJTb/rD9POxd/zY5GHp1k5KUqdmlJlDu5tADSP9Ylw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microsoft.com; dmarc=pass action=none header.from=microsoft.com; dkim=pass header.d=microsoft.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=P9B4eHPlfj49x9tZ6NbhX10q45inHFq9PZQEjZW7o3k=; b=RVkyMQ6QBNWAb1Dkve5O0gnwUBXtJ1S5wm1cA93HRYlY7X8BTMnJW20o00dtD5q1JBFpi392gBAjH1KDM3pMImAcC8ykERribrcueQatM8MKTt7Pc6v0U4jojJyJOW08H20Yj+jUAky6sv4XzJQpGyqP1ghKcuXKy0ATeAm8GRQ= Received: from DB9PR83MB0923.EURPRD83.prod.outlook.com (2603:10a6:10:5ca::18) by PA6PR83MB0625.EURPRD83.prod.outlook.com (2603:10a6:102:3d7::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8857.14; Thu, 3 Jul 2025 12:42:58 +0000 Received: from DB9PR83MB0923.EURPRD83.prod.outlook.com ([fe80::4407:2fff:68f4:1eea]) by DB9PR83MB0923.EURPRD83.prod.outlook.com ([fe80::4407:2fff:68f4:1eea%3]) with mapi id 15.20.8901.009; Thu, 3 Jul 2025 12:42:58 +0000 From: Radek Barton To: Newlib CC: Corinna Vinschen Subject: [PATCH] newlib: add dummy implementations of fe{get,set}prec for Aarch64 Cygwin Thread-Topic: [PATCH] newlib: add dummy implementations of fe{get, set}prec for Aarch64 Cygwin Thread-Index: AQHb7BZZmIYfqT9MrkCRANx59NzqqQ== Date: Thu, 3 Jul 2025 12:42:58 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Enabled=True; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SiteId=72f988bf-86f1-41af-91ab-2d7cd011db47; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SetDate=2025-07-03T12:42:56.780Z; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Name=General; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ContentBits=0; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Method=Standard; authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microsoft.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DB9PR83MB0923:EE_|PA6PR83MB0625:EE_ x-ms-office365-filtering-correlation-id: aab00b04-f05d-478e-2d4d-08ddba2f23b9 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|1800799024|366016|13003099007|4053099003|38070700018; x-microsoft-antispam-message-info: =?iso-8859-2?q?ZIpvpeb78mD8Ngp+B8MIM/j+5A?= =?iso-8859-2?q?lbqylLTkDSlTn9Cl5Y7sFJXxXlWm6e2sAVoLrnO0fdJzaGgzZ0A8yEefMwfX?= =?iso-8859-2?q?0+kctnA69/BQ7bTgwGxg/9pQIGQvO/ULlUySKmJyvRmKgh/Al/DyHQPyMFou?= =?iso-8859-2?q?tqvKv+H3nBupHY/+ZEpcpgNGXhOnw4MR591saPhapHw2vxcY/DedvCZIm8py?= =?iso-8859-2?q?ixJEvcJap3eDSFGhOGtRsE6QYknlrQtbsnit+jK4r904Kq+NkJCIQE4nhvTP?= =?iso-8859-2?q?tVZtBIXY681l5H5zE/kJQ0Cx1QZMAjtB3Uqb5ObzRkYOnH4F0gkIzmP1E2R5?= =?iso-8859-2?q?+DZorQV+L9W5rPNtzWhk/rAd7CVbjSR4fiZItIrsHZ3q94rYiHBz0SkhEzT1?= =?iso-8859-2?q?vQ7inSAILoHC+wmDUEBQLR6EmTaHqatHraNrwzR+UWRZRypnFDKKLYAbdUNZ?= =?iso-8859-2?q?rHqJH6v8IlksGKHd6fF93uU5qF67O/SfMRrrC8JMzgYCdcT8ISjGFT4Yur2P?= =?iso-8859-2?q?CniXU3Yz+GaX+XQ5bDY2Faw5W1ps+dEUzenxJwEV/08lvhKYP7idD6A+m+a4?= =?iso-8859-2?q?0QyMZb/SE+KtEWEH/GObGR0Ur5yFjq2Y8YehZWCcxhgCR1Ct2ryvuAe+s67n?= =?iso-8859-2?q?wvUoj0cr0KlkOFRRECjS3YGVeWbwXuHYyYvRyv/1i4q3BvyHAgHqynhGaGQa?= =?iso-8859-2?q?kq+cXSW70SgWNoNoSdkiwwyvwbuvLLHYVVsm8EXOv1lQj0jCVclpB1wA+FLD?= =?iso-8859-2?q?2848tADvrU6Omgs27c8gfzXppiRyEcIPor5vmAD87iqjz6B1ZR8+gf+B8vz+?= =?iso-8859-2?q?X6Ho+BpF4WYc6XdFUwResVZ8Jd2jL6Vp3wvBWkomn6TdtLoiCIwynULVToWf?= =?iso-8859-2?q?ihkEvBECeBizeqfR6LXPwjNI3UXgtz/yKDDYp7uz0FkESL0YF1xTp2qTi44e?= =?iso-8859-2?q?WD2tIgwR+qpHf5vvapVJBqy+EfShmnNLA/tHuWe0KG5WEKYOFegwHoLoWT84?= =?iso-8859-2?q?/wCbtUqv8Wm3cVuaerkaWUgah/6UPShaRivFULydc+hEeFd1ISWeFGMOQeuG?= =?iso-8859-2?q?5TLzrpcx5pcCbxMCbgPVqHl5JrTM8XVa/AhfLCco33oKGIpfu+IjHHjEwUT6?= =?iso-8859-2?q?5vSBH/G/NrtCfxcz8QnN8sohePQC5bY9lANd80ParM+J6pWb9ec+5bpf9wxv?= =?iso-8859-2?q?JE9/mkkB+ZElQ8EdGiobvZ0YuM4lkmbNTgiXCOg28cU+m2PuAGcZsfRUStni?= =?iso-8859-2?q?s704sB0oK8rOigE9HRIXJDxZW+qc1Ae7Kx7S4gHkrbEq1CvbSSTFLlrNO8Q3?= =?iso-8859-2?q?59qGxAgHqC8EyfsI2gg0iHHJd4WRDBdyAcuz9DbHZCDzLOeDsDWRr2WJ6bZK?= =?iso-8859-2?q?iMDz0KsWVRhPBiJs0x9GTHTyK35TmdiNGfhWWvlSNeULhKamDJBiySVgK36Z?= =?iso-8859-2?q?nt3DIERrZz1OtqRQUArGTGc7R4CWLwMMFp9UsJcSRCPnc=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB9PR83MB0923.EURPRD83.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016)(13003099007)(4053099003)(38070700018); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-2?q?/9vwoqD0Vnd376O4+/9kvV/?= =?iso-8859-2?q?7VuRpPcMxyU5NHCFKxbIQkMKxeYbDgQ2FXhtl4iCWhVnpu3S//mAMaNy7mcT?= =?iso-8859-2?q?8+XkubnQiYlCBFGU7zpM9J4cnoyzX4xgdxQ6AjmbjoIwx2J8EzGmy69gFqWs?= =?iso-8859-2?q?QZZSmgC+86MVpu8Q6fjnF72g/cpOOOGhVPPimur/xU90vxIpk9oSMBRSr4RC?= =?iso-8859-2?q?GD3u/7axYmnXYxCrjbdzOWFqGDoQ5oHSxuTh8SlsBZoncQDpeMMl+tj4y/pQ?= =?iso-8859-2?q?rFpqCtO/DcCoulzr3y44zrQ/bCTxy2m6CfZAfVQWowKqTqB37yyC8/MSCoHu?= =?iso-8859-2?q?4K1bppI63lTM+OrG8X6Ps6JW7ifM/4pHYxV76bQzRsWvdMn/b5/wV1Pi5Dwt?= =?iso-8859-2?q?mEzzuUfHwHhW9oPd/Hrr87HLVQxzo0eJQDQrlpEH2PhW97PQhuq0Y/S7+h7c?= =?iso-8859-2?q?6QEP8i855C8kzDQowNM98LN/pPqpOsl2Tgehvh4vJ6PXm+MT47/rO+gtS4Gk?= =?iso-8859-2?q?ISsw4X7a5Rm73jvT+95B51p3I15Z3Zbnr5423MtYgLA/tiB5xRDUSgYhhOda?= =?iso-8859-2?q?QcdlwmUhtFNGjwWIDLCCLsRRzPNYp5YzCkczMeyZxNu5JEr1Wn/RUJUQA0ch?= =?iso-8859-2?q?UUzJe0sXQ/rs2D9a0yIDCtFH+NzhvAgCT8PhsYl5kmInN2paeDUmv3TuDJhK?= =?iso-8859-2?q?M5u7cirQ2Hf1mG8uMmvnjqV+4Uz6m9M4uW8dT5QN0pS7vmm2sc3EP0fnjIOY?= =?iso-8859-2?q?dFEikaCx4j/WIEkRLyGHVRmRB3w9z/DuFMIk0bTXR/7d3k13ujkqbR13MQwx?= =?iso-8859-2?q?Drd+FFL2fIqVMqii/heKnUHnko3jMd2+QLZyIvC06THNS+8v8FHd9s6btPvC?= =?iso-8859-2?q?OHDYQ6UN7OEzwYJJ4CAncRoDbV4Np0+QoljcAQhmtkrS5dHvp8cJsRZtyQEM?= =?iso-8859-2?q?p76V28Mxz5CVRKwZcZgMMEotg4S5mnCqXhvntSOKsxxvQQovCykDKAeuH83z?= =?iso-8859-2?q?Y8JhAwRJ0H88x5hp5Hp+hv/XIrTRlpXEZd85l8FEqi/TEjxfj/M7oZkBy8FK?= =?iso-8859-2?q?ve7xjTmA0nQ1CBM5JbUGfKu/c5bD+r96dL4unLJQgNt3dr6N39MJmreER631?= =?iso-8859-2?q?fHPp4DiEFXq4XlxJX1IdM/QEc/uLgDQIrWdESzl4R1XM0r/CIcjx6mDGTtNZ?= =?iso-8859-2?q?rSZw2eU4Fkv3DJJg16vFqGRiWujfVjqn1XiV60aRUhDRcR37kNTNqlRdSr2e?= =?iso-8859-2?q?SJYIwYZIDDKlj0l9dq68X6EAu8zhmNncsSXuvpt62rjeDjTudE9FucDYPvyF?= =?iso-8859-2?q?RUMkwQ9GtuhXt+tROJDEifmPpg3xzGIcgjAzeae1LDKZc02fJGcby77Qznwp?= =?iso-8859-2?q?la9ve4Qen7eggKp06/GKkdBp0EnqO2HGUL1H2u5jq8JspdcKDK8dyGHEOTuJ?= =?iso-8859-2?q?8ZXKR1OWIwEQYT1Fo13QYQPOPk0a3eggguPReJXehlG8+SVQIh2kj9vrj6TG?= =?iso-8859-2?q?AJ3CVY3m/l2w1axNw3YIS9BCGwuRq5xYDuoQ0V+mIelSOkJ77d5wRUULdsvx?= =?iso-8859-2?q?E7rYkOAl8/KR0?= MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DB9PR83MB0923.EURPRD83.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: aab00b04-f05d-478e-2d4d-08ddba2f23b9 X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Jul 2025 12:42:58.1414 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: dV0Noaq7gK+VqfkX02giJu1zEfId+ynBkI+3WVKPMOUsGdgGWAZx9PlNt0Q5xss+Qgx7/ud7EN8UsoOlSYZ/6XRnyraVdYYGjNSXftB/230= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA6PR83MB0625 X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FORGED_SPF_HELO, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_NONE, TXREP autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: newlib@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Newlib mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: newlib-bounces~patchwork=sourceware.org@sourceware.org Hello. Albeit Aarch64 does not support setting floating point operations precisions at runtime `cygwin1.dll` exports `fegetprec` and `fesetprec` functions leading to undefined references when linking. This patch adds their dummy implementations in a similar way how they are defined in `newlib/libc/machine/shared_x86/sys/fenv.h`, resp. in `/newlib/libm/machine/shared_x86/fenv.c`. Alternative fix would be to modify `winsup/cygwin/scripts/mkimport` and `winsup/cygwin/scripts/gendef` scripts so they would exclude those from being exported to the DLL upon specific label in `winsup/cygwin/cygwin.din`, e.g.: ``` fegetprec NOSIGFE NOARM64 fesetprec NOSIGFE NOARM64 ``` The same options applies to `_fe_nomask_env` which would be for the first option sent as a separate patch as it changes only `winsup` codebase. Which one would you prefer? Radek --- From 0ea739b8eef37d433712c185e0562c9f3142b86c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Radek=20Barto=C5=88?= Date: Thu, 3 Jul 2025 12:02:03 +0200 Subject: [PATCH] newlib: add dummy implementations of fe{get,set}prec for Aarch64 Cygwin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Radek BartoĊˆ --- newlib/libc/machine/aarch64/sys/fenv.h | 24 ++++++++++++++++++++- newlib/libm/machine/aarch64/fenv.c | 30 ++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/newlib/libc/machine/aarch64/sys/fenv.h b/newlib/libc/machine/aarch64/sys/fenv.h index 212612725..0e4e7f492 100644 --- a/newlib/libc/machine/aarch64/sys/fenv.h +++ b/newlib/libc/machine/aarch64/sys/fenv.h @@ -61,7 +61,14 @@ typedef __uint64_t fexcept_t; FE_UPWARD | FE_TOWARDZERO) #define _ROUND_SHIFT 22 - +/* Only Solaris and QNX implement fegetprec/fesetprec. As Solaris, use the + values defined by http://www.open-std.org/jtc1/sc22//WG14/www/docs/n752.htm + QNX defines different values. */ +#if __MISC_VISIBLE +#define FE_FLTPREC (0) +#define FE_DBLPREC (2) +#define FE_LDBLPREC (3) +#endif /* Default floating-point environment */ extern const fenv_t *_fe_dfl_env; @@ -115,6 +122,21 @@ fegetexcept(void) #endif /* __BSD_VISIBLE */ +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __CYGWIN__ + +#if __MISC_VISIBLE +int fegetprec (void); +int fesetprec (int __prec); +#endif + +#endif /* __CYGWIN__ */ + +#ifdef __cplusplus +} +#endif #endif /* !_FENV_H_ */ diff --git a/newlib/libm/machine/aarch64/fenv.c b/newlib/libm/machine/aarch64/fenv.c index 3ffe23441..3f3459e9d 100644 --- a/newlib/libm/machine/aarch64/fenv.c +++ b/newlib/libm/machine/aarch64/fenv.c @@ -55,3 +55,33 @@ extern inline int feupdateenv(const fenv_t *__envp); extern inline int feenableexcept(int __mask); extern inline int fedisableexcept(int __mask); extern inline int fegetexcept(void); + +#if defined(__CYGWIN__) + +/* Returns the currently selected precision, represented by one of the + values of the defined precision macros. */ +int +fegetprec (void) +{ + /* AArch64 doesn't have configurable precision. + Return a fixed value indicating double precision (most common). */ + return FE_DBLPREC; +} + +/* http://www.open-std.org/jtc1/sc22//WG14/www/docs/n752.htm: + + The fesetprec function establishes the precision represented by its + argument prec. If the argument does not match a precision macro, the + precision is not changed. + + The fesetprec function returns a nonzero value if and only if the + argument matches a precision macro (that is, if and only if the requested + precision can be established). */ +int +fesetprec (int prec) +{ + /* Aarch64 doesn't support changing precision at runtime. */ + return 0; // return failure +} + +#endif