aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/headers_check.pl
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/headers_check.pl')
-rw-r--r--scripts/headers_check.pl38
1 files changed, 37 insertions, 1 deletions
diff --git a/scripts/headers_check.pl b/scripts/headers_check.pl
index 7957e7a5166a..64ac2380e4d5 100644
--- a/scripts/headers_check.pl
+++ b/scripts/headers_check.pl
@@ -19,6 +19,7 @@
19# 3) Check for leaked CONFIG_ symbols 19# 3) Check for leaked CONFIG_ symbols
20 20
21use strict; 21use strict;
22use File::Basename;
22 23
23my ($dir, $arch, @files) = @ARGV; 24my ($dir, $arch, @files) = @ARGV;
24 25
@@ -99,6 +100,39 @@ sub check_asm_types
99} 100}
100 101
101my $linux_types; 102my $linux_types;
103my %import_stack = ();
104sub check_include_typesh
105{
106 my $path = $_[0];
107 my $import_path;
108
109 my $fh;
110 my @file_paths = ($path, $dir . "/" . $path, dirname($filename) . "/" . $path);
111 for my $possible ( @file_paths ) {
112 if (not $import_stack{$possible} and open($fh, '<', $possible)) {
113 $import_path = $possible;
114 $import_stack{$import_path} = 1;
115 last;
116 }
117 }
118 if (eof $fh) {
119 return;
120 }
121
122 my $line;
123 while ($line = <$fh>) {
124 if ($line =~ m/^\s*#\s*include\s+<linux\/types.h>/) {
125 $linux_types = 1;
126 last;
127 }
128 if (my $included = ($line =~ /^\s*#\s*include\s+[<"](\S+)[>"]/)[0]) {
129 check_include_typesh($included);
130 }
131 }
132 close $fh;
133 delete $import_stack{$import_path};
134}
135
102sub check_sizetypes 136sub check_sizetypes
103{ 137{
104 if ($filename =~ /types.h|int-l64.h|int-ll64.h/o) { 138 if ($filename =~ /types.h|int-l64.h|int-ll64.h/o) {
@@ -113,6 +147,9 @@ sub check_sizetypes
113 $linux_types = 1; 147 $linux_types = 1;
114 return; 148 return;
115 } 149 }
150 if (my $included = ($line =~ /^\s*#\s*include\s+[<"](\S+)[>"]/)[0]) {
151 check_include_typesh($included);
152 }
116 if ($line =~ m/__[us](8|16|32|64)\b/) { 153 if ($line =~ m/__[us](8|16|32|64)\b/) {
117 printf STDERR "$filename:$lineno: " . 154 printf STDERR "$filename:$lineno: " .
118 "found __[us]{8,16,32,64} type " . 155 "found __[us]{8,16,32,64} type " .
@@ -122,4 +159,3 @@ sub check_sizetypes
122 #$ret = 1; 159 #$ret = 1;
123 } 160 }
124} 161}
125