From patchwork Fri May 5 13:01:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 90432 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp382797vqo; Fri, 5 May 2023 06:01:34 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4iIxskS1e0AHPZbf3kb+zlDQUg4RTWBm1AkhDXMeEkH2MTVaMmPrvjY2NtsVPlHDn21GTd X-Received: by 2002:a17:906:dc8e:b0:965:f69b:4949 with SMTP id cs14-20020a170906dc8e00b00965f69b4949mr583425ejc.36.1683291694569; Fri, 05 May 2023 06:01:34 -0700 (PDT) Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id tb23-20020a1709078b9700b00965e3a8dcfbsi962785ejc.900.2023.05.05.06.01.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 May 2023 06:01:34 -0700 (PDT) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=sXFAlK2c; arc=fail (signature failed); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id BA64F3856091 for ; Fri, 5 May 2023 13:01:21 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org BA64F3856091 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1683291681; bh=M7pejM6DUdW/l7KMUABqeo+N2EP/cugWa7HuI0NO+BE=; h=Date:Subject:To:Cc:References:In-Reply-To:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=sXFAlK2ckJP+gKH17PBzWB422fLFqvahSTJKAXbRH5ucBMPlIeMlH8kvmpqI+jX5P t65sR3Uf/McXFSUmMs1hxg8vjlwdzOXIb1PnmQJohDTUaCBLFa8FLVVx/qY4v5xaaw +hFWIcOSpPAP2FwoVi0vg8M9YuwTKcnuv4HQbK7c= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2058.outbound.protection.outlook.com [40.107.21.58]) by sourceware.org (Postfix) with ESMTPS id 4942E385697F for ; Fri, 5 May 2023 13:01:14 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4942E385697F ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ky0K8JAnkZGOsjBtO4EgPaKRH3o9x4LguhdWlWaB/pnX79cHUK6MTiVdnzFuoO3Yy5DmuyLdEu+Kwz9XzoLu58pNv/hauwE5uBNuAWPXsRdzHVzbD6c/D45i8YUfk+Hg1LdSdT3ncM6ih5hbv5jp/g9Azzh75daoe6apOwboNSamsWbAFeTg57COGpe/CpbyztNb2Yu4+94FpStnUwuKdgSEVj29jRVFotUtQyhor2p86F+f1zsBp1aGU+quChJUN3PBom78ChBeNm5OcwrD9Zmm4dw67AA3iFVNBs0b9G1cd2cxrfwQacqzc1pZ8q8QMsUBZUvua84CZHWa+VcdoA== 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=M7pejM6DUdW/l7KMUABqeo+N2EP/cugWa7HuI0NO+BE=; b=XtchC600+KzKjK8Z195nWmMlb99etjtglqrZclckVMbg9prAhr2tB/z/fHEsNqV14eqkwBFRCwUIDy1pGh0dFVsvsrxz0gQyULD4JZNWNQaubgqPNSiDOTVMPvyeAeYCRzY9i+wM40t/INZjPwA7+4LW7KC/Gp5Ti7MM6P95B+VB+aNvj84+rR/ZVXpBnpOzq5DJJEqduqyk6CncCCYZ/N+MWfQpm3p2J5eng6QwoSLA0zv0MUZ3CMPskfZk6P14UXM1sobPp92hhVOfm/autTRkgPZNxOREBnrGkA/RBMRLSVg2mw+Hyb0seMqzJvoEFedjEhW9bYlhaBS+oXnKxg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none Received: from AM6PR04MB6551.eurprd04.prod.outlook.com (2603:10a6:20b:fa::20) by DUZPR04MB9848.eurprd04.prod.outlook.com (2603:10a6:10:4dd::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6363.27; Fri, 5 May 2023 13:01:12 +0000 Received: from AM6PR04MB6551.eurprd04.prod.outlook.com ([fe80::768c:6df7:9afb:acd7]) by AM6PR04MB6551.eurprd04.prod.outlook.com ([fe80::768c:6df7:9afb:acd7%7]) with mapi id 15.20.6363.027; Fri, 5 May 2023 13:01:12 +0000 Message-ID: <168dfa6e-63d2-06d5-49d5-4d7a1797efb4@suse.com> Date: Fri, 5 May 2023 15:01:10 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.10.1 Subject: [PATCH 1/4] x86: tighten extend-to-32bit-address conditions Content-Language: en-US To: Binutils Cc: "H.J. Lu" References: In-Reply-To: X-ClientProxiedBy: FR2P281CA0144.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:98::18) To AM6PR04MB6551.eurprd04.prod.outlook.com (2603:10a6:20b:fa::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR04MB6551:EE_|DUZPR04MB9848:EE_ X-MS-Office365-Filtering-Correlation-Id: 784231ff-2638-4b4d-7800-08db4d68cd38 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 4sINCJwhm00BSdJcEyuwr16bhaTaNFtgZ7O80LaCRi0yM9a1o/jnUjJ5lZp8jthYT/yxHjF7WtcTlYLXOCCcvE28k66VyCF1iuMq6ZvBqFrGASxoeI3LIoSZv2bCVYmEXDIjflOPjEAA8mFH3gZF7O+OmU7ZHM6trhf4l9vzsK30WozYJVKrYjHAWFJJybezR78MjV3DJgfzqvXthH79mzAFhowH4AAzq0QrfKOk4dTFvRMo7mJ+v76npRGUsqRxVxTXqAim2awNcRcAvkSCqZwRdgCt30gkMhOxAvtonIr9jNEZzX7eULS9phtXfoQNmEvXFClF7454bsrEmYkXQAAkJuto3pHF/r6yUbm6El3NX8gOZlDyQtwckt+NAWfrp21A7ljxyWJGHgPQFs+hHn2NjNNuWXz8GIKpJ1sbG96V3TEKsBd7t2Epc3a/oSBiBDXaGeIpd1HjqQ/b8AkI0zQE494Mm73T3sTShtItRp7XTwroQV/joc2OlUeHI35HFu/bsOaTlvyJgofLFXunJXAWKZFdeud8Ec8XqyjfCeJQW4C1yt6ENY4STBSsUuGCHaUeiIvbStq/sETHuhtCWtPVXhhF9+cH6TG+HnDZOQ+PaJd9QOCArytpeaet1Kq8WXiNr/hJa7HWvCSNZFjBZg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR04MB6551.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(366004)(136003)(346002)(396003)(39860400002)(376002)(451199021)(36756003)(31696002)(86362001)(316002)(6916009)(4326008)(66946007)(66556008)(66476007)(6486002)(478600001)(41300700001)(5660300002)(8676002)(8936002)(2906002)(4744005)(38100700002)(186003)(2616005)(6506007)(6512007)(26005)(83380400001)(31686004)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?32Ni87e6hC10XA1w492IXf9Q2SyK?= =?utf-8?q?WyQMA4h3/cnPliPw6TPKCZ4g3dlmPcC8AnlzDY2i8cQAvaQUZgNdiN/vcyl/2pJiH?= =?utf-8?q?4hYWlFDtao4HUYz3OE4C5+133ETTmTRBLZWy3bOirhktPLDxzV8Nm7OImcIUOFqc6?= =?utf-8?q?V0GDW4W6D4+Zu+aCqPZhE5Rr75TPAjhObi9IJUdYmZFot2JNVa+oVzKyPOBUWW1sx?= =?utf-8?q?tR49Oa00sxZ1sxlRpdewkLa+2D4dSbEZhA6gsGCV2AEZoj8YHqSib+ZtVjF3N1QHO?= =?utf-8?q?F163Yrxd8fgzNil2UYDwFXq02Y7Mb8Cc5fF5yXMWIAF9V1RLZViJlqN9ZDor1GX9y?= =?utf-8?q?6+YvrYjTRkdancBadF3p3rJYOCYowSI4GMRYRAyOqlF8rnDzCPrjt9rluFi8AksAQ?= =?utf-8?q?IgzRBzNSyzo6IPjhayUuiwtlS1e+y2972nkdH0J4IVrQS8GEZsHSYp9OXsrkiIP0r?= =?utf-8?q?cRCAuTWJLoYIPyCczFcvCgAWUj0APde4h8+Gqpd4w5hnLN6l5l+s50lVSLDpVVnJg?= =?utf-8?q?NSSlJOtKnbl6YMa1Y6aIr0wJJtgPClmTBFIecHduBt8pc5SdUU4kFhDD5RQxzCVHS?= =?utf-8?q?tfVC10DgFAs1b3Ra64alzOlkpSDGImz94LYjjwA/YDqYjporI0EW7QxpUKNM1LVBv?= =?utf-8?q?i0dz23vR9KUqu1Uzab/GozPBcHgxhAX5GMVJsxSF16pfa+RLsXimNvmdP00bPz60X?= =?utf-8?q?JG1bfNJL4wgs1aQZiRm1Hmebf1NXfvFuHHUuyq/WBKv7/Bc5LwIbDrszpRw1UJDqo?= =?utf-8?q?J4bJwiZkpxDkiFVvFb43ws8hXpRS7dacVEkr8mCvgrqYa55wKp9PZhu2rbiiX2Lo4?= =?utf-8?q?nFWysrtnGn+aL3y/RXpmYCQ7tb4y2ciZE8hcwelQEyj5RAGzdCCR+Il4wX8d2HAKf?= =?utf-8?q?FkodmMSg/FZU9uTrQviAOwqiJAwAXswCIbH6wfmyxGDQ0N071TnANExwM0PZCWoow?= =?utf-8?q?clXvjwEa4TbtTR5C19xUQU50UrCV3az9oMWthEL4f59G+7+1W2TxgNrJJi1f+oL2l?= =?utf-8?q?mEDc1C5qwXNEZB7xKeSLNA8dFHtYWQPdbEsn6BdwWZwnBoGtnCq3akIfaLS5JD96W?= =?utf-8?q?16bMtBDEjNCAVE0pf9sRRdevdRUzDZCgDGtnSILd2cWuzjo9duYDxWMMxUjkSJhzg?= =?utf-8?q?vqY9WWJE0cRCtEMP8M7ISamfz5CsM4JcNjDD3yj+k67/G4PIYMSNYxoJW/oid+DXG?= =?utf-8?q?9vT39VuKhGlA0eHrHNoYPlYxwkaGMHxjocAlDLm0za8BRt+5ANiJHczzyup1KvaTg?= =?utf-8?q?lSFukDiElzRP9kDQG8G23p6eR4Rs1BW5j/0kb+qnY8VHxfN077RPTNG48jySE6ds2?= =?utf-8?q?vWxToyFy2O15uFvrE8UqEkhKoRrY5/cp6mrBWVgcyGPHFBp6u9UVH4Wmy/u7wueVD?= =?utf-8?q?d7Mez5lEA/2GdvYtWXORfEg+crJhuFtfge5ISmdXgFt+4Ye8wrNwNyrs22IbmGo0a?= =?utf-8?q?3pcDrY4iEyPFFs8a1GrrfCBBZxIC3jDPOpJwvV01mrYI2S5yd/SeHR/QfXDDKkjVY?= =?utf-8?q?fZLYp51ElpwW?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 784231ff-2638-4b4d-7800-08db4d68cd38 X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB6551.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 May 2023 13:01:11.9846 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 14iu3UruD0YeOlsamBhP2uduuqDDmx47bi3rMariTUkyxJXv/Bd9Y6QgC/SL7+sc68iMho3QVVDlnHyAoe68iQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DUZPR04MB9848 X-Spam-Status: No, score=-3028.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, 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 X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Jan Beulich via Binutils From: Jan Beulich Reply-To: Jan Beulich Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1765059271711876235?= X-GMAIL-MSGID: =?utf-8?q?1765059271711876235?= In a442cac5084e ("ix86: wrap constants") I made the truncation condition too relaxed: Any indication of a mode that's possible with BFD64 only should avoid the truncation. Therefore, like in the other two cases of calls to extend_to_32bit_address(), also check whether we're generating a 64-bit object. --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -11684,7 +11684,7 @@ i386_finalize_immediate (segT exp_seg AT /* If not 64bit, sign/zero extend val, to account for wraparound when !BFD64. */ - if (flag_code != CODE_64BIT) + if (flag_code != CODE_64BIT && !object_64bit) exp->X_add_number = extend_to_32bit_address (exp->X_add_number); } #if (defined (OBJ_AOUT) || defined (OBJ_MAYBE_AOUT)) @@ -11976,7 +11976,7 @@ i386_finalize_displacement (segT exp_seg If not 64bit, sign/zero extend val, to account for wraparound when !BFD64. */ - if (flag_code != CODE_64BIT) + if (flag_code != CODE_64BIT && !object_64bit) exp->X_add_number = extend_to_32bit_address (exp->X_add_number); } From patchwork Fri May 5 13:01:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 90434 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp383892vqo; Fri, 5 May 2023 06:02:33 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6Yn/55adsMUY9ADQRw5h4O9Yfey+JuVq42My2AjyCXqV68g7KsxgDClnBWaJqPjRC6jKdW X-Received: by 2002:a17:907:1622:b0:94a:9f9a:b3c4 with SMTP id hb34-20020a170907162200b0094a9f9ab3c4mr1529964ejc.49.1683291753514; Fri, 05 May 2023 06:02:33 -0700 (PDT) Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id ky3-20020a170907778300b00965b9348a8fsi1279005ejc.722.2023.05.05.06.02.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 May 2023 06:02:33 -0700 (PDT) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=L977kDnm; arc=fail (signature failed); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 4BC923853807 for ; Fri, 5 May 2023 13:02:11 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4BC923853807 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1683291731; bh=JPjT5JA59b6XeFTVyRoe5aU0PaAuKGFkqLOWrOEAaWY=; h=Date:Subject:To:References:In-Reply-To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=L977kDnmLUVdovrtotym1hJSaToH5EclqBNhbyoRJCWbvhI55InDuYUXYNpb5zbn/ Ry0LljZIQlHjwj4NJKYG2L4QGQ1MEQE08IBE/qO4/HIDQF+baF5bw4Je1kVbTzPGWT PZpKUmWXDl8JOirm9FnMUsqRZ0qQFVZerQoRY6+s= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02on2074.outbound.protection.outlook.com [40.107.249.74]) by sourceware.org (Postfix) with ESMTPS id 6861138555BE for ; Fri, 5 May 2023 13:02:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6861138555BE ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=V3QtejyR4gZpQVdnCrpu7X/xfBk0feFQ3vmM0DbzNRs0RCzXDpE9l8zAhU8P/M5nVAfc8I7cGSTtP4G/z/m5hE2Yo1ZklAlRvOol+p2C/deJFEnK99OS8Zmam9wNVhn31hihQx/StrKQ1D57JBU7vnS0wzzcKkToeif8OmEJdQe7+YFSceBQD6cEkJygtlruXZiAso/CR7Ghok2Xl0l6Pjoduc+c4Y9R0bcBfVApZ1mAw0y+VzYgaEZwfN0V47ahplltTQNbQ+7jsLvCopdcto1pbmDfJs0yUFWBylfsor5gQ8qrk44KIyDxutAF4jfCU/MIGnlSAdBN72ra3RQ2Sg== 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=JPjT5JA59b6XeFTVyRoe5aU0PaAuKGFkqLOWrOEAaWY=; b=MSOXzo4rBaSBV6Gb5YicPNSLQehfNMwmDmiXTu7mVT01lFh1/99GcSZkWw8/sTg8bB5Vv6J+iRWrAjJZbkZfB7olRstZM/Z3HEJkG3r/975LiG1xpukk7K9Jus4Kgfs4lfxGwL9eXMV2DookFYKu1GbkOvXmMPGZsDumP/r2aQ1ch0uGF+xq8GVXt/bfNWiL6tb+f/4gLH8Q2ebAb6Lof26XxhhgUpwnu80byolaKOyEcX8yD56SbyRyrhcMVcHW+f9CoHO9pVlP2Of4Aefz/eev3tRh/lXspCKnISer1etM9298n7WDHExo9wOuf1QyLt8O3wI1wdYWGx9/pN40Aw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none Received: from AM6PR04MB6551.eurprd04.prod.outlook.com (2603:10a6:20b:fa::20) by DUZPR04MB9848.eurprd04.prod.outlook.com (2603:10a6:10:4dd::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6363.27; Fri, 5 May 2023 13:01:59 +0000 Received: from AM6PR04MB6551.eurprd04.prod.outlook.com ([fe80::768c:6df7:9afb:acd7]) by AM6PR04MB6551.eurprd04.prod.outlook.com ([fe80::768c:6df7:9afb:acd7%7]) with mapi id 15.20.6363.027; Fri, 5 May 2023 13:01:58 +0000 Message-ID: <905e0a5d-d49d-03a6-d441-302bc5c2da6a@suse.com> Date: Fri, 5 May 2023 15:01:57 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.10.1 Subject: [PATCH 2/4] gas: maintain O_constant signedness in more cases Content-Language: en-US To: Binutils References: In-Reply-To: X-ClientProxiedBy: FR3P281CA0133.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:94::20) To AM6PR04MB6551.eurprd04.prod.outlook.com (2603:10a6:20b:fa::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR04MB6551:EE_|DUZPR04MB9848:EE_ X-MS-Office365-Filtering-Correlation-Id: a8b3faf3-a119-43f4-95d9-08db4d68e928 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: wBB+kQwEYZoUSQSM00M0VtEu8V+G/nu2atqO0oWjq0l6ZvhpRT4dvWpxKGe8O+XsnvdNZtQDtWXvAIu/pjV2jxlLE6X3jhuWRmTqvV5axSHWHYbAgeWrmkyN+B3LJZ6/RJkii5a6eZSKjM+Ca6vfFxKr8+gpJ4CQh7H1cu3Bnz4Z57vpwY0aB45XoBO9VSAGfJhyHjtqHf12+6uXoOPhZlqqn5w5LUU5ZOskcqKB2tfhAxm6e2y59RLU/OVWk54WjaQ+9KNwY2i9hTrnue0X+Jh3eKcWrGOqFsnZSSigRhyE6PbzRg01A1Uq6dXSdzWAuaBfKsTwPH1YtAytzSEpsOzEvsslry0D1ZHBcSTBmzDPs+F8Q84esHX9elDKmDkZufAlc/1yGftzkHg5j3YwFJuzbrue4DtLUG/KrzBxHxGCPiwY5Gp5lrMeNCiC+FAt/KpS3572CWlFpiEvivCkEulhjI0lNKvcihRMlTT4RUYHmQi/ObcMAtj2K9xDgcc3Igbot3CxG3lSFovhxZJ5mlV5iIS0FpJSyj/rIMk0Px2yurlURN+umxby8rpSft1USAsPMT+p3rXDBBGri2nVLMNMwvkxA2GrOR1EfsYxa34Ea0JztBNLDlk7BD4+VfqldJeXqwcTbRcA+rT8+xANcA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR04MB6551.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(366004)(136003)(346002)(396003)(39860400002)(376002)(451199021)(36756003)(31696002)(86362001)(316002)(6916009)(66946007)(66556008)(66476007)(6486002)(478600001)(41300700001)(30864003)(5660300002)(8676002)(8936002)(2906002)(38100700002)(186003)(2616005)(6506007)(6512007)(26005)(83380400001)(31686004)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?GPGmbGwrIkB6wSRyXNiN+o93Q6di?= =?utf-8?q?x78iN9GEYTOQ9yFbRquehghlYbuZMFFSVBdHk4OXBaFQB1ePxOtcf9rdp3gZh24y/?= =?utf-8?q?6hZB5ZBGljDdYbHfG+skloCMHfnFSuMFXv86hwmxw03KIjcon/Ubp80GNGkHJUx7u?= =?utf-8?q?oKGHylScEnhv6TzNeDtmPS/JkT/Rrlc0Rq5/aT/sCdXIJo0kWN+nMJQ8/Bo61qhuS?= =?utf-8?q?WM1+lwOB5lqbbxemshMgky6SikLxy+hX3BBSH2rDh79iDUUcavhiJyDNjvK+o8wXP?= =?utf-8?q?f7lmv1kufIYc78KX8LkYhx8Mlsm6/tkIDkxHCB2XDzW5sJCb4hSdgKLazbd2ihznf?= =?utf-8?q?19X+CMU5ErunSz6C/Sg+/zkJ0Yys9Z0gYFg14smmJ0BBHr+LHP7wZrhr7YuXpt43W?= =?utf-8?q?XBJr6oU3qDCXDnKTsW0Rfj8ujIgQAiHKB6o8oOc6kKKUN/mWw0hq4CnQVwwKwqBTH?= =?utf-8?q?4XJZ/+bfb74ZLHWhfkQqhtAyvKvwwmED6w1oWekGK0UydMHIMGXrErfDZqw587cQs?= =?utf-8?q?6VJR86RZ+lHqgFlAnI0z+uYzO0Ez+qvcXBUCKnW2priFikfQSTcgTmgUkGHafC3oa?= =?utf-8?q?JvYSPBHoVScyPQWS+L83qm/z5YEjDoCuEYACLjknvx3GZC3hAhnQ3CfWaqC8aO443?= =?utf-8?q?tRI6KsIot3w9y5tpdsQRe+SfRVdTVA+SXTT7/yP39iHRwKKgs26HbWdHTCpdzZcoS?= =?utf-8?q?dSWVfvC+R5ZtdLxecZsK/25tL2JfQA3HZQPpxx4n75O5B3As5Xtmdr489692gk0Gd?= =?utf-8?q?Jvy4dflVNGSFtOGlaEdWT/syhBq2/HgrI5rZcX2GmXEqTB5evJYaG9IGCRwg0mznv?= =?utf-8?q?v8V4v2Uru4toHHOQPgoy+kfR+npg5g8SpzEHViqRFwQ4dlgZDMAUQp7NQkV27WXYm?= =?utf-8?q?xt2Vx6DYL4nP2kvcxbD3/2ITc5YwlwThjxiaPE1aXUzmGEQD+ZTTMHhs8WL9rBT6T?= =?utf-8?q?F+gw+aOyp+c1JfSFgZCuljp0Kog8ZqZNAqMa/RIDNddRSqzlTiQfldTF89ci61mjp?= =?utf-8?q?hjlq3wBm8vwdklPZNhcJR13zpJfRfywAnur/VrNY+6Rl4nu8paIs7rxfHaApuVTvn?= =?utf-8?q?WUbJ2kbkommnygvTbAcH+l2GTFoRgJvS2Shh3D24l/WalLP/dCFsu6wLEbBXqjK1A?= =?utf-8?q?U8qrWzker7Px8lvCubFhNr8+pgT73foThWZn6rCVZ8OqOV4gHEznxkq6q8+vv+l01?= =?utf-8?q?jZDwPBla5VySvpbx00NC8hgDOgOkfzDV119iOOkOX9RYbRGXvy4kxrrTU/t9BJhYY?= =?utf-8?q?J9/SLS/oZuxYFwsxgBFdySGmBcjJuFFeKAtSFeSXTqdQ2z5pjDqo1SMwWhROrcDP5?= =?utf-8?q?ZVI78DNRPR1vA1Q6pmJpD9NV/neyRZREEW1A1JaTX+QADr6c6snbV/7JBcnQz217I?= =?utf-8?q?DKtGLveqSzOSVxbFlXx2369JuUYV9KkhYkqR2tHfLz3uQt9zsus3vEn0w2KCltjs8?= =?utf-8?q?CUrx3E9lgAewRl8odYMvw2hQvvnfnY6GuK3IcBhbkRJWfPJbb/GjPbBe245yeMJgi?= =?utf-8?q?Rnh+dH9Q8FfF?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: a8b3faf3-a119-43f4-95d9-08db4d68e928 X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB6551.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 May 2023 13:01:58.8035 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: +QYPSRAFzRTY6qgvTGmr5HKCASXDfAqdwXnR8dOjJoXdgLkJk31E4t7b2oW1+gjtBlHBriijnZ/HWPsQr703Fg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DUZPR04MB9848 X-Spam-Status: No, score=-3028.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, 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 X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Jan Beulich via Binutils From: Jan Beulich Reply-To: Jan Beulich Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1765059333940764085?= X-GMAIL-MSGID: =?utf-8?q?1765059333940764085?= Unary '~' doesn't really produce an unsigned result. Neither does subtraction (unless taking operand values into consideration). And an abstract operator applied to two operands which aren't both unsigned can't be assumed to yield an unsigned result; exceptions are - shifts, where only signedness of the left hand operand matters, - comparisons, which - unlike unary '!' - produce signed results (they deliver 0 or ~0, as opposed to '!', which yields 0 or 1), - logical operators (yielding 0 or 1 and hence treated like unary '!'). While doing this (specifically while extending the all/quad testcase), update .quad and .8byte documentation: With 64-bit architectures now being common, it is highly inappropriate to state that these directives unconditionally require bignums. --- Similarly X_extrabit looks to be poorly maintained when folding expressions ("Optimize common cases."); only binary '+' / '-' (and unary operators) are updating it. A sub-aspect here is that subtract_from_result(), when not passed an RHS X_extrabit, is (unlike add_to_result()) passed 0 instead of whether the RHS value is negative (there are two such cases). With X_unsigned properly maintained I wonder though whether we really need X_extrabit. Considering that octa.d has only two variants of expectations, I've omitted the 3rd and 4th in quad2.d as well. As to documentation: .{2,4,8}byte are documented to insert values unaligned, but cons_worker() doesn't treat them any different than .long etc. In particular, if defined, md_cons_align() is invoked. Is this a doc error or a bug? --- a/gas/doc/as.texi +++ b/gas/doc/as.texi @@ -4631,7 +4631,7 @@ Some machine configurations provide addi @end ifclear * 2byte:: @code{.2byte @var{expressions}} * 4byte:: @code{.4byte @var{expressions}} -* 8byte:: @code{.8byte @var{bignums}} +* 8byte:: @code{.8byte @var{expressions}} * Deprecated:: Deprecated Directives @end menu @@ -6579,14 +6579,16 @@ as in the @code{.section} (@pxref{Sectio @end ifset @node Quad -@section @code{.quad @var{bignums}} +@section @code{.quad @var{expressions}} @cindex @code{quad} directive -@code{.quad} expects zero or more bignums, separated by commas. For -each bignum, it emits @ifclear bignum-16 -an 8-byte integer. If the bignum won't fit in 8 bytes, it prints a -warning message; and just takes the lowest order 8 bytes of the bignum. +For 64-bit architectures, or more generally with any GAS configured to support +64-bit target virtual addresses, this is like @samp{.int}, but emitting 64-bit +quantities. Otherwise @code{.quad} expects zero or more bignums, separated by +commas. For each item, it emits an 8-byte integer. If a bignum won't fit in +8 bytes, a warning message is printed and just the lowest order 8 bytes of the +bignum are taken. @cindex eight-byte integer @cindex integer, 8-byte @@ -6594,8 +6596,11 @@ The term ``quad'' comes from contexts in hence @emph{quad}-word for 8 bytes. @end ifclear @ifset bignum-16 -a 16-byte integer. If the bignum won't fit in 16 bytes, it prints a -warning message; and just takes the lowest order 16 bytes of the bignum. +@code{.quad} expects zero or more bignums, separated by commas. For +each bignum, it emits a 16-byte integer. If the bignum won't fit in 16 +bytes, it prints a warning message; and just takes the lowest order 16 +bytes of the bignum. +@xref{Octa,,@code{.octa @var{bignums}}}. @cindex sixteen-byte integer @cindex integer, 16-byte @end ifset @@ -7693,8 +7698,11 @@ long values into the output. @cindex eight-byte integer @cindex integer, 8-byte -Like the @option{.2byte} directive, except that it inserts unaligned, eight -byte long bignum values into the output. +For 64-bit architectures, or more generally with any GAS configured to support +64-bit target virtual addresses, this is like the @option{.2byte} directive, +except that it inserts unaligned, eight byte long values into the output. +Otherwise, like @ref{Quad,,@code{.quad @var{expressions}}}, it expects zero or +more bignums, separated by commas. @node Deprecated @section Deprecated Directives --- a/gas/expr.c +++ b/gas/expr.c @@ -1056,6 +1056,7 @@ operand (expressionS *expressionP, enum { expressionP->X_add_number = ~ expressionP->X_add_number; expressionP->X_extrabit ^= 1; + expressionP->X_unsigned = 0; } else if (c == '!') { @@ -1816,6 +1817,7 @@ expr (int rankarg, /* Larger # is highe while (op_left != O_illegal && op_rank[(int) op_left] > rank) { segT rightseg; + bool is_unsigned; offsetT frag_off; input_line_pointer += op_chars; /* -> after operator. */ @@ -1883,6 +1885,8 @@ expr (int rankarg, /* Larger # is highe right.X_op_symbol = NULL; } + is_unsigned = resultP->X_unsigned && right.X_unsigned; + if (mode == expr_defer && ((resultP->X_add_symbol != NULL && S_IS_FORWARD_REF (resultP->X_add_symbol)) @@ -1895,7 +1899,7 @@ expr (int rankarg, /* Larger # is highe if (md_optimize_expr (resultP, op_left, &right)) { /* Skip. */ - ; + is_unsigned = resultP->X_unsigned; } else #endif @@ -1928,12 +1932,14 @@ expr (int rankarg, /* Larger # is highe add_to_result (resultP, symval_diff, symval_diff < 0); resultP->X_op = O_constant; resultP->X_add_symbol = 0; + is_unsigned = false; } else if (op_left == O_subtract && right.X_op == O_constant && (md_register_arithmetic || resultP->X_op != O_register)) { /* X - constant. */ subtract_from_result (resultP, right.X_add_number, right.X_extrabit); + is_unsigned = false; } else if (op_left == O_add && resultP->X_op == O_constant && (md_register_arithmetic || right.X_op != O_register)) @@ -1988,6 +1994,7 @@ expr (int rankarg, /* Larger # is highe else resultP->X_add_number = (valueT) resultP->X_add_number >> (valueT) v; + is_unsigned = resultP->X_unsigned; break; case O_bit_inclusive_or: resultP->X_add_number |= v; break; case O_bit_or_not: resultP->X_add_number |= ~v; break; @@ -1998,36 +2005,45 @@ expr (int rankarg, /* Larger # is highe here. */ case O_subtract: subtract_from_result (resultP, v, 0); + is_unsigned = false; break; case O_eq: resultP->X_add_number = resultP->X_add_number == v ? ~ (offsetT) 0 : 0; + is_unsigned = false; break; case O_ne: resultP->X_add_number = resultP->X_add_number != v ? ~ (offsetT) 0 : 0; + is_unsigned = false; break; case O_lt: resultP->X_add_number = resultP->X_add_number < v ? ~ (offsetT) 0 : 0; + is_unsigned = false; break; case O_le: resultP->X_add_number = resultP->X_add_number <= v ? ~ (offsetT) 0 : 0; + is_unsigned = false; break; case O_ge: resultP->X_add_number = resultP->X_add_number >= v ? ~ (offsetT) 0 : 0; + is_unsigned = false; break; case O_gt: resultP->X_add_number = resultP->X_add_number > v ? ~ (offsetT) 0 : 0; + is_unsigned = false; break; case O_logical_and: resultP->X_add_number = resultP->X_add_number && v; + is_unsigned = true; break; case O_logical_or: resultP->X_add_number = resultP->X_add_number || v; + is_unsigned = true; break; } } @@ -2065,10 +2081,11 @@ expr (int rankarg, /* Larger # is highe resultP->X_op_symbol = make_expr_symbol (&right); resultP->X_op = op_left; resultP->X_add_number = 0; - resultP->X_unsigned = 1; resultP->X_extrabit = 0; } + resultP->X_unsigned = is_unsigned; + if (retval != rightseg) { if (retval == undefined_section) --- a/gas/testsuite/gas/all/gas.exp +++ b/gas/testsuite/gas/all/gas.exp @@ -427,6 +427,11 @@ if { ![istarget "tic4x*-*-*"] && ![istar run_dump_test quad +# ~ isn't an operator on PDP-11 +if { ![istarget "pdp11-*-*"] } { + run_dump_test quad2 +} + # poor little PDP-11 can't handle 16-byte values if { ![istarget "pdp11-*-*"] } { run_dump_test octa --- a/gas/testsuite/gas/all/octa.d +++ b/gas/testsuite/gas/all/octa.d @@ -6,3 +6,11 @@ Contents of section .data: [^ ]* (ffff3344 55667788 99aabbcc ddeeffff|ffffeedd ccbbaa99 88776655 4433ffff) .* [^ ]* (00003444 55667788 99aabbcc ddeeffff|ffffeedd ccbbaa99 88776655 44340000) .* + [^ ]* (00000080 00000000 00000000 00000000|00000000 00000000 00000000 80000000) .* + [^ ]* (ffffffff 00000000 00000000 00000000|00000000 00000000 00000000 ffffffff) .* + [^ ]* (00000080 ffffffff ffffffff ffffffff|ffffffff ffffffff ffffffff 80000000) .* + [^ ]* (01000000 ffffffff ffffffff ffffffff|ffffffff ffffffff ffffffff 00000001) .* + [^ ]* (ffffff7f ffffffff ffffffff ffffffff|ffffffff ffffffff ffffffff 7fffffff) .* + [^ ]* (00000000 ffffffff ffffffff ffffffff|ffffffff ffffffff ffffffff 00000000) .* + [^ ]* (00000080 ffffffff ffffffff ffffffff|ffffffff ffffffff ffffffff 80000000) .* + [^ ]* (01000000 ffffffff ffffffff ffffffff|ffffffff ffffffff ffffffff 00000001) .* --- a/gas/testsuite/gas/all/octa.s +++ b/gas/testsuite/gas/all/octa.s @@ -1,3 +1,11 @@ .data .octa ~0x112233445566778899aabbcc0000 .octa -347510587133311339321256747728896 + .octa 0x80000000 + .octa 0xffffffff + .octa -0x80000000 + .octa -0xffffffff + .octa ~0x80000000 + .octa ~0xffffffff + .octa 0 - 0x80000000 + .octa 0 - 0xffffffff --- a/gas/testsuite/gas/all/quad.d +++ b/gas/testsuite/gas/all/quad.d @@ -8,5 +8,6 @@ Contents of section (\.data|\$DATA\$): 00.. (00000000 87654321 00000000 ffffffff|21436587 00000000 ffffffff 00000000|00000000 65872143 00000000 ffffffff|43218765 00000000 ffffffff 00000000) .* 00.. (ffffffff 89abcdf0 ffffffff 80000000|f0cdab89 ffffffff 00000080 ffffffff|ffffffff ab89f0cd ffffffff 00800000|cdf089ab ffffffff 00008000 ffffffff) .* 00.. (ffffffff 789abcdf ffffffff 00000001|dfbc9a78 ffffffff 01000000 ffffffff|ffffffff 9a78dfbc ffffffff 00000100|bcdf789a ffffffff 00010000 ffffffff) .* + 00.. (ffffffff 80000000 ffffffff 00000001|00000080 ffffffff 01000000 ffffffff|ffffffff 00800000 ffffffff 00000100|00008000 ffffffff 00010000 ffffffff) .* 00.. (01234567 89abcdef fedcba98 76543211|efcdab89 67452301 11325476 98badcfe|23016745 ab89efcd dcfe98ba 54761132|cdef89ab 45670123 32117654 ba98fedc) .* #pass --- a/gas/testsuite/gas/all/quad.s +++ b/gas/testsuite/gas/all/quad.s @@ -8,5 +8,8 @@ .quad -0x87654321 .quad -0xffffffff + .quad 0 - 0x80000000 + .quad 0 - 0xffffffff + .quad 0x123456789abcdef .quad -0x123456789abcdef --- /dev/null +++ b/gas/testsuite/gas/all/quad2.d @@ -0,0 +1,8 @@ +#objdump : -s -j .data -j "\$DATA\$" +#name : .quad binary-not tests + +.*: .* + +Contents of section (\.data|\$DATA\$): + 0000 (ffffffff 7fffffff ffffffff 00000000|ffffff7f ffffffff 00000000 ffffffff) .* +#pass --- /dev/null +++ b/gas/testsuite/gas/all/quad2.s @@ -0,0 +1,3 @@ + .data + .quad ~0x80000000 + .quad ~0xffffffff From patchwork Fri May 5 13:03:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 90435 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp385613vqo; Fri, 5 May 2023 06:04:18 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4T6wkc6TK/8QkfYSJLaferYH6M1LsSwtWIPm5Jx7yAeMt/3Y7rmI8gcbKe9wkggrWYLRFs X-Received: by 2002:a17:907:3e8a:b0:94e:c142:df98 with SMTP id hs10-20020a1709073e8a00b0094ec142df98mr1323241ejc.60.1683291857914; Fri, 05 May 2023 06:04:17 -0700 (PDT) Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id tj7-20020a170907c24700b008e0363188e3si1440613ejc.953.2023.05.05.06.04.17 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 May 2023 06:04:17 -0700 (PDT) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=pnjghgo6; arc=fail (signature failed); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 1294A3856943 for ; Fri, 5 May 2023 13:04:16 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 1294A3856943 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1683291856; bh=g8h1bi9Ip7VgjGM5flxHTUrs804HVvHJQefexaRfcfw=; h=Date:Subject:To:Cc:References:In-Reply-To:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=pnjghgo6X4KfeKXbLiR3hl/E3EepP00l4vXGfPeYixwFGhS4kHDj0EXJMXM35nZXd KEE4uopX1aB74GA3ewKDZneKHme9VZEL5AKAj6ryLAGBIIIPLuvepSWHWcwkUBQTCn aZWKg/23SLOKhBPnIlc4kGi/IYeziCThj+B3VTxs= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2079.outbound.protection.outlook.com [40.107.22.79]) by sourceware.org (Postfix) with ESMTPS id AB39E3858D33 for ; Fri, 5 May 2023 13:04:02 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org AB39E3858D33 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HajMNPenXg+3YHOQWyktuA5owqehALAXpvb/EpBP6Ta5XvygOaX8SaNWs2zsD6nymgxuyLaFkVhHvQPuAbJXckKZbhCxz/xgs/8DVGqMsLJCNRZVUQ8AFMupEim0GMQ2BNfLBmh3waXQyIeexWmYh+xTSlM+HswigRFC1uJj0MQUoec/kKjQ/6jehACeNo8NTkSb9K94arLVg0eze6GtZTUOASS1or6H2Yr/mSZ7VUaiopnlaot5rqOsymQXi+aStBGcEvmWhIri2KqCyRQPwztEdSWUoz34RmtQC1KJuyqwzCfs8RDnlNKGw+gNpiOarTXxdZUy5NhruglHn1cNaA== 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=g8h1bi9Ip7VgjGM5flxHTUrs804HVvHJQefexaRfcfw=; b=iUGHLA+IijTmzZN1zCCXw88KrBps3qCb3/K191vMTTT7fSK3hIaNgiojNElW9Om9wV5tMNpk8eWpPH8RleAksvMWgiiAv5S4DPxcc/ZPXYhUaXI7sgxnF6Zm0FpJvWp3P56szlW4DnExQNnczbP+wHXLFpmVIgDkHHPQ4A+pnm+OdrjUjLB1ONqkkVa/pRvlMzASDMgviaOQVyY+TRm7OOoUNcgTze1Ric8Qp2QIsltVtyPzRHXyEnL5tGcjUx9HQqt0uHsfljgaRcsQCL2xikpoXQLmclL4EmLXiCcLnOLWrdTM6Pyk8rup8O3i2BAArZX/iC17YtlRxzHgNpYdhA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none Received: from AM6PR04MB6551.eurprd04.prod.outlook.com (2603:10a6:20b:fa::20) by VE1PR04MB7309.eurprd04.prod.outlook.com (2603:10a6:800:1a8::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6363.27; Fri, 5 May 2023 13:03:59 +0000 Received: from AM6PR04MB6551.eurprd04.prod.outlook.com ([fe80::768c:6df7:9afb:acd7]) by AM6PR04MB6551.eurprd04.prod.outlook.com ([fe80::768c:6df7:9afb:acd7%7]) with mapi id 15.20.6363.027; Fri, 5 May 2023 13:03:59 +0000 Message-ID: Date: Fri, 5 May 2023 15:03:57 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.10.1 Subject: [PATCH 3/4] gas: invoke md_optimize_expr() also for unary expressions Content-Language: en-US To: Binutils Cc: Alan Modra , Peter Bergner , Geoff Keating , Dave Anglin References: In-Reply-To: X-ClientProxiedBy: FR0P281CA0047.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:48::18) To AM6PR04MB6551.eurprd04.prod.outlook.com (2603:10a6:20b:fa::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR04MB6551:EE_|VE1PR04MB7309:EE_ X-MS-Office365-Filtering-Correlation-Id: 49cd9510-5d83-49ac-1d53-08db4d693112 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: a9YtQ4ip7MVYGANn/YluEIFLxmBFaswm8ndzqSYjlUDMp5ql502KEQ/aXz0ySO27/DjnAUt4NE/P3DKbNtzGMSOfr6UCqKgNgEy9Y+pPl/0zifnnC44MRr5SYMA7Qbg2ghoHnPLI3InIK6T8RaecayW21j60HPEyo440AHPSeIOGrqQk9H/yeShUCcfTZYKUF0AsX+ONabLVbOG1SCeaPRLE7IICTLNLQ3aIKWKD3uXWwu8NPVSjVTwkXuc2er4bdEB2JK4lV4ZgWW/XUuDYdR1pAgEbJ43KpCAbekMW2fykGzRZgkuYR9a1nBh12+kvqEebjBIG1L//0HTOzy1AM3mIsoRFaC/etbQyr83mKxHmTi0JC+C9eUFtiIoXfAJIlYiNN8SmFNsw9JDuG+sNuZFSllQMS93+zIpGmU34o1+AdlIqxlYTs2OXYxdQj4Ixduxn+8/yevOUmfBuQj45jHJSAxjuDr4MsHTK/dE2g3Ck4rE+q73m/uwCrkEbnAKhEgeXGu/gaRn4kizSV2dy7sMYcO11S48QX9DuaKiJTK77pK6yeJjZVX3Zf/Gxb82OmH3nBlnpRwZalbXb+CMjKw7foU5FFQ+nSBZFc70BDIzQEwsLzml/EoODsI3XLNgEme2IN1DxREGVxzFxHWneAw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR04MB6551.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(366004)(136003)(396003)(39860400002)(346002)(376002)(451199021)(6916009)(6486002)(478600001)(4326008)(36756003)(66946007)(66556008)(66476007)(41300700001)(316002)(31696002)(8936002)(8676002)(86362001)(38100700002)(5660300002)(54906003)(2616005)(2906002)(31686004)(186003)(6506007)(6512007)(26005)(43740500002)(45980500001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?+135b93CIZF/EBJefXoN/qgvQ6p3?= =?utf-8?q?PvubbyfrROiDZCBD8nAmDp+XcfSHjMBpYvcTtm3mOMToSy7HowQBHDQq1BQiKOCVw?= =?utf-8?q?cNVsFf6FI71BZhpmBbyrRS4wD/ecT3+fVzFZwOY1s4NDGQWS3BS6stYe3Id3RlKfI?= =?utf-8?q?nGUbF8Hjmm+s7zn9hHu64o6XaKJYwkgI9LKyvRv5Ra+HW1gpysjbtCCPtmNtVqAfd?= =?utf-8?q?NqmXizxdMfJeYZmsF0M4fVNHDfwBCjWJbyzY6TZMRRAMbyzNmrsiKxwqSJnQ0Qn53?= =?utf-8?q?6+ZiiP+U046Usj/zRIc+Znxv6CT1sQStPorNXrRsG6A3IXXvX4BXXvCeQWCCd+tzA?= =?utf-8?q?6KT4j32ovXIfr34jMedd1PFbl7cQ2ZdDoiUiJZeXr+/6imu5QzG6wRFyAtlbrBi07?= =?utf-8?q?qxsuhy/IbwIk3x0+L13HnRjMSDkbgOC89wLIqSFL1TLfH9p8eX1MTeyn2fDv5rzmV?= =?utf-8?q?URGotebd3jRHvk1hiHW/B+ApXH39dFfG5KDulRq077LzkQOpldLkYQERllsFgfRAt?= =?utf-8?q?Z5X6XjmCkpbaZQRqnoHNC/jpXE3gQ2nsutk3GMndokA1vDUDddZeEHtV+eARILZzT?= =?utf-8?q?z/N2QSek4Iz8pgujQgaPui4SoXnQ71Bcd3w1iDH8XctJRKCuSXnb9FifcE0/m6Xj6?= =?utf-8?q?RhEGe9WcB+YCJTAlAHjP6Y2kLt8byKONzCExFKlK8V3PBG4VOSDpeH+uCDiFkngNy?= =?utf-8?q?J9lWARETs9f7sSX9dYJ9dxQL496ot2ErqYWCcXL4fQuBRxzXHeUAe+zwl9HnHqu3K?= =?utf-8?q?nBOdcVrif42mmneNat5D2qQEGhF73zS00NdmO4AmycCrJMowrUHuqpXe9/GnI4gjE?= =?utf-8?q?i+VLYGyBJ+0DJ/zYHhkzq4BzEOUrlxJE6Xu3OC2d3aPaOeLetcTVdf67xcceINF14?= =?utf-8?q?AkzbEz4kqTE3Yts4xiMN5PB378m0RhDr0J7mmQJwhdkAaiI7NGReQ+0W6aTXXkIx5?= =?utf-8?q?M3N6y5e0HgqjtHoY+p6wqSIUMEJGIY8GS7V2tng7mwMAzWj8MVrZnlQ5jUQep1XPE?= =?utf-8?q?T0FKOq4ao7/fNEztEhkxFtBUCjDmlfovRsZ7wxBMwyb2lyTuSGWtTm2Yh2L4+Io0x?= =?utf-8?q?rYVHYUj7IQRDISWOcYoaRB95CLl2J7fb3GtlN7resAzKD8idNcS4jrgdef+gWBjYf?= =?utf-8?q?beQq4rHOvs4gWJEk303ewqqNHVtKH1h6czpxFownpCqFXrZZCDo16/4N1oxJx3HvX?= =?utf-8?q?SHCGP9UIlIZMXXZclpJI9oFs6on1PYFy0fEITnICsecyr8nP5qOM3r/B7BI0k/eEg?= =?utf-8?q?69p2UpG9QQZSnunLmtO8fLDVRR3XeuPS6ZknKoQWUnQo8DB0dXbN6kiqATXgF/BCl?= =?utf-8?q?Ql3RISD1oGkc9Up62jc4rIiLPn3vBqFDWlyjg+cetEpxsKsBXzPr0QDkitFsp2AB6?= =?utf-8?q?6O9W2JLCbZYGZqKicHiQ8fiokuabm0toLLWewVJ3G2SArx0dhiuqn3oYavcWpwhwH?= =?utf-8?q?36mGPsRPi2GYEPEJpp7XyfNwU56Pn7Ha5/HJfkCRpoMZHFrtLYT2nIXnKwevixEUR?= =?utf-8?q?lUNn1PEn8E+X?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 49cd9510-5d83-49ac-1d53-08db4d693112 X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB6551.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 May 2023 13:03:59.4296 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Zp+l0zNmWV/KWQQgyYCGc9DgZH1bGHrQZsAj2Q29S9BJRU72on/JNfba6GQqkcNnlso4c5yoYtv+G8GvkTnheg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR04MB7309 X-Spam-Status: No, score=-3027.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, 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 X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Jan Beulich via Binutils From: Jan Beulich Reply-To: Jan Beulich Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1765059443104777140?= X-GMAIL-MSGID: =?utf-8?q?1765059443104777140?= Give backends a chance to see these, just as they can see binary ones. Most of those which use this hook already cope with NULL being passed for the left operand (typically because of checking the operator first). Adjust the two which don't. Take the opportunity and also document the hook. --- a/gas/config/tc-hppa.c +++ b/gas/config/tc-hppa.c @@ -6354,6 +6354,7 @@ hppa_force_reg_syms_absolute (expression expressionS *rightP) { if (fudge_reg_expressions + && resultP && rightP->X_op == O_register && resultP->X_op == O_register) { --- a/gas/config/tc-ppc.c +++ b/gas/config/tc-ppc.c @@ -945,9 +945,9 @@ ppc_optimize_expr (expressionS *left, op } /* Accept the above plus , and plus the above. */ - if (right->X_op == O_register + if (op == O_add && left->X_op == O_register - && op == O_add + && right->X_op == O_register && ((right->X_md == PPC_OPERAND_CR_BIT && left->X_md == (PPC_OPERAND_CR_REG | PPC_OPERAND_CR_BIT)) || (right->X_md == (PPC_OPERAND_CR_REG | PPC_OPERAND_CR_BIT) @@ -959,7 +959,7 @@ ppc_optimize_expr (expressionS *left, op } /* Accept reg +/- constant. */ - if (left->X_op == O_register + if (left && left->X_op == O_register && !((op == O_add || op == O_subtract) && right->X_op == O_constant)) as_warn (_("invalid register expression")); --- a/gas/doc/internals.texi +++ b/gas/doc/internals.texi @@ -1047,6 +1047,14 @@ pointer, for any expression that can not is called, @code{input_line_pointer} will point to the start of the expression. +@item md_optimize_expr +@cindex md_optimize_expr +GAS will call this function before trying to carry out certain operations, +like the adding of two constants. The function is passed the left-hand +operand, an @code{expressionS} pointer, the operator, an @code{operatorT} +value, and the right-hand operand, again an @code{expressionS} pointer. For +unary expressions NULL is passed as first argument. + @item md_register_arithmetic @cindex md_register_arithmetic If this macro is defined and evaluates to zero then GAS will not fold --- a/gas/expr.c +++ b/gas/expr.c @@ -764,6 +764,7 @@ operand (expressionS *expressionP, enum symbolS *symbolP; /* Points to symbol. */ char *name; /* Points to name of symbol. */ segT segment; + operatorT op = O_absent; /* For unary operators. */ /* All integers are regarded as unsigned unless they are negated. This is because the only thing which cares whether a number is @@ -1029,19 +1030,33 @@ operand (expressionS *expressionP, enum /* '~' is permitted to start a label on the Delta. */ if (is_name_beginner (c)) goto isname; - /* Fall through. */ + op = O_bit_not; + goto unary; + case '!': + op = O_logical_not; + goto unary; + case '-': + op = O_uminus; + /* Fall through. */ case '+': { -#ifdef md_operator unary: -#endif operand (expressionP, mode); + +#ifdef md_optimize_expr + if (md_optimize_expr (NULL, op, expressionP)) + { + /* Skip. */ + ; + } + else +#endif if (expressionP->X_op == O_constant) { /* input_line_pointer -> char after operand. */ - if (c == '-') + if (op == O_uminus) { expressionP->X_add_number = - (addressT) expressionP->X_add_number; @@ -1052,13 +1067,13 @@ operand (expressionS *expressionP, enum if (expressionP->X_add_number) expressionP->X_extrabit ^= 1; } - else if (c == '~' || c == '"') + else if (op == O_bit_not) { expressionP->X_add_number = ~ expressionP->X_add_number; expressionP->X_extrabit ^= 1; expressionP->X_unsigned = 0; } - else if (c == '!') + else if (op == O_logical_not) { expressionP->X_add_number = ! expressionP->X_add_number; expressionP->X_unsigned = 1; @@ -1067,7 +1082,7 @@ operand (expressionS *expressionP, enum } else if (expressionP->X_op == O_big && expressionP->X_add_number <= 0 - && c == '-' + && op == O_uminus && (generic_floating_point_number.sign == '+' || generic_floating_point_number.sign == 'P')) { @@ -1082,7 +1097,7 @@ operand (expressionS *expressionP, enum { int i; - if (c == '~' || c == '-') + if (op == O_uminus || op == O_bit_not) { for (i = 0; i < expressionP->X_add_number; ++i) generic_bignum[i] = ~generic_bignum[i]; @@ -1095,7 +1110,7 @@ operand (expressionS *expressionP, enum generic_bignum[i] = ~(LITTLENUM_TYPE) 0; } - if (c == '-') + if (op == O_uminus) for (i = 0; i < expressionP->X_add_number; ++i) { generic_bignum[i] += 1; @@ -1103,7 +1118,7 @@ operand (expressionS *expressionP, enum break; } } - else if (c == '!') + else if (op == O_logical_not) { for (i = 0; i < expressionP->X_add_number; ++i) if (generic_bignum[i] != 0) @@ -1117,15 +1132,10 @@ operand (expressionS *expressionP, enum else if (expressionP->X_op != O_illegal && expressionP->X_op != O_absent) { - if (c != '+') + if (op != O_absent) { expressionP->X_add_symbol = make_expr_symbol (expressionP); - if (c == '-') - expressionP->X_op = O_uminus; - else if (c == '~' || c == '"') - expressionP->X_op = O_bit_not; - else - expressionP->X_op = O_logical_not; + expressionP->X_op = op; expressionP->X_add_number = 0; } else if (!md_register_arithmetic && expressionP->X_op == O_register) @@ -1288,8 +1298,7 @@ operand (expressionS *expressionP, enum #ifdef md_operator { - operatorT op = md_operator (name, 1, &c); - + op = md_operator (name, 1, &c); switch (op) { case O_uminus: From patchwork Fri May 5 13:04:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 90436 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp386202vqo; Fri, 5 May 2023 06:04:54 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6h6Rn5qJSVCuVzafkuHQQxETocmdB96XHFo7ljK0r+470rEABao5wtC7A+eJnI9ZZIxgy2 X-Received: by 2002:a17:906:ef06:b0:960:d9d:ffb5 with SMTP id f6-20020a170906ef0600b009600d9dffb5mr1032345ejs.41.1683291893853; Fri, 05 May 2023 06:04:53 -0700 (PDT) Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id p8-20020a17090635c800b009537db49347si1152044ejb.909.2023.05.05.06.04.53 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 May 2023 06:04:53 -0700 (PDT) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=UuMPmbA6; arc=fail (signature failed); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 38C8D3857353 for ; Fri, 5 May 2023 13:04:51 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 38C8D3857353 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1683291891; bh=ha+3NPvsTaweq+dhpShIMlZ6fkbSLLlRL5gz/14TqFk=; h=Date:Subject:To:Cc:References:In-Reply-To:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=UuMPmbA6ovz6Uh2iEi9k2AlQlzKHw4d+0NdceRZC6SNWUyS8fm0dWVcR26GPDfj3p QUoC+mYsDQWsH+82nGjch9IStZ4A6VrZGrCspbcMMUQrKlyDSVbkRYDzCF2T4QNUc+ fR+go4vcGTpeMYWz7o7UpRhcgPuOUBV7UsoT6rwI= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2051.outbound.protection.outlook.com [40.107.22.51]) by sourceware.org (Postfix) with ESMTPS id 7FAC4385B513 for ; Fri, 5 May 2023 13:04:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7FAC4385B513 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WcBLcu9inL/SprWNy83BHJPt/7FioaB5b4cRXJxwz3IyxqfsAMbjZI6e7BMV8H9MVyoW9jwGjOaaZX7NAqGLBs+rA0DX8OQqFmMSqoOjlAZM4rHrj/0gkg28osWZJDpYxfRCQutxEesyJueJcO0x7R0sPlLpWaqCZpgKeNol5pS3dj9sn7TjBzRdfZBxcULeoMBAsedhfAdDxi6wvNQDCSVNTXbNNkFlW1hjZv/b9GbEU8AT3CfxQVeuyWb9sY1xN8oKo6i9mqt3fGxxtK65lx2wlkqISSrJhZmfFvKTpAclYHoetbdR4LXqRJ6gmdl1Ukcap618QUoL7x1CPINdJA== 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=ha+3NPvsTaweq+dhpShIMlZ6fkbSLLlRL5gz/14TqFk=; b=bKsQySxmvVXVqzzaysrlNo78DR97vuzDeAvaltD6chi5NNF4XB83SqqInYZSDFhFp6RhLS7Hxbgc/1001NedUHIEyrhlIWNGXcZSn9ZlgExWjqssDQ5nb7BTNWiwIvcpAATi/lMig8/7ieE3MbDOMBPUi9Wm2ISf+NUZRx+E486rdmZPbORkK0mxutdE5sorPit6PW1V4YDmpZMpmRHU75367ex21Tx+30qr7ALRRi7qfr//BsUT3Lfv+DSo7bfqlsEebN2LywnSiuxOB7dqJ0/Jc40QcKx4ChHZhdtrZTlLP3M6DtsChhkOzDmbijdrfaOdfmGSO8GQ1JYQioHR4Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none Received: from AM6PR04MB6551.eurprd04.prod.outlook.com (2603:10a6:20b:fa::20) by VE1PR04MB7309.eurprd04.prod.outlook.com (2603:10a6:800:1a8::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6363.27; Fri, 5 May 2023 13:04:39 +0000 Received: from AM6PR04MB6551.eurprd04.prod.outlook.com ([fe80::768c:6df7:9afb:acd7]) by AM6PR04MB6551.eurprd04.prod.outlook.com ([fe80::768c:6df7:9afb:acd7%7]) with mapi id 15.20.6363.027; Fri, 5 May 2023 13:04:39 +0000 Message-ID: <4f7d2d8d-d4fd-a799-9c8f-7a955a786d60@suse.com> Date: Fri, 5 May 2023 15:04:37 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.10.1 Subject: [PATCH 4/4] x86: further adjust extend-to-32bit-address conditions Content-Language: en-US To: Binutils Cc: "H.J. Lu" References: In-Reply-To: X-ClientProxiedBy: FR0P281CA0040.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:48::11) To AM6PR04MB6551.eurprd04.prod.outlook.com (2603:10a6:20b:fa::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR04MB6551:EE_|VE1PR04MB7309:EE_ X-MS-Office365-Filtering-Correlation-Id: e04024e9-0617-436f-1558-08db4d694901 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: NDYxjTsFed3wPNSTgTqYvs1umuN03uC8L9TtxrhYykd65Mdzhs2yGi7PDbmaRf61b0FZdxtCdvX3tbsszcw63rHZYlXx3v9mkRKqCL4LUO4JX01ZldCvchyxKkICImegFyDGJWJsbs4uyC8IkyI+i8YvaTDZER313urig7WupXfV3jhyekMTAr+QcMcqx3eLBrIkD7Qt3XtwNd5L0JP5m9Mo11UZvIRXtQo7yedW7ehOGRQKqbB4uH1u+Zpbthrn5jsLMl+QgnNXUN+2kn0/o+UDsshk1laynrBjSNjSCluUEqXMK2oBM/phx1dHsG1QBOxYNS811Ie+M9Rf7NgWSvxqQylVZ4CMuiiZULdryvQ3LKiPYE9sjbKbGCboeKUxwBFsjGJFahZKIITLF97ALPWIMzeNKxb0DpXSikQCktIAQd8pQhHrLGaF2HliaeO2YYloCLk+HmyQrLlp/oEzRnsZPgZ0frMsc9wh00ijFawoLU3UKTZqRoIG3eRQh2FDl8oWdhMkA8TM0fG6rqhHjQIOmy8ozx890HWvWbEcp/xMFUPJ5xUnIxL2BQKyARYfWluM31yUz4w/RrpSV73WUpkxoXMdcNw1NkzvCDcc4ml28JvN4PIfy1u5TeeQoyY6r9Gk68n+QM6z5RN3wX7RxA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR04MB6551.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(366004)(136003)(396003)(39860400002)(346002)(376002)(451199021)(6916009)(6486002)(478600001)(4326008)(36756003)(66946007)(66556008)(66476007)(41300700001)(316002)(31696002)(8936002)(8676002)(86362001)(38100700002)(5660300002)(19627235002)(83380400001)(2616005)(2906002)(30864003)(31686004)(186003)(6506007)(6512007)(26005)(43740500002)(45980500001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?WQ8fP2F+ssts5yKiEzBJX/FnhcnV?= =?utf-8?q?Ff7O51hSsTmtligKFRX2MH0YfDhhCsF/je8etMuicNib5o9GPFeFXspUR4Zpi3AbS?= =?utf-8?q?rQijCWz/syq1QifwKkr/bDiB5U1UIvDe28x5gJJsBhTlwhSO0VLcU//IuXokUB/nY?= =?utf-8?q?hmcAbPF/JUuHOFeYmMcLzlwNT0Tf2Vx5IeXzv7OFlxoO1QckhAkB3PIrZ8DZgStCj?= =?utf-8?q?vjpR2Cq8oPo0gtKMXw/hVstAkl7cda0uPnnaS/0dgCg/hexq/JXM2CG2V/ix4Kw62?= =?utf-8?q?Qrgpm4d6lY0FU92JQ4Jc1NqgvIPIp6CDwtcHGpmMINc5O/ZPMukv+8LZnTKLJplWS?= =?utf-8?q?LtvxDaGOasxwKivhvXQ/LPvJX+FRBz2M0tXH+tz0gBmlnEfDDCssR8V+7nESV//X7?= =?utf-8?q?sTyROYiTe8OTCiFMpxRF9wKNFCcFgwRzvai65o+kISgQgsHg+PsqY78SvWHONxNGr?= =?utf-8?q?xN3LHUIfd4QMJo4XWBmUCzhni1UqLPfG385bMoB8Gve6hLDCbh/t7JanbU5tmiZi2?= =?utf-8?q?JoZ29G4/pJlVb2Pmf4vcphIjTTOVS59xEYyV88FRHGdGOhWRKoAKLhLLavl/3XEu5?= =?utf-8?q?sOeHy57BI9biqFDDvFZ1D8t0IR+H4K/gTHh4qFO8O25YYturTURs9NWscKtFfS1U5?= =?utf-8?q?q12EZbamIIgXtwp3pm4nQVGqyoD/wKC+zCSCqt7fAQg8pkf6tbWAmjIPtHdIkm3R1?= =?utf-8?q?xZadRPzsIHlwrL9AVDDNlgNX5MJdWlR+4daJSN5uYHzXRYDx7SOTg6BjBwijNEhFT?= =?utf-8?q?qBstCsK+fK7aSdfOoH24d8s2EdaEniDouy/8mT9ad1kA/o9qzzswJBG104FYDVVRL?= =?utf-8?q?Ug8a+xBARQP2bpmtKd4NsregSDYJv3kj8r41rTaxUmywdKEbq+WGdyVs4bwuMPaUG?= =?utf-8?q?fOihn2Q9pn9lK9oUM/xhIBC0jJWm1yHVNVAzzj5NbCc+jetCka2Ucv1Nsw+Orw+ff?= =?utf-8?q?2DinM4960MNRPyoLyF2OAKIkckBMordOI4x8MawTuGSWJT8i0kQe8uGfWJT6VJjcJ?= =?utf-8?q?gyubnTKIwNpqs+8YmCh6/rWZhjEOhU4xiUxDYslZDJia2pDy/iF0rhseNMVl+0bA0?= =?utf-8?q?Ec1BMw4ihlC/GlP7qkCGyA5wGswAsbHgnoRa3xYIKZevPeGVoR2Vkfq1m9bpMDdP/?= =?utf-8?q?LQuS6kAweLpQ6obrqKLVfe4p7FwTcrmxytntfKeEV04tC4luak+RY/MfgoQKcul+F?= =?utf-8?q?/eZyirPaf7J/uztt3TXZUW3yUfhcdEozGv6X+1x9hePFCXoXILOmbZcUvxWhwAjJ2?= =?utf-8?q?FbybShCWsrrjM3x1j1OcfMF7VtQfGiza/ozigtvFB37KNkX2G67do9jjIvE0D258q?= =?utf-8?q?CL+AjHP6n7RxKHeQJxbPEveaYWA+YqopuyGBGQWfDHF4G+QNqBvc/87mmP26EvZTI?= =?utf-8?q?vaodVSRT93qJowCgf7YI4EBxco9s0h1zd02vIRTpgz22VnLF3/5ob9M8bJPeHgJUc?= =?utf-8?q?D1JAyGb8+MdVb/D5rJJZHKx+jKwtSsQYm86wiXVMGa//lHOAZDxj5H7VG9Z5957PK?= =?utf-8?q?yov3/KPQsGx5?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: e04024e9-0617-436f-1558-08db4d694901 X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB6551.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 May 2023 13:04:39.6131 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: g0bEubivXpipAexigmtGnPn4R/dzlwDJegh/nN/D74PjdApIRoHSGfUzq+V38SvMaXU/G13sxjQDpBJG7Fb12A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR04MB7309 X-Spam-Status: No, score=-3027.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, 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 X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Jan Beulich via Binutils From: Jan Beulich Reply-To: Jan Beulich Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1765059481121738820?= X-GMAIL-MSGID: =?utf-8?q?1765059481121738820?= While a442cac5084e ("ix86: wrap constants") helped address a number of inconsistencies between BFD64 and !BFD64 builds, it has also resulted in certain bogus uses of constants to no longer be warned about. Leverage the md_optimize_expr() hook to adjust when to actually truncate expressions to 32 bits - any involvement of binary expressions (which would be evaluated in 32 bits only when !BFD64) signals the need for doing so. Plain constants (or ones merely subject to unary operators) should remain un-truncated - they would be handled as bignums when !BFD64, and hence are okay to permit. To compensate - slightly extend optimize_imm() (to be honest I never understood why the code being added - or something similar - wasn't there in the first place), - adjust expectations of the disp-imm-32 testcase (there are now warnings, as there should be for any code which won't build [warning- free] when !BFD64, and Disp8/Imm8 are no longer used in the warned about cases). --- The no-longer-emitting-Disp8/-Imm8 could probably be avoided, by fiddling with optimize_{disp,imm}(). If that's wanted, I think it would still want to be in a separate patch. What still differs between BFD64 vs !BFD64 are cases like .byte ~0xffffffffffffff00 .word ~0xffffffffffff0000 .long ~0xffffffff00000000 .quad ~0xffffffff00000000 where the latter warns about bignum truncation. The draft patch I have for this unfortunately causes quite a bit of testsuite fallout, so I'll have to do more investigation there. Along these lines .long 0xffffffff+2 .long 0xffffffff*2 differ in diagnostics (and I consider it ambiguous whether a warning is appropriate here with BFD64), while .quad 0xffffffff+2 .quad 0xffffffff*2 are uniformly quiet but emit different data. --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -827,6 +827,14 @@ i386_cpu_flags cpu_arch_isa_flags; larger than a byte offset. */ static bool no_cond_jump_promotion = false; +/* This will be set from an expression parser hook if there's any + applicable operator involved in an expression. */ +static enum { + expr_operator_none, + expr_operator_present, + expr_large_value, +} expr_mode; + /* Encode SSE instructions with VEX prefix. */ static unsigned int sse2avx; @@ -6016,6 +6024,8 @@ optimize_imm (void) } else if ((flag_code == CODE_16BIT) ^ (i.prefix[DATA_PREFIX] != 0)) guess_suffix = WORD_MNEM_SUFFIX; + else if (flag_code != CODE_64BIT || !(i.prefix[REX_PREFIX] & REX_W)) + guess_suffix = LONG_MNEM_SUFFIX; for (op = i.operands; --op >= 0;) if (operand_type_check (i.types[op], imm)) @@ -10508,6 +10518,7 @@ x86_cons (expressionS *exp, int size) intel_syntax = -intel_syntax; exp->X_md = 0; + expr_mode = expr_operator_none; #if ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)) \ && !defined (LEX_AT)) \ @@ -10567,7 +10578,8 @@ x86_cons (expressionS *exp, int size) i386_intel_simplify (exp); /* If not 64bit, massage value, to account for wraparound when !BFD64. */ - if (size == 4 && exp->X_op == O_constant && !object_64bit) + if (size <= 4 && expr_mode == expr_operator_present + && exp->X_op == O_constant && !object_64bit) exp->X_add_number = extend_to_32bit_address (exp->X_add_number); return got_reloc; @@ -11626,6 +11638,7 @@ i386_immediate (char *imm_start) if (gotfree_input_line) input_line_pointer = gotfree_input_line; + expr_mode = expr_operator_none; exp_seg = expression (exp); /* For .insn immediates there may be a size specifier. */ @@ -11684,7 +11697,8 @@ i386_finalize_immediate (segT exp_seg AT /* If not 64bit, sign/zero extend val, to account for wraparound when !BFD64. */ - if (flag_code != CODE_64BIT && !object_64bit) + if (expr_mode == expr_operator_present + && flag_code != CODE_64BIT && !object_64bit) exp->X_add_number = extend_to_32bit_address (exp->X_add_number); } #if (defined (OBJ_AOUT) || defined (OBJ_MAYBE_AOUT)) @@ -11906,6 +11920,7 @@ i386_displacement (char *disp_start, cha if (gotfree_input_line) input_line_pointer = gotfree_input_line; + expr_mode = expr_operator_none; exp_seg = expression (exp); SKIP_WHITESPACE (); @@ -11976,7 +11991,8 @@ i386_finalize_displacement (segT exp_seg If not 64bit, sign/zero extend val, to account for wraparound when !BFD64. */ - if (flag_code != CODE_64BIT && !object_64bit) + if (expr_mode == expr_operator_present + && flag_code != CODE_64BIT && !object_64bit) exp->X_add_number = extend_to_32bit_address (exp->X_add_number); } @@ -13928,6 +13944,41 @@ md_operand (expressionS *e) } } +#ifdef BFD64 +/* To maintain consistency with !BFD64 builds of gas record, whether any + (binary) operator was involved in an expression. As expressions are + evaluated in only 32 bits when !BFD64, we use this to decide whether to + truncate results. */ +bool i386_record_operator (operatorT op, + const expressionS *left, + const expressionS *right) +{ + if (op == O_absent) + return false; + + if (!left) + { + /* Since the expression parser applies unary operators fine to bignum + operands, we don't need to be concerned of respective operands not + fitting in 32 bits. */ + if (right->X_op == O_constant && right->X_unsigned + && !fits_in_unsigned_long (right->X_add_number)) + return false; + } + /* This isn't entirely right: The pattern can also result when constant + expressions are folded (e.g. 0xffffffff + 1). */ + else if ((left->X_op == O_constant && left->X_unsigned + && !fits_in_unsigned_long (left->X_add_number)) + || (right->X_op == O_constant && right->X_unsigned + && !fits_in_unsigned_long (right->X_add_number))) + expr_mode = expr_large_value; + + if (expr_mode != expr_large_value) + expr_mode = expr_operator_present; + + return false; +} +#endif #if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF) const char *md_shortopts = "kVQ:sqnO::"; --- a/gas/config/tc-i386-intel.c +++ b/gas/config/tc-i386-intel.c @@ -633,6 +633,7 @@ i386_intel_operand (char *operand_string input_line_pointer = buf = xstrdup (operand_string); intel_syntax = -1; + expr_mode = expr_operator_none; memset (&exp, 0, sizeof(exp)); exp_seg = expression (&exp); ret = i386_intel_simplify (&exp); --- a/gas/config/tc-i386.h +++ b/gas/config/tc-i386.h @@ -188,6 +188,12 @@ extern operatorT i386_operator (const ch extern int i386_need_index_operator (void); #define md_need_index_operator i386_need_index_operator +#ifdef BFD64 +extern bool i386_record_operator + (operatorT, const expressionS *, const expressionS *); +#define md_optimize_expr(l, o, r) i386_record_operator (o, l, r) +#endif + #define md_register_arithmetic 0 extern const struct relax_type md_relax_table[]; --- /dev/null +++ b/gas/testsuite/gas/i386/cst-diag.l @@ -0,0 +1,43 @@ +.*: Assembler messages: +.*:3: Warning: .* +.*:4: Warning: .* +.*:5: (Error|Warning): .* +.*:6: (Error|Warning): .* +.*:8: Warning: .* +.*:9: Warning: .* +.*:10: (Error|Warning): .* +.*:11: (Error|Warning): .* +.*:13: Warning: .* +.*:14: Warning: .* +.*:15: (Error|Warning): .* +.*:16: (Error|Warning): .* +.*:18: Warning: .* +.*:19: (Error|Warning): .* +.*:20: (Error|Warning): .* +.*:22: (Error|Warning): .* +.*:23: (Error|Warning): .* +.*:24: (Error|Warning): .* +.*:25: (Error|Warning): .* +.*:30: Warning: .* +.*:31: Warning: .* +.*:35: Warning: .* +.*:36: Warning: .* +.*:40: Warning: .* +.*:41: Warning: .* +.*:46: Warning: .* +.*:47: Warning: .* +.*:48: Warning: .* +.*:50: Warning: .* +.*:51: Warning: .* +.*:52: Warning: .* +.*:55: Warning: .* +.*:56: Warning: .* +.*:57: Warning: .* +.*:59: Warning: .* +.*:60: Warning: .* +.*:61: Warning: .* +.*:64: Warning: .* +.*:65: Warning: .* +.*:66: Warning: .* +GAS LISTING .* +#pass --- /dev/null +++ b/gas/testsuite/gas/i386/cst-diag.s @@ -0,0 +1,79 @@ + .text +const: + add $0x101, %cl + add $0x10001, %cx + add $0x100000001, %ecx + add 0x100000001, %ecx + + add $0x100, %cl + add $0x10000, %cx + add $0x100000000, %ecx + add 0x100000000, %ecx + + add $-0x101, %cl + add $-0x10001, %cx + add $-0x100000001, %ecx + add -0x100000001, %ecx + + add $-0x100, %cl + add $-0x10000, %cx + add $-0x100000000, %ecx + + add $0xffffffffffffff00, %cl + add $0xffffffffffff0000, %cx + add $0xffffffff00000000, %ecx + add 0xffffffff00000000, %ecx + + # The next two might as well not have a disagnostic issued, but if + # there is one (as is the case now), then it should be independent + # of BFD64. + and $~0xff, %cl + and $~0xffff, %cx + and $~0xffffffff, %ecx + and ~0xffffffff, %ecx + + and $0xff+2, %cl + and $0xffff+2, %cx + and $0xffffffff+2, %ecx + and 0xffffffff+2, %ecx + + and $0xff*2, %cl + and $0xffff*2, %cx + and $0xffffffff*2, %ecx + and 0xffffffff*2, %ecx + + .data + .byte 0x101 + .byte -0x100 + .byte 0xffffffffffffff00 +# .byte ~0xffffffffffffff00 + .byte ~0xff + .byte 0xff+2 + .byte 0xff*2 + + .p2align 4 + .word 0x10001 + .word -0x10000 + .word 0xffffffffffff0000 +# .word ~0xffffffffffff0000 + .word ~0xffff + .word 0xffff+2 + .word 0xffff*2 + + .p2align 4 + .long 0x100000001 + .long -0x100000000 + .long 0xffffffff00000000 +# .long ~0xffffffff00000000 + .long ~0xffffffff +# .long 0xffffffff+2 +# .long 0xffffffff*2 + + .p2align 4 + .quad 0x100000001 + .quad -0x100000000 + .quad 0xffffffff00000000 +# .quad ~0xffffffff00000000 + .quad ~0xffffffff +# .quad 0xffffffff+2 +# .quad 0xffffffff*2 --- a/gas/testsuite/gas/i386/disp-imm-32.d +++ b/gas/testsuite/gas/i386/disp-imm-32.d @@ -1,5 +1,6 @@ #objdump: -dw #name: i386 displacements / immediates (32-bit) +#warning_output: disp-imm-32.e .*: +file format .* @@ -15,7 +16,7 @@ Disassembly of section .text: [ ]*[a-f0-9]+: 8b 40 ff mov -0x1\(%eax\),%eax [ ]*[a-f0-9]+: 62 f1 7c 48 28 40 ff vmovaps -0x40\(%eax\),%zmm0 [ ]*[a-f0-9]+: 83 c1 ff add \$0xffffffff,%ecx -[ ]*[a-f0-9]+: 8b 40 01 mov 0x1\(%eax\),%eax -[ ]*[a-f0-9]+: 62 f1 7c 48 28 40 01 vmovaps 0x40\(%eax\),%zmm0 -[ ]*[a-f0-9]+: 83 c1 01 add \$0x1,%ecx +[ ]*[a-f0-9]+: 8b (40 01 +|80 01 00 00 00) mov 0x1\(%eax\),%eax +[ ]*[a-f0-9]+: 62 f1 7c 48 28 (40 01|80 40 00 00 00) vmovaps 0x40\(%eax\),%zmm0 +[ ]*[a-f0-9]+: (83 c1 01 +|81 c1 01 00 00 00) add \$0x1,%ecx #pass --- /dev/null +++ b/gas/testsuite/gas/i386/disp-imm-32.e @@ -0,0 +1,4 @@ +.*: Assembler messages: +.*:15: Warning: .* shortened to 0x1 +.*:16: Warning: .* shortened to 0x40 +.*:17: Warning: .* shortened to 0x1 --- a/gas/testsuite/gas/i386/i386.exp +++ b/gas/testsuite/gas/i386/i386.exp @@ -100,6 +100,7 @@ if [gas_32_check] then { run_dump_test "suffix-intel" run_list_test "suffix-bad" run_dump_test "immed32" + run_list_test "cst-diag" "-al" run_dump_test "equ" run_list_test "equ-2" "-al" run_list_test "equ-bad"