@@ -278,7 +278,7 @@ gcc_version_check() {
278278 # gcc --version varies between distributions therefore extract version
279279 # by compiling a test file and compare it to vmlinux's version.
280280 echo ' void main(void) {}' > " $c "
281- out=" $( gcc -c -pg -ffunction-sections -o " $o " " $c " 2>&1 ) "
281+ out=" $( " ${CROSS_COMPILE} " gcc -c -pg -ffunction-sections -o " $o " " $c " 2>&1 ) "
282282 gccver=" $( gcc_version_from_file " $o " ) "
283283 kgccver=" $( gcc_version_from_file " $target " ) "
284284
@@ -656,6 +656,14 @@ mkdir -p "$TEMPDIR" || die "Couldn't create $TEMPDIR"
656656rm -rf " ${TEMPDIR:? } " /*
657657rm -f " $LOGFILE "
658658
659+
660+ if [[ -n " $USERSRCDIR " ]] && [[ -n " $VMLINUX " ]]; then
661+ DISTRO=" dummy" # I think some of the DISTRO checks could be skipped, given the user provides source dir and vmlinux files.
662+ else
663+ DISTRO=" $ID "
664+ fi
665+
666+
659667if [[ -n " $USERSRCDIR " ]]; then
660668 if [[ -n " $ARCHVERSION " ]]; then
661669 warn " --archversion is incompatible with --sourcedir"
699707# Don't check external file.
700708# shellcheck disable=SC1090
701709[[ -f " $RELEASE_FILE " ]] && source " $RELEASE_FILE "
702- DISTRO=" $ID "
710+
711+
703712if [[ " $DISTRO " = fedora ]] || [[ " $DISTRO " = rhel ]] || [[ " $DISTRO " = ol ]] || [[ " $DISTRO " = centos ]] || [[ " $DISTRO " = openEuler ]]; then
704713 [[ -z " $VMLINUX " ]] && VMLINUX=" /usr/lib/debug/lib/modules/$ARCHVERSION /vmlinux"
705714 [[ -e " $VMLINUX " ]] || die " kernel-debuginfo-$ARCHVERSION not installed"
@@ -929,17 +938,17 @@ unset KPATCH_GCC_TEMPDIR
929938KPATCH_CC_PREFIX=" $TOOLSDIR /kpatch-cc "
930939declare -a MAKEVARS
931940if [[ -n " $CONFIG_CC_IS_CLANG " ]]; then
932- MAKEVARS+=(" CC=${KPATCH_CC_PREFIX} clang" )
941+ MAKEVARS+=(" CC=${KPATCH_CC_PREFIX}${CROSS_COMPILE} clang" )
933942 MAKEVARS+=(" HOSTCC=clang" )
934943else
935- MAKEVARS+=(" CC=${KPATCH_CC_PREFIX} gcc" )
944+ MAKEVARS+=(" CC=${KPATCH_CC_PREFIX}${CROSS_COMPILE} gcc" )
936945fi
937946
938947if [[ -n " $CONFIG_LD_IS_LLD " ]]; then
939- MAKEVARS+=(" LD=${KPATCH_CC_PREFIX} ld.lld" )
948+ MAKEVARS+=(" LD=${KPATCH_CC_PREFIX}${CROSS_COMPILE} ld.lld" )
940949 MAKEVARS+=(" HOSTLD=ld.lld" )
941950else
942- MAKEVARS+=(" LD=${KPATCH_CC_PREFIX} ld" )
951+ MAKEVARS+=(" LD=${KPATCH_CC_PREFIX}${CROSS_COMPILE} ld" )
943952fi
944953
945954
11291138cd " $TEMPDIR /output" || die
11301139# $KPATCH_LDFLAGS and result of find used as list, no quotes.
11311140# shellcheck disable=SC2086,SC2046
1132- ld -r $KPATCH_LDFLAGS -o ../patch/tmp_output.o $( find . -name " *.o" ) 2>&1 | logger || die
1141+ " $CROSS_COMPILE " ld -r $KPATCH_LDFLAGS -o ../patch/tmp_output.o $( find . -name " *.o" ) 2>&1 | logger || die
11331142
11341143if [[ " $USE_KLP " -eq 1 ]]; then
11351144 cp -f " $TEMPDIR " /patch/tmp_output.o " $TEMPDIR " /patch/output.o || die
@@ -1138,7 +1147,7 @@ if [[ "$USE_KLP" -eq 1 ]]; then
11381147else
11391148 # Add .kpatch.checksum for kpatch script
11401149 md5sum ../patch/tmp_output.o | awk ' {printf "%s\0", $1}' > checksum.tmp || die
1141- objcopy --add-section .kpatch.checksum=checksum.tmp --set-section-flags .kpatch.checksum=alloc,load,contents,readonly ../patch/tmp_output.o || die
1150+ " $CROSS_COMPILE " objcopy --add-section .kpatch.checksum=checksum.tmp --set-section-flags .kpatch.checksum=alloc,load,contents,readonly ../patch/tmp_output.o || die
11421151 rm -f checksum.tmp
11431152 " $TOOLSDIR " /create-kpatch-module " $TEMPDIR " /patch/tmp_output.o " $TEMPDIR " /patch/output.o 2>&1 | logger 1
11441153 check_pipe_status create-kpatch-module
@@ -1154,7 +1163,8 @@ done
11541163
11551164export KPATCH_BUILD=" $KERNEL_SRCDIR " KPATCH_NAME=" $MODNAME " \
11561165KBUILD_EXTRA_SYMBOLS=" $KBUILD_EXTRA_SYMBOLS " \
1157- KPATCH_LDFLAGS=" $KPATCH_LDFLAGS "
1166+ KPATCH_LDFLAGS=" $KPATCH_LDFLAGS " \
1167+ CROSS_COMPILE=" $CROSS_COMPILE "
11581168save_env
11591169
11601170make " ${MAKEVARS[@]} " 2>&1 | logger || die
0 commit comments