From: Joe Perches Date: Wed, 10 Dec 2014 23:51:35 +0000 (-0800) Subject: checkpatch: add error on use of attribute((weak)) or __weak declarations X-Git-Tag: v3.19-rc1~135^2~81 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=619a908aa334c854594e690fdbf1fe37b0e3e740;p=~emulex%2Finfiniband.git 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 Reported-by: Bjorn Helgaas Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index 696254eee78..8a577aa03bc 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -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(&) if ($line =~ /\bsizeof\s*\(\s*\&/) { WARN("SIZEOF_ADDRESS",