__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
#!/usr/bin/gawk -f
# SPDX-License-Identifier: GPL-2.0
# verify_builtin_ranges.awk: Verify address range data for builtin modules
# Written by Kris Van Hees <[email protected]>
#
# Usage: verify_builtin_ranges.awk modules.builtin.ranges System.map \
#				   modules.builtin vmlinux.map vmlinux.o.map
#

# Return the module name(s) (if any) associated with the given object.
#
# If we have seen this object before, return information from the cache.
# Otherwise, retrieve it from the corresponding .cmd file.
#
function get_module_info(fn, mod, obj, s) {
	if (fn in omod)
		return omod[fn];

	if (match(fn, /\/[^/]+$/) == 0)
		return "";

	obj = fn;
	mod = "";
	fn = substr(fn, 1, RSTART) "." substr(fn, RSTART + 1) ".cmd";
	if (getline s <fn == 1) {
		if (match(s, /DKBUILD_MODFILE=['"]+[^'"]+/) > 0) {
			mod = substr(s, RSTART + 16, RLENGTH - 16);
			gsub(/['"]/, "", mod);
		} else if (match(s, /RUST_MODFILE=[^ ]+/) > 0)
			mod = substr(s, RSTART + 13, RLENGTH - 13);
	} else {
		print "ERROR: Failed to read: " fn "\n\n" \
		      "  For kernels built with O=<objdir>, cd to <objdir>\n" \
		      "  and execute this script as ./source/scripts/..." \
		      >"/dev/stderr";
		close(fn);
		total = 0;
		exit(1);
	}
	close(fn);

	# A single module (common case) also reflects objects that are not part
	# of a module.  Some of those objects have names that are also a module
	# name (e.g. core).  We check the associated module file name, and if
	# they do not match, the object is not part of a module.
	if (mod !~ / /) {
		if (!(mod in mods))
			mod = "";
	}

	gsub(/([^/ ]*\/)+/, "", mod);
	gsub(/-/, "_", mod);

	# At this point, mod is a single (valid) module name, or a list of
	# module names (that do not need validation).
	omod[obj] = mod;

	return mod;
}

# Return a representative integer value for a given hexadecimal address.
#
# Since all kernel addresses fall within the same memory region, we can safely
# strip off the first 6 hex digits before performing the hex-to-dec conversion,
# thereby avoiding integer overflows.
#
function addr2val(val) {
	sub(/^0x/, "", val);
	if (length(val) == 16)
		val = substr(val, 5);
	return strtonum("0x" val);
}

# Determine the kernel build directory to use (default is .).
#
BEGIN {
	if (ARGC < 6) {
		print "Syntax: verify_builtin_ranges.awk <ranges-file> <system-map>\n" \
		      "          <builtin-file> <vmlinux-map> <vmlinux-o-map>\n" \
		      >"/dev/stderr";
		total = 0;
		exit(1);
	}
}

# (1) Load the built-in module address range data.
#
ARGIND == 1 {
	ranges[FNR] = $0;
	rcnt++;
	next;
}

# (2) Annotate System.map symbols with module names.
#
ARGIND == 2 {
	addr = addr2val($1);
	name = $3;

	while (addr >= mod_eaddr) {
		if (sect_symb) {
			if (sect_symb != name)
				next;

			sect_base = addr - sect_off;
			if (dbg)
				printf "[%s] BASE (%s) %016x - %016x = %016x\n", sect_name, sect_symb, addr, sect_off, sect_base >"/dev/stderr";
			sect_symb = 0;
		}

		if (++ridx > rcnt)
			break;

		$0 = ranges[ridx];
		sub(/-/, " ");
		if ($4 != "=") {
			sub(/-/, " ");
			mod_saddr = strtonum("0x" $2) + sect_base;
			mod_eaddr = strtonum("0x" $3) + sect_base;
			$1 = $2 = $3 = "";
			sub(/^ +/, "");
			mod_name = $0;

			if (dbg)
				printf "[%s] %s from %016x to %016x\n", sect_name, mod_name, mod_saddr, mod_eaddr >"/dev/stderr";
		} else {
			sect_name = $1;
			sect_off = strtonum("0x" $2);
			sect_symb = $5;
		}
	}

	idx = addr"-"name;
	if (addr >= mod_saddr && addr < mod_eaddr)
		sym2mod[idx] = mod_name;

	next;
}

# Once we are done annotating the System.map, we no longer need the ranges data.
#
FNR == 1 && ARGIND == 3 {
	delete ranges;
}

# (3) Build a lookup map of built-in module names.
#
# Lines from modules.builtin will be like:
#	kernel/crypto/lzo-rle.ko
# and we record the object name "crypto/lzo-rle".
#
ARGIND == 3 {
	sub(/kernel\//, "");			# strip off "kernel/" prefix
	sub(/\.ko$/, "");			# strip off .ko suffix

	mods[$1] = 1;
	next;
}

# (4) Get a list of symbols (per object).
#
# Symbols by object are read from vmlinux.map, with fallback to vmlinux.o.map
# if vmlinux is found to have inked in vmlinux.o.
#

# If we were able to get the data we need from vmlinux.map, there is no need to
# process vmlinux.o.map.
#
FNR == 1 && ARGIND == 5 && total > 0 {
	if (dbg)
		printf "Note: %s is not needed.\n", FILENAME >"/dev/stderr";
	exit;
}

# First determine whether we are dealing with a GNU ld or LLVM lld linker map.
#
ARGIND >= 4 && FNR == 1 && NF == 7 && $1 == "VMA" && $7 == "Symbol" {
	map_is_lld = 1;
	next;
}

# (LLD) Convert a section record fronm lld format to ld format.
#
ARGIND >= 4 && map_is_lld && NF == 5 && /[0-9] [^ ]+$/ {
	$0 = $5 " 0x"$1 " 0x"$3 " load address 0x"$2;
}

# (LLD) Convert an object record from lld format to ld format.
#
ARGIND >= 4 && map_is_lld && NF == 5 && $5 ~ /:\(/ {
	if (/\.a\(/ && !/ vmlinux\.a\(/)
		next;

	gsub(/\)/, "");
	sub(/:\(/, " ");
	sub(/ vmlinux\.a\(/, " ");
	$0 = " "$6 " 0x"$1 " 0x"$3 " " $5;
}

# (LLD) Convert a symbol record from lld format to ld format.
#
ARGIND >= 4 && map_is_lld && NF == 5 && $5 ~ /^[A-Za-z_][A-Za-z0-9_]*$/ {
	$0 = "  0x" $1 " " $5;
}

# (LLD) We do not need any other ldd linker map records.
#
ARGIND >= 4 && map_is_lld && /^[0-9a-f]{16} / {
	next;
}

# Handle section records with long section names (spilling onto a 2nd line).
#
ARGIND >= 4 && !map_is_lld && NF == 1 && /^[^ ]/ {
	s = $0;
	getline;
	$0 = s " " $0;
}

# Next section - previous one is done.
#
ARGIND >= 4 && /^[^ ]/ {
	sect = 0;
}

# Get the (top level) section name.
#
ARGIND >= 4 && /^\./ {
	# Explicitly ignore a few sections that are not relevant here.
	if ($1 ~ /^\.orc_/ || $1 ~ /_sites$/ || $1 ~ /\.percpu/)
		next;

	# Sections with a 0-address can be ignored as well (in vmlinux.map).
	if (ARGIND == 4 && $2 ~ /^0x0+$/)
		next;

	sect = $1;

	next;
}

# If we are not currently in a section we care about, ignore records.
#
!sect {
	next;
}

# Handle object records with long section names (spilling onto a 2nd line).
#
ARGIND >= 4 && /^ [^ \*]/ && NF == 1 {
	# If the section name is long, the remainder of the entry is found on
	# the next line.
	s = $0;
	getline;
	$0 = s " " $0;
}

# Objects linked in from static libraries are ignored.
# If the object is vmlinux.o, we need to consult vmlinux.o.map for per-object
# symbol information
#
ARGIND == 4 && /^ [^ ]/ && NF == 4 {
	if ($4 ~ /\.a\(/)
		next;

	idx = sect":"$1;
	if (!(idx in sect_addend)) {
		sect_addend[idx] = addr2val($2);
		if (dbg)
			printf "ADDEND %s = %016x\n", idx, sect_addend[idx] >"/dev/stderr";
	}
	if ($4 == "vmlinux.o") {
		need_o_map = 1;
		next;
	}
}

# If data from vmlinux.o.map is needed, we only process section and object
# records from vmlinux.map to determine which section we need to pay attention
# to in vmlinux.o.map.  So skip everything else from vmlinux.map.
#
ARGIND == 4 && need_o_map {
	next;
}

# Get module information for the current object.
#
ARGIND >= 4 && /^ [^ ]/ && NF == 4 {
	msect = $1;
	mod_name = get_module_info($4);
	mod_eaddr = addr2val($2) + addr2val($3);

	next;
}

# Process a symbol record.
#
# Evaluate the module information obtained from vmlinux.map (or vmlinux.o.map)
# as follows:
#  - For all symbols in a given object:
#     - If the symbol is annotated with the same module name(s) that the object
#       belongs to, count it as a match.
#     - Otherwise:
#        - If the symbol is known to have duplicates of which at least one is
#          in a built-in module, disregard it.
#        - If the symbol us not annotated with any module name(s) AND the
#          object belongs to built-in modules, count it as missing.
#        - Otherwise, count it as a mismatch.
#
ARGIND >= 4 && /^ / && NF == 2 && $1 ~ /^0x/ {
	idx = sect":"msect;
	if (!(idx in sect_addend))
		next;

	addr = addr2val($1);

	# Handle the rare but annoying case where a 0-size symbol is placed at
	# the byte *after* the module range.  Based on vmlinux.map it will be
	# considered part of the current object, but it falls just beyond the
	# module address range.  Unfortunately, its address could be at the
	# start of another built-in module, so the only safe thing to do is to
	# ignore it.
	if (mod_name && addr == mod_eaddr)
		next;

	# If we are processing vmlinux.o.map, we need to apply the base address
	# of the section to the relative address on the record.
	#
	if (ARGIND == 5)
		addr += sect_addend[idx];

	idx = addr"-"$2;
	mod = "";
	if (idx in sym2mod) {
		mod = sym2mod[idx];
		if (sym2mod[idx] == mod_name) {
			mod_matches++;
			matches++;
		} else if (mod_name == "") {
			print $2 " in " mod " (should NOT be)";
			mismatches++;
		} else {
			print $2 " in " mod " (should be " mod_name ")";
			mismatches++;
		}
	} else if (mod_name != "") {
		print $2 " should be in " mod_name;
		missing++;
	} else
		matches++;

	total++;

	next;
}

# Issue the comparison report.
#
END {
	if (total) {
		printf "Verification of %s:\n", ARGV[1];
		printf "  Correct matches:  %6d (%d%% of total)\n", matches, 100 * matches / total;
		printf "    Module matches: %6d (%d%% of matches)\n", mod_matches, 100 * mod_matches / matches;
		printf "  Mismatches:       %6d (%d%% of total)\n", mismatches, 100 * mismatches / total;
		printf "  Missing:          %6d (%d%% of total)\n", missing, 100 * missing / total;

		if (mismatches || missing)
			exit(1);
	}
}

Filemanager

Name Type Size Permission Actions
atomic Folder 0755
basic Folder 0755
clang-tools Folder 0755
coccinelle Folder 0755
dtc Folder 0755
dummy-tools Folder 0755
gcc-plugins Folder 0755
gdb Folder 0755
gendwarfksyms Folder 0755
genksyms Folder 0755
include Folder 0755
ipe Folder 0755
kconfig Folder 0755
ksymoops Folder 0755
mod Folder 0755
package Folder 0755
selinux Folder 0755
tracing Folder 0755
.gitignore File 239 B 0644
Kbuild.include File 9.88 KB 0644
Kconfig.include File 3.27 KB 0644
Lindent File 502 B 0755
Makefile File 2.08 KB 0644
Makefile.asm-headers File 3.38 KB 0644
Makefile.autofdo File 808 B 0644
Makefile.btf File 1.13 KB 0644
Makefile.build File 16.76 KB 0644
Makefile.clang File 1.66 KB 0644
Makefile.clean File 1.88 KB 0644
Makefile.compiler File 3.49 KB 0644
Makefile.debug File 1.36 KB 0644
Makefile.defconf File 1.04 KB 0644
Makefile.dtbinst File 1.03 KB 0644
Makefile.dtbs File 4.89 KB 0644
Makefile.extrawarn File 7.81 KB 0644
Makefile.gcc-plugins File 2.59 KB 0644
Makefile.headersinst File 2.88 KB 0644
Makefile.host File 6.02 KB 0644
Makefile.kasan File 3.67 KB 0644
Makefile.kcov File 333 B 0644
Makefile.kcsan File 1004 B 0644
Makefile.kmsan File 208 B 0644
Makefile.lib File 20.62 KB 0644
Makefile.modfinal File 2.77 KB 0644
Makefile.modinst File 4.04 KB 0644
Makefile.modpost File 4.85 KB 0644
Makefile.package File 9.27 KB 0644
Makefile.propeller File 1.45 KB 0644
Makefile.randstruct File 511 B 0644
Makefile.ubsan File 984 B 0644
Makefile.userprogs File 1.59 KB 0644
Makefile.vdsoinst File 1.06 KB 0644
Makefile.vmlinux File 3.32 KB 0644
Makefile.vmlinux_o File 3.37 KB 0644
as-version.sh File 2.03 KB 0755
asn1_compiler.c File 35.32 KB 0644
bloat-o-meter File 3.77 KB 0755
bootgraph.pl File 5.64 KB 0755
bpf_doc.py File 33.46 KB 0755
build-version File 177 B 0755
cc-can-link.sh File 166 B 0755
cc-version.sh File 1.36 KB 0755
check-git File 298 B 0755
check-sysctl-docs File 3.66 KB 0755
check-uapi.sh File 15.05 KB 0755
check-variable-fonts.sh File 4.65 KB 0755
check_extable.sh File 4.93 KB 0755
checkdeclares.pl File 1.1 KB 0755
checkincludes.pl File 1.94 KB 0755
checkkconfigsymbols.py File 15.75 KB 0755
checkpatch.pl File 233.11 KB 0755
checkstack.pl File 5.96 KB 0755
checksyscalls.sh File 7.51 KB 0755
checktransupdate.py File 8.91 KB 0755
checkversion.pl File 2.16 KB 0755
cleanfile File 3.46 KB 0755
cleanpatch File 5.06 KB 0755
coccicheck File 7.79 KB 0755
config File 4.78 KB 0755
const_structs.checkpatch File 1.59 KB 0644
decode_stacktrace.sh File 8.49 KB 0755
decodecode File 4.86 KB 0755
depmod.sh File 723 B 0755
dev-needs.sh File 6.07 KB 0755
diffconfig File 4.12 KB 0755
documentation-file-ref-check File 5.67 KB 0755
extract-ikconfig File 1.74 KB 0755
extract-module-sig.pl File 3.66 KB 0755
extract-sys-certs.pl File 3.75 KB 0755
extract-vmlinux File 1.66 KB 0755
extract_xc3028.pl File 44.62 KB 0755
faddr2line File 10.8 KB 0755
file-size.sh File 86 B 0755
find-unused-docs.sh File 1.27 KB 0755
gcc-x86_32-has-stack-protector.sh File 405 B 0755
gcc-x86_64-has-stack-protector.sh File 195 B 0755
gen-randstruct-seed.sh File 228 B 0755
gen_packed_field_checks.c File 1.19 KB 0644
generate_builtin_ranges.awk File 15.3 KB 0755
generate_initcall_order.pl File 5.95 KB 0755
generate_rust_analyzer.py File 6.17 KB 0755
generate_rust_target.rs File 8.57 KB 0644
get_abi.pl File 25.36 KB 0755
get_dvb_firmware File 24.54 KB 0755
get_feat.pl File 14.61 KB 0755
get_maintainer.pl File 67.87 KB 0755
gfp-translate File 2.08 KB 0755
git.orderFile File 564 B 0644
head-object-list.txt File 1.28 KB 0644
headerdep.pl File 3.5 KB 0755
headers_install.sh File 2.71 KB 0755
insert-sys-cert.c File 13.08 KB 0644
install.sh File 1.06 KB 0755
jobserver-exec File 2.56 KB 0755
kallsyms.c File 17.7 KB 0644
kernel-doc File 77.71 KB 0755
ld-version.sh File 1.82 KB 0755
leaking_addresses.pl File 14.59 KB 0755
link-vmlinux.sh File 7.59 KB 0755
macro_checker.py File 4.1 KB 0755
make_fit.py File 10.45 KB 0755
makelst File 808 B 0755
markup_oops.pl File 7.92 KB 0755
min-tool-version.sh File 630 B 0755
misc-check File 509 B 0755
mkcompile_h File 642 B 0755
mksysmap File 2.01 KB 0755
mkuboot.sh File 414 B 0755
module-common.c File 480 B 0644
module.lds.S File 1.67 KB 0644
modules-check.sh File 443 B 0755
nsdeps File 1.56 KB 0644
objdiff File 2.83 KB 0755
objdump-func File 848 B 0755
orc_hash.sh File 316 B 0644
pahole-version.sh File 269 B 0755
parse-maintainers.pl File 4.54 KB 0755
patch-kernel File 9.95 KB 0755
profile2linkerlist.pl File 414 B 0755
prune-kernel File 912 B 0755
recordmcount.c File 17.51 KB 0644
recordmcount.h File 19.37 KB 0644
recordmcount.pl File 17.34 KB 0755
relocs_check.sh File 717 B 0755
remove-stale-files File 1.08 KB 0755
rust_is_available.sh File 10.18 KB 0755
rust_is_available_bindgen_0_66.h File 54 B 0644
rust_is_available_bindgen_libclang.h File 91 B 0644
rust_is_available_bindgen_libclang_concat.h File 69 B 0644
rust_is_available_test.py File 20.35 KB 0755
rustc-llvm-version.sh File 482 B 0755
rustc-version.sh File 598 B 0755
rustdoc_test_builder.rs File 3.25 KB 0644
rustdoc_test_gen.rs File 9.47 KB 0644
setlocalversion File 5.2 KB 0755
show_delta File 3.04 KB 0755
sign-file.c File 10.4 KB 0644
sorttable.c File 22.86 KB 0644
spdxcheck-test.sh File 284 B 0644
spdxcheck.py File 15.73 KB 0755
spdxexclude File 417 B 0644
spelling.txt File 35.64 KB 0644
sphinx-pre-install File 25.11 KB 0755
split-man.pl File 604 B 0755
ssl-common.h File 678 B 0644
stackdelta File 1.84 KB 0755
stackusage File 794 B 0755
subarch.include File 658 B 0644
syscall.tbl File 16.99 KB 0644
syscallhdr.sh File 1.89 KB 0755
syscallnr.sh File 1.45 KB 0755
syscalltbl.sh File 1.82 KB 0755
tags.sh File 11.25 KB 0755
tools-support-relr.sh File 726 B 0755
unifdef.c File 34.84 KB 0644
ver_linux File 2.59 KB 0755
verify_builtin_ranges.awk File 9.12 KB 0755
xen-hypercalls.sh File 386 B 0755
xz_wrap.sh File 3.44 KB 0755
Filemanager