From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-VI1-obe.outbound.protection.outlook.com (mail-vi1eur02on2050.outbound.protection.outlook.com [40.107.241.50]) by sourceware.org (Postfix) with ESMTPS id D0F3D3858C54 for ; Fri, 10 Mar 2023 09:43:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D0F3D3858C54 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ww3Up4hEwJrRnvaz5V5ok9BRWqzDvio0UDe+KXscFnYX6A6wCqIXVZYqRMX2MpCMeWfG4/G3PnhxBd0fr79uo70NyCexcG6iEgRQxzUUOC8ftrWJkOZBkI5C5HbmRZO9o91G7hrb6HtkNJcUsJdw+r9gfDtbnvWAfSq6NzAgfBMSR93LXZdZYVPiLVO4MBST1f1fusfLLZ2iQok5FtePgSvbtF8WidkblojMamDD7p7dB4hue3VQZIstsFQOsMM4Kom0P2VEPqUP5qZDFVWgtnpfRCrcn5VXJJuHQUaeVB7NhvTKL2U7x1Mrpg/QlpCAx08U/WSgFC/YV8h/W6osBg== 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=/MrONX0lqhMpw304ZK0UqPULpQ5tb5oo87n7PYmbfY0=; b=Z8F0OOKpMho+IHef3xvOYOnGV+9qyjVQOQGmkNth2Ze+Hdqn9fpxIOPXRKhkWyGaVigALcuY8wnKpdQt0dsRjgTwsvKBEoePMQmeiDAc9JJRqlDYwsvZsMveotic/B3n7Kf/ErrwmXrrD3nZIpDXqpoV+vpELB2GKR6bk8K1q7Lj2uRzG0Z5pBCyXrNkbMgcd+iXj2k8zRXcC1u7NLxhMfKlVHLh7PG/4B3Y3Kjr3aNRuQkt0CU4KMIyWVxBIrY1gd9jk8UzjnGfaZfRMnqJZtuU5geJqDabk0F6iliUSmURF/23FdnTIqYcynIUzPEh5x1LYFmrbM+QkNDS/uj3/w== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/MrONX0lqhMpw304ZK0UqPULpQ5tb5oo87n7PYmbfY0=; b=wYpkZ5jepZZL12g7VPdcoOTYVSMey6s7DytCJ+oSeL2yEcaQ2h7hhQvuEL6wsoEfuc6tb7V+Te4IbUEm4aOlv4md+06qaBk5baUDAefW2ycZgny26kBrN/5hfNWOJRLJrQMYBRrwd6u8ecYf9F1QCL+yPa9nPMrjGxc1s4w6Wktc33xCsIMI4nyiUzFgUv2sNrUOjl6T0O5fP6ynqJyYNMw2UCZLG1YWU0JZk+bEykO9D+zGpK3L3WCB+eYdSEWQdyKyZwPIXKru+Bn2ag1jLF+O8CzvbWnj4f1RwdPe+fB60kD4hPGnapN2y1ZemQTr8TuoF4LTCAF6Taajd/XUgg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by DU2PR04MB8886.eurprd04.prod.outlook.com (2603:10a6:10:2e1::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.19; Fri, 10 Mar 2023 09:43:50 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::154e:166d:ec25:531b]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::154e:166d:ec25:531b%5]) with mapi id 15.20.6178.019; Fri, 10 Mar 2023 09:43:50 +0000 Message-ID: Date: Fri, 10 Mar 2023 10:43:48 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Content-Language: en-US To: Binutils From: Jan Beulich Subject: [PATCH] gas: apply md_register_arithmetic also to unary '+' Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR3P281CA0012.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1d::15) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|DU2PR04MB8886:EE_ X-MS-Office365-Filtering-Correlation-Id: 6cbbed58-53a9-4e30-316f-08db214bf3ed X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /34GHUQGrTdXEoC7UtZUx1kaSXRESfQrCfEo4zxpLuvjjZpWoWnECQ6cSHNzgyr0pqVZP8DyqvVy+PljhqnHXG7lYxkfw2svYbPvMnTt5BX2ijYZyh/NNYtpcJ9pKnsAKRmGfA1BiQqvQCvEgfxp5OGJWCTLcENA4eDqI73+i32zujAOsxhEgm6hIZIyAa+Ed4QyfxsNWFNFQUejPAKENV0ha8vbzTqmZnogr3aT6yraZS+knQTXPcsOIHqR3Dn6Nztcq1XQgFqvBxhO3/CZs2FI4zhbmh9MQHklkkkMnGoOZ2vGlYDaymwrat5eHSiGrfOC3cxEPswj00KLGl2jBCQZ1R50RZ29LgWvI6nqb6kLoYPdWl6ctvvOHlFD4AuQLm6JF1HjggX9CwXd+CzAVRNFk0hHEIMSmJh/087zdIhKvkcqLffm91sgIa9ZNjlKPuvmXnPourJhiKpFXSZIzyrpcvipwgsUTpYdbxWI4ai7h8bJivFZlSobIUd4zKO4VGo6/Tx1agAGL0/ghSKPPdM4dE81A4pVhSuqx2/V+myHraMPW25f2NaZUOeAZVLAksQ0EesbG4yYetQjjcnGvfabsChP/JuqWZT7JRYPqKoQM2Z4B7qtYrGtQLDZ7LnV1N5DY/h1hLI1u5e5bUho6oXwQlv68z1KWa8en7ct2wQdYO1eTkHmaN1db24WswbZmXPH1N1DXxVYzA11S5DD6F3fcBtJZ6TsjbnJJX+Q5A4= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB6560.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(376002)(366004)(136003)(396003)(346002)(39860400002)(451199018)(31696002)(36756003)(86362001)(478600001)(66476007)(8676002)(66556008)(66946007)(186003)(316002)(31686004)(6512007)(26005)(6506007)(6486002)(2906002)(6916009)(38100700002)(2616005)(66899018)(8936002)(41300700001)(5660300002)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?TjNHWHRuREhOQzN1Q3dtenpkK3lNbGRGUTE3d2cyMVo5Ui9YMTNYdFNxOWJR?= =?utf-8?B?VFpmQlBickJOVmpMQ1N1SFdSQkJIVGoyZjNpdFg5VGl6UmgzR05yZWRxbnNa?= =?utf-8?B?Z3kybXhzQzRDOUliSGlmTEFvRWhPVXFlRjF5UVdCN3FZSDZ6S2RETFh2WnRr?= =?utf-8?B?N3FrZ1RZUjBFeGJPRnVmdWVGMiswRElOdUZNem9tbEFxK25hZ1EwUXhNWDZ0?= =?utf-8?B?RVJWYXV1c1luUC9WWmkyZExjaHR1amg1a0dKWTRkYUJkc25Bcm15bC9NTXFu?= =?utf-8?B?eG1ORHgrN0txR1QvdC9MQTF1enJTNlJnTkJVSUo5YUFRVkg3RlFqbVlDVG1y?= =?utf-8?B?Y0F3QVV2blk3UmhkMEhoTkFQdTROTFVvR1pJTlpEcFhSUXlGMHE0Wk1ETzVx?= =?utf-8?B?eTVGbzM3S0hqbDFKZlVkS3hNb052MEhhb1lUQ08rWllncWN4L2J3cjYwWnJN?= =?utf-8?B?S3lObThiRWJTTXZGWitCbHo2aFM0NkhnWWtBSDlEdktIYnpMU3B2VlhGbmFj?= =?utf-8?B?Wk9WQSt6czdZNGh6bWUxaldzNlZYWHFCU2wvWTc0VlJyNGFKQ0ZGMTNJaWc3?= =?utf-8?B?NXE5bGhTWE1OZFQxaW42VUJONW9EazladzVid0FSaHlvME9VWVZldE10TjB4?= =?utf-8?B?M3ZhR0ozMFFiU3hYYkFIQ00xeitXWW9LaW5DZHFIZXl1VUJUTi9xV3VjLzhC?= =?utf-8?B?eUU2dCtzemIxc1ZiSlRGMFhHa2pQVzVyakJBaW80cjhha0hBZjgrUzJnb1dO?= =?utf-8?B?QkovRnZhclEvczdWVGxWbThLUmNVV1NrME1IcTkyWld1RkNnLzlEYmpyM05V?= =?utf-8?B?MFRzZWN5WUlaMzZBclpVN1FYV2tDQmxCVjFnRlZvNUFZb1FLMlF6V3FvdWZI?= =?utf-8?B?eG9yRXJYeGRQdzlvWTY1VjIwNm9pOHZJMVEzK3pDd3o4a0JMU2x1NGRHT3BR?= =?utf-8?B?cFM5MklVcVd4WjU1Sm5RWjRXalBUSzdsajRCZzZ6NER2WjAzWk5jWjk0TGZY?= =?utf-8?B?YzBBeDdaNnpJeDVBclRraGx0dWg2SzRuQnZDbUlDK3FVOFpkRHNwWXExRGli?= =?utf-8?B?djcwbWVXencvTnk3dkIraXQwdlZ1TnZ2a1FWSnl4eTUrSzB2cVA5RXd3M3c5?= =?utf-8?B?a3I0dkt6WkdjU0svWWhMcDF0R1U2bTNzSVBhV01qbkVWS1BSUDJZVElZN3NV?= =?utf-8?B?dmFPZ0tTUlk0dEJEZ0twejZPcTdTVFNZeWxodVRFc0srbDM2ZnNPWXNnM1E1?= =?utf-8?B?M1U3RUxjdG8zUU9FQnJBak5WbktvWTJHcE9QdUNyZThyTDhKRDhSWWhXM0RP?= =?utf-8?B?bVQxdmUzcndsOXBnei9JRnZuUFA5SzJGeDFlckN0QW9wOWpteGNoLzhxdDlk?= =?utf-8?B?TUZod09lK0MrelhBWEZyalNmQzYwa0ZYZVVsd1luaHA0T0hRMHFMWTNTZ0ZE?= =?utf-8?B?VVRPUnNXSWpDMEpIZC9lN3VBUXJyWUh5TzJNOU0vWjUyOVBFb2gxVVMrL0tV?= =?utf-8?B?WTlQcU5WZGlRVUdDWHVEYjRQMHRQWG9SUlVvM3FhUWZObm8rcExGNW5mV1Ju?= =?utf-8?B?QXlWOUxIbk9YTVNwSXhmQzY0WHRraTh6aVpYRmd0T0lKZk9mOXpsZlNFT2pz?= =?utf-8?B?MzNlOE1GUHI4VkJxOERJd0E1ZUwyZmhKU3l2L0pBYmNPT3VNakFtZVFyZW1h?= =?utf-8?B?UDRsaGVsaGVqS2RGYytVNkVyQnZHZmdXUWpHeGRnRTkxQitUdUhhTXNTdUZu?= =?utf-8?B?cGF3a29mWTRFZWpuK04xYVB3QmV0N0xNTUMvS3R2SUV4QkZCOWh6c1RrWUJR?= =?utf-8?B?MGsxZnBxa1FheGIwbEJUOWs2NVduSmR6cnVIL052Uk8wT1V3bi8yMFZCZUdW?= =?utf-8?B?MUJqTHNnVzdiaU13Sm1sRExpdVZDOVJxeDFzWU5sMHJ6TjR2QlRYbnBIUHE0?= =?utf-8?B?Y1ExaDhKYXJzTzMwYkxhSzNFYVRiL0JsU1lwZFB6NmlQWjNaWkk1Si9hOXhM?= =?utf-8?B?WHlRRnJYVno1eFpEYnBXN2Q3YXVWcWljbnUvcVd0anVUNXdYSmFFM2o0c0NB?= =?utf-8?B?amt3RU9NcEtpa3ZQTWhLLzRHMC9wT0dYQkxVdUo4c2h1aUZSbjF5UnFMTzVp?= =?utf-8?Q?3QJUR7htsSDT9s0q5Axd3VlHY?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6cbbed58-53a9-4e30-316f-08db214bf3ed X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2023 09:43:50.2822 (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: AHGmzllXBdhG/y8n4V3YopNHAxMORfuonQQcbtcdelnmkIE52TRRA4hY0ExK649p2tyVEBHWoqfKwEwxk51oCg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8886 X-Spam-Status: No, score=-3028.2 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 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: Even a unary '+' has to be considered arithmetic; at least on x86 in Intel Syntax mode otherwise bogus insn operands may be accepted. Convert this specific case to binary + (i.e. 0 + ). (An implication is that md_operator(,1,) would need to deal with arch- specific equivalents of unary '+' is a similar way, if such an arch- specific variant would be specified in the first place.) To avoid duplicating what make_expr_symbol() does to construct a constant-zero expression, simply make its previously local variable a file-scope static one. This way there's also no need to invoke clean_up_expression(). --- I have to admit that I find it surprising that only very few targets turn off md_register_arithmetic. In fact I would have thought it might better default to off, and targets specifically wanting it (PowerPC is the one I think definitely wants it enabled) would the turn it on. --- a/gas/expr.c +++ b/gas/expr.c @@ -48,15 +48,16 @@ struct expr_symbol_line { }; static struct expr_symbol_line *expr_symbol_lines; + +static const expressionS zero = { .X_op = O_constant }; /* Build a dummy symbol to hold a complex expression. This is how we build expressions up out of other expressions. The symbol is put into the fake section expr_section. */ symbolS * -make_expr_symbol (expressionS *expressionP) +make_expr_symbol (const expressionS *expressionP) { - expressionS zero; symbolS *symbolP; struct expr_symbol_line *n; @@ -73,11 +74,6 @@ make_expr_symbol (expressionS *expressio as_bad (_("bignum invalid")); else as_bad (_("floating point number invalid")); - zero.X_op = O_constant; - zero.X_add_number = 0; - zero.X_unsigned = 0; - zero.X_extrabit = 0; - clean_up_expression (&zero); expressionP = &zero; } @@ -750,6 +746,10 @@ current_location (expressionS *expressio } } +#ifndef md_register_arithmetic +# define md_register_arithmetic 1 +#endif + /* In: Input_line_pointer points to 1st char of operand, which may be a space. @@ -1127,6 +1127,14 @@ operand (expressionS *expressionP, enum expressionP->X_op = O_logical_not; expressionP->X_add_number = 0; } + else if (!md_register_arithmetic && expressionP->X_op == O_register) + { + /* Convert to binary '+'. */ + expressionP->X_op_symbol = make_expr_symbol (expressionP); + expressionP->X_add_symbol = make_expr_symbol (&zero); + expressionP->X_add_number = 0; + expressionP->X_op = O_add; + } } else as_warn (_("Unary operator %c ignored because bad operand follows"), @@ -1891,9 +1899,6 @@ expr (int rankarg, /* Larger # is highe } else #endif -#ifndef md_register_arithmetic -# define md_register_arithmetic 1 -#endif if (op_left == O_add && right.X_op == O_constant && (md_register_arithmetic || resultP->X_op != O_register)) { --- a/gas/expr.h +++ b/gas/expr.h @@ -182,7 +182,7 @@ extern void add_to_result (expressionS * extern void subtract_from_result (expressionS *, offsetT, int); extern segT expr (int, expressionS *, enum expr_mode); extern unsigned int get_single_number (void); -extern symbolS *make_expr_symbol (expressionS * expressionP); +extern symbolS *make_expr_symbol (const expressionS * expressionP); extern int expr_symbol_where (symbolS *, const char **, unsigned int *); extern void current_location (expressionS *); extern symbolS *expr_build_uconstant (offsetT);