From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from APC01-PSA-obe.outbound.protection.outlook.com (mail-psaapc01on2097.outbound.protection.outlook.com [40.107.255.97]) by sourceware.org (Postfix) with ESMTPS id 4D0D23858D33 for ; Thu, 2 Mar 2023 01:52:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4D0D23858D33 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=cipunited.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=cipunited.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nSrEjRmfzGY6oYdQQ2IyJFS/6YJ4HaECoPhElVXEAF4Ykgbo23Q/9hVZjseWWX3lg+Sy5qzaWZlKFhDE/7nAX1SrevRhiv001C8n58PLzR5A37gkJjGJJq/uLa3nL5DILYnmA+VTS3LV1+rCb4zhPgvwaezduZ1NTrO2QQlJo65lT1Zi8HV+RTgV0o0O9IaUDZi/7sJHmMaD2xGePSSJeiJhW9ScyF79+utCHa7EMvBR287hivwQ1kOEjR5mgsBkXODyolx8aewAYk38IisVoHfmQ/L50+1Sb5rl/qKKCpB41kv7OVPodPOOvj/RbKLc0UmJJtVXkBL9AEPV63p3ng== 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=BJCSed/bpQW3otjytXWQ12E+3Pj9uXf/OL19vJPMPAQ=; b=MZDzFgb9B5o8L6ce/w9ukuqIffio9FNOjmcP8hqnMcf0e215r1NCSD6YQGLrSeXgGQyaK4WoVvbZuEESbOvB9z6rpgg0RQ59R9JzjHkSoJDBg1WMZCQ9g1IXw16a35CnfKiLRZf6WOz36kTBLeqh+Z7L8DG4Gsd8/4qSJmUjVd3tcirPTp38qqGAsCbSEAUzhq6sp/7m/J840/t8lWp86my1hJ4K6VDab7F6H3sRIJ83jQdmmNtBJaVLO7B9rKlmsHDVoJ83pIHBOQ5HUm3Q9NcwVHZZxTZfilJcF5BpZhh2QcqTYsqtl9z4jjsy5OJhewrq4tUVKWO39EGix0zTog== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cipunited.com; dmarc=pass action=none header.from=cipunited.com; dkim=pass header.d=cipunited.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cipunited.onmicrosoft.com; s=selector1-cipunited-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=BJCSed/bpQW3otjytXWQ12E+3Pj9uXf/OL19vJPMPAQ=; b=p+3Ryzsm/jneQOgZPhybREILKyklshcKf6uI0cXQQI59gYwGOduV5e9eamHmeFQ+e6wXCQLGj3JFzquu9Iv8IHWvxkhgHEIO4ZG61ZjrKqJaXHeK/d5prSie/30iGskq7H25m3KPDc1cKK9UiXDccL4KGhzdHX0Ad0T+Z8D8w7A= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=cipunited.com; Received: from TYZPR04MB6117.apcprd04.prod.outlook.com (2603:1096:400:25a::9) by TY2PR04MB4062.apcprd04.prod.outlook.com (2603:1096:404:800f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.18; Thu, 2 Mar 2023 01:52:39 +0000 Received: from TYZPR04MB6117.apcprd04.prod.outlook.com ([fe80::b2cb:a598:3a7e:367a]) by TYZPR04MB6117.apcprd04.prod.outlook.com ([fe80::b2cb:a598:3a7e:367a%2]) with mapi id 15.20.6156.018; Thu, 2 Mar 2023 01:52:39 +0000 From: YunQiang Su To: binutils@sourceware.org Cc: syq@debian.org, macro@orcam.me.uk, xry111@xry111.site, richard.sandiford@arm.com, jiaxun.yang@flygoat.com, YunQiang Su Subject: [PATCH v2] MIPS: make mipsisa32 and mipsisa64 link more systematic Date: Thu, 2 Mar 2023 09:52:22 +0800 Message-Id: <20230302015222.291088-1-yunqiang.su@cipunited.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230221040650.2337395-1-yunqiang.su@cipunited.com> References: <20230221040650.2337395-1-yunqiang.su@cipunited.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: TYWPR01CA0009.jpnprd01.prod.outlook.com (2603:1096:400:a9::14) To TYZPR04MB6117.apcprd04.prod.outlook.com (2603:1096:400:25a::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYZPR04MB6117:EE_|TY2PR04MB4062:EE_ X-MS-Office365-Filtering-Correlation-Id: 54d3c012-7d4e-472f-5063-08db1ac0cdcf X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: iiJZWi+kP0c9uBRagakQAmporP4JpkiBhcDxeTL/ippZmVZgV2u28OrvGE1fwOJYTIeZ3VrKpep3ZmSJj77Nmyl6jo0xnygB3NYfruOJCVhQ6EghQJ2vzhwsZyf+i1jagFociDDKYpzmRNUVvhcjKhB1lQu3g+ETKBt0E/MOVedmNOzkDeOHeYYYp7PZPhzGpyRlzYDn0Bw+5+T2cE/B83mxFAtEntCfxtqKDzokEVp4BQY0jeUAhWS2TH50RVK4unGdFdnPNRwq+ULZxB1ZqLlPDmrPLzE3PeOoF5PIaOnrNYo2DFoaKaOZgkUNsZnz7RfGuV42dEa2f5uvKWJG0yt88oYTIu3KhVOuYT3tTU2csMmm/s9HsTUzcoXgRKkdUZKFRp/c/WmtseqbEz+METp1r/whZQsC6Z2Zk+nf/oKf6OUsa4qO7z0U4VbaxrhHs5oBO+Xa9EBfTPICGk2ivsE1R1EvFP139/o1ntEBhBchhnFyIATlOkhK+lAzNhvq93UTwykz5vE6teBPm3dfzlo9xMy+jisWE81jNvLEn8hRVojuCAQRqwhoZMuFQb50xA85n1/Rw0Wa0e33i+HycYYQaTR54EX4n0TA4af3fwxiuBiEnLXHFmxJ9Cdb36lVJbVppBCyU6tAcFuyyrpXP48U5Dlx0olj0+7jvR+0SJK802v+3W4f6sbUkP/a3LNFv4q65fxew+AcHdvfLGqKpA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYZPR04MB6117.apcprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(366004)(39830400003)(346002)(376002)(396003)(136003)(451199018)(36756003)(86362001)(66556008)(41300700001)(66476007)(8936002)(5660300002)(6916009)(4326008)(66946007)(2906002)(8676002)(38350700002)(38100700002)(52116002)(107886003)(6486002)(478600001)(6666004)(316002)(83380400001)(2616005)(1076003)(186003)(6506007)(6512007)(26005);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?yZ8fdrxptR6Nrxk/90UF0jGGlqFMo+1zi2a5mAIuRjgNIdvsjXU5XTGv2bWM?= =?us-ascii?Q?V4BKFBL9NRf45Q+Gu/8pvX5uL2jRGsRQq3hhkHJ4nMWZzCV2YnDRbSOMNgi0?= =?us-ascii?Q?DLmCGELbrnUATvMv9TEEAOK4lCfK2+l5OGf+s3TMUME/x/3pvM0uIvUp4fgy?= =?us-ascii?Q?KllJDhjTQHUdM8GcHQn9CRTk7Rkmo8wRQGbgu8hl2HDp05PNPhn4FNJavoCT?= =?us-ascii?Q?xqy6ngjFJmCUbJBUrYkXSMWY+Tb8W8pv7RQPLWPA8bWbQp970qj304w6Dn89?= =?us-ascii?Q?vBvW4St/LaMg49OPjFMV3hPjWCErhlhZ7k8+0WSchd5Y/ofCkW9AmVG/mKLz?= =?us-ascii?Q?aiYdTntsMqoaEse0UX9hptH4BotxLYZ1ApjN902CjTkrHC94t3nriJpUEtgW?= =?us-ascii?Q?Qliz+/WD6dv20kPsZtUGJH9g8ieVP7gYsPwzAuNF9cbr7W1VjlGCZXCcdJUK?= =?us-ascii?Q?lxdiT5wcXSgkxwBQ1YZSRWpKXRxIvsFneaADc3V++e//1157OlGGc/MBLdaH?= =?us-ascii?Q?pP79uf965NyJ3xkc92Z2KA1y9pKzPl/iESTfDObu58+pWMJq/gbc6RSIiDPA?= =?us-ascii?Q?KMeFI8bV6V1epZ/I5F5PZmC0diDN/k7wDXL0cNqqt766ekOxnmXSk3Pi/BHk?= =?us-ascii?Q?PQ/7kuUK6e5Y+L9xOnzrbUaSmUKhPhsFxy5I8DzNja19AyPC0B0OhfifDUNH?= =?us-ascii?Q?J67wZXrfCR4S8smj/F+9q9wag7JytkNVG91TSLUptdaeVci6vF7+PLipQZQc?= =?us-ascii?Q?mOMgABZzyZ7y6ShFotZmzu3wN8DUL2HAGHTkhzaRH90ZqELiiDS7tXpsE4Vv?= =?us-ascii?Q?KH0kW6dhIW/btiHPzE+oFJonvfEZiYM4vS5mp9+EohuMWh62LNrpgPt8v9Jy?= =?us-ascii?Q?bSGHlUtP1g7MQCpGAyC+h498Cc1BWUzrrJV+L2qddBf/qu9AqsWhLDeVF+hv?= =?us-ascii?Q?dDdqDQaxRHnnzcAQ4g7pURIARF3tjfHpIk7HsAYkyiwYKV2aInUsIO7HqmMx?= =?us-ascii?Q?1iarRybrlXrBIUxKqZ69rHs95Cmu8RaQMEI7zzhi14nAHuIk0p9UJ38JLQNG?= =?us-ascii?Q?A/TBTiaNm2xrYPdxoVn30p5JK75IUrKlLDSyuGH4w+U7N6Iuh3ZQ75vl1cHE?= =?us-ascii?Q?oGvt0YZoA+FESz7e9Ou+N4Rx/vqVC2Mbbsh9Bkh3XK9zJFPDug5U8bbsT8p4?= =?us-ascii?Q?nVI9de8u/LVz5q9106Bw9OQJU7uQ9gid6BQhO8YLp5P0bC948MefUVcgxeIe?= =?us-ascii?Q?8QL7NcEZpGLGjtPWTgbE7ydxqGF6g/67abFDVeP18TSDf2A7ObsKqIr0JJJE?= =?us-ascii?Q?2FGHK2k9fERL8hy7ch8eA0r498lH+t2k7ciLUjwWnoisQEUi4JAqYwlISII3?= =?us-ascii?Q?USuOD34yeHXvr/JYgSXbbSoIQaJwdBXq+x3YRFnA61YlIqRFvXbDnVd4iuR+?= =?us-ascii?Q?6plyp8bdjlJLC5MNo1MsxiV0X4Gy8UbolNtnJD6r5PMLvKXtEhFrqP5eMske?= =?us-ascii?Q?tahPaVCaJ56GRiie6c43YEqkM1yfyyliLTFdbQFeh1YP+7ggz6vAWlvWifa8?= =?us-ascii?Q?mew/VFbnP0nvd2/NYHz/fcsxv35QwuY5SvEdeAVi0MMLQI1bq+LaC4CD0/ve?= =?us-ascii?Q?qg=3D=3D?= X-OriginatorOrg: cipunited.com X-MS-Exchange-CrossTenant-Network-Message-Id: 54d3c012-7d4e-472f-5063-08db1ac0cdcf X-MS-Exchange-CrossTenant-AuthSource: TYZPR04MB6117.apcprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Mar 2023 01:52:39.5296 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e31cf5b5-ee69-4d5f-9c69-edeeda2458c0 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: aJ7kIVC33Zvl/Fx0qA+h9oL1nD6d+8SEBe/v5ArE+LDhBUJbfVZHWPsdh3Er79u020a0cpmhZIp7s6illGjZOy4t6BJYv1HLWlhMicpiC20= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY2PR04MB4062 X-Spam-Status: No, score=-13.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP 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: Introduce `static const struct mips_mach_extension mips_mach_32_64[]` and `mips_mach_extends_32_64 (unsigned long base, unsigned long extension)`, to make mipsisa32 and mipsisa64 interlink more systemtic. Normally, the ISA mipsisa64rN has two subset: mipsisa64r(N-1) and mipsisa32rN. `mips_mach_extensions` can hold only mipsisa64r(N-1), so we need to introduce a new instruction `mips_mach_32_64`, which holds the pair 32vs64. Note: R6 is not compatible with pre-R6. bfd/ChangeLog: * elfxx-mips.c (mips_mach_extends_p): make mipsisa32 and mipsisa64 interlink more systematic. (mips_mach_32_64): new struct added. (mips_mach_extends_32_64): new function added. --- bfd/elfxx-mips.c | 40 +++++++++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 11 deletions(-) diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c index 35bbd86044b..21e6396609b 100644 --- a/bfd/elfxx-mips.c +++ b/bfd/elfxx-mips.c @@ -14524,6 +14524,16 @@ struct mips_mach_extension unsigned long extension, base; }; +/* An array that maps 64-bit architectures to the corresponding 32-bit + architectures. */ +static const struct mips_mach_extension mips_mach_32_64[] = +{ + { bfd_mach_mipsisa64r6, bfd_mach_mipsisa32r6 }, + { bfd_mach_mipsisa64r5, bfd_mach_mipsisa32r5 }, + { bfd_mach_mipsisa64r3, bfd_mach_mipsisa32r3 }, + { bfd_mach_mipsisa64r2, bfd_mach_mipsisa32r2 }, + { bfd_mach_mipsisa64, bfd_mach_mipsisa32 } +}; /* An array describing how BFD machines relate to one another. The entries are ordered topologically with MIPS I extensions listed last. */ @@ -14601,29 +14611,37 @@ static const struct mips_mach_extension mips_mach_extensions[] = { bfd_mach_mips3900, bfd_mach_mips3000 } }; -/* Return true if bfd machine EXTENSION is an extension of machine BASE. */ +/* Return true if bfd machine EXTENSION is the same as BASE, or if + EXTENSION is the 64-bit equivalent of a 32-bit BASE. */ + +static bool +mips_mach_extends_32_64 (unsigned long base, unsigned long extension) +{ + size_t i; + + if (extension == base) + return true; + + for (i = 0; i < ARRAY_SIZE (mips_mach_64_32); i++) + if (extension == mips_mach_32_64[i].extension) + return base == mips_mach_32_64[i].base; + + return false; +} static bool mips_mach_extends_p (unsigned long base, unsigned long extension) { size_t i; - if (extension == base) - return true; - - if (base == bfd_mach_mipsisa32 - && mips_mach_extends_p (bfd_mach_mipsisa64, extension)) - return true; - - if (base == bfd_mach_mipsisa32r2 - && mips_mach_extends_p (bfd_mach_mipsisa64r2, extension)) + if (mips_mach_extends_32_64 (base, extension)) return true; for (i = 0; i < ARRAY_SIZE (mips_mach_extensions); i++) if (extension == mips_mach_extensions[i].extension) { extension = mips_mach_extensions[i].base; - if (extension == base) + if (mips_mach_extends_32_64 (base, extension)) return true; } -- 2.30.2