aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAditya Srivastava <[email protected]>2021-02-25 17:21:57 -0800
committerLinus Torvalds <[email protected]>2021-02-26 09:41:04 -0800
commitde93245c00a44578ae73964b7e36607d04fed5b3 (patch)
tree10d43d87aefc51738097f4064b1fa7414f4e782a
parent0972b8bfe0de8c0f05796aceb8f2428b0efb20cd (diff)
checkpatch: add warning for avoiding .L prefix symbols in assembly files
objtool requires that all code must be contained in an ELF symbol. Symbol names that have a '.L' prefix 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 for '.S' files, if it denotes range of code via SYM_*_START/END annotation pair. Link: https://lkml.kernel.org/r/[email protected] Link: https://lore.kernel.org/lkml/[email protected] Signed-off-by: Aditya Srivastava <[email protected]> Suggested-by: Mark Brown <[email protected]> Acked-by: Joe Perches <[email protected]> Acked-by: Nick Desaulniers <[email protected]> Cc: Aditya Srivastava <[email protected]> Cc: Lukas Bulwahn <[email protected]> Cc: Dwaipayan Ray <[email protected]> Cc: Josh Poimboeuf <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
-rwxr-xr-xscripts/checkpatch.pl7
1 files changed, 7 insertions, 0 deletions
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index a04df2657d49..d8793bdbc492 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -3599,6 +3599,13 @@ sub process {
}
}
+# check for .L prefix local symbols in .S files
+ if ($realfile =~ /\.S$/ &&
+ $line =~ /^\+\s*(?:[A-Z]+_)?SYM_[A-Z]+_(?:START|END)(?:_[A-Z_]+)?\s*\(\s*\.L/) {
+ 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);
+ }
+
# 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)$/);