From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-eopbgr130134.outbound.protection.outlook.com [40.107.13.134]) by sourceware.org (Postfix) with ESMTPS id 75E2B3858D39 for ; Fri, 1 Jul 2022 08:18:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 75E2B3858D39 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=Syrmia.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=Syrmia.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=El+Q4gifU0mdYpz7u51E0E2Wuyr/ckR1LpNpqDdGNrizvSpDmIQVv3DeHlQzqZoSDETQq4sJLTdAYZ733TBL4cpM19qbMuAnTuf5QVYcnLmN+XIHS2cUXNgZkiVvHrsjQP6lezEfrJ6J67kprTzy9KHRcT1iFM6SwbnkmsJSVchhIsYOYp74hSNp5K1g9UWnH93W5r322KqsO1EBWkw1lXz51t+yoXF8IFLnEP6sgg5UnvoGHIAPPmKYSBBvoFvvpRChrvrDArzIpt5nWfajgnkfFitVZegwEH17keb/KQPqx+elzxoOGWyHsGMBQFq8pwwQqHNoqUyL7tB4U8nrZQ== 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=zAlh7P++0AS+bNn/XuWZ35LyR0/edlxiO686m3BTfLM=; b=JuQTNA1es81UDnWmH0fIA2VnkLXjiUyPs5duOzdFmk9FoIL71kaXDuNXoTHWAsURHQm4SXt1WoP1awr0lGdEtuQ85Ikl3BN/uD7xUcPAhyMb1SA20ZPdDfCU9ru9szKdmJdRh+8ZUbG4afTnPXSWP/xZEarF9XGSoTGUsDuozuFoyqLt16ZG41N7FUUzBkfSdt5CCZU3f9g2PRR+FaUc3QgU1FbwMjB/04FKPtU1LbsT8nRf/O4FnFAH2CU1yw81aTKtrvtCQsoxN2ELOHav7ORh0cczAfWX859n5r/Y+9wCaLDL/allp/MzODZg4PETa6lLASgzkP5r1ZQN5Rf43w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=syrmia.com; dmarc=pass action=none header.from=syrmia.com; dkim=pass header.d=syrmia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=syrmia.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zAlh7P++0AS+bNn/XuWZ35LyR0/edlxiO686m3BTfLM=; b=BBbHQDWNuCctVDf2ExnwzNwveFtTDSvv+ErcRZqPLGSlmBASgXnK1nyux/C8/bmWOev81KeNhxY+zibP7un6hqO7nRisJr4YYBXMjkB2kNVKi706XbsKWL3TAvaV+h3QD/H3MF4foN8XC5FqZmIau6L3dUj64bUIMxrtHqzof14= Received: from AM0PR03MB4882.eurprd03.prod.outlook.com (2603:10a6:208:fb::17) by VE1PR03MB6111.eurprd03.prod.outlook.com (2603:10a6:803:10b::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.18; Fri, 1 Jul 2022 08:18:42 +0000 Received: from AM0PR03MB4882.eurprd03.prod.outlook.com ([fe80::3926:6805:c765:27ec]) by AM0PR03MB4882.eurprd03.prod.outlook.com ([fe80::3926:6805:c765:27ec%7]) with mapi id 15.20.5395.015; Fri, 1 Jul 2022 08:18:42 +0000 From: Dimitrije Milosevic To: "gcc-patches@gcc.gnu.org" CC: Djordje Todorovic , "xry111@xry111.site" Subject: [PATCH] Mips: Resolve build issues for the n32 ABI Thread-Topic: [PATCH] Mips: Resolve build issues for the n32 ABI Thread-Index: AQHYel9WsNofmq4UBUir/WUaSKaksw== Date: Fri, 1 Jul 2022 08:18:42 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: suggested_attachment_session_id: 44a785b2-416e-1b68-f1ba-195cc69951de authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=Syrmia.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 4734d014-75c5-4b7f-942d-08da5b3a4f7b x-ms-traffictypediagnostic: VE1PR03MB6111:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: v9vkTT1p3L/U4JN04/8y7q/xCuhenU3GZ9hKBKMl2PWVerVM/akvrDTyFaEvhuEel/WF5m0E1yY97QhWXfBxpN4wbgJWDvbxezasa9dV6QUEHrYJEdGbdXAvame0DVUn/vEtd0PcmMJ1ExP9iUIIPHCyqlOs+WUw1eClRr++plShXBDtbVQcG8cA7QQiaCXFR3KAs+3Fl+N4dLTzdUOAG/7S0G61W4lEu4PQvFei0i3EAs5T4KE40HhpTzE0zAdlb1fuqFjTbMrIpTwygDzrmlA/RL5FXYM61Lo/eOZmq1x+H1wxjSRva7gpPgEXd9yvfOAc0gHbD1e0CC14wEyTs9kOsIUteeOjl/vPZ4zkmzlIyd8d/jAQonZrSWVVGec1mq0Jr3seXJ1+Nq6n8M9GJKIyUNzBoTmqoziofw20/4O1CVjZdZF8VXyJWdAluvkAWMQqGJ0SL+s9zxmjHvFiVPndbn+eSwmcu9n6QB5CFyvmCIr0vYKa0Yh6PZ4bPkZBezSshYmPiLyrR0t0y6mEdoiim1Dn/yyQMWqoGVrUb2F1etqIfFPdk9HsULp1+avNl8IE2eQEO6diU/8Q6oNr32Y/0qK11jzAIJILIOjd4vye13/COUVmGGs9qw6D6t8Vu7rf9eS8bvBLJ7r6LduE/TyFEdWJTEVufruEOINtX+yw1M/ITmZR5E883mMopY3q30KrKFjgLc7btyFeKKLQFaPpQA2NSwk1pi11SoizZ1LT1zVHGBIg2gcqFEpCdXfmZf21D+c1ZWR4S3i2Mk7KkaQkrahyye/bA0aSiw4riqg/OCe6inMaM2OaIgfZmyVVWtoA5Kj8uiCXR6FlizSrEVbfR6ir1UiBK7uNN6mFdsY= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR03MB4882.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(396003)(366004)(136003)(376002)(346002)(39830400003)(38070700005)(52536014)(64756008)(478600001)(33656002)(66446008)(4326008)(66556008)(316002)(19627405001)(71200400001)(76116006)(66946007)(91956017)(8676002)(66476007)(38100700002)(26005)(966005)(166002)(9686003)(41300700001)(55016003)(5660300002)(8936002)(2906002)(86362001)(7696005)(6506007)(83380400001)(122000001)(6916009)(54906003)(186003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?sKf6TkrEE+jSr5JoRwf+wNhlmGP2Wm6WsaiU5kw/uOVmjHqC2LTTZnkqAF?= =?iso-8859-1?Q?3Fvd+iRFX1+hO6aIMAQP6EavfQWLtGgyKxCbqgqAFFHxvdFfpK1i4r00fG?= =?iso-8859-1?Q?sUbKVoWO1YFNwhWpwXAn36cS2OIl3UiLDuSqFM2AZIDCdTDtsAS+gPzWV3?= =?iso-8859-1?Q?6OhtwJ0gyUm1RAfh6KJmqw8/284GFqzy6HZA7YOYjGMEISq5R5cRBAJpi6?= =?iso-8859-1?Q?YcouGSeOuz2lZUsfyMaPopibEomnDUiGSSlZKz92ByPaqmgtiiAzokHWo6?= =?iso-8859-1?Q?SQDbNeV+0qZ8TVnHX/pzMdjBq/Avi1eKfY7NfH7rre90v/UEBrvjktCuvx?= =?iso-8859-1?Q?qBtbMwZuk0Ga7Cb6DGepCkh6DY1YoG4qMGKaV596dhUCth3SCbz8qyxljb?= =?iso-8859-1?Q?CnVNKeQ8nDvhaxgI74DSfIAEsT50n/TsAsqmfDYhSJy6iXmdG3knnl8Vhy?= =?iso-8859-1?Q?I/Iwfewg9WYthRo/OmBum/ddthdLLLtVxWtYG4iekmbSx54RMnesbRaFlO?= =?iso-8859-1?Q?uvzk2s9AqsKwQj77bKLv3mLlU5Ny2umk79XiEVVVYfnk1yOw0kP9bafq7u?= =?iso-8859-1?Q?CZv3BAd866IVFi5Qj3Nm7ab8kV89sK3D7K8Ozu9+jxC2p1JDKZ1KOXnF59?= =?iso-8859-1?Q?Q/ZPfy3+sUHid4AM0IZ6xbmjHAUDlXyDCXb1SWqkifu26jaoTbe+rJWkOM?= =?iso-8859-1?Q?tTtBXz5m3pvn22vNI+a8HrD1CdZKKhF0QRcdYWdUjxvRoRhUvVRdSICTyz?= =?iso-8859-1?Q?V4AEJ2EoJvcOMwHvmYGflQKH2EXPcHyvtG2zSPbxW/eghey5tgMHBOiTah?= =?iso-8859-1?Q?48BMKaOlt1LH3tVeJqryW+ortcLPwz1+DGxfIOedChodZnHRsy2CvsExO2?= =?iso-8859-1?Q?2ngJqsh20LgJasJ3X02F3owYU4Pfy8K7MhxXXCsylZ3BQyo1w3uzpWkk7B?= =?iso-8859-1?Q?miO28A8ZzLbgDSOTMtP4ieIExqEsjxf6HRyA8ohVovW0ZiMwv1JlngF4WS?= =?iso-8859-1?Q?5kgVorZ/8su93gmexFdn3P7hhrhBWWfVv96a/3awbe0rnKbScwx31sNvok?= =?iso-8859-1?Q?qKMy/VgyRqRhGB5BLyYHmTgu4kvPwtBJmsGrwiAYJ2aQ5rrpaOxeGR2pdF?= =?iso-8859-1?Q?5A8FHruxZC6rs22AYSdH2xDnb9qY9Hf3z+E8sRkx2F8ZDRdxFbsKgISKfo?= =?iso-8859-1?Q?jyPHURbKXdqo8KAUnTca/YSluZdiLr8RqzxcP7Njk8w8i0/LEw8mgOWBaA?= =?iso-8859-1?Q?nApPth7w+/DEd2O2oWUlSR9Zh61zU1BJKccP320pvLcFALubyGa+KP0BUs?= =?iso-8859-1?Q?YsepN+yUC7quEB6c58vZkDOnRv0BOOpsEOof024TDxY5glf92BUzl1PAsH?= =?iso-8859-1?Q?eORvkNRbwyi2lORVAoYZrIgXY94iTb5mi5vue0X1B2LMSnyVvrh5A95KV+?= =?iso-8859-1?Q?nLfnk8gCAw6mv1+/uESp0Vq3QMzeJs8MYKWskfrLZikJ1JxbkRAQSE4oUd?= =?iso-8859-1?Q?1xcUzi/4DBaxxp/Jn5rNIYAZzoA/d8u9qDTMNkioGGCohVWR6AMLlgjHnV?= =?iso-8859-1?Q?nye7mMZwDJk6hWs2wgTwebXYPkGz5AghrtJgAsv0sfGA5lVrCsPqE2/EW5?= =?iso-8859-1?Q?E6DdZrXrfLnPkRKc5yBTxJSnpLMAEF/6hS1hpcTUkeyru7W7wp9VUdog?= =?iso-8859-1?Q?=3D=3D?= MIME-Version: 1.0 X-OriginatorOrg: syrmia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM0PR03MB4882.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4734d014-75c5-4b7f-942d-08da5b3a4f7b X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Jul 2022 08:18:42.5607 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 19214a73-c1ab-4e19-8f59-14bdcb09a66e X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: WqEkMqB9sSiiSJ412Qmgd4HMP5n9Qdd/o0XJikHYRRtnxwZfbBh0Qu6KJ0myYKDjpcA2/ZLgpTU1y1ahRdn21BcGMMHh0REiaxnqZowyBOg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR03MB6111 X-Spam-Status: No, score=-13.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, HTML_MESSAGE, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Jul 2022 08:18:48 -0000 Building the ASAN for the n32 MIPS ABI currently fails, due to a few reason= s: - defined(__mips64), which is set solely based on the architecture type (32= -bit/64-bit), was still used in some places. Therefore, defined(__mips64) is swapped with SANITIZER_MIPS64, which takes = the ABI into account as well - defined(__mips64) && _MIPS_SIM =3D=3D ABI64. - The n32 ABI still uses 64-bit *Linux* system calls, even though the word = size is 32 bits. - After the transition to canonical system calls (https://reviews.llvm.org/= D124212), the n32 ABI still didn't use them, even though they are supported= , as per https://github.com/torvalds/linux/blob/master/arch/mips/kernel/sysca= lls/syscall_n32.tbl. - struct_kernel_stat_sz was not updated after being changed in LLVM's sourc= e tree. See https://reviews.llvm.org/D127098. libsanitizer/ChangeLog: * sanitizer_common/sanitizer_linux.cpp (defined): Resolve ASAN build issues for the n32 ABI. * sanitizer_common/sanitizer_platform.h (defined): Likewise. * sanitizer_common/sanitizer_platform_limits_posix.h: Likewise. --- libsanitizer/sanitizer_common/sanitizer_linux.cpp | 17 +++++= +++++------- libsanitizer/sanitizer_common/sanitizer_platform.h | 2 +- libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h | 2 +- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/libsanitizer/sanitizer_common/sanitizer_linux.cpp b/libsanitiz= er/sanitizer_common/sanitizer_linux.cpp index e2c32d679ad..5ba033492e7 100644 --- a/libsanitizer/sanitizer_common/sanitizer_linux.cpp +++ b/libsanitizer/sanitizer_common/sanitizer_linux.cpp @@ -34,7 +34,7 @@ // format. Struct kernel_stat is defined as 'struct stat' in asm/stat.h. T= o // access stat from asm/stat.h, without conflicting with definition in // sys/stat.h, we use this trick. -#if defined(__mips64) +#if SANITIZER_MIPS64 #include #include #define stat kernel_stat @@ -124,8 +124,9 @@ const int FUTEX_WAKE_PRIVATE =3D FUTEX_WAKE | FUTEX_PRI= VATE_FLAG; // Are we using 32-bit or 64-bit Linux syscalls? // x32 (which defines __x86_64__) has SANITIZER_WORDSIZE =3D=3D 32 // but it still needs to use 64-bit syscalls. -#if SANITIZER_LINUX && (defined(__x86_64__) || defined(__powerpc64__) || = \ - SANITIZER_WORDSIZE =3D=3D 64) +#if SANITIZER_LINUX && (defined(__x86_64__) || defined(__powerpc64__) || \ + SANITIZER_WORDSIZE =3D=3D 64 || = \ + (defined(__mips__) && _MIPS_SIM =3D=3D _ABIN32)) # define SANITIZER_LINUX_USES_64BIT_SYSCALLS 1 #else # define SANITIZER_LINUX_USES_64BIT_SYSCALLS 0 @@ -289,7 +290,7 @@ static void stat64_to_stat(struct stat64 *in, struct st= at *out) { } #endif -#if defined(__mips64) +#if SANITIZER_MIPS64 // Undefine compatibility macros from // so that they would not clash with the kernel_stat // st_[a|m|c]time fields @@ -343,7 +344,8 @@ uptr internal_stat(const char *path, void *buf) { #if SANITIZER_FREEBSD return internal_syscall(SYSCALL(fstatat), AT_FDCWD, (uptr)path, (uptr)bu= f, 0); # elif SANITIZER_LINUX -# if SANITIZER_WORDSIZE =3D=3D 64 || SANITIZER_X32 +# if SANITIZER_WORDSIZE =3D=3D 64 || SANITIZER_X32 || \ + (defined(__mips__) && _MIPS_SIM =3D=3D _ABIN32) return internal_syscall(SYSCALL(newfstatat), AT_FDCWD, (uptr)path, (uptr= )buf, 0); # else @@ -366,7 +368,8 @@ uptr internal_lstat(const char *path, void *buf) { return internal_syscall(SYSCALL(fstatat), AT_FDCWD, (uptr)path, (uptr)bu= f, AT_SYMLINK_NOFOLLOW); # elif SANITIZER_LINUX -# if defined(_LP64) || SANITIZER_X32 +# if defined(_LP64) || SANITIZER_X32 || \ + (defined(__mips__) && _MIPS_SIM =3D=3D _ABIN32) return internal_syscall(SYSCALL(newfstatat), AT_FDCWD, (uptr)path, (uptr= )buf, AT_SYMLINK_NOFOLLOW); # else @@ -1053,7 +1056,7 @@ uptr GetMaxVirtualAddress() { return (1ULL << (MostSignificantSetBitIndex(GET_CURRENT_FRAME()) + 1)) -= 1; #elif SANITIZER_RISCV64 return (1ULL << 38) - 1; -# elif defined(__mips64) +# elif SANITIZER_MIPS64 return (1ULL << 40) - 1; // 0x000000ffffffffffUL; # elif defined(__s390x__) return (1ULL << 53) - 1; // 0x001fffffffffffffUL; diff --git a/libsanitizer/sanitizer_common/sanitizer_platform.h b/libsaniti= zer/sanitizer_common/sanitizer_platform.h index 8fe0d831431..8bd9a327623 100644 --- a/libsanitizer/sanitizer_common/sanitizer_platform.h +++ b/libsanitizer/sanitizer_common/sanitizer_platform.h @@ -159,7 +159,7 @@ #if defined(__mips__) # define SANITIZER_MIPS 1 -# if defined(__mips64) +# if defined(__mips64) && _MIPS_SIM =3D=3D _ABI64 # define SANITIZER_MIPS32 0 # define SANITIZER_MIPS64 1 # else diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.= h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h index 89772a7e5c0..62a99035db3 100644 --- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h @@ -83,7 +83,7 @@ const unsigned struct_kernel_stat64_sz =3D 104; #elif defined(__mips__) const unsigned struct_kernel_stat_sz =3D SANITIZER_ANDROID ? FIRST_32_SECOND_64(104, 128) - : FIRST_32_SECOND_64(144, 216); + : FIRST_32_SECOND_64(160, 216); const unsigned struct_kernel_stat64_sz =3D 104; #elif defined(__s390__) && !defined(__s390x__) const unsigned struct_kernel_stat_sz =3D 64; ---