Search notes:

Kernel sources: scripts

The Kernel sources scripts directory containes sources for various helper programs used throughout the Kernel for the build process.
asn1_compiler.c
as-version.sh Print the assembler name and its version in a 5 or 6-digit form. Also, perform the minimum version check. Compare with cc-version.sh and ld-version.sh
bloat-o-meter Simple script used to compare the symbol sizes of 2 object files
bootgraph.pl This script turns a dmesg output (dmesg | perl scripts/bootgraph.pl > output.svg) into a SVG graphic that shows which functions take how much time. For this script to work, the kernel needs to be compiled with the CONFIG_PRINTK_TIME configuration option enabled and with initcall_debug passed on the kernel command line.
bpf_doc.py
cc-can-link.sh
cc-version.sh Print the C compiler name and its version in a 5 or 6-digit form. Also, perform the minimum version check. Compare with as-version.sh and ld-version.sh
checkdeclares.pl find structs declared more than once
check_extable.sh
check-git Succeed if we're in a git repository
checkincludes.pl This script checks for duplicate includes. It also has support to remove them in place.
checkkconfigsymbols.py Find Kconfig symbols that are referenced but not defined.
checkpatch.pl See also cleanfile and cleanpatch
checkstack.pl Check the stack usage of functions
checksyscalls.sh Check if current architecture are missing any function calls compared to i386.
check-sysctl-docs Check sysctl documentation against source files
checkversion.pl finds uses of all macros in <linux/version.h> where the source files do not #include <linux/version.h>, or cases of including <linux/version.h> where it is not needed.
cleanfile Clean a text file or directory of text files of stealth whitespace. See also cleanpatch and checkpatch.pl
cleanpatch Clean a patch file or directory of patch files of stealth whitespace. See also cleanfile and checkpatch.pl
coccicheck Documented at Documentation/dev-tools/coccinelle.rst.
config Manipulate options in a .config file from the command line
const_structs.checkpatch List of structs ?
decodecode Disassemble the Code: line in Linux oopses
decode_stacktrace.sh
depmod.sh A depmod wrapper used by the toplevel Makefile
dev-needs.sh The script takes as input a list of one or more device directories under /sys/devices and then lists the probe dependency chain (suppliers and parents) of these devices.
diffconfig Utility for comparing two .config files. Using standard diff to compare .config files often includes extraneous and distracting information.
documentation-file-ref-check Treewide grep for references to files under Documentation, and report non-existing files in stderr.
export_report.pl
extract-ikconfig Extract the .config file from a kernel image (kernel must be compiled with CONFIG_IKCONFIG).
extract-module-sig.pl Reads the module file and writes out some or all of the signature section to stdout.
extract-sys-certs.pl
extract-vmlinux Extract uncompressed vmlinux from a kernel image
extract_xc3028.pl
faddr2line Translate stack dump function offsets.
file-size.sh Returns the size of a file or directory
find-unused-docs.sh Detect files with kernel-doc comments for exported functions that are not included in documentation.
gcc-x86_32-has-stack-protector.sh More info at https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81708 ?
gcc-x86_64-has-stack-protector.sh
generate_initcall_order.pl Generates a linker script that specifies the correct initcall order.
generate_rust_analyzer.py Generates the rust-project.json file for rust-analyzer
generate_rust_target.rs The custom target specification file generator for rustc.
gen-randstruct-seed.sh
get_abi.pl Parses the Linux ABI files and produce a ReST book.
get_dvb_firmware
get_feat.pl Parses the Linux Feature files and produce a ReST book.
get_maintainer.pl Prints selected maintainer information for the files modified in a patch or for a file.
gfp-translate Translates the bits making up a GFP mask
headerdep.pl Detect cycles in the header file dependency graph
headers_install.sh Prepares kernel header files for use by user space.
head-object-list.txt Objects (that contain an entry point?) that will be placed at the head of vmlinux.
insert-sys-cert.c Write the contents of a certfile into kernel symbol system_extra_cert.
install.sh See also /sbin/installkernel, adapted from code in arch/i386/boot/Makefile.
is_rust_module.sh Tests if a module (module.ko) is a Rust module. See also https://github.com/rust-lang/rust/pull/97550
jobserver-exec Determines how many parallel tasks make is expecting, as it is not exposed via an special variables, reserves them all, runs a subprocess with PARALLELISM environment variable set, and releases the jobs back again.
kallsyms.c Source code to create a binary (scripts/kallsyms) that creates assembler source containing symbol information. See also function kallsyms in scripts/link-vmlinux.sh.
Kbuild.include Generic definitions to be included in other makefiles (Included for example from the top-level Makefile if not a mixed build.).
Kconfig.include Kconfig helper macros
kernel-doc Read C language source or header FILEs, extract embedded documentation comments and print formatted documentation to standard output.
ld-version.sh Print the linker name and its version in a 5 or 6-digit form. Also, perform the minimum version check. Compare with as-version.sh and cc-version.sh
leaking_addresses.pl Scan the kernel for potential leaking addresses.
Lindent Wrapper for indent. The L stands for latest style. See also Documentatin/process/coding-style.rst
link-vmlinux.sh Link built-in.a archive files to vmlinux.
makelst
markup_oops.pl
min-tool-version.sh Print the minimum supported version of a given tool (See also Documentation/process/changes.rst)
misc-check Detect files that are tracked but ignored by git. This is checked only when ${KBUILD_EXTRA_WARN} contains 1, git is installed and the source tree is tracked by git. misc-check seems to be invoked as one of the last (if not the last) steps when invoking make in the kernel source root directory.
mkcompile_h Create include/generated/compile.h.
mksysmap Create the System.map file based on the vmlinux file
mkuboot.sh Build U-Boot image when mkimage tool is available.
module.lds.S Common module linker script, used when linking a module.
modules-check.sh This script checks if the module names in modules.order files are unique by basically executing: sed 's:.*/::' $1 | sort | uniq -d
nsdeps Linux kernel symbol namespace import generator
objdiff Validates that a commit or series of commits didn't change object code.
objdump-func Disassembles a single function.
orc_hash.sh
pahole-flags.sh Prints pahole's version in a 3-digit form, such as 119 for v1.19.
pahole-version.sh
parse-maintainers.pl
patch-kernel Apply kernel patches
profile2linkerlist.pl Takes a (sorted) output of readprofile and turns it into a list suitable for linker scripts
prune-kernel Purge /boot and /lib/modules (especially when using CONFIG_LOCALVERSION_AUTO)
recordmcount.c
recordmcount.h
recordmcount.pl makes a section called __mcount_loc that holds all the offsets to the calls to mcount.
relocs_check.sh Get a list of all the relocations, remove from it the relocations that are known to be legitimate and return this list to arch specific script that will look for suspicious relocations
remove-stale-files
rust_is_available_bindgen_libclang.h
rust_is_available.sh Tests whether a suitable Rust toolchain is available.
setlocalversion Adds local version information from the version control systems git, mercurial (hg) and subversion (svn).
show_delta Read list of printk messages instrumented with time data, and format with time deltas. Also able to show the times relative to a fixed point.
sign-file.c Signs a module file using the given key.
sorttable.c, sorttable.h Source code for the executable source/sorttable which sorts the kernel's __ex_table section (alter the vmlinux file in-place). sorttable is used in scripts/link-vmlinux.sh. See also CONFIG_BUILDTIME_TABLE_SORT.
spdxcheck.py
spdxcheck-test.sh
spdxexclude Patterns for excluding files and directories (LICENSES/, license-rules.rst, kernel/configs/, arch/*/configs/, /CREDITS, /MAINTAINERS, /README).
spelling.txt Originally from Debian's Lintian tool - but with false positives removed and other words added. This file is used in checkpatch.pl.
sphinx-pre-install
split-man.pl Produce man pages from kernel-doc comments
stackdelta Read two files produced by the stackusage script, and show the delta between them..
stackusage See also stackdelta
subarch.include Determines the value of SUBARCH. Included from the top-level Makefile if not a mixed build.
syscallhdr.sh Generates a syscall number header (apparently from a syscall.tbl file)
syscallnr.sh Generates a syscall number header (apparently from a syscall.tbl file)
syscalltbl.sh Generates a syscall table header (apparently from a syscall.tbl file)
tags.sh Generates tags, gtags or cscope files
test_fortify.sh
tools-support-relr.sh
unifdef.c remove ifdef'ed lines
ver_linux awk script that prints version of some tools (typically by using the tool's --version, -V etc. command line option).
xen-hypercalls.sh
xz_wrap.sh Wrapper for xz to compress the Kernel image using appropriate compression options depending on the architecture.

Makefile*

The Makefile* files contain all definitions and rules etc. that are used to build the kernel based on the kbuild makefiles.
Makefile
Makefile.asm-generic Scans arch/$(SRCARCH)/include/(uapi/)/asm/Kbuild for file names with generic-y and creates a small wrapper include file (referencing include/asm-generic?) for each file name in arch/$(SRCARCH)/include/generated/(uapi/)/asm.
Makefile.build
Makefile.clang
Makefile.clean
Makefile.compiler
Makefile.debug
Makefile.defconf
Makefile.dtbinst Installs all dtb files listed in $(dtb-y) either in the INSTALL_DTBS_PATH directory or the default location $INSTALL_PATH/dtbs/$KERNELRELEASE
Makefile.extrawarn
Makefile.gcc-plugins Directory for the GCC plugins, see Documentation/kbuild/gcc-plugins.rst
Makefile.headersinst Installs headers: All headers under include/uapi, include/generated/uapi, arch/<arch>/include/uapi and arch/<arch>/include/generated/uapi are exported. They are preprocessed to remove __KERNEL__ section of the file.
Makefile.host
Makefile.kasan
Makefile.kcov
Makefile.kcsan
Makefile.kmsan
Makefile.lib
Makefile.modfinal Module final link
Makefile.modinst Install modules
Makefile.modpost Module versions
Makefile.package Makefile for the different targets used to generate full packages of a kernel
Makefile.randstruct
Makefile.ubsan Enable available and selected UBSAN features.
Makefile.userprogs Build userspace programs for the target system
Makefile.vmlinux
Makefile.vmlinux_o
Subdirectories
atomic
basic Which contains one source file only (Version 6.5): fixdep.c
clang-tools
coccinelle
dtc
dummy-tools
gcc-plugins
gdb
genksyms
kconfig
ksymoops
mod Does it have something to do with the macros EXPORT_SYMBOL, EXPORT_SYMBOL_GPL etc. (defined in include/linux/module.h)?
package
selinux
tracing

See also

Documentation/sphinx/parse-headers.pl
Linux kernel source tree

Index