mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-04 04:04:19 +00:00
headers_check: recursively search for linux/types.h inclusion
headers_check.pl currently emits some spurious warnings, especially for the drm headers, about using __[us]{8,16,32,64} types without including linux/types.h. Recursively search for types.h inclusion, avoiding circular references. Signed-off-by: Bobby Powers <bobbypowers@gmail.com> Cc: Sam Ravnborg <sam@ravnborg.org> Cc: Dave Airlie <airlied@linux.ie> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Michal Marek <mmarek@suse.cz>
This commit is contained in:
parent
875de98623
commit
f75a8df3bd
@ -19,6 +19,7 @@
|
||||
# 3) Check for leaked CONFIG_ symbols
|
||||
|
||||
use strict;
|
||||
use File::Basename;
|
||||
|
||||
my ($dir, $arch, @files) = @ARGV;
|
||||
|
||||
@ -99,6 +100,39 @@ sub check_asm_types
|
||||
}
|
||||
|
||||
my $linux_types;
|
||||
my %import_stack = ();
|
||||
sub check_include_typesh
|
||||
{
|
||||
my $path = $_[0];
|
||||
my $import_path;
|
||||
|
||||
my $fh;
|
||||
my @file_paths = ($path, $dir . "/" . $path, dirname($filename) . "/" . $path);
|
||||
for my $possible ( @file_paths ) {
|
||||
if (not $import_stack{$possible} and open($fh, '<', $possible)) {
|
||||
$import_path = $possible;
|
||||
$import_stack{$import_path} = 1;
|
||||
last;
|
||||
}
|
||||
}
|
||||
if (eof $fh) {
|
||||
return;
|
||||
}
|
||||
|
||||
my $line;
|
||||
while ($line = <$fh>) {
|
||||
if ($line =~ m/^\s*#\s*include\s+<linux\/types.h>/) {
|
||||
$linux_types = 1;
|
||||
last;
|
||||
}
|
||||
if (my $included = ($line =~ /^\s*#\s*include\s+[<"](\S+)[>"]/)[0]) {
|
||||
check_include_typesh($included);
|
||||
}
|
||||
}
|
||||
close $fh;
|
||||
delete $import_stack{$import_path};
|
||||
}
|
||||
|
||||
sub check_sizetypes
|
||||
{
|
||||
if ($filename =~ /types.h|int-l64.h|int-ll64.h/o) {
|
||||
@ -113,6 +147,9 @@ sub check_sizetypes
|
||||
$linux_types = 1;
|
||||
return;
|
||||
}
|
||||
if (my $included = ($line =~ /^\s*#\s*include\s+[<"](\S+)[>"]/)[0]) {
|
||||
check_include_typesh($included);
|
||||
}
|
||||
if ($line =~ m/__[us](8|16|32|64)\b/) {
|
||||
printf STDERR "$filename:$lineno: " .
|
||||
"found __[us]{8,16,32,64} type " .
|
||||
@ -122,4 +159,3 @@ sub check_sizetypes
|
||||
#$ret = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user