diff options
author | Joe Perches <joe@perches.com> | 2014-12-10 18:51:35 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-12-10 20:41:11 -0500 |
commit | 619a908aa334c854594e690fdbf1fe37b0e3e740 (patch) | |
tree | 460eebf94c133e2024b8ff5e2beee79f0cbcddc1 /scripts | |
parent | 2381097b6c9b8621797a717c0b199f780ecaa992 (diff) |
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>
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/checkpatch.pl | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index 696254eee78b..8a577aa03bc6 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl | |||
@@ -4671,6 +4671,15 @@ sub process { | |||
4671 | } | 4671 | } |
4672 | } | 4672 | } |
4673 | 4673 | ||
4674 | # Check for __attribute__ weak, or __weak declarations (may have link issues) | ||
4675 | if ($^V && $^V ge 5.10.0 && | ||
4676 | $line =~ /(?:$Declare|$DeclareMisordered)\s*$Ident\s*$balanced_parens\s*(?:$Attribute)?\s*;/ && | ||
4677 | ($line =~ /\b__attribute__\s*\(\s*\(.*\bweak\b/ || | ||
4678 | $line =~ /\b__weak\b/)) { | ||
4679 | ERROR("WEAK_DECLARATION", | ||
4680 | "Using weak declarations can have unintended link defects\n" . $herecurr); | ||
4681 | } | ||
4682 | |||
4674 | # check for sizeof(&) | 4683 | # check for sizeof(&) |
4675 | if ($line =~ /\bsizeof\s*\(\s*\&/) { | 4684 | if ($line =~ /\bsizeof\s*\(\s*\&/) { |
4676 | WARN("SIZEOF_ADDRESS", | 4685 | WARN("SIZEOF_ADDRESS", |