summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2008-12-27 08:43:36 +0100
committerSam Ravnborg <sam@ravnborg.org>2009-01-02 20:43:22 +0100
commit46b8af50ba5c072b74740c5fa8ba08e6eabb22f8 (patch)
tree4e08644559df9c6602a65c631fdc7a70c668f8c2 /scripts
parentkconfig: improve error messages for bad source statements (diff)
downloadlinux-46b8af50ba5c072b74740c5fa8ba08e6eabb22f8.tar.xz
linux-46b8af50ba5c072b74740c5fa8ba08e6eabb22f8.zip
headers_check.pl: disallow extern's
Since prototypes with "extern" refer to kernel functions, they make no sense in userspace, so reject them automatically. Signed-off-by: Mike Frysinger <vapier@gentoo.org> [sam: made it into a warning] Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Diffstat (limited to 'scripts')
-rw-r--r--scripts/headers_check.pl12
1 files changed, 11 insertions, 1 deletions
diff --git a/scripts/headers_check.pl b/scripts/headers_check.pl
index 488a3b1f760f..5bdd9753007a 100644
--- a/scripts/headers_check.pl
+++ b/scripts/headers_check.pl
@@ -14,7 +14,9 @@
# Only include files located in asm* and linux* are checked.
# The rest are assumed to be system include files.
#
-# 2) TODO: check for leaked CONFIG_ symbols
+# 2) It is checked that prototypes does not use "extern"
+#
+# 3) TODO: check for leaked CONFIG_ symbols
use strict;
@@ -33,6 +35,7 @@ foreach my $file (@files) {
while ($line = <FH>) {
$lineno++;
check_include();
+ check_prototypes();
}
close FH;
}
@@ -54,3 +57,10 @@ sub check_include
}
}
}
+
+sub check_prototypes
+{
+ if ($line =~ m/^\s*extern\b/) {
+ printf STDERR "$filename:$lineno: extern's make no sense in userspace\n";
+ }
+}