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:
Seth Jennings 2014-02-17 15:22:01 -06:00
parent 4f2d5d209c
commit 062355a186

View File

@ -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