Linux cpanel.rrshost.in 5.15.0-25-generic #25-Ubuntu SMP Wed Mar 30 15:54:22 UTC 2022 x86_64
Apache
: 109.123.238.221 | : 172.70.130.166
128 Domain
8.2.28
aev999
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
HASH IDENTIFIER
README
+ Create Folder
+ Create File
/
usr /
src /
linux-headers-5.15.0-25-generic /
scripts /
[ HOME SHELL ]
Name
Size
Permission
Action
atomic
[ DIR ]
drwxr-xr-x
basic
[ DIR ]
drwxr-xr-x
clang-tools
[ DIR ]
drwxr-xr-x
coccinelle
[ DIR ]
drwxr-xr-x
dtc
[ DIR ]
drwxr-xr-x
dummy-tools
[ DIR ]
drwxr-xr-x
gcc-plugins
[ DIR ]
drwxr-xr-x
gdb
[ DIR ]
drwxr-xr-x
genksyms
[ DIR ]
drwxr-xr-x
kconfig
[ DIR ]
drwxr-xr-x
ksymoops
[ DIR ]
drwxr-xr-x
mod
[ DIR ]
drwxr-xr-x
package
[ DIR ]
drwxr-xr-x
selinux
[ DIR ]
drwxr-xr-x
tracing
[ DIR ]
drwxr-xr-x
.asn1_compiler.cmd
636
B
-rw-r--r--
.bin2c.cmd
385
B
-rw-r--r--
.extract-cert.cmd
463
B
-rw-r--r--
.insert-sys-cert.cmd
485
B
-rw-r--r--
.kallsyms.cmd
415
B
-rw-r--r--
.sign-file.cmd
433
B
-rw-r--r--
.sorttable.cmd
674
B
-rw-r--r--
Kbuild.include
9.33
KB
-rw-r--r--
Kconfig.include
2.56
KB
-rw-r--r--
Lindent
502
B
-rwxr-xr-x
Makefile
1.63
KB
-rw-r--r--
Makefile.asm-generic
1.82
KB
-rw-r--r--
Makefile.build
19.23
KB
-rw-r--r--
Makefile.clang
1.59
KB
-rw-r--r--
Makefile.clean
2.2
KB
-rw-r--r--
Makefile.compiler
2.69
KB
-rw-r--r--
Makefile.dtbinst
999
B
-rw-r--r--
Makefile.extrawarn
2.83
KB
-rw-r--r--
Makefile.gcc-plugins
2.69
KB
-rw-r--r--
Makefile.headersinst
2.88
KB
-rw-r--r--
Makefile.host
4.63
KB
-rw-r--r--
Makefile.kasan
1.67
KB
-rw-r--r--
Makefile.kcov
333
B
-rw-r--r--
Makefile.kcsan
739
B
-rw-r--r--
Makefile.lib
18.49
KB
-rw-r--r--
Makefile.modfinal
2.7
KB
-rw-r--r--
Makefile.modinst
2.39
KB
-rw-r--r--
Makefile.modpost
4.42
KB
-rw-r--r--
Makefile.package
6.61
KB
-rw-r--r--
Makefile.ubsan
837
B
-rw-r--r--
Makefile.userprogs
1.57
KB
-rw-r--r--
adjust_autoksyms.sh
2.07
KB
-rwxr-xr-x
as-version.sh
2.02
KB
-rwxr-xr-x
asn1_compiler
34.28
KB
-rwxr-xr-x
asn1_compiler.c
35.32
KB
-rw-r--r--
bin2c
15.71
KB
-rwxr-xr-x
bin2c.c
743
B
-rw-r--r--
bloat-o-meter
3.36
KB
-rwxr-xr-x
bootgraph.pl
5.64
KB
-rwxr-xr-x
bpf_doc.py
24.97
KB
-rwxr-xr-x
cc-can-link.sh
166
B
-rwxr-xr-x
cc-version.sh
1.51
KB
-rwxr-xr-x
check-sysctl-docs
4.37
KB
-rwxr-xr-x
check_extable.sh
4.93
KB
-rwxr-xr-x
checkdeclares.pl
1.1
KB
-rwxr-xr-x
checkincludes.pl
1.94
KB
-rwxr-xr-x
checkkconfigsymbols.py
15.35
KB
-rwxr-xr-x
checkpatch.pl
223.7
KB
-rwxr-xr-x
checkstack.pl
5.9
KB
-rwxr-xr-x
checksyscalls.sh
7.42
KB
-rwxr-xr-x
checkversion.pl
2.16
KB
-rwxr-xr-x
cleanfile
3.46
KB
-rwxr-xr-x
cleanpatch
5.06
KB
-rwxr-xr-x
coccicheck
7.89
KB
-rwxr-xr-x
config
4.67
KB
-rwxr-xr-x
const_structs.checkpatch
1009
B
-rw-r--r--
decode_stacktrace.sh
6.55
KB
-rwxr-xr-x
decodecode
2.88
KB
-rwxr-xr-x
depmod.sh
1.41
KB
-rwxr-xr-x
dev-needs.sh
6.07
KB
-rwxr-xr-x
diffconfig
3.72
KB
-rwxr-xr-x
documentation-file-ref-check
5.55
KB
-rwxr-xr-x
export_report.pl
4.5
KB
-rwxr-xr-x
extract-cert
17.23
KB
-rwxr-xr-x
extract-cert.c
3.46
KB
-rw-r--r--
extract-ikconfig
1.69
KB
-rwxr-xr-x
extract-module-sig.pl
3.66
KB
-rwxr-xr-x
extract-sys-certs.pl
3.75
KB
-rwxr-xr-x
extract-vmlinux
1.66
KB
-rwxr-xr-x
extract_xc3028.pl
44.62
KB
-rwxr-xr-x
faddr2line
6.15
KB
-rwxr-xr-x
file-size.sh
86
B
-rwxr-xr-x
find-unused-docs.sh
1.27
KB
-rwxr-xr-x
gcc-goto.sh
511
B
-rwxr-xr-x
gcc-ld
711
B
-rwxr-xr-x
gcc-x86_32-has-stack-protector...
408
B
-rwxr-xr-x
gcc-x86_64-has-stack-protector...
198
B
-rwxr-xr-x
gen_autoksyms.sh
1.47
KB
-rwxr-xr-x
gen_ksymdeps.sh
556
B
-rwxr-xr-x
generate_initcall_order.pl
5.95
KB
-rwxr-xr-x
get_abi.pl
15.1
KB
-rwxr-xr-x
get_dvb_firmware
24.54
KB
-rwxr-xr-x
get_feat.pl
14.34
KB
-rwxr-xr-x
get_maintainer.pl
67.13
KB
-rwxr-xr-x
gfp-translate
1.69
KB
-rwxr-xr-x
headerdep.pl
3.5
KB
-rwxr-xr-x
headers_check.pl
3.73
KB
-rwxr-xr-x
headers_install.sh
3.35
KB
-rwxr-xr-x
insert-sys-cert
21.45
KB
-rwxr-xr-x
insert-sys-cert.c
13.08
KB
-rw-r--r--
jobserver-exec
2.16
KB
-rwxr-xr-x
kallsyms
21.61
KB
-rwxr-xr-x
kallsyms.c
18.06
KB
-rw-r--r--
kernel-doc
68.21
KB
-rwxr-xr-x
ld-version.sh
1.67
KB
-rwxr-xr-x
leaking_addresses.pl
12.8
KB
-rwxr-xr-x
link-vmlinux.sh
10.67
KB
-rwxr-xr-x
makelst
808
B
-rwxr-xr-x
markup_oops.pl
7.92
KB
-rwxr-xr-x
min-tool-version.sh
558
B
-rwxr-xr-x
mkcompile_h
2.48
KB
-rwxr-xr-x
mksysmap
1.33
KB
-rwxr-xr-x
mkuboot.sh
414
B
-rwxr-xr-x
module.lds
485
B
-rw-r--r--
module.lds.S
1.54
KB
-rw-r--r--
modules-check.sh
427
B
-rwxr-xr-x
nsdeps
1.72
KB
-rw-r--r--
objdiff
2.84
KB
-rwxr-xr-x
pahole-flags.sh
502
B
-rwxr-xr-x
pahole-version.sh
269
B
-rwxr-xr-x
parse-maintainers.pl
4.54
KB
-rwxr-xr-x
patch-kernel
9.95
KB
-rwxr-xr-x
profile2linkerlist.pl
414
B
-rwxr-xr-x
prune-kernel
708
B
-rwxr-xr-x
recordmcount.c
16.69
KB
-rw-r--r--
recordmcount.h
19.37
KB
-rw-r--r--
recordmcount.pl
17.63
KB
-rwxr-xr-x
remove-stale-files
1.3
KB
-rwxr-xr-x
setlocalversion
3.5
KB
-rwxr-xr-x
show_delta
3.01
KB
-rwxr-xr-x
sign-file
25.8
KB
-rwxr-xr-x
sign-file.c
9.76
KB
-rw-r--r--
sorttable
20.81
KB
-rwxr-xr-x
sorttable.c
8.74
KB
-rw-r--r--
sorttable.h
9.65
KB
-rw-r--r--
spdxcheck-test.sh
277
B
-rw-r--r--
spdxcheck.py
10.09
KB
-rwxr-xr-x
spelling.txt
31.88
KB
-rw-r--r--
sphinx-pre-install
24.45
KB
-rwxr-xr-x
split-man.pl
604
B
-rwxr-xr-x
stackdelta
1.84
KB
-rwxr-xr-x
stackusage
794
B
-rwxr-xr-x
subarch.include
619
B
-rw-r--r--
syscallhdr.sh
1.89
KB
-rwxr-xr-x
syscallnr.sh
1.45
KB
-rwxr-xr-x
syscalltbl.sh
1.45
KB
-rwxr-xr-x
tags.sh
9.55
KB
-rwxr-xr-x
tools-support-relr.sh
546
B
-rwxr-xr-x
ubuntu-retpoline-extract-one
7.26
KB
-rw-r--r--
unifdef.c
34.8
KB
-rw-r--r--
ver_linux
2.59
KB
-rwxr-xr-x
xen-hypercalls.sh
386
B
-rwxr-xr-x
xz_wrap.sh
563
B
-rwxr-xr-x
Delete
Unzip
Zip
${this.title}
Close
Code Editor : generate_initcall_order.pl
#!/usr/bin/env perl # SPDX-License-Identifier: GPL-2.0 # # Generates a linker script that specifies the correct initcall order. # # Copyright (C) 2019 Google LLC use strict; use warnings; use IO::Handle; use IO::Select; use POSIX ":sys_wait_h"; my $nm = $ENV{'NM'} || die "$0: ERROR: NM not set?"; my $objtree = $ENV{'objtree'} || '.'; ## currently active child processes my $jobs = {}; # child process pid -> file handle ## results from child processes my $results = {}; # object index -> [ { level, secname }, ... ] ## reads _NPROCESSORS_ONLN to determine the maximum number of processes to ## start sub get_online_processors { open(my $fh, "getconf _NPROCESSORS_ONLN 2>/dev/null |") or die "$0: ERROR: failed to execute getconf: $!"; my $procs = <$fh>; close($fh); if (!($procs =~ /^\d+$/)) { return 1; } return int($procs); } ## writes results to the parent process ## format: <file index> <initcall level> <base initcall section name> sub write_results { my ($index, $initcalls) = @_; # sort by the counter value to ensure the order of initcalls within # each object file is correct foreach my $counter (sort { $a <=> $b } keys(%{$initcalls})) { my $level = $initcalls->{$counter}->{'level'}; # section name for the initcall function my $secname = $initcalls->{$counter}->{'module'} . '__' . $counter . '_' . $initcalls->{$counter}->{'line'} . '_' . $initcalls->{$counter}->{'function'}; print "$index $level $secname\n"; } } ## reads a result line from a child process and adds it to the $results array sub read_results{ my ($fh) = @_; # each child prints out a full line w/ autoflush and exits after the # last line, so even if buffered I/O blocks here, it shouldn't block # very long my $data = <$fh>; if (!defined($data)) { return 0; } chomp($data); my ($index, $level, $secname) = $data =~ /^(\d+)\ ([^\ ]+)\ (.*)$/; if (!defined($index) || !defined($level) || !defined($secname)) { die "$0: ERROR: child process returned invalid data: $data\n"; } $index = int($index); if (!exists($results->{$index})) { $results->{$index} = []; } push (@{$results->{$index}}, { 'level' => $level, 'secname' => $secname }); return 1; } ## finds initcalls from an object file or all object files in an archive, and ## writes results back to the parent process sub find_initcalls { my ($index, $file) = @_; die "$0: ERROR: file $file doesn't exist?" if (! -f $file); open(my $fh, "\"$nm\" --defined-only \"$file\" 2>/dev/null |") or die "$0: ERROR: failed to execute \"$nm\": $!"; my $initcalls = {}; while (<$fh>) { chomp; # check for the start of a new object file (if processing an # archive) my ($path)= $_ =~ /^(.+)\:$/; if (defined($path)) { write_results($index, $initcalls); $initcalls = {}; next; } # look for an initcall my ($module, $counter, $line, $symbol) = $_ =~ /[a-z]\s+__initcall__(\S*)__(\d+)_(\d+)_(.*)$/; if (!defined($module)) { $module = '' } if (!defined($counter) || !defined($line) || !defined($symbol)) { next; } # parse initcall level my ($function, $level) = $symbol =~ /^(.*)((early|rootfs|con|[0-9])s?)$/; die "$0: ERROR: invalid initcall name $symbol in $file($path)" if (!defined($function) || !defined($level)); $initcalls->{$counter} = { 'module' => $module, 'line' => $line, 'function' => $function, 'level' => $level, }; } close($fh); write_results($index, $initcalls); } ## waits for any child process to complete, reads the results, and adds them to ## the $results array for later processing sub wait_for_results { my ($select) = @_; my $pid = 0; do { # unblock children that may have a full write buffer foreach my $fh ($select->can_read(0)) { read_results($fh); } # check for children that have exited, read the remaining data # from them, and clean up $pid = waitpid(-1, WNOHANG); if ($pid > 0) { if (!exists($jobs->{$pid})) { next; } my $fh = $jobs->{$pid}; $select->remove($fh); while (read_results($fh)) { # until eof } close($fh); delete($jobs->{$pid}); } } while ($pid > 0); } ## forks a child to process each file passed in the command line and collects ## the results sub process_files { my $index = 0; my $njobs = $ENV{'PARALLELISM'} || get_online_processors(); my $select = IO::Select->new(); while (my $file = shift(@ARGV)) { # fork a child process and read it's stdout my $pid = open(my $fh, '-|'); if (!defined($pid)) { die "$0: ERROR: failed to fork: $!"; } elsif ($pid) { # save the child process pid and the file handle $select->add($fh); $jobs->{$pid} = $fh; } else { # in the child process STDOUT->autoflush(1); find_initcalls($index, "$objtree/$file"); exit; } $index++; # limit the number of children to $njobs if (scalar(keys(%{$jobs})) >= $njobs) { wait_for_results($select); } } # wait for the remaining children to complete while (scalar(keys(%{$jobs})) > 0) { wait_for_results($select); } } sub generate_initcall_lds() { process_files(); my $sections = {}; # level -> [ secname, ...] # sort results to retain link order and split to sections per # initcall level foreach my $index (sort { $a <=> $b } keys(%{$results})) { foreach my $result (@{$results->{$index}}) { my $level = $result->{'level'}; if (!exists($sections->{$level})) { $sections->{$level} = []; } push(@{$sections->{$level}}, $result->{'secname'}); } } die "$0: ERROR: no initcalls?" if (!keys(%{$sections})); # print out a linker script that defines the order of initcalls for # each level print "SECTIONS {\n"; foreach my $level (sort(keys(%{$sections}))) { my $section; if ($level eq 'con') { $section = '.con_initcall.init'; } else { $section = ".initcall${level}.init"; } print "\t${section} : {\n"; foreach my $secname (@{$sections->{$level}}) { print "\t\t*(${section}..${secname}) ;\n"; } print "\t}\n"; } print "}\n"; } generate_initcall_lds();
Close