From patchwork Mon Feb 13 08:15:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 56081 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2228677wrn; Mon, 13 Feb 2023 00:15:50 -0800 (PST) X-Google-Smtp-Source: AK7set+Uo17SuvmJh038yREEpS00ubj41CnIpxJmiXnvZAQ6CiiNSQyflK+JJePCF9wqz+uyyUp4 X-Received: by 2002:a17:907:c12:b0:866:6b08:946b with SMTP id ga18-20020a1709070c1200b008666b08946bmr35223662ejc.39.1676276150591; Mon, 13 Feb 2023 00:15:50 -0800 (PST) Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id ep16-20020a1709069b5000b0088f8cd24b7fsi10689590ejc.663.2023.02.13.00.15.50 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Feb 2023 00:15:50 -0800 (PST) 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=jEUVWZTv; 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 A860C3857438 for ; Mon, 13 Feb 2023 08:15:48 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A860C3857438 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1676276148; bh=f1oLCp6NeBXMsEKfLTUqVsS4v/Av+WNGhSfRfILklvE=; h=Date:To:Cc:Subject:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:From; b=jEUVWZTvkANgZi6XDe1ulhsZszibFuW8u7590MxOvN+qWB8QP548qYznPWteSa/tj C/kdMv7MrS4BaGkerGv2QSn4skMDGFOOUXfGqHxGOXwYkNkgbKvFTFUPetyevbjWkV Yp/jF+ipyYWtxWaKsup+l/1oALs0J2JmRM7VlfbU= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org 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 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 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 Subject: [PATCH] gas: improve interaction between read_a_source_file() and s_linefile() 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?q?SwEibE3thO/hAULmdAbDUcqESe7J?= =?utf-8?q?0yih9LOVa7esSnBmRJ6pn83I2806F3jFWXwYjk6vfIq71C8hqkB4vvinvgKeatI1X?= =?utf-8?q?s+fUaAzXI/23E/G5ZKZ8jtleOKXPp7OlBFsqHGDvd90jBTwCWhij5HtLmKP+0/RAn?= =?utf-8?q?Bp8WwpZCWV4MkveQ9fKBuRRSAqkia5MaKlmpOCV/nG9cHnNn67Ekraz5VXM+l9tAP?= =?utf-8?q?mxbizaqme32Ukfr5tC5HTgyF9oQ/lBnFCuJ5kDjbKv+W43Qg9yFLk73xIQ1E3Fovm?= =?utf-8?q?IHpefiFoEXwhiEjAbJq8uxqSnD13v2oDItRNS8vtGk0wBf3FEeefUE44zYeoXve7K?= =?utf-8?q?ehVrEje5IaP6Q1Qg4mmPe2/GtmZK3AJSUjFe3B2olTrv5lI3KO/zXl8Btiys9lp+L?= =?utf-8?q?EDpBRkQjO7HKSaxTZ3pPGZzHHjGkuvhpE2AMhDqBqFkpNly+8ia7Fi5Piw5lC77TJ?= =?utf-8?q?zPYYI/Gu30NlRpPw1O7f/wt6JrpWnQWrJFkkTMXQc93X8lygsL2QvXb4mJ/9qMAVm?= =?utf-8?q?9F4ge7P6nUNUygBq6yoziGCWS/FEcT0t++yqR1Y5JBnffMhD0FUpQqBTg7QgZM62X?= =?utf-8?q?FKDhavmHopNzN5WLg16aNsjwF95boQwfTAKlOWlOzQtTnx7A+cwOBK+wIUqG9mn/D?= =?utf-8?q?avvDIddmvWF1UY2auUhPtTwp861JH2lIDX4Ja//uJcBbWbhMJjD4Nk3s3qeaR+G56?= =?utf-8?q?qJVpjACBCZxkWBcc9XCKet5Qr7XmGRwUJCgGPOlNqpDaHdbf/y5W5OmngIK+NCWyQ?= =?utf-8?q?DWt+4DAKuJzd28cXOWjRLnPb+NENjr7GaGmxSgNRjDkJwAG1A0H3A1zjBF/UxEthF?= =?utf-8?q?t+XbIWbhA3DgT7WTxWdWW4WpRcIUtZiCVmjRdPC3dAsKCxrti5hZ+nra4mQlmB0EJ?= =?utf-8?q?7g8r8OQF1CYEtUuxyZMeuCjzIbvbubcLYpZghYcdwEngIA9Euvo+AGRAjjtdai+Db?= =?utf-8?q?EnGCSrRf6V6i4rjFEXSnokaS/b3Cvxly6UF8Y2lnecE2fLmcsCVGG5THwTBA3STuX?= =?utf-8?q?h5Gs0R0kBJ45p5Cv3s05wvdY9JJ04rfrGC4UBC/5zhdzah/W0rqEemQ/v1EdF92nB?= =?utf-8?q?kkO9COCsGigaRvbXy6LGLOKkocpFM+mZVtSvJ/9Kp+9JclNWkovntfeoLj9qob4Ex?= =?utf-8?q?Ei65lxQuzcje8jmZHlfWK6inUrOKtlHofVViFtuDxIoBBjJDSQMRbbYUI3R39K7vA?= =?utf-8?q?bhRIQuEwgwnwHRNzecgfiSHO6jqBj3976ReZY4QkGevP7KNB5rlY6Vl93zZ7eSTMI?= =?utf-8?q?xfz508pTmnCa9XMfZNjreupeLOq3VaTWboHZjjBqoWcqzu/j3Nx+JXDM+KnntXvjp?= =?utf-8?q?ix0Lg1gw3agdzaGMUD5vxVW3l0lDHwdpvruyWmOekuVEvmicOWFfqFlyzYhLZR1fT?= =?utf-8?q?vs3lFaYA5a3r4iPw5WLpBy2u3XeMaUxymITJ6oXBUI89JnBG8ilRqXrU/ilJ1DLQ3?= =?utf-8?q?HC2rvGPaGxXsGh3AeVAAZsAcFHsFFbt/0DBfFq0wjgweIO069YC2iHTFMTdsqkEUb?= =?utf-8?q?Qow43bx0pgZ7?= 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 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?1757702940772492101?= X-GMAIL-MSGID: =?utf-8?q?1757702940772492101?= 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