/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/link-vmlinux.sh (9176B)
#!/bin/sh # SPDX-License-Identifier: GPL-2.0 # # link vmlinux # # vmlinux is linked from the objects selected by $(KBUILD_VMLINUX_INIT) and # $(KBUILD_VMLINUX_MAIN) and $(KBUILD_VMLINUX_LIBS). Most are built-in.a files # from top-level directories in the kernel tree, others are specified in # arch/$(ARCH)/Makefile. Ordering when linking is important, and # $(KBUILD_VMLINUX_INIT) must be first. $(KBUILD_VMLINUX_LIBS) are archives # which are linked conditionally (not within --whole-archive), and do not # require symbol indexes added. # # vmlinux # ^ # | # +-< $(KBUILD_VMLINUX_INIT) # | +--< init/version.o + more # | # +--< $(KBUILD_VMLINUX_MAIN) # | +--< drivers/built-in.a mm/built-in.a + more # | # +--< $(KBUILD_VMLINUX_LIBS) # | +--< lib/lib.a + more # | # +-< ${kallsymso} (see description in KALLSYMS section) # # vmlinux version (uname -v) cannot be updated during normal # descending-into-subdirs phase since we do not yet know if we need to # update vmlinux. # Therefore this step is delayed until just before final link of vmlinux. # # System.map is generated to document addresses of all kernel symbols # Error out on error set -e # Nice output in kbuild format # Will be supressed by "make -s" info() { if [ "${quiet}" != "silent_" ]; then printf " %-7s %s\n" "${1}" "${2}" fi } # Thin archive build here makes a final archive with symbol table and indexes # from vmlinux objects INIT and MAIN, which can be used as input to linker. # KBUILD_VMLINUX_LIBS archives should already have symbol table and indexes # added. # # Traditional incremental style of link does not require this step # # built-in.a output file # archive_builtin() { info AR built-in.a rm -f built-in.a; ${AR} rcsTP${KBUILD_ARFLAGS} built-in.a \ ${KBUILD_VMLINUX_INIT} \ ${KBUILD_VMLINUX_MAIN} } # Link of vmlinux.o used for section mismatch analysis # ${1} output file modpost_link() { local objects objects="--whole-archive \ built-in.a \ --no-whole-archive \ --start-group \ ${KBUILD_VMLINUX_LIBS} \ --end-group" ${LD} ${LDFLAGS} -r -o ${1} ${objects} } # Link of vmlinux # ${1} - output file # ${2}, ${3}, ... - optional extra .o files vmlinux_link() { local lds="${objtree}/${KBUILD_LDS}" local output=${1} local objects local strip_debug info LD ${output} # skip output file argument shift # The kallsyms linking does not need debug symbols included. if [ "$output" != "${output#.tmp_vmlinux.kallsyms}" ] ; then strip_debug=-Wl,--strip-debug fi if [ "${SRCARCH}" != "um" ]; then objects="--whole-archive \ built-in.a \ --no-whole-archive \ --start-group \ ${KBUILD_VMLINUX_LIBS} \ --end-group \ ${@}" ${LD} ${LDFLAGS} ${LDFLAGS_vmlinux} \ ${strip_debug#-Wl,} \ -o ${output} \ -T ${lds} ${objects} else objects="-Wl,--whole-archive \ built-in.a \ -Wl,--no-whole-archive \ -Wl,--start-group \ ${KBUILD_VMLINUX_LIBS} \ -Wl,--end-group \ ${@}" ${CC} ${CFLAGS_vmlinux} \ ${strip_debug} \ -o ${output} \ -Wl,-T,${lds} \ ${objects} \ -lutil -lrt -lpthread rm -f linux fi } # generate .BTF typeinfo from DWARF debuginfo # ${1} - vmlinux image # ${2} - file to dump raw BTF data into gen_btf() { local pahole_ver local extra_paholeopt= if ! [ -x "$(command -v ${PAHOLE})" ]; then echo >&2 "BTF: ${1}: pahole (${PAHOLE}) is not available" return 1 fi pahole_ver=$(${PAHOLE} --version | sed -E 's/v([0-9]+)\.([0-9]+)/\1\2/') if [ "${pahole_ver}" -lt "116" ]; then echo >&2 "BTF: ${1}: pahole version $(${PAHOLE} --version) is too old, need at least v1.16" return 1 fi vmlinux_link ${1} if [ "${pahole_ver}" -ge "121" ]; then extra_paholeopt="${extra_paholeopt} --btf_gen_floats" fi info "BTF" ${2} LLVM_OBJCOPY="${OBJCOPY}" ${PAHOLE} -J ${extra_paholeopt} ${1} # Create ${2} which contains just .BTF section but no symbols. Add # SHF_ALLOC because .BTF will be part of the vmlinux image. --strip-all # deletes all symbols including __start_BTF and __stop_BTF, which will # be redefined in the linker script. Add 2>/dev/null to suppress GNU # objcopy warnings: "empty loadable segment detected at ..." ${OBJCOPY} --only-section=.BTF --set-section-flags .BTF=alloc,readonly \ --strip-all ${1} ${2} 2>/dev/null # Change e_type to ET_REL so that it can be used to link final vmlinux. # Unlike GNU ld, lld does not allow an ET_EXEC input. printf '\1' | dd of=${2} conv=notrunc bs=1 seek=16 status=none } # Create ${2} .o file with all symbols from the ${1} object file kallsyms() { info KSYM ${2} local kallsymopt; if [ -n "${CONFIG_KALLSYMS_ALL}" ]; then kallsymopt="${kallsymopt} --all-symbols" fi if [ -n "${CONFIG_KALLSYMS_ABSOLUTE_PERCPU}" ]; then kallsymopt="${kallsymopt} --absolute-percpu" fi if [ -n "${CONFIG_KALLSYMS_BASE_RELATIVE}" ]; then kallsymopt="${kallsymopt} --base-relative" fi local aflags="${KBUILD_AFLAGS} ${KBUILD_AFLAGS_KERNEL} \ ${NOSTDINC_FLAGS} ${LINUXINCLUDE} ${KBUILD_CPPFLAGS}" local afile="`basename ${2} .o`.S" ${NM} -n ${1} | scripts/kallsyms ${kallsymopt} > ${afile} ${CC} ${aflags} -c -o ${2} ${afile} } # Perform one step in kallsyms generation, including temporary linking of # vmlinux. kallsyms_step() { kallsymso_prev=${kallsymso} kallsyms_vmlinux=.tmp_vmlinux.kallsyms${1} kallsymso=${kallsyms_vmlinux}.o vmlinux_link ${kallsyms_vmlinux} "${kallsymso_prev}" ${btf_vmlinux_bin_o} kallsyms ${kallsyms_vmlinux} ${kallsymso} } # Create map file with all symbols from ${1} # See mksymap for additional details mksysmap() { ${CONFIG_SHELL} "${srctree}/scripts/mksysmap" ${1} ${2} } sortextable() { ${objtree}/scripts/sortextable ${1} } # Delete output files in case of error cleanup() { rm -f .btf.* rm -f .tmp_System.map rm -f .tmp_vmlinux* rm -f built-in.a rm -f System.map rm -f vmlinux rm -f vmlinux.o } on_exit() { if [ $? -ne 0 ]; then cleanup fi } trap on_exit EXIT on_signals() { exit 1 } trap on_signals HUP INT QUIT TERM # # # Use "make V=1" to debug this script case "${KBUILD_VERBOSE}" in *1*) set -x ;; esac if [ "$1" = "clean" ]; then cleanup exit 0 fi # We need access to CONFIG_ symbols case "${KCONFIG_CONFIG}" in */*) . "${KCONFIG_CONFIG}" ;; *) # Force using a file from the current directory . "./${KCONFIG_CONFIG}" esac # Update version info GEN .version if [ -r .version ]; then VERSION=$(expr 0$(cat .version) + 1) echo $VERSION > .version else rm -f .version echo 1 > .version fi; # final build of init/ ${MAKE} -f "${srctree}/scripts/Makefile.build" obj=init archive_builtin #link vmlinux.o info LD vmlinux.o modpost_link vmlinux.o # modpost vmlinux.o to check for section mismatches ${MAKE} -f "${srctree}/scripts/Makefile.modpost" vmlinux.o btf_vmlinux_bin_o="" if [ -n "${CONFIG_DEBUG_INFO_BTF}" ]; then btf_vmlinux_bin_o=.btf.vmlinux.bin.o if ! gen_btf .tmp_vmlinux.btf $btf_vmlinux_bin_o ; then echo >&2 "Failed to generate BTF for vmlinux" echo >&2 "Try to disable CONFIG_DEBUG_INFO_BTF" exit 1 fi fi kallsymso="" kallsymso_prev="" kallsyms_vmlinux="" if [ -n "${CONFIG_KALLSYMS}" ]; then # kallsyms support # Generate section listing all symbols and add it into vmlinux # It's a three step process: # 1) Link .tmp_vmlinux1 so it has all symbols and sections, # but __kallsyms is empty. # Running kallsyms on that gives us .tmp_kallsyms1.o with # the right size # 2) Link .tmp_vmlinux2 so it now has a __kallsyms section of # the right size, but due to the added section, some # addresses have shifted. # From here, we generate a correct .tmp_kallsyms2.o # 3) That link may have expanded the kernel image enough that # more linker branch stubs / trampolines had to be added, which # introduces new names, which further expands kallsyms. Do another # pass if that is the case. In theory it's possible this results # in even more stubs, but unlikely. # KALLSYMS_EXTRA_PASS=1 may also used to debug or work around # other bugs. # 4) The correct ${kallsymso} is linked into the final vmlinux. # # a) Verify that the System.map from vmlinux matches the map from # ${kallsymso}. kallsyms_step 1 kallsyms_step 2 # step 3 size1=$(${CONFIG_SHELL} "${srctree}/scripts/file-size.sh" ${kallsymso_prev}) size2=$(${CONFIG_SHELL} "${srctree}/scripts/file-size.sh" ${kallsymso}) if [ $size1 -ne $size2 ] || [ -n "${KALLSYMS_EXTRA_PASS}" ]; then kallsyms_step 3 fi fi vmlinux_link vmlinux "${kallsymso}" ${btf_vmlinux_bin_o} # fill in BTF IDs if [ -n "${CONFIG_DEBUG_INFO_BTF}" -a -n "${CONFIG_BPF}" ]; then info BTFIDS vmlinux ${RESOLVE_BTFIDS} vmlinux fi if [ -n "${CONFIG_BUILDTIME_EXTABLE_SORT}" ]; then info SORTEX vmlinux sortextable vmlinux fi info SYSMAP System.map mksysmap vmlinux System.map # step a (see comment above) if [ -n "${CONFIG_KALLSYMS}" ]; then mksysmap ${kallsyms_vmlinux} .tmp_System.map if ! cmp -s System.map .tmp_System.map; then echo >&2 Inconsistent kallsyms data echo >&2 Try "make KALLSYMS_EXTRA_PASS=1" as a workaround exit 1 fi fi