|
@@ -25,11 +25,12 @@ sub alphabetically {
|
|
|
sub print_depends_on {
|
|
|
my ($href) = @_;
|
|
|
print "\n";
|
|
|
- while (my ($mod, $list) = each %$href) {
|
|
|
+ for my $mod (sort keys %$href) {
|
|
|
+ my $list = $href->{$mod};
|
|
|
print "\t$mod:\n";
|
|
|
foreach my $sym (sort numerically @{$list}) {
|
|
|
my ($symbol, $no) = split /\s+/, $sym;
|
|
|
- printf("\t\t%-25s\t%-25d\n", $symbol, $no);
|
|
|
+ printf("\t\t%-25s\n", $symbol);
|
|
|
}
|
|
|
print "\n";
|
|
|
}
|
|
@@ -49,8 +50,14 @@ sub usage {
|
|
|
}
|
|
|
|
|
|
sub collectcfiles {
|
|
|
- my @file
|
|
|
- = `cat .tmp_versions/*.mod | grep '.*\.ko\$' | sed s/\.ko$/.mod.c/`;
|
|
|
+ my @file;
|
|
|
+ while (<.tmp_versions/*.mod>) {
|
|
|
+ open my $fh, '<', $_ or die "cannot open $_: $!\n";
|
|
|
+ push (@file,
|
|
|
+ grep s/\.ko/.mod.c/, # change the suffix
|
|
|
+ grep m/.+\.ko/, # find the .ko path
|
|
|
+ <$fh>); # lines in opened file
|
|
|
+ }
|
|
|
chomp @file;
|
|
|
return @file;
|
|
|
}
|
|
@@ -95,6 +102,8 @@ close($module_symvers);
|
|
|
#
|
|
|
# collect the usage count of each symbol.
|
|
|
#
|
|
|
+my $modversion_warnings = 0;
|
|
|
+
|
|
|
foreach my $thismod (@allcfiles) {
|
|
|
my $module;
|
|
|
|
|
@@ -125,7 +134,8 @@ foreach my $thismod (@allcfiles) {
|
|
|
}
|
|
|
}
|
|
|
if ($state != 2) {
|
|
|
- print "WARNING:$thismod is not built with CONFIG_MODVERSION enabled\n";
|
|
|
+ warn "WARNING:$thismod is not built with CONFIG_MODVERSIONS enabled\n";
|
|
|
+ $modversion_warnings++;
|
|
|
}
|
|
|
close($module);
|
|
|
}
|
|
@@ -159,8 +169,12 @@ printf("SECTION 2:\n\tThis section reports export-symbol-usage of in-kernel
|
|
|
modules. Each module lists the modules, and the symbols from that module that
|
|
|
it uses. Each listed symbol reports the number of modules using it\n");
|
|
|
|
|
|
+print "\nNOTE: Got $modversion_warnings CONFIG_MODVERSIONS warnings\n\n"
|
|
|
+ if $modversion_warnings;
|
|
|
+
|
|
|
print "~"x80 , "\n";
|
|
|
-while (my ($thismod, $list) = each %MODULE) {
|
|
|
+for my $thismod (sort keys %MODULE) {
|
|
|
+ my $list = $MODULE{$thismod};
|
|
|
my %depends;
|
|
|
$thismod =~ s/\.mod\.c/.ko/;
|
|
|
print "\t\t\t$thismod\n";
|