同步操作将从 minknov/kernel 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#!/bin/sh# SPDX-License-Identifier: GPL-2.0## link vmlinux## vmlinux is linked from the objects selected by $(KBUILD_VMLINUX_OBJS) 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.# $(KBUILD_VMLINUX_LIBS) are archives which are linked conditionally# (not within --whole-archive), and do not require symbol indexes added.## vmlinux# ^# |# +--< $(KBUILD_VMLINUX_OBJS)# | +--< init/built-in.a 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 errorset -eLD="1ドル"KBUILD_LDFLAGS="2ドル"LDFLAGS_vmlinux="3ドル"# Nice output in kbuild format# Will be supressed by "make -s"info(){if [ "${quiet}" != "silent_" ]; thenprintf " %-7s %s\n" "${1}" "${2}"fi}# Generate a linker script to ensure correct ordering of initcalls.gen_initcalls(){info GEN .tmp_initcalls.lds${PYTHON} ${srctree}/scripts/jobserver-exec \${PERL} ${srctree}/scripts/generate_initcall_order.pl \${KBUILD_VMLINUX_OBJS} ${KBUILD_VMLINUX_LIBS} \> .tmp_initcalls.lds}# If CONFIG_LTO_CLANG is selected, collect generated symbol versions into# .tmp_symversions.ldsgen_symversions(){info GEN .tmp_symversions.ldsrm -f .tmp_symversions.ldsfor o in ${KBUILD_VMLINUX_OBJS} ${KBUILD_VMLINUX_LIBS}; doif [ -f ${o}.symversions ]; thencat ${o}.symversions >> .tmp_symversions.ldsfidone}# Link of vmlinux.o used for section mismatch analysis# ${1} output filemodpost_link(){local objectslocal lds=""objects="--whole-archive \${KBUILD_VMLINUX_OBJS}\--no-whole-archive \--start-group \${KBUILD_VMLINUX_LIBS}\--end-group"if [ -n "${CONFIG_LTO_CLANG}" ]; thengen_initcallslds="-T .tmp_initcalls.lds"if [ -n "${CONFIG_MODVERSIONS}" ]; thengen_symversionslds="${lds} -T .tmp_symversions.lds"fi# This might take a while, so indicate that we're doing# an LTO linkinfo LTO ${1}elseinfo LD ${1}fi${LD} ${KBUILD_LDFLAGS} -r -o ${1} ${lds} ${objects}}objtool_link(){local objtoolcmd;local objtoolopt;if [ "${CONFIG_LTO_CLANG}${CONFIG_STACK_VALIDATION}" = "y y" ]; then# Don't perform vmlinux validation unless explicitly requested,# but run objtool on vmlinux.o now that we have an object file.if [ -n "${CONFIG_UNWINDER_ORC}" ]; thenobjtoolcmd="orc generate"fiobjtoolopt="${objtoolopt} --duplicate"if [ -n "${CONFIG_FTRACE_MCOUNT_USE_OBJTOOL}" ]; thenobjtoolopt="${objtoolopt} --mcount"fifiif [ -n "${CONFIG_VMLINUX_VALIDATION}" ]; thenobjtoolopt="${objtoolopt} --noinstr"fiif [ -n "${objtoolopt}" ]; thenif [ -z "${objtoolcmd}" ]; thenobjtoolcmd="check"fiobjtoolopt="${objtoolopt} --vmlinux"if [ -z "${CONFIG_FRAME_POINTER}" ]; thenobjtoolopt="${objtoolopt} --no-fp"fiif [ -n "${CONFIG_GCOV_KERNEL}" ] || [ -n "${CONFIG_LTO_CLANG}" ]; thenobjtoolopt="${objtoolopt} --no-unreachable"fiif [ -n "${CONFIG_RETPOLINE}" ]; thenobjtoolopt="${objtoolopt} --retpoline"fiif [ -n "${CONFIG_X86_SMAP}" ]; thenobjtoolopt="${objtoolopt} --uaccess"fiinfo OBJTOOL ${1}tools/objtool/objtool ${objtoolcmd} ${objtoolopt} ${1}fi}# Link of vmlinux# ${1} - output file# ${2}, ${3}, ... - optional extra .o filesvmlinux_link(){local lds="${objtree}/${KBUILD_LDS}"local output=${1}local objectslocal strip_debuginfo LD ${output}# skip output file argumentshift# The kallsyms linking does not need debug symbols included.if [ "$output" != "${output#.tmp_vmlinux.kallsyms}" ] ; thenstrip_debug=-Wl,--strip-debugfiif [ "${SRCARCH}" != "um" ]; thenif [ -n "${CONFIG_LTO_CLANG}" ]; then# Use vmlinux.o instead of performing the slow LTO# link again.objects="--whole-archive \vmlinux.o \--no-whole-archive \${@}"elseobjects="--whole-archive \${KBUILD_VMLINUX_OBJS}\--no-whole-archive \--start-group \${KBUILD_VMLINUX_LIBS}\--end-group \${@}"fi${LD} ${KBUILD_LDFLAGS} ${LDFLAGS_vmlinux} \${strip_debug#-Wl,} \-o ${output} \-T ${lds} ${objects}elseobjects="-Wl,--whole-archive \${KBUILD_VMLINUX_OBJS}\-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 -lpthreadrm -f linuxfi}# generate .BTF typeinfo from DWARF debuginfo# ${1} - vmlinux image# ${2} - file to dump raw BTF data intogen_btf(){local pahole_verif ! [ -x "$(command -v ${PAHOLE})" ]; thenecho >&2 "BTF: ${1}: pahole (${PAHOLE}) is not available"return 1fipahole_ver=$(${PAHOLE} --version | sed -E 's/v([0-9]+)\.([0-9]+)/1円2円/')if [ "${pahole_ver}" -lt "116" ]; thenecho >&2 "BTF: ${1}: pahole version $(${PAHOLE} --version) is too old, need at least v1.16"return 1fivmlinux_link ${1}info "BTF" ${2}LLVM_OBJCOPY=${OBJCOPY} ${PAHOLE} -J ${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} .S file with all symbols from the ${1} object filekallsyms(){local kallsymopt;if [ -n "${CONFIG_KALLSYMS_ALL}" ]; thenkallsymopt="${kallsymopt} --all-symbols"fiif [ -n "${CONFIG_KALLSYMS_ABSOLUTE_PERCPU}" ]; thenkallsymopt="${kallsymopt} --absolute-percpu"fiif [ -n "${CONFIG_KALLSYMS_BASE_RELATIVE}" ]; thenkallsymopt="${kallsymopt} --base-relative"fiinfo KSYMS ${2}${NM} -n ${1} | scripts/kallsyms ${kallsymopt} > ${2}}# 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}.okallsyms_S=${kallsyms_vmlinux}.Svmlinux_link ${kallsyms_vmlinux} "${kallsymso_prev}" ${btf_vmlinux_bin_o}kallsyms ${kallsyms_vmlinux} ${kallsyms_S}info AS ${kallsyms_S}${CC} ${NOSTDINC_FLAGS} ${LINUXINCLUDE} ${KBUILD_CPPFLAGS} \${KBUILD_AFLAGS} ${KBUILD_AFLAGS_KERNEL} \-c -o ${kallsymso} ${kallsyms_S}}# Create map file with all symbols from ${1}# See mksymap for additional detailsmksysmap(){${CONFIG_SHELL} "${srctree}/scripts/mksysmap" ${1} ${2}}sorttable(){${objtree}/scripts/sorttable ${1}}# Delete output files in case of errorcleanup(){rm -f .btf.*rm -f .tmp_System.maprm -f .tmp_initcalls.ldsrm -f .tmp_symversions.ldsrm -f .tmp_vmlinux*rm -f System.maprm -f vmlinuxrm -f vmlinux.o}on_exit(){if [ $? -ne 0 ]; thencleanupfi}trap on_exit EXITon_signals(){exit 1}trap on_signals HUP INT QUIT TERM# Use "make V=1" to debug this scriptcase "${KBUILD_VERBOSE}" in*1*)set -x;;esacif [ "1ドル" = "clean" ]; thencleanupexit 0fi# We need access to CONFIG_ symbols. include/config/auto.conf# Update versioninfo GEN .versionif [ -r .version ]; thenVERSION=$(expr 0$(cat .version) + 1)echo $VERSION > .versionelserm -f .versionecho 1 > .versionfi;# final build of init/${MAKE} -f "${srctree}/scripts/Makefile.build" obj=init need-builtin=1#link vmlinux.omodpost_link vmlinux.oobjtool_link vmlinux.o# modpost vmlinux.o to check for section mismatches${MAKE} -f "${srctree}/scripts/Makefile.modpost" MODPOST_VMLINUX=1info MODINFO modules.builtin.modinfo${OBJCOPY} -j .modinfo -O binary vmlinux.o modules.builtin.modinfoinfo GEN modules.builtin# The second line aids cases where multiple modules share the same object.tr '0円' '\n' < modules.builtin.modinfo | sed -n 's/^[[:alnum:]:_]*\.file=//p' |tr ' ' '\n' | uniq | sed -e 's:^:kernel/:' -e 's/$/.ko/' > modules.builtinbtf_vmlinux_bin_o=""if [ -n "${CONFIG_DEBUG_INFO_BTF}" ]; thenbtf_vmlinux_bin_o=.btf.vmlinux.bin.oif ! gen_btf .tmp_vmlinux.btf $btf_vmlinux_bin_o ; thenecho >&2 "Failed to generate BTF for vmlinux"echo >&2 "Try to disable CONFIG_DEBUG_INFO_BTF"exit 1fifikallsymso=""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 1kallsyms_step 2# step 3size1=$(${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}" ]; thenkallsyms_step 3fifivmlinux_link vmlinux "${kallsymso}" ${btf_vmlinux_bin_o}# fill in BTF IDsif [ -n "${CONFIG_DEBUG_INFO_BTF}" -a -n "${CONFIG_BPF}" ]; theninfo BTFIDS vmlinux${RESOLVE_BTFIDS} vmlinuxfiif [ -n "${CONFIG_BUILDTIME_TABLE_SORT}" ]; theninfo SORTTAB vmlinuxif ! sorttable vmlinux; thenecho >&2 Failed to sort kernel tablesexit 1fifiinfo SYSMAP System.mapmksysmap vmlinux System.map# step a (see comment above)if [ -n "${CONFIG_KALLSYMS}" ]; thenmksysmap ${kallsyms_vmlinux} .tmp_System.mapif ! cmp -s System.map .tmp_System.map; thenecho >&2 Inconsistent kallsyms dataecho >&2 Try "make KALLSYMS_EXTRA_PASS=1" as a workaroundexit 1fifi
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。