checkpatch: add error on use of attribute((weak)) or __weak declarations
Using weak declarations can have unintended link defects. The __weak on the declaration causes non-weak definitions to become weak. Emit an error on its use. Signed-off-by: Joe Perches <joe@perches.com> Reported-by: Bjorn Helgaas <bhelgaas@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
2381097b6c
commit
619a908aa3
1 changed files with 9 additions and 0 deletions
|
@ -4671,6 +4671,15 @@ sub process {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Check for __attribute__ weak, or __weak declarations (may have link issues)
|
||||||
|
if ($^V && $^V ge 5.10.0 &&
|
||||||
|
$line =~ /(?:$Declare|$DeclareMisordered)\s*$Ident\s*$balanced_parens\s*(?:$Attribute)?\s*;/ &&
|
||||||
|
($line =~ /\b__attribute__\s*\(\s*\(.*\bweak\b/ ||
|
||||||
|
$line =~ /\b__weak\b/)) {
|
||||||
|
ERROR("WEAK_DECLARATION",
|
||||||
|
"Using weak declarations can have unintended link defects\n" . $herecurr);
|
||||||
|
}
|
||||||
|
|
||||||
# check for sizeof(&)
|
# check for sizeof(&)
|
||||||
if ($line =~ /\bsizeof\s*\(\s*\&/) {
|
if ($line =~ /\bsizeof\s*\(\s*\&/) {
|
||||||
WARN("SIZEOF_ADDRESS",
|
WARN("SIZEOF_ADDRESS",
|
||||||
|
|
Loading…
Reference in a new issue