mirror of
https://github.com/dynup/kpatch
synced 2025-05-19 03:55:41 +00:00
retain source tree directory structure with objects
The source tree directory structure should be maintained in the TEMPDIR while building the hotpatch module so that changed objects in different directories with the same name don't collide during the build process. Signed-off-by: Seth Jennings <sjenning@redhat.com>
This commit is contained in:
parent
4f2d5d209c
commit
062355a186
@ -129,7 +129,8 @@ for i in "$(cat $TEMPDIR/changed_objs)"; do
|
||||
rm -f "$i"
|
||||
KCFLAGS="-ffunction-sections -fdata-sections" make "$i" >> "$LOGFILE" 2>&1 || die
|
||||
"$STRIPCMD" "$i" >> "$LOGFILE" 2>&1 || die
|
||||
cp -f "$i" "$TEMPDIR/patched/" || die
|
||||
mkdir -p "$TEMPDIR/patched/$(dirname $i)"
|
||||
cp -f "$i" "$TEMPDIR/patched/$i" || die
|
||||
|
||||
done
|
||||
patch -R -p1 < "$PATCHFILE" >> "$LOGFILE" 2>&1
|
||||
@ -138,15 +139,18 @@ for i in "$(cat $TEMPDIR/changed_objs)"; do
|
||||
rm -f "$i"
|
||||
KCFLAGS="-ffunction-sections -fdata-sections" make "$i" >> "$LOGFILE" 2>&1 || die
|
||||
"$STRIPCMD" -d "$i" >> "$LOGFILE" 2>&1 || die
|
||||
cp -f "$i" "$TEMPDIR/orig/" || die
|
||||
mkdir -p "$TEMPDIR/orig/$(dirname $i)"
|
||||
cp -f "$i" "$TEMPDIR/orig/$i" || die
|
||||
done
|
||||
|
||||
echo "Extracting new and modified ELF sections"
|
||||
cd "$TEMPDIR/orig"
|
||||
FILES="$(find * -type f)"
|
||||
cd "$TEMPDIR"
|
||||
mkdir output
|
||||
for i in orig/*; do
|
||||
FILE="$(basename $i)"
|
||||
"$TOOLSDIR"/create-diff-object "orig/$FILE" "patched/$FILE" "output/$FILE" >> "$LOGFILE" 2>&1 || die
|
||||
for i in $FILES; do
|
||||
mkdir -p "output/$(dirname $i)"
|
||||
"$TOOLSDIR"/create-diff-object "orig/$i" "patched/$i" "output/$i" >> "$LOGFILE" 2>&1 || die
|
||||
done
|
||||
|
||||
echo "Building core module: kpatch.ko"
|
||||
@ -155,8 +159,9 @@ KPATCH_BUILD="$KSRCDIR" make >> "$LOGFILE" 2>&1 || die
|
||||
cd ..
|
||||
|
||||
echo "Building patch module: kpatch-$PATCHNAME.ko"
|
||||
cd patch
|
||||
ld -r -o output.o ../output/* >> "$LOGFILE" 2>&1 || die
|
||||
cd "$TEMPDIR/output"
|
||||
ld -r -o ../patch/output.o $FILES >> "$LOGFILE" 2>&1 || die
|
||||
cd "$TEMPDIR/patch"
|
||||
"$TOOLSDIR"/add-patches-section output.o ../vmlinux >> "$LOGFILE" 2>&1 || die
|
||||
KPATCH_BASEDIR="$TEMPDIR/core" KPATCH_BUILD="$KSRCDIR" KPATCH_NAME="$PATCHNAME" make >> "$LOGFILE" 2>&1 || die
|
||||
"$STRIPCMD" "kpatch-$PATCHNAME.ko" >> "$LOGFILE" 2>&1 || die
|
||||
|
Loading…
Reference in New Issue
Block a user