Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp17125pxb; Tue, 19 Jan 2021 23:28:50 -0800 (PST) X-Google-Smtp-Source: ABdhPJxs6PGETolJ8+3RiCJpZcVpT/qnDXAi/JREPfa1ngJ3/tXV2EeHK0NBxDHWGrSD0XMptdD0 X-Received: by 2002:a05:6402:5246:: with SMTP id t6mr6292964edd.62.1611127730755; Tue, 19 Jan 2021 23:28:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1611127730; cv=none; d=google.com; s=arc-20160816; b=Y1vpEiEsT2MbC9PzO0qhRFXQEfWIHgwgwGOgmfBjDNRQGPTuM0A4nQa74rl2Wj0rV6 GkJXuUpsqVX3PhTGrQ5febvJTp6BP0PQ1unKMjEs6/R2nk05N36u9eqHHLISeptgt9X0 FT1f8bCR2IwFHcSlMGKEcx8NMzT+iCUsxHHye/Gq22H5AJjISXJl+f3S3h/r4VmrxMNz P1s7As+yOPRPLa1eOZVrD4Oy4zulxX/a1/7eKlghiCEj3DAq6BfTeKgP8uNJkykrP2lz 6WF92xklYQh1JfQkI6kYet/P7E0AIA2QolSDn2z/VRh+/fGBX6MLoZv0mwWnTLdFbP9Z t9aQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from :dkim-signature; bh=WlLbPCtA5zX530YpM9Rqf78MCKfOyhRy2nl/un5gf4Y=; b=Twj/gtZmDDyp7rAU7Tu1krORyy+8Vi2aoTuofjcsgbL+VwXcDGZz132pZ4FQaKmR/Y M1a8twWTiGWp4VmuEnLhsVCxdsBEvMXL96snJdx7zs6tFaUJp+s53vxoUuiAtF72htlt ZcwgygGnRB3FuHy2JmV4ez9CHPG8QKMfxlwfYdAjXcG3i7sJQ2VFVGXTzEmmsg78fBLb 3OZ8/W33Yddg2+ysNMMfgNo5sHvtWA3rSfltqhg5fL2BBjw/obkitABALTCb7dguJiGi rZ+8iv7JiMW3OkyaDn5LB+d22Mt+10FOu7IL5myGJR0FbqkHwJOD4/lES+voQg03sj8L qK6g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=KOE6EmQv; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a20si435643ejv.169.2021.01.19.23.28.27; Tue, 19 Jan 2021 23:28:50 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=KOE6EmQv; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726552AbhATH0s (ORCPT + 99 others); Wed, 20 Jan 2021 02:26:48 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46894 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728283AbhATH0j (ORCPT ); Wed, 20 Jan 2021 02:26:39 -0500 Received: from mail-pl1-x631.google.com (mail-pl1-x631.google.com [IPv6:2607:f8b0:4864:20::631]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9A83EC061757 for ; Tue, 19 Jan 2021 23:25:59 -0800 (PST) Received: by mail-pl1-x631.google.com with SMTP id x18so12039384pln.6 for ; Tue, 19 Jan 2021 23:25:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=WlLbPCtA5zX530YpM9Rqf78MCKfOyhRy2nl/un5gf4Y=; b=KOE6EmQvvvEAZSvv/7MDpGtLd4BDooRQucvauDCbrLW42m9e3IcwrFIgSkLqBMIbBq v+WmH1EwsuJLHnRbARfIuVCMAqfSNZBI3kjCo2UC6GG60owEN8cEYi9rV2jGQ2Wq9Oqy bvAejENnpxT6ekUPqfEwCOfauCfo7mnCEeJfNf0vvw9YdQHWRzApCTjg1Xi9HXZ+Ro5Y bceqiBvDMOWrlFvbT3EUIPyxhG0Lo1U8BM5WqFmihj7nxAEhQiX+Cvo0i4M0BZX1CKdt xy6p3chXpuuprReXoZvglpOoMPWJpy3tULXLZBJJ93qwrHW0bdCte8vaN/y49w4/qvvN Y4rg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=WlLbPCtA5zX530YpM9Rqf78MCKfOyhRy2nl/un5gf4Y=; b=YL1ADVSUORUoYLDrKTnOF/FsR7TUoryYYr4CDGQMk0gvJN3yyLpBrogce1usBAynxq SQp0WAvH7C2fDSOD/oB07v1JuMWcTCD6tppdsxusGxqavPgkYPaUDn8NS5sN1zaKHcde 8hxw0WD9dYRjlfVKsVJxCYe8a4rvW84is+FtQeNgpvtkhye7BeL1gsVoSoM3fmcOSl0o boFUpHF/HNAciGyRN6pZUTefrQJPjccUxN3sAU2XwCH8/eCRAYySlXiiIWvJ9RdYyXl8 cRIR7a/8Grl01lCJjPOQmJRlLA3UMNTXLlOz+dgWifbnMoemu37TR/8VArXQq0JCRyMx 5p7w== X-Gm-Message-State: AOAM530sPfhqRHAlkpCji4r8U/tEtPLWrtDFjCkdW4SoCZsMCeUNU31X 8BwIpCRF75pxOEtfvcWTbE5Fx/cD5iNRZQ== X-Received: by 2002:a17:90a:a10e:: with SMTP id s14mr4103098pjp.133.1611127558777; Tue, 19 Jan 2021 23:25:58 -0800 (PST) Received: from localhost.localdomain ([2405:201:600d:a089:7054:d78f:3538:6af3]) by smtp.googlemail.com with ESMTPSA id 192sm1199519pfv.209.2021.01.19.23.25.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Jan 2021 23:25:58 -0800 (PST) From: Aditya Srivastava To: linux-kernel@vger.kernel.org Cc: yashsri421@gmail.com, lukas.bulwahn@gmail.com, dwaipayanray1@gmail.com, broonie@kernel.org, joe@perches.com, linux-kernel-mentees@lists.linuxfoundation.org, clang-built-linux@googlegroups.com Subject: [PATCH] checkpatch: add warning for avoiding .L prefix symbols in assembly files Date: Wed, 20 Jan 2021 12:55:47 +0530 Message-Id: <20210120072547.10221-1-yashsri421@gmail.com> X-Mailer: git-send-email 2.17.1 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Local symbols prefixed with '.L' do not emit symbol table entries, as they have special meaning for the assembler. '.L' prefixed symbols can be used within a code region, but should be avoided for denoting a range of code via 'SYM_*_START/END' annotations. Add a new check to emit a warning on finding the usage of '.L' symbols in '.S' files, if it lies within SYM_*_START/END annotation pair. Suggested-by: Mark Brown Link: https://lore.kernel.org/lkml/20210112210154.GI4646@sirena.org.uk/ Signed-off-by: Aditya Srivastava --- scripts/checkpatch.pl | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index 7030c4d6d126..858b5def61e9 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -2501,6 +2501,9 @@ sub process { my $checklicenseline = 1; + # record SYM_*_START/END annotation pair count, for AVOID_L_PREFIX + my $sym_start_block = 0; + sanitise_line_reset(); my $line; foreach my $rawline (@rawlines) { @@ -3590,6 +3593,25 @@ sub process { } } +# check for .L prefix local symbols in .S files + if ($realfile =~ /\.S$/) { + if ($line =~ /SYM_.*_START/ || + (defined $context_function && $context_function =~ /SYM_.*_START/)) { + $sym_start_block++; + } + + if ($line=~ /\.L\S+/ && # line contains .L prefixed local symbol + $sym_start_block > 0) { # lies between SYM_*_START and SYM_*_END pair + WARN("AVOID_L_PREFIX", + "Avoid using '.L' prefixed local symbol names for denoting a range of code via 'SYM_*_START/END' annotations; see Documentation/asm-annotations.rst\n" . $herecurr); + } + + if ($line =~ /SYM_.*_END/ || + (defined $context_function && $context_function =~ /SYM_.*_END/)) { + $sym_start_block--; + } + } + # check we are in a valid source file C or perl if not then ignore this hunk next if ($realfile !~ /\.(h|c|pl|dtsi|dts)$/); -- 2.17.1