From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04on2071.outbound.protection.outlook.com [40.107.6.71]) by sourceware.org (Postfix) with ESMTPS id BC03A3858408 for ; Mon, 13 Feb 2023 08:15:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org BC03A3858408 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=m5/zsB+bJLhNBkFe4yx3h3DUI30e6FxCQTvZl+b1hih/gYT1eth6m7ZaIB6nOi9T0DNNdCMLIfh7xdRc2KP+uyOwaWBCv8bZ0u0vs3djwmwaoaNcCQyZiUpgARAco4FEZbCa0r5V4+fHzrU7I7UaSwxtjGeMq9JowDMw6cn0fmh+bzsZ8zpNIHk7+WMS7zd18NU2CxyIpp5ZGtZ2YvQ8GeM/nMIM9Bxc5ICZa1qsGEPx3MEPYshNeIWdvmuChV3Idbulb6shTxkeBcpL50ZhytcECyBFGPDE+qM/IdpU77EQypL1dD5I/rNxsj8Z45GNNAYrgiAF6FYiGdgL2RXY9Q== 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=f1oLCp6NeBXMsEKfLTUqVsS4v/Av+WNGhSfRfILklvE=; b=A1EzIwSjO97bO1jqkgPzJ+rz2BlBzRJn4bnlGEee2uglixPPuzbHWU+AaUIGZbDIYhwAusgeijKJFEw4XSgpAOfYXIi6c479la2mAO55eB28VyUrp1vBkTH+h09FA5kSJLbPpXaOEZCF+Oo7AnTBEdsEO/+QuFJTHLHeTtuf5n/w40NvzcKPaeqAiRlMashlgx70bR3koxot5XsBrNwVPHtHDHVT8BoGfIB5L7zu9ajqI0rBvRhrbIo1JTLVRdbV5KbT2EVyukbNJ1m6vThPu2nT6tTM/lzFesGwr3eopoGCDONAsq2mI3R8kqBVB1HeyO8HPxaXZH1YAu40sIpS+A== 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=f1oLCp6NeBXMsEKfLTUqVsS4v/Av+WNGhSfRfILklvE=; b=CXDx/o6PPXyafP7pYPsgauEQvv8vQOF1XU/P7icM8rFP+qnCgACjgdZBpcMR2abYw3XKWaGGNSuCKKyTDYzZPcxXCibRGBkJMrFMQOSiADPSh/peGYtX4irsauzhDVeWrAZ9Ehrpbd7a1/R0E2pO9tycQ7kO52ne03MFatb3JkaY9YGC3tCmbuchk8nqmEfrgqH74mVxzA9zAUXD4glzCrQSvhyzRS0MSuuyqGtYpZNVSWtitVRt6uFIMDJIhl/bNDy5JqiFjb2slqKfNz64cR1XlBfbwcoqe+pndwN49b9gMEejRTlr43cTbNkrzaWvdPAKCPcczQJrRft5bFtgxQ== 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 AS8PR04MB8868.eurprd04.prod.outlook.com (2603:10a6:20b:42f::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.24; Mon, 13 Feb 2023 08:15:35 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::e138:4fc3:705c:d178]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::e138:4fc3:705c:d178%7]) with mapi id 15.20.6086.024; Mon, 13 Feb 2023 08:15:35 +0000 Message-ID: <08d262e3-c736-85ff-c45e-db96e55cff4c@suse.com> Date: Mon, 13 Feb 2023 09:15:36 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.7.2 Content-Language: en-US To: Binutils Cc: Alan Modra From: Jan Beulich Subject: [PATCH] gas: improve interaction between read_a_source_file() and s_linefile() Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR3P281CA0043.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:4a::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_|AS8PR04MB8868:EE_ X-MS-Office365-Filtering-Correlation-Id: adc49999-cce1-4eb8-7c7a-08db0d9a7b7f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6xs9oUEMwydSjIwX8fMVX/avd2evIbfzX8cQjqfA84zyXV+RB2psSwU5vw4su/GLcbaUFyJjFfepWQAYqCTOcVDGtTjaSqMky9cQFM972gYkmHNLP3ybcHa/0GxpH4x0/3t62oWZFfT/y6d4DTKumrfdovduuPdj45EAFo0pLTa8D8djUcFPbp9LTdiiWVX7C2rqqb8U7Roj4rWEk5P99RuRScmPgCY2UnWbNZ+eIHBbr0owLJtap9OlQDHulL2r3ORi5jzzwFsyLZyd1cqJJWeb6Hpk7t5RrRnTZWgYUb5ZvwAh8uxh97rqpqkQa+qTyGC9AQFeJ0bbzj541bd0d6WeztJZ1XJovNjr3/DXYyObCOkfn6RNCEAMduw8ZlkeQEcC7XDVkNbmIa7VjW/D8IZaqU+sqJzBE2VR4I8AfCKDqUdWZvI0fIDCHHRXzWuNTdYtmr3XzwTJyuO9Mb9EbKslyuDWK/L1AoH1bUdXhw0vyKCVogN08fLG3/Y1bCNEp8oex+tHLvPercE4PAKUTbafpDsXX298MU0/HPbh90IsoOicMyKayoPka385pMblM6K98Rj40zCsl2Fcvx6fzFYVafytz0gjEUCYuniXFdHcFV+RVLqLA77o4JltPjZTjt+OYi2jPYI9WgqDhPFayj0v4EB0efcEEjs7wzeAjhC1Qrrp2tNIVUVEBQ63oUaBsNoE0ikV6/p4aQa931mvdY8gZcGqHjdJSVQcO3rBCp0= 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)(39860400002)(136003)(366004)(376002)(346002)(396003)(451199018)(31686004)(5660300002)(6512007)(83380400001)(26005)(186003)(31696002)(36756003)(2906002)(6506007)(86362001)(41300700001)(478600001)(6486002)(2616005)(8936002)(66476007)(316002)(66556008)(66946007)(6916009)(8676002)(4326008)(38100700002)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?U3dFaWJFM3RoTy9oQVVMbWRBYkRVY3FFU2U3SjB5aWg5TE9WYTdlc1NuQm1S?= =?utf-8?B?SjZwbjgzSTI4MDZGM2pGV1h3WWprNnZmSXE3MUM4aHFrQjR2dmludmdLZWF0?= =?utf-8?B?STFYcytmVWFBelhJLzIzRS9HNVpLWjhqdGxlT0tYUHA3T2xCRnNxSEdEdmQ5?= =?utf-8?B?MGpCVHdDV2hpajVIdExtS1ArMC9SQW5CcDhXd3BaQ1dWNE1rdmVROWZLQnVS?= =?utf-8?B?UlNBcWtpYTVNYUtsbXBPQ1Yvbkc5Y0huTm42N0VrcmF6NVZYTStsOXRBUG14?= =?utf-8?B?Yml6YXFtZTMyVWtmcjV0QzVIVGd5RjlvUS9sQm5GQ3VKNWtEamJLditXNDNR?= =?utf-8?B?Zzl5RkxrNzN4SVExRTNGb3ZtSUhwZWZpRm9FWHdoaUVqQWJKcTh1eHFTbkQx?= =?utf-8?B?M3Yyb0RJdFJOUzh2dEdrMHdCZjNGRWVlZlVFNDR6WWVvWHZlN0tlaFZyRWpl?= =?utf-8?B?NUlhUDZRMVFnNG1tUGUyL0d0bVpLM0FKU1VqRmUzQjJvbFRydjVsSTNLTy96?= =?utf-8?B?WGw4QnRpeXM5bHArTEVEcEJSa1FqTzdIS1NheFRaM3BQR1p6SEhqR2t1dmhw?= =?utf-8?B?RTJBTWhEcUJxRmtwTmx5KzhpYTdGaTVQaXc1bEM3N1RKelBZWUkvR3UzME5s?= =?utf-8?B?UnBQdzFPN2Yvd3Q2SnJwV25RV3JKRmtrVE1YUWM5M1g4bHlnc0wyUXZYYjRt?= =?utf-8?B?Si85cU1BVm05RjRnZTdQNm5VTlV5Z0JxNnlvemlHQ1dTL0ZFY1QwdCsreXFS?= =?utf-8?B?MVk1SkJuZmZNaEQwRlVwUXFCVGc3UWdaTTYyWEZLRGhhdm1Ib3BOek41V0xn?= =?utf-8?B?MTZhTnNqd0Y5NWJvUXdmVEFLbE9XbE96UXRUbng3QStjd09CSyt3SVVxRzlt?= =?utf-8?B?bi9EYXZ2RElkZG12V0YxVVkyYXVVaFB0VHdwODYxSkgybElEWDRKYS8vdUpj?= =?utf-8?B?QmJXYmhNSmpENE5rM3MzcWVhUitHNTZxSlZwakFDQkNaeGtXQmNjOVhDS2V0?= =?utf-8?B?NVFyN1htR1J3VUpDZ0dQT2xOcXBEYUhkYmYveTVXNU9tbmdJSytOQ1d5UURX?= =?utf-8?B?dCs0REFLdUp6ZDI4Y1hPV2pSTG5QYitORU5qcjdHYUdteFNnTlJqRGtKd0FH?= =?utf-8?B?MUEwSDNBMXpqQkYvVXhFdGhGdCtYYklXYmhBM0RnVDdXVHhXZFdXNFdwUmNJ?= =?utf-8?B?VXRaaUNWbWpSZFBDM2RBc0tDeHJ0aTVoWitucmE0bVFsbUIwRUo3ZzhyOE9R?= =?utf-8?B?RjFDWUV0VXV4eVpNZXVDanpJYnZidWJjTFlwWmdoWWNkd0VuZ0lBOUV1dm8r?= =?utf-8?B?QUdSQWpqdGRhaStEYkVuR0NTclJmNlY2aTRyakZFWFNub2thUy9iM0N2eGx5?= =?utf-8?B?NlVGOFkybG5lY0UyZkxtY3NDVkdHNVRId1RCQTNTVHVYaDVHczBSMGtCSjQ1?= =?utf-8?B?cDVDdjNzMDV3dmRZOUpKMDRyZnJHQzRVQkMvNXpoZHphaC9XMHJxRWVtUS92?= =?utf-8?B?MUVkRjkybkJra085Q09Dc0dpZ2FSdmJYeTZMR0xPS2tvY3BGTSttWlZ0U3ZK?= =?utf-8?B?LzlLcCs5SmNsTldrb3ZudGZlb0xqOXFvYjRFeEVpNjVseFF1emNqZThqbVpI?= =?utf-8?B?bGZXSzZpblVyT0t0bEhvZlZWaUZ0dUR4SW9CQmpKRFNRTVJiYllVSTNSMzlL?= =?utf-8?B?N3ZBYmhSSVF1RXdnd253SFJOemVjZ2ZpU0hPNmpxQmozOTc2UmVaWTRRa0dl?= =?utf-8?B?dlA3S05CNXJsWTZWbDkzelo3ZVNUTUl4Zno1MDhwVG1uQ2E5WE1mWk5qcmV1?= =?utf-8?B?cGVMT3EzVmFUV2JvSFpqakJxb1djcXp1L2ozTngrSlhETStLbm50WHZqcGl4?= =?utf-8?B?MExnMWd3M2FnZHphR01VRDV2eFZXM2wwbERId2RwdnJ1eVdtT2VrdVZFdm1p?= =?utf-8?B?Y09XRmZxRmx5elloTFpSMWZUdnMzbEZhWUE1YTNyNGlQdzVXTHBCeTJ1M1hl?= =?utf-8?B?TWFVeHltSVRKNm9YQlVJODlKbkJHOGlsUnFYclUvaWxKMURMUTNIQzJydkdQ?= =?utf-8?B?YUd4WHNHaDNBZVZBQVpzQWNGSHNGRmJ0LzBEQmZGcTB3amd3ZUlPMDY5WUMy?= =?utf-8?Q?iHTFMTdsqkEUbQow43bx0pgZ7?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: adc49999-cce1-4eb8-7c7a-08db0d9a7b7f X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Feb 2023 08:15:35.3321 (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: l2Psft9OfH29sRl9FpLWlUiZvMnsRgf6wwIlFP+fHLod0f6kTjEjTzpiFrh8m1yP/cklWJutLk2NhIsYoLAZhg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8868 X-Spam-Status: No, score=-3028.5 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: read_a_source_file() would bump line numbers only when seeing a newline, whereas is_end_of_line[] indicates further end-of-line characters, in particular the nul character. s_linefile() attempts to compensate for the bump, but was too aggressive with this so far: It should only adjust when a newline ends the line. To facilitate such a check, the check for nothing else on the line needs to move ahead, which luckily is easily possible: The relevant two conditions match, and the function can simply return from the body of that earlier instance of the conditional. The more strict treatment in s_linefile() then requires an adjustment to buffer_and_nest()'s invocation of the function: The line terminator now needs to be a newline, not nul. --- a/gas/macro.c +++ b/gas/macro.c @@ -265,7 +265,7 @@ buffer_and_nest (const char *from, const { char saved_eol_char = ptr->ptr[ptr->len]; - ptr->ptr[ptr->len] = '\0'; + ptr->ptr[ptr->len] = '\n'; temp_ilp (ptr->ptr + i + 8); s_linefile (0); restore_ilp (); --- a/gas/read.c +++ b/gas/read.c @@ -2047,18 +2047,22 @@ s_linefile (int ignore ATTRIBUTE_UNUSED) if (file || flags) { - linenum--; + demand_empty_rest_of_line (); + + /* read_a_source_file() will bump the line number only if the line + is terminated by '\n'. */ + if (input_line_pointer[-1] == '\n') + linenum--; + new_logical_line_flags (file, linenum, flags); #ifdef LISTING if (listing) listing_source_line (linenum); #endif + return; } } - if (file || flags) - demand_empty_rest_of_line (); - else - ignore_rest_of_line (); + ignore_rest_of_line (); } /* Handle the .end pseudo-op. Actually, the real work is done in