@@ -58,6 +58,13 @@ APPLIED_PATCHES=0
5858OOT_MODULE=
5959KLP_REPLACE=1
6060
61+ GCC=" ${CROSS_COMPILE:- } gcc"
62+ CLANG=" ${CROSS_COMPILE:- } clang"
63+ LD=" ${CROSS_COMPILE:- } ld"
64+ LLD=" ${CROSS_COMPILE:- } ld.lld"
65+ READELF=" ${CROSS_COMPILE:- } readelf"
66+ OBJCOPY=" ${CROSS_COMPILE:- } objcopy"
67+
6168warn () {
6269 echo " ERROR: $1 " >&2
6370}
@@ -267,7 +274,7 @@ find_core_symvers() {
267274}
268275
269276gcc_version_from_file () {
270- readelf -p .comment " $1 " | grep -m 1 -o ' GCC:.*'
277+ " $READELF " -p .comment " $1 " | grep -m 1 -o ' GCC:.*'
271278}
272279
273280gcc_version_check () {
@@ -278,7 +285,7 @@ gcc_version_check() {
278285 # gcc --version varies between distributions therefore extract version
279286 # by compiling a test file and compare it to vmlinux's version.
280287 echo ' void main(void) {}' > " $c "
281- out=" $( gcc -c -pg -ffunction-sections -o " $o " " $c " 2>&1 ) "
288+ out=" $( " $GCC " -c -pg -ffunction-sections -o " $o " " $c " 2>&1 ) "
282289 gccver=" $( gcc_version_from_file " $o " ) "
283290 kgccver=" $( gcc_version_from_file " $target " ) "
284291
@@ -288,7 +295,7 @@ gcc_version_check() {
288295 return 1
289296 fi
290297
291- out=" $( gcc -c -gz=none -o " $o " " $c " 2>&1 ) "
298+ out=" $( " $GCC " -c -gz=none -o " $o " " $c " 2>&1 ) "
292299 if [[ -z " $out " ]]; then
293300 DEBUG_KCFLAGS=" -gz=none"
294301 fi
@@ -308,14 +315,14 @@ gcc_version_check() {
308315}
309316
310317clang_version_from_file () {
311- readelf -p .comment " $1 " | grep -m 1 -Eo ' clang version [0-9.]+'
318+ " $READELF " -p .comment " $1 " | grep -m 1 -Eo ' clang version [0-9.]+'
312319}
313320
314321clang_version_check () {
315322 local target=" $1 "
316323 local clangver kclangver
317324
318- clangver=$( clang --version | grep -m 1 -Eo ' clang version [0-9.]+' )
325+ clangver=$( " $CLANG " --version | grep -m 1 -Eo ' clang version [0-9.]+' )
319326 kclangver=" $( clang_version_from_file " $target " ) "
320327
321328 # ensure clang version matches that used to build the kernel
@@ -360,7 +367,7 @@ find_special_section_data() {
360367 local SPECIAL_VARS
361368 # If $AWK_OPTIONS are blank gawk would treat "" as a blank script
362369 # shellcheck disable=SC2086
363- SPECIAL_VARS=" $( readelf -wi " $VMLINUX " |
370+ SPECIAL_VARS=" $( " $READELF " -wi " $VMLINUX " |
364371 gawk --non-decimal-data $AWK_OPTIONS '
365372 BEGIN { a = b = e = f = i = j = o = p = s = 0 }
366373
698705
699706# Don't check external file.
700707# shellcheck disable=SC1090
701- [[ -f " $RELEASE_FILE " ]] && source " $RELEASE_FILE "
702- DISTRO=" $ID "
708+ if [[ -z " $USERSRCDIR " ]] && [[ -f " $RELEASE_FILE " ]]; then
709+ source " $RELEASE_FILE "
710+ DISTRO=" $ID "
711+ fi
712+
703713if [[ " $DISTRO " = fedora ]] || [[ " $DISTRO " = rhel ]] || [[ " $DISTRO " = ol ]] || [[ " $DISTRO " = centos ]] || [[ " $DISTRO " = openEuler ]]; then
704714 [[ -z " $VMLINUX " ]] && VMLINUX=" /usr/lib/debug/lib/modules/$ARCHVERSION /vmlinux"
705715 [[ -e " $VMLINUX " ]] || die " kernel-debuginfo-$ARCHVERSION not installed"
@@ -929,17 +939,17 @@ unset KPATCH_GCC_TEMPDIR
929939KPATCH_CC_PREFIX=" $TOOLSDIR /kpatch-cc "
930940declare -a MAKEVARS
931941if [[ -n " $CONFIG_CC_IS_CLANG " ]]; then
932- MAKEVARS+=(" CC=${KPATCH_CC_PREFIX} clang " )
942+ MAKEVARS+=(" CC=${KPATCH_CC_PREFIX}${CLANG} " )
933943 MAKEVARS+=(" HOSTCC=clang" )
934944else
935- MAKEVARS+=(" CC=${KPATCH_CC_PREFIX} gcc " )
945+ MAKEVARS+=(" CC=${KPATCH_CC_PREFIX}${GCC} " )
936946fi
937947
938948if [[ -n " $CONFIG_LD_IS_LLD " ]]; then
939- MAKEVARS+=(" LD=${KPATCH_CC_PREFIX} ld.lld " )
949+ MAKEVARS+=(" LD=${KPATCH_CC_PREFIX}${LLD} " )
940950 MAKEVARS+=(" HOSTLD=ld.lld" )
941951else
942- MAKEVARS+=(" LD=${KPATCH_CC_PREFIX} ld " )
952+ MAKEVARS+=(" LD=${KPATCH_CC_PREFIX}${LD} " )
943953fi
944954
945955
@@ -1072,7 +1082,7 @@ for i in $FILES; do
10721082 SYMVERS_FILE=" $BUILDDIR /Module.symvers"
10731083 fi
10741084
1075- readelf -s --wide " $KOBJFILE_PATH " > " $SYMTAB "
1085+ " $READELF " -s --wide " $KOBJFILE_PATH " > " $SYMTAB "
10761086 if [[ " $ARCH " = " ppc64le" ]]; then
10771087 sed -ri ' s/\s+\[<localentry>: 8\]//' " $SYMTAB "
10781088 fi
11291139cd " $TEMPDIR /output" || die
11301140# $KPATCH_LDFLAGS and result of find used as list, no quotes.
11311141# shellcheck disable=SC2086,SC2046
1132- ld -r $KPATCH_LDFLAGS -o ../patch/tmp_output.o $( find . -name " *.o" ) 2>&1 | logger || die
1142+ " $LD " -r $KPATCH_LDFLAGS -o ../patch/tmp_output.o $( find . -name " *.o" ) 2>&1 | logger || die
11331143
11341144if [[ " $USE_KLP " -eq 1 ]]; then
11351145 cp -f " $TEMPDIR " /patch/tmp_output.o " $TEMPDIR " /patch/output.o || die
@@ -1138,7 +1148,7 @@ if [[ "$USE_KLP" -eq 1 ]]; then
11381148else
11391149 # Add .kpatch.checksum for kpatch script
11401150 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
1151+ " $OBJCOPY " --add-section .kpatch.checksum=checksum.tmp --set-section-flags .kpatch.checksum=alloc,load,contents,readonly ../patch/tmp_output.o || die
11421152 rm -f checksum.tmp
11431153 " $TOOLSDIR " /create-kpatch-module " $TEMPDIR " /patch/tmp_output.o " $TEMPDIR " /patch/output.o 2>&1 | logger 1
11441154 check_pipe_status create-kpatch-module
@@ -1154,7 +1164,8 @@ done
11541164
11551165export KPATCH_BUILD=" $KERNEL_SRCDIR " KPATCH_NAME=" $MODNAME " \
11561166KBUILD_EXTRA_SYMBOLS=" $KBUILD_EXTRA_SYMBOLS " \
1157- KPATCH_LDFLAGS=" $KPATCH_LDFLAGS "
1167+ KPATCH_LDFLAGS=" $KPATCH_LDFLAGS " \
1168+ CROSS_COMPILE=" $CROSS_COMPILE "
11581169save_env
11591170
11601171make " ${MAKEVARS[@]} " 2>&1 | logger || die
@@ -1192,7 +1203,7 @@ if [[ -n "$CONFIG_MODVERSIONS" ]]; then
11921203 fi
11931204fi
11941205
1195- readelf --wide --symbols " $TEMPDIR /patch/$MODNAME .ko" 2> /dev/null | \
1206+ " $READELF " --wide --symbols " $TEMPDIR /patch/$MODNAME .ko" 2> /dev/null | \
11961207 sed -r ' s/\s+\[<localentry>: 8\]//' | \
11971208 awk ' ($4=="FUNC" || $4=="OBJECT") && ($5=="GLOBAL" || $5=="WEAK") && $7!="UND" {print $NF}' \
11981209 > " ${TEMPDIR} " /new_symbols
0 commit comments