From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) by sourceware.org (Postfix) with ESMTPS id 187B6385801C for ; Tue, 22 Feb 2022 08:14:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 187B6385801C Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-am5eur02lp2055.outbound.protection.outlook.com [104.47.4.55]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-31-oEioVcDrNxK4Jv1mR3X2cQ-1; Tue, 22 Feb 2022 09:14:48 +0100 X-MC-Unique: oEioVcDrNxK4Jv1mR3X2cQ-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jGKe5RpDDL9xbeka2TUrcbQ3ZWOxCSVOI4IvaBWUdOZ4RZQuJJJelVdmL3PxW/EBOplBKI1zBwprcH8yQPH9YjunI8X3HpFn+Vutx0fyg3JfT2FPa2nDAnO1FmLjMbh/UXiLrG6MersYxg8d+fLm2KdSZbGhkYJfwDECYhr1v1STBUxaDS3Xahhpqhnh8HbemZujq69xXHb1gjQiVL9mPHJJqH4FBEN0lsa6HI2E1VXusT13NvQEgwuyP6NyEhUxpFy8BSh7e4bDvyDJdnei1XDlIDhktXB1Ff/sIKGyo1KMMezR7nEEN79bgy26NBoTDqzQ8N1Z0adSOYSPEfK26g== 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=ggLAIoSQ6CSikZFoUvDTODwfsZGdyS6vnXw+ji/fNgw=; b=csPapuYTSDh3HR859Bq+LGG/EM7W5+1upsOItbdrawVQLeRokdldVW7e9cPQbklmPA53YLOliVTZ0OEcN7tVx22YtIsq4Ta3pF8ecwZnk3hVpJsv2rG1BYCfXOttBDiajLAG3dOTocaZ6P9gdoCfuszzC/Po5KWoiGjFtanEOwQvPeenRQau1r2NiAXBtr1EzPOswxrjj55eyGkYz5PlyvEs4bF1n3eGmOCsPCkX7RsPC7Wg/IdTMRyTnszrwEMzc2431bxN0Ft7BFnFR9nPGNqL+G6XGj2kCxh5b2RleMu+T3f3cagNJ2Yamu0cU8ssBRcIUrOazT0gV+vzNVhCwg== 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 VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by DB7PR04MB5436.eurprd04.prod.outlook.com (2603:10a6:10:8b::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.27; Tue, 22 Feb 2022 08:14:47 +0000 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::d479:b728:345c:bd65]) by VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::d479:b728:345c:bd65%6]) with mapi id 15.20.4995.027; Tue, 22 Feb 2022 08:14:47 +0000 Message-ID: Date: Tue, 22 Feb 2022 09:14:45 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.6.1 Content-Language: en-US To: Binutils From: Jan Beulich Subject: [PATCH] gas: retain whitespace between strings Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: AS8PR07CA0052.eurprd07.prod.outlook.com (2603:10a6:20b:459::13) To VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c6e0c96e-b042-4626-88bf-08d9f5db63e0 X-MS-TrafficTypeDiagnostic: DB7PR04MB5436:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: WMnzkmkyo+VVBYmK4SGI/EnZAw/eCUmOIkzqMNjerAVSW/S7WZIPG1E45d4bmG5kpUqdDiw1Y0NpvvjtesOXI0531ZEozmcLijt4rza80Rs6Q6CGssQ+e03+yaHNC9bkONxahDJSAYMBhZiiUg+GqThFY/AXsrQ35Wyt8gZaiz6gHtc+ode50qtS+OFsuoQeuAz2CRK2E0oqVGNVMjqwf7tTzglACwhTmq30/ANGR6V/KQEc7DKtZxafO8Mc88WLxlsHxyN0mgNfrRB1bTp3KjYhW59fMDqMsrOBmyInySgRBsLg3ujFLq+Uj1JsK1TsExt59CzAOGd9vD7soREauFu72prBeDZJ76K+B6jDzpxHTqZCOD7NURTrydjNWUANvLcuxzSgQERhIPc/TsIlfU2uGG2UWl4kw1B94jupK39LfAQDWZAwDub3npNw33MdsjZMC93EaqLsn0JoyE3hfKL4g0sPm7192HNDKXaCXvubbMwXARzPpllou2DORvsxDNrtTPvKLMFJjiHVGtgGgrrAdwlUcSmScpXRg5rQYfRKgsZG/cCLLz4ZxDaEys1M3SsMGzsYEwLG2LrXYwrYpcfVP/22Q0DLqWZZajkcLJI9L6EmNp5LuB4i884zsGZBddEpKu/FNftPcmH8ZsGelefwykYtBJXpoUFB1T3vaS5+p4jHu2NWKhayvYB8PGivlbSvlKqTWD2pfsvS5w5ULprZXShHgTcdXIcH57MhhCI= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR04MB5600.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(38100700002)(8936002)(6916009)(2616005)(5660300002)(86362001)(31696002)(6486002)(508600001)(316002)(6512007)(6506007)(8676002)(66556008)(36756003)(66476007)(31686004)(2906002)(66946007)(26005)(83380400001)(186003)(43740500002)(45980500001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?b3M5Um9lZUI0T3FVTnRiand2UktoRVludGxWOGtVdHVuMDBESnliU1hOcjhn?= =?utf-8?B?WE11bENZUkRoL2dqWGVZVVlQQjZybHNjUjNxQTdweENsSjZNMjhNV0JGR01F?= =?utf-8?B?bXZEb3hLMWM5aWtBMjZ4eVRMWTFoNUxrSEVUTmdZM2lnUHc5ZGV4MDNBMm1U?= =?utf-8?B?Z1lhSXJBZlJyNnMzb0lYNjd5eFU5WkFKazEzOXRiQUdVTXNkOWxjQnFrNFNQ?= =?utf-8?B?eDNTUXBBdmRZR01YVm4wVUo3dThnbXdUbkxDL3lNMlUzUE9KR2hta3QvMTY0?= =?utf-8?B?Ty8zRU1jY3NoQlI1UStFYVlGU2tqOVB3cVpRZS83TWZ4VWV6R3NCRTQ4UEtG?= =?utf-8?B?NG5KWkRBUlVDQWxFQVZJV1pxUnk1ZXFyeHJYV1hvWG4rTERiei9qNmdMNkhX?= =?utf-8?B?S1R3bXNqSnFBbmU5RU9KZFR3VDAvTEk2bFJZaWdxVG1ZRWJsWXdYN09KNVd4?= =?utf-8?B?MUI2ZUNLOWYwalVIOVpEWXpLL1VrTU1oaXdlZUlvQ3ppeElyb2RIS2ttTzc3?= =?utf-8?B?T0FlM0NjSGI3VmlRVFVRV2pnZDBQaWNEWURVazAvYTZyeVNTRGZKVjExdHgy?= =?utf-8?B?dHR5MXBrRXFWYXE4bmh5QWVOb1BkMzlhTVUxcFc4TEdQWnZtRE10Y2V0M0N0?= =?utf-8?B?Z1JWamtpSGpVTzMvYTkzSDVLQUNqWExsUHpiWS9zcnNRRTZKNTBYU2dVamRt?= =?utf-8?B?TTh3VlN5c0dlL21nQm9kSWlSdmNBMjQ4VTlrNCt1Q0ZvcDc5YzdhRFFaLzFO?= =?utf-8?B?RHVGcW84b3JIdllmbWQrYWl4dTZuNTloWkJ5UTFpWlRGaFNxMlRoR292QWFL?= =?utf-8?B?MUl0YW1tZTI3eFB1MWlvQXIxUjJFZkZadDBVWEhEdVY0UFdTTFl4MDdYRUlR?= =?utf-8?B?T2FiNFBXV3Q2Z2pESlZSVENVQlZaUzd3ZklrMEMrNmxnYVBzU1p0ak5UMVBk?= =?utf-8?B?UTRQMWVUMnhrK2NLZEN5dytKR1RFODkwZVFvUVYvdDFEaVRqaFFza2dCT1lN?= =?utf-8?B?TlV5RTZNTnZOOENyWTV3Mko4NVNkTzVUVWQwUjJsZVg4THVackhDSk5vTWtK?= =?utf-8?B?WDBBZlUxa1NNdUJobGNHZ0VaS1ZzbFNLL3FHcXJZRWsyS1M2K3UyVXhkU1lY?= =?utf-8?B?RkNOTzBtbkx2Q21GaEUra2xySFVDVlNrZ3BIaVpYNnBnNnRCUFUwTGMwN0hq?= =?utf-8?B?a3p3K0FpYU03dERQRGtTakNWa3A4NGR0S3B4WlJBamJ4SS91Yjd5T1h2Um9M?= =?utf-8?B?R2o4RVFpWFFvZlRjOTdISHlEbnBJR2o1b1U0a3ZoY1ZMSEdEV1BwL212YVV2?= =?utf-8?B?K1Jsa2haQklLWktzTHJ0NGRGRllaQ05ZaDl0T2JaNUxIRENmL0RtK1B5YTRv?= =?utf-8?B?UzhJVHBUV045RzN3VVU0eVB0bXpSMGZ5N0RvWXRBcWhVK1JhZjUxYjFidXNi?= =?utf-8?B?M0l5TFBucWF5NUNabmtlam1ScXlYbXl6THhMejVReC9xR1Z4UkR2aWJBSHFv?= =?utf-8?B?QUdRdnR3QWpOWjJRbE9HSkswNGZzYzl3U1lrKzVWTVplMVJRcU1FdWpmNElo?= =?utf-8?B?bGlzZVNzTktUUkpYb1VyekFGQkt3VDUxdit1OHVFTkhLQXVnSFlYRHVqTWdV?= =?utf-8?B?aHVGcm5oS08zQW9uRXVVT1c3YzhLOFVWUm52blovMG1rU3VKYkN3ZjJneVNY?= =?utf-8?B?S2VjZUNyWDZEUGk2ci9tZzhTSnM2SWpBdEZ2Rk1VVmdZVjlJRnFwUUVaYmdM?= =?utf-8?B?akc1ZkZ6NkFybUJHckExMkd3Q1JrWDM3S2lub25CT0xmRU9oZC9zaFBRanJi?= =?utf-8?B?Y0MrYktuZkFUcXNDUjM0bnovaHBpYXlURExSUzI0SC9LeWs5ejFDaGhjb3Az?= =?utf-8?B?T1ZXa2hXdjVpSGcySFdPQlVMdzVOZWpPNWpVTXRrMlFMRUZDZm8wSHNLY0gy?= =?utf-8?B?ZGY2K1JLdmtpQ3lWN0xpamlBWlRrMEhwT1VzTXJ4ZUpleXhBOUlseFNIZzd3?= =?utf-8?B?Mms5WVZ2ZkE5Z0c2TlBkMmxmaGJHdG9DV3VFbEMyODB2YTFmaFBWMEE1Szho?= =?utf-8?B?djlZVHdGeXZBcTNhalZ3L2RGd3VHcnNIQllIeHJZMVNNVm1FSWFMNXFLL3o2?= =?utf-8?B?NCtQZUNabGRjU3VpT1MxVHgyU2t6WHQ3a2tCbldoWGZNZDM0cWhlcllwOHhx?= =?utf-8?Q?YjXOe3nYruVZIekAhGpSj0I=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: c6e0c96e-b042-4626-88bf-08d9f5db63e0 X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5600.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2022 08:14:47.3344 (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: YXdI5AjBELok7E+clQqKKG40hrZaDrkQW3XooTOPkS6YOgYNvKcPvReK+12AxI5RYvCZWLYn5deWN2WcE2Lcug== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR04MB5436 X-Spam-Status: No, score=-3032.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H5, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP, T_FILL_THIS_FORM_SHORT, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) 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-List-Received-Date: Tue, 22 Feb 2022 08:14:59 -0000 Macro arguments may be separated by commas or just blanks. Macro arguments may also be quoted (where one level of quotes is removed in the course of determining the values for the respective formal parameters). Furthermore this quote removal knows _two_ somewhat odd escaping mechanisms: One, apparently in existence forever, is that a pair of quotes counts as the escaping of a quote, with the pair being transformed to a single quote in the course of quote removal. The other (introduced by c06ae4f232e6) looks more usual on the surface in that it deals with \" sequences, but it _retains_ the escaping \. Hence only the former mechanism is suitable when the value to be used by the macro body is to contain a quote. Yet this results in ambiguity of what "a""b" is intended to mean; elsewhere (e.g. for .ascii) it represents two successive string literals. However, in any event is the above different from "a" "b": I don't think this can be viewed the same as "a""b" when processing macro arguments. Change the scrubber to retain such whitespace, by making the processing of strings more similar to that of symbols. And indeed this appears to make sense when taking into account that for quite a while gas has been supporting quoted symbol names. Taking a more general view, however, the change doesn't go quite far enough. There are further cases where significant whitespace is removed by the scrubber. The new testcase enumerates a few in its ".if 0" section. I'm afraid the only way that I see to deal with this would be to significantly simplify the scrubber, such that it wouldn't do much more than collapse sequences of unquoted whitespace into a single blank. To be honest problems in this area aren't really surprising when seeing that there's hardly any checking of .macro use throughout the testsuite (and in particular in the [relatively] generic tests under all/). --- Partly RFC: While I did test this for x86, I didn't get around yet to run a much wider set of tests. --- a/gas/app.c +++ b/gas/app.c @@ -1088,10 +1088,10 @@ do_scrub_chars (size_t (*get) (char *, s /* PUT didn't jump out. We could just break, but we know what will happen, so optimize a bit. */ ch = GET (); - old_state = 3; + old_state = 9; } - else if (state == 9) - old_state = 3; + else if (state == 3) + old_state = 9; else old_state = state; state = 5; --- a/gas/testsuite/gas/all/gas.exp +++ b/gas/testsuite/gas/all/gas.exp @@ -461,6 +461,8 @@ if [is_elf_format] { run_dump_test quoted-sym-names +run_list_test macro "-alm" + run_list_test pr20312 load_lib gas-dg.exp --- /dev/null +++ b/gas/testsuite/gas/all/macro.l @@ -0,0 +1,25 @@ +# This should match the output of gas -alm macro.s. + +.*: Assembler messages: +.*:10: Error: too many positional arguments +.*macro.s.* + + +[ ]*[1-9][0-9]*[ ]+\.macro[ ]+m[ ]+arg1,[ ]*arg2[ ]* +#... +[ ]*[1-9][0-9]*[ ]+\.endm[ ]* +[ ]*[1-9][0-9]*[ ]+ +[ ]*[1-9][0-9]*[ ]+m[ ]+1,[ ]*2 +[ ]*[1-9][0-9]*[ ]+.... 01[ ]+> .byte 1 +[ ]*[1-9][0-9]*[ ]+.... 02[ ]+> .byte 2 +[ ]*[1-9][0-9]*[ ]+m[ ]+3[ ]+4 +[ ]*[1-9][0-9]*[ ]+.... 03[ ]+> .byte 3 +[ ]*[1-9][0-9]*[ ]+.... 04[ ]+> .byte 4 +[ ]*[1-9][0-9]*[ ]+m[ ]+"5",[ ]*"6" +[ ]*[1-9][0-9]*[ ]+.... 05[ ]+> .byte 5 +[ ]*[1-9][0-9]*[ ]+.... 06[ ]+> .byte 6 +[ ]*[1-9][0-9]*[ ]+m[ ]+"7"[ ]+"8" +[ ]*[1-9][0-9]*[ ]+.... 07[ ]+> .byte 7 +[ ]*[1-9][0-9]*[ ]+.... 08[ ]+> .byte 8 +[ ]*[1-9][0-9]*[ ]+m[ ]+""[ ]+""[ ]+"" +#pass --- /dev/null +++ b/gas/testsuite/gas/all/macro.s @@ -0,0 +1,16 @@ + .macro m arg1, arg2 + .byte \arg1 + .byte \arg2 + .endm + + m 1, 2 + m 3 4 + m "5", "6" + m "7" "8" + m "" "" "" + + .if 0 + m 1 +2 + m (3) +4 + m (5) (6) + .endif