mirror of
https://github.com/dynup/kpatch
synced 2025-02-26 15:01:15 +00:00
kpatch-gcc: for module patches, copy module to temp dir
For patches involving modules, copy the original module(s) to TEMPDIR so that create-diff-object can create the correct lookup tables
This commit is contained in:
parent
6175658196
commit
09c39932b1
@ -475,7 +475,7 @@ for i in $FILES; do
|
||||
if [[ $KOBJFILE = vmlinux ]]; then
|
||||
KOBJFILE=$VMLINUX
|
||||
else
|
||||
KOBJFILE="$(readlink -f $KOBJFILE)"
|
||||
KOBJFILE="$TEMPDIR/module/$KOBJFILE"
|
||||
fi
|
||||
cd $TEMPDIR
|
||||
debugopt=
|
||||
|
@ -5,45 +5,64 @@ set -x
|
||||
TOOLCHAINCMD="$1"
|
||||
shift
|
||||
|
||||
if [[ "$TOOLCHAINCMD" != "gcc" ]] || [[ -z "$TEMPDIR" ]]; then
|
||||
if [[ -z "$TEMPDIR" ]]; then
|
||||
exec "$TOOLCHAINCMD" "$@"
|
||||
fi
|
||||
|
||||
declare -a args=("$@")
|
||||
|
||||
while [ "$#" -gt 0 ]; do
|
||||
if [ "$1" = "-o" ]; then
|
||||
obj=$2
|
||||
[[ $2 = */.tmp_*.o ]] && obj=${2/.tmp_/}
|
||||
case "$obj" in
|
||||
*.mod.o|\
|
||||
*built-in.o|\
|
||||
vmlinux.o|\
|
||||
.tmp_kallsyms1.o|\
|
||||
.tmp_kallsyms2.o|\
|
||||
init/version.o|\
|
||||
arch/x86/boot/version.o|\
|
||||
arch/x86/boot/compressed/eboot.o|\
|
||||
arch/x86/boot/header.o|\
|
||||
arch/x86/boot/compressed/efi_stub_64.o|\
|
||||
arch/x86/boot/compressed/piggy.o|\
|
||||
kernel/system_certificates.o|\
|
||||
arch/x86/vdso/*|\
|
||||
.*.o)
|
||||
break
|
||||
;;
|
||||
*.o)
|
||||
mkdir -p "$TEMPDIR/orig/$(dirname $obj)"
|
||||
cp -f "$obj" "$TEMPDIR/orig/$obj"
|
||||
echo "$obj" >> "$TEMPDIR/changed_objs"
|
||||
break
|
||||
;;
|
||||
*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
shift
|
||||
done
|
||||
if [[ "$TOOLCHAINCMD" = "gcc" ]] ; then
|
||||
while [ "$#" -gt 0 ]; do
|
||||
if [ "$1" = "-o" ]; then
|
||||
obj=$2
|
||||
[[ $2 = */.tmp_*.o ]] && obj=${2/.tmp_/}
|
||||
case "$obj" in
|
||||
*.mod.o|\
|
||||
*built-in.o|\
|
||||
vmlinux.o|\
|
||||
.tmp_kallsyms1.o|\
|
||||
.tmp_kallsyms2.o|\
|
||||
init/version.o|\
|
||||
arch/x86/boot/version.o|\
|
||||
arch/x86/boot/compressed/eboot.o|\
|
||||
arch/x86/boot/header.o|\
|
||||
arch/x86/boot/compressed/efi_stub_64.o|\
|
||||
arch/x86/boot/compressed/piggy.o|\
|
||||
kernel/system_certificates.o|\
|
||||
arch/x86/vdso/*|\
|
||||
.*.o)
|
||||
break
|
||||
;;
|
||||
*.o)
|
||||
mkdir -p "$TEMPDIR/orig/$(dirname $obj)"
|
||||
cp -f "$obj" "$TEMPDIR/orig/$obj"
|
||||
echo "$obj" >> "$TEMPDIR/changed_objs"
|
||||
break
|
||||
;;
|
||||
*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
shift
|
||||
done
|
||||
elif [[ "$TOOLCHAINCMD" = "ld" ]] ; then
|
||||
while [ "$#" -gt 0 ]; do
|
||||
if [ "$1" = "-o" ]; then
|
||||
obj=$2
|
||||
case "$obj" in
|
||||
*.ko)
|
||||
mkdir -p "$TEMPDIR/module/$(dirname $obj)"
|
||||
cp -f "$obj" "$TEMPDIR/module/$obj"
|
||||
break
|
||||
;;
|
||||
*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
shift
|
||||
done
|
||||
fi
|
||||
|
||||
exec "$TOOLCHAINCMD" "${args[@]}"
|
||||
|
Loading…
Reference in New Issue
Block a user