kbuild: fix headers_check.pl
PATCH 1/1 kbuild: fix headers_check.pl
'extern' checking information is not clear, refine it. Plus, fix a comment.
----
scripts/headers_check.pl +9 -5
@@ -2,7 +2,7 @@ # # headers_check.pl execute a number of trivial consistency checks # -# Usage: headers_check.pl dir [files...] +# Usage: headers_check.pl dir arch [files...] # dir: dir to look for included files # arch: architecture # files: list of files to check
@@ -37,7 +37,7 @@ foreach my $file (@files) { &check_include(); &check_asm_types(); &check_sizetypes(); - &check_prototypes(); + &check_declarations(); # Dropped for now. Too much noise &check_config(); } close FH;
@@ -61,10 +61,14 @@ sub check_include } } -sub check_prototypes +sub check_declarations { - if ($line =~ m/^\s*extern\b/) { - printf STDERR "$filename:$lineno: extern's make no sense in userspace\n"; + if ($line =~m/^\s*extern\b/) { + if ($line =~ m/^\s*extern\b.*\(.*\)/) { + printf STDERR "$filename:$lineno: extern's make no sense in userspace\n"; + } else { + printf STDERR "$filename:$lineno: exporting global variable to userspace is suspicious\n"; + } } }
PATCH 1/1 kbuild: clean up scripts/headers.sh
'drop' variable is unused.
'ppc' and 'sparc64' directories don't exist in arch/, and I think their headers can be well exported now, so just remove them.
------
scripts/headers.sh +0 -7
@@ -15,19 +15,12 @@ do_command() fi } -# Do not try this architecture -drop="generic um ppc sparc64 cris" - archs=$(ls ${srctree}/arch) for arch in ${archs}; do case ${arch} in um) # no userspace export ;; - ppc) # headers exported by powerpc - ;; - sparc64) # headers exported by sparc - ;; cris) # headers export are known broken ;; *)
Sam Ravnborg
AppliedRe: [Patch] kbuild: clean up scripts/headers.sh
Quoted 6 lines · Amerigo Wang
'drop' variable is unused.
'ppc' and 'sparc64' directories don't exist in
arch/, and I think their headers can be well exported now, so just remove them.
Applied,
Sam
scripts/headers_check.pl sub check_include · line 73
Quoted 13 lines · Amerigo Wang
scripts/headers_check.pl +7
-3-sub check_prototypes +sub check_declarations { - if ($line =~ m/^\s*extern\b/) { - printf STDERR "$filename:$lineno: extern's make no sense in userspace\n"; + if ($line =~m/^\s*extern\b/) { + if ($line =~ m/^\s*extern\b.*\(.*\)/) { + printf STDERR "$filename:$lineno: extern's make no sense in userspace\n"; + } else { + printf STDERR "$filename:$lineno: exporting global variable to userspace is suspicious\n"; + } } }
I don't think we really need that distinction here, the old text applies to both. But please find a way to get rid of the "extern's".
http://angryflower.com/bobsqu.gif
Arnd <><
Quoted 11 lines · Arnd Bergmann
Quoted 9 lines · Amerigo Wang
scripts/headers_check.pl +5
-3-sub check_prototypes +sub check_declarations { - if ($line =~ m/^\s*extern\b/) { - printf STDERR "$filename:$lineno: extern's make no sense in userspace\n"; + if ($line =~m/^\s*extern\b/) { + if ($line =~ m/^\s*extern\b.*\(.*\)/) { + printf STDERR "$filename:$lineno: extern's make no sense in userspace\n"; + } else {
Quoted 8 lines
scripts/headers_check.pl sub check_include · line 73
Quoted 5 lines
scripts/headers_check.pl +2
-0+ printf STDERR "$filename:$lineno: exporting global variable to userspace is suspicious\n"; + } } }I don't think we really need that distinction here, the old text applies to both.
Even for function declarations?
Quoted 3 lines
But please find a way to get rid of
the "extern's".
Here, that one has already been removed by other patch ...
Quoted 6 lines · Amerigo Wang
Quoted 4 lines
I don't think we really need that distinction here, the old text applies to both.
Even for function declarations?
Yes. Any use of 'extern' in a kernel header file by definition refers to a symbol that is defined in the kernel and therefore not accessibly in user space. It is the same problem for variables and functions, with the complication that leaving out the 'extern' statement on a function declaration will hide it from this check, while leaving it out on a variable declaration turns it into a definition.
Arnd <><
Quoted 19 lines · Arnd Bergmann
scripts/headers_check.pl sub check_include · line 73
Quoted 13 lines · Amerigo Wang
scripts/headers_check.pl +7
-3-sub check_prototypes +sub check_declarations { - if ($line =~ m/^\s*extern\b/) { - printf STDERR "$filename:$lineno: extern's make no sense in userspace\n"; + if ($line =~m/^\s*extern\b/) { + if ($line =~ m/^\s*extern\b.*\(.*\)/) { + printf STDERR "$filename:$lineno: extern's make no sense in userspace\n"; + } else { + printf STDERR "$filename:$lineno: exporting global variable to userspace is suspicious\n"; + } } }I don't think we really need that distinction here, the old text applies to both. But please find a way to get rid of the "extern's".
Quoted 1 line
Hehe, made me smile :-)
Sam Ravnborg
AppliedQuoted 3 lines · Amerigo Wang
'extern' checking information is not clear, refine it. Plus, fix a comment.
Applied,
Sam