/usr/src/kernels/4.18.0-553.157.1.el8_10.x86_64/scripts
NameSizeModeActions
basic/-0755rm
clang-tools/-0755rm
coccinelle/-0755rm
dtc/-0755rm
gcc-plugins/-0755rm
gdb/-0755rm
genksyms/-0755rm
kconfig/-0755rm
ksymoops/-0755rm
mod/-0755rm
package/-0755rm
selinux/-0755rm
adjust_autoksyms.sh30100755editdlrm
asn1_compiler280080755editdlrm
asn1_compiler.c363910644editdlrm
bin2c70240755editdlrm
bin2c.c7430644editdlrm
bloat-o-meter33130755editdlrm
bootgraph.pl64260755editdlrm
bpf_doc.py255150755editdlrm
cc-can-link.sh1660755editdlrm
checkincludes.pl19840755editdlrm
checkkconfigsymbols.py158950755editdlrm
checkpatch.pl1971860755editdlrm
checkstack.pl53030755editdlrm
checksyscalls.sh70940755editdlrm
checkversion.pl19380755editdlrm
check_00index.sh13330755editdlrm
check_extable.sh50490755editdlrm
clang-version.sh6350755editdlrm
cleanfile35380755editdlrm
cleanpatch51780755editdlrm
coccicheck74070755editdlrm
config46350755editdlrm
conmakehash116160755editdlrm
conmakehash.c61280644editdlrm
const_structs.checkpatch9640644editdlrm
decodecode25250755editdlrm
decode_stacktrace.sh38340755editdlrm
depmod.sh11190755editdlrm
diffconfig38210755editdlrm
documentation-file-ref-check35480755editdlrm
export_report.pl46540755editdlrm
extract-cert116160755editdlrm
extract-cert.c35410644editdlrm
extract-ikconfig17340755editdlrm
extract-module-sig.pl37420755editdlrm
extract-sys-certs.pl38320755editdlrm
extract-vmlinux17250755editdlrm
extract_xc3028.pl456650755editdlrm
faddr2line63030755editdlrm
file-size.sh860755editdlrm
find-unused-docs.sh13100755editdlrm
gcc-goto.sh5300755editdlrm
gcc-ld7110755editdlrm
gcc-plugin.sh10900755editdlrm
gcc-version.sh8570755editdlrm
gcc-x86_32-has-stack-protector.sh1730755editdlrm
gcc-x86_64-has-stack-protector.sh1980755editdlrm
gen_initramfs_list.sh82240755editdlrm
get_dvb_firmware258240755editdlrm
get_maintainer.pl673690755editdlrm
gfp-translate17520755editdlrm
headerdep.pl35820755editdlrm
headers.sh5120755editdlrm
headers_check.pl38150755editdlrm
headers_install.sh13970755editdlrm
insert-sys-cert.c90840644editdlrm
kallsyms199920755editdlrm
kallsyms.c185800644editdlrm
Kbuild.include154680644editdlrm
Kconfig.include11730644editdlrm
kernel-doc625600755editdlrm
ld-version.sh2690755editdlrm
leaking_addresses.pl131600755editdlrm
Lindent5020755editdlrm
link-vmlinux.sh91760755editdlrm
Makefile17410644editdlrm
Makefile.asm-generic11930644editdlrm
Makefile.build197070644editdlrm
Makefile.clean28830644editdlrm
Makefile.dtbinst11160644editdlrm
Makefile.extrawarn27700644editdlrm
Makefile.gcc-plugins18610644editdlrm
Makefile.headersinst40790644editdlrm
Makefile.host65200644editdlrm
Makefile.kasan16790644editdlrm
Makefile.kcov3190644editdlrm
Makefile.kcsan1180644editdlrm
Makefile.lib155350644editdlrm
Makefile.modbuiltin17170644editdlrm
Makefile.modinst11490644editdlrm
Makefile.modpost54300644editdlrm
Makefile.modsign8970644editdlrm
Makefile.ubsan9510644editdlrm
makelst8080755editdlrm
markup_oops.pl82730755editdlrm
mkcompile_h26280755editdlrm
mkmakefile12180755editdlrm
mksysmap13590755editdlrm
mkuboot.sh4140755editdlrm
module-common.lds9010644editdlrm
modules.order00644editdlrm
namespace.pl133580755editdlrm
objdiff29170755editdlrm
parse-maintainers.pl46460755editdlrm
patch-kernel101850755editdlrm
pnmtologo157200755editdlrm
pnmtologo.c121970644editdlrm
profile2linkerlist.pl4100755editdlrm
prune-kernel7080755editdlrm
recordmcount240080755editdlrm
recordmcount.c170620644editdlrm
recordmcount.h167720644editdlrm
recordmcount.pl187090755editdlrm
setlocalversion40130755editdlrm
show_delta30760755editdlrm
sign-file157680755editdlrm
sign-file.c99940644editdlrm
sortextable157120755editdlrm
sortextable.c104110644editdlrm
sortextable.h56140644editdlrm
spelling.txt256110644editdlrm
sphinx-pre-install143780755editdlrm
split-man.pl6000755editdlrm
stackdelta18830755editdlrm
stackusage7940755editdlrm
subarch.include6410644editdlrm
tags.sh97890755editdlrm
test_fortify.sh22810644editdlrm
unifdef361920755editdlrm
unifdef.c356370644editdlrm
ver_linux27470755editdlrm
xen-hypercalls.sh3860644editdlrm
xz_wrap.sh5620755editdlrm
Edit: /usr/src/kernels/4.18.0-553.157.1.el8_10.x86_64/scripts/export_report.pl (4654B)
#!/usr/bin/perl # # (C) Copyright IBM Corporation 2006. # Released under GPL v2. # Author : Ram Pai (linuxram@us.ibm.com) # # Usage: export_report.pl -k Module.symvers [-o report_file ] -f *.mod.c # use warnings; use Getopt::Std; use strict; sub numerically { my $no1 = (split /\s+/, $a)[1]; my $no2 = (split /\s+/, $b)[1]; return $no1 <=> $no2; } sub alphabetically { my ($module1, $value1) = @{$a}; my ($module2, $value2) = @{$b}; return $value1 <=> $value2 || $module2 cmp $module1; } sub print_depends_on { my ($href) = @_; print "\n"; 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\n", $symbol); } print "\n"; } print "\n"; print "~"x80 , "\n"; } sub usage { print "Usage: @_ -h -k Module.symvers [ -o outputfile ] \n", "\t-f: treat all the non-option argument as .mod.c files. ", "Recommend using this as the last option\n", "\t-h: print detailed help\n", "\t-k: the path to Module.symvers file. By default uses ", "the file from the current directory\n", "\t-o outputfile: output the report to outputfile\n"; exit 0; } sub collectcfiles { 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; } my (%SYMBOL, %MODULE, %opt, @allcfiles); if (not getopts('hk:o:f',\%opt) or defined $opt{'h'}) { usage($0); } if (defined $opt{'f'}) { @allcfiles = @ARGV; } else { @allcfiles = collectcfiles(); } if (not defined $opt{'k'}) { $opt{'k'} = "Module.symvers"; } open (my $module_symvers, '<', $opt{'k'}) or die "Sorry, cannot open $opt{'k'}: $!\n"; if (defined $opt{'o'}) { open (my $out, '>', $opt{'o'}) or die "Sorry, cannot open $opt{'o'} $!\n"; select $out; } # # collect all the symbols and their attributes from the # Module.symvers file # while ( <$module_symvers> ) { chomp; my (undef, $symbol, $module, $gpl) = split; $SYMBOL { $symbol } = [ $module , "0" , $symbol, $gpl]; } close($module_symvers); # # collect the usage count of each symbol. # my $modversion_warnings = 0; foreach my $thismod (@allcfiles) { my $module; unless (open ($module, '<', $thismod)) { warn "Sorry, cannot open $thismod: $!\n"; next; } my $state=0; while ( <$module> ) { chomp; if ($state == 0) { $state = 1 if ($_ =~ /static const struct modversion_info/); next; } if ($state == 1) { $state = 2 if ($_ =~ /__attribute__\(\(section\("__versions"\)\)\)/); next; } if ($state == 2) { if ( $_ !~ /0x[0-9a-f]+,/ ) { next; } my $sym = (split /([,"])/,)[4]; my ($module, $value, $symbol, $gpl) = @{$SYMBOL{$sym}}; $SYMBOL{ $sym } = [ $module, $value+1, $symbol, $gpl]; push(@{$MODULE{$thismod}} , $sym); } } if ($state != 2) { warn "WARNING:$thismod is not built with CONFIG_MODVERSIONS enabled\n"; $modversion_warnings++; } close($module); } print "\tThis file reports the exported symbols usage patterns by in-tree\n", "\t\t\t\tmodules\n"; printf("%s\n\n\n","x"x80); printf("\t\t\t\tINDEX\n\n\n"); printf("SECTION 1: Usage counts of all exported symbols\n"); printf("SECTION 2: List of modules and the exported symbols they use\n"); printf("%s\n\n\n","x"x80); printf("SECTION 1:\tThe exported symbols and their usage count\n\n"); printf("%-25s\t%-25s\t%-5s\t%-25s\n", "Symbol", "Module", "Usage count", "export type"); # # print the list of unused exported symbols # foreach my $list (sort alphabetically values(%SYMBOL)) { my ($module, $value, $symbol, $gpl) = @{$list}; printf("%-25s\t%-25s\t%-10s\t", $symbol, $module, $value); if (defined $gpl) { printf("%-25s\n",$gpl); } else { printf("\n"); } } printf("%s\n\n\n","x"x80); 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"; for my $thismod (sort keys %MODULE) { my $list = $MODULE{$thismod}; my %depends; $thismod =~ s/\.mod\.c/.ko/; print "\t\t\t$thismod\n"; foreach my $symbol (@{$list}) { my ($module, $value, undef, $gpl) = @{$SYMBOL{$symbol}}; push (@{$depends{"$module"}}, "$symbol $value"); } print_depends_on(\%depends); }