From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from APC01-SG2-obe.outbound.protection.outlook.com (mail-sgaapc01on20722.outbound.protection.outlook.com [IPv6:2a01:111:f400:feab::722]) by sourceware.org (Postfix) with ESMTPS id 83B303858C52 for ; Mon, 10 Apr 2023 06:51:27 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 83B303858C52 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=IFotPly3VVebfSKWniRgW6oVjrl7V9MC20xMbNnUjfScrzBApkY4lIjhtHkOfPzDZcSZmZi+YwwS5Smdy9/NwnwZ2p5nQvABqrBN2wnZWaOEgUBBfLXqfcor2MJBZKiZIdu9Hz/OhdiKRX6/3Y7NktUxRoHOkvFjj+dPiOHGFfNCIemBnzwoGmPw8zyN2boSBhBFVXnoYXh7xEwc3hNhBnqiHQ16gAT7y9fqVL1DoBxQiInL9HRIMFGg5/nEcZ3hGw60BUWABZIXL7fBed8cwPm6aGBvKN8UvQmszTyScVTO1gc5y4UqTNA6dVCjueYWeN2+8qB+OfjLYbY1dtQxIA== 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=R0mQUTFF4S31UJ5tjBfgMUc5Ju575Ra33SJESUQ2k3E=; b=ZSCBuB9J3rSdwCNHrg3z+3Mae9sORaLtMFrimI2FYAE09tG+sgTpHsEDoqErQzocwdmYUXdAiMZwS0WUxrpbOoyjL1oGmmeznoBmsDcrdsCzPSZroPmPeGevntqR5VJqr8w2vA4MIxug0aBYZeATVuX82ZMJtmhlQ2VJ5c2VrfWQvP1XTyvpJdlId2V6ZHLlI5tu9nOAHHir6vWWClbkn6CasaRGPqU7MidM+LNP8zT9g4FsMj8qTXCwf2OaZcACzyd4Acs/9r8nwRkmxTN65evmgrTzu6BfGQAZ4S1ho34aRVGkLF5l7iGcWkHMIpXO2mUBLe9VqR/SypRNWpS6dA== 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=R0mQUTFF4S31UJ5tjBfgMUc5Ju575Ra33SJESUQ2k3E=; b=Ujoux5iThBw3qDXVz56tY1MElHZ9195WFDI1T8YXvpXistJSGJDxB2q34ulzSrOx4T5I/dIzK5GVzAYFlQN0N5ahsb3S8YG+Csk3w8vfBWwW6kzZiFQjdw/F1WvcLNCVlOuarQr+k+OFn291KJDX5KsUt7OcJ/6pcFf0L1bkuLY= 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 SEZPR04MB5827.apcprd04.prod.outlook.com (2603:1096:101:7b::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6277.38; Mon, 10 Apr 2023 06:51:21 +0000 Received: from TYZPR04MB6117.apcprd04.prod.outlook.com ([fe80::4016:87b:f0d1:b150]) by TYZPR04MB6117.apcprd04.prod.outlook.com ([fe80::4016:87b:f0d1:b150%5]) with mapi id 15.20.6277.035; Mon, 10 Apr 2023 06:51:21 +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, amodra@gmail.com, YunQiang Su Subject: [PATCH v3] MIPS: make mipsisa32 and mipsisa64 link more systematic Date: Mon, 10 Apr 2023 14:51:01 +0800 Message-Id: <20230410065101.822124-1-yunqiang.su@cipunited.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: References: Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: TYCPR01CA0016.jpnprd01.prod.outlook.com (2603:1096:405::28) To TYZPR04MB6117.apcprd04.prod.outlook.com (2603:1096:400:25a::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYZPR04MB6117:EE_|SEZPR04MB5827:EE_ X-MS-Office365-Filtering-Correlation-Id: 2411e29c-8cb8-4429-1cc8-08db398ffdca X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 2SM/qFqxwKYkZ7BmXrfeoD2oXujF2fq0xfCQCma6EbdF3Htlyl+C5QsCyrHIWAvG1nK08T/mCcAq9Wkh7ow9anSwhCJhhhdb/RMq7Ptgb30JWw2vZJk+5+qB1aUU2xKb9LB8ytNUnZbFIFEUL7wNffTUNaHa63S0N148JTpKj0UmzxPoxz9LVEL8xY/wnplbGmT21+PRfAOdA7bfAOayW+XXT9NIW+4CXjFZIqC42qZ25RJ0GoW+fgs6enU59m5GqQsxAd5hOop/kxrUl8kWEdn/bNdeI4WKu50g+0D7Uq2iavTZ5jbDxvzZMWpj3rpy5ypwCEedB7/xR5TLMoMiisdXnTfJU0ripTflDTLES/yvfS32aljOlYwYvPpuJrNr5/EVF4k2Ce6d1hKuBfBTe80lrQPoDyOuQbDC/GPcJpEJcFh5jqkY4/RX30b4WUgBmWf9QS1QOrCnYdPKRuMiT8PxbUh7yXLMCb2yWK8Qtk9m9sDI0JsSAfjBccUYTLhvcdvq6MsuZFgL8XgSx0H0C5qAFDjdic3ypVhuVF7hnycxdWK9AShrwmvRnTxBhDfJlZ3cIs6Rwnpy5L7ylELz2qdSKqrnQ9SDswRrcM8Q++DuTi0zmeuarpgbMsTfHvM3 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:(13230028)(396003)(346002)(39830400003)(366004)(136003)(376002)(451199021)(478600001)(52116002)(316002)(6512007)(1076003)(6506007)(26005)(186003)(107886003)(6666004)(6486002)(2906002)(5660300002)(4326008)(66946007)(6916009)(41300700001)(8936002)(8676002)(66476007)(66556008)(38100700002)(38350700002)(86362001)(36756003)(83380400001)(2616005);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?/qAmyf4bqSuR96GkW2BNEuD7BybhowW4ARoaobdlyl7afGRA04HSzzXIbLsE?= =?us-ascii?Q?a8HnrBrqkHUkpWN7b99+s2+EyGYvY1C/c2Av0aDQWF2G7gQGsfC0txqkY6vh?= =?us-ascii?Q?pLc/lhkRNBoAC2m0zt5McFe2+ZuHMZQf1tVC14Mg3HTnqJEjsvfrsfUt50Td?= =?us-ascii?Q?qMT4ZqzA1JJLtLrKrU4vZna9pTxmbMJ6y0TU+le4Gb5GbYYJIy1yQNn/izDa?= =?us-ascii?Q?oAfz79hzFLsCWY6bHI97T/6EemsNtxX/lLuoRrGINunKcQnhHd92cmE6b/+S?= =?us-ascii?Q?55GYT0+cLkAtz/vwp/rcMg0kco4nLrd8fh+moQy8Owy81vr1Yt9I56zwH1+p?= =?us-ascii?Q?28ma/yPkl+KM55pBOJ6FNnn529HLlA3R/sLgDj5CEblzfonw7TIu7fl5x74a?= =?us-ascii?Q?MQIxZAB6ucUUtvYSamQl06gaJdLXgZIBSZEt1oVUFZ/Yj8MZLztTuswfYuaZ?= =?us-ascii?Q?zhpLGnzgv8L9sPphwosF+6KyQDWTO4wZZTc8wmkQm/Ei+rv9cMn12zVTa3MH?= =?us-ascii?Q?uaJZ2m2/d3iqxLijO/FyD3Wptv7p8tN5wGOW3ybfWEgum8UrdHmJGBzinQo1?= =?us-ascii?Q?BsCwuxWKKvkPuJZNmwLalLpGBhttoofNkuV1E3a3ykKpgt19SAioCTKlHqvO?= =?us-ascii?Q?xFCXklOyAMhLxK4h0RBZ/zGb7tyi9PxOGYM0nqLv4Paznjd99MeqlYlOjMRU?= =?us-ascii?Q?7cQE22aA5VCMLKaQczJ8sqe3TCO5Yk0iqeEA1w1iDlcTqPOjeIb4jxZ4BGzB?= =?us-ascii?Q?8TRnyf5fMclfmfkenusJsTLF2DxGmVfsnstdfqBSb+a4GzngzWKsrjO6R/3k?= =?us-ascii?Q?eR5s8jjLZyjUjUxm5dsjS0E3O+XFfedoMFLo5bnHwxnE2UhBjuHeWjfbEKL7?= =?us-ascii?Q?8cILihVGRrPEoobF1HigxFNgfAxijA1O11OusVj1ejsFVkPK62OGH6hwPA86?= =?us-ascii?Q?0FmeH3KaVGLetsvCdcSvPR5IvzWHCrqpugDrEP0oYAsN2LFVNUxDN/6FTs5Y?= =?us-ascii?Q?WTMSW58EkdJl3jLHHdwaa8eyDtSrCRClxORC3oiZiNEf+oIP4/r9cqU9WxJ6?= =?us-ascii?Q?FKrcrtG1QyHhJ/EyeWkjfXGZfvc+7fGn+fKOXN3MTfgd92P6zwLrIBUTheLm?= =?us-ascii?Q?3mrvj+LoiB4P/IPPl595oorpnnrqUQx70kzbUo+vFpYth46nuQYJbAfk2uYq?= =?us-ascii?Q?mRSBpmFUE/cKSftMa3B8fqBqmwm4n3UVRb4zYAuFiuLX3J/cikCtyHEf6Dkc?= =?us-ascii?Q?79LTTjvBDk8AhxygqE7Bom/EF2f9jbKipYRm6SoQT8odwofwck7QKsrUnsqL?= =?us-ascii?Q?pT4tgIXOIb9WHKfH/C8BJrJvZGr4jE3BDOkGKKuT/ta3q3qLCYb70jz5wvfL?= =?us-ascii?Q?GDZW0mnCzG5hux/Cw23JDVqGKp/Xe1UKPqg0jBfJpqXoxL8NMeauKvj+BbG3?= =?us-ascii?Q?ew2WhwOwUjItalucUaBqNPmLD9DnQnk1TPYLo+e3KnNFBP0RiNwnUaka7FaO?= =?us-ascii?Q?MmiHRr49zZg3EbqbgsPA12JUS+rz49CG6kMa4WLTM3SqHxvIcoOiPItITqkA?= =?us-ascii?Q?aXJ8px+wQD2gqKyAyMEAvIrDw4781auwBuJo3bSctzRh/OzOC95b/L68rN2V?= =?us-ascii?Q?1w=3D=3D?= X-OriginatorOrg: cipunited.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2411e29c-8cb8-4429-1cc8-08db398ffdca X-MS-Exchange-CrossTenant-AuthSource: TYZPR04MB6117.apcprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2023 06:51:20.9028 (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: JQe846a2O5R3Wshwu4aDXT5GG3A+moc9w28nUBkhijPYh7B5J7sE2zQgTnZI9vyxAQVMeVqW/DweMyANz57+WyfnokE+CFnAoFjZ2I8CXPM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEZPR04MB5827 X-Spam-Status: No, score=-13.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,GIT_PATCH_0,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 | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c index d34a755807b..076538fbc53 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_p (unsigned long base, unsigned long extension) +mips_mach_extends_32_64 (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; + for (i = 0; i < ARRAY_SIZE (mips_mach_32_64); 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 (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