@@ -88,6 +88,7 @@ usage() {
8888 echo " -r, --sourcerpm Specify kernel source RPM" >&2
8989 echo " -s, --sourcedir Specify kernel source directory" >&2
9090 echo " -c, --config Specify kernel config file" >&2
91+ echo " -v, --vmlinux Specify original vmlinux" >&2
9192 echo " -d, --debug Keep scratch files in /tmp" >&2
9293}
9394
@@ -119,6 +120,11 @@ while [[ $# -gt 0 ]]; do
119120 shift
120121 [[ ! -f " $CONFIGFILE " ]] && die " config file $CONFIGFILE not found"
121122 ;;
123+ -v|--vmlinux)
124+ VMLINUX=$( readlink -f " $2 " )
125+ shift
126+ [[ ! -f " $VMLINUX " ]] && die " vmlinux file $VMLINUX not found"
127+ ;;
122128 -d|--debug)
123129 echo " DEBUG mode enabled"
124130 DEBUG=1
@@ -158,6 +164,9 @@ find_dirs || die "can't find supporting tools"
158164
159165[[ -e " $SYMVERSFILE " ]] || die " can't find core module Module.symvers"
160166
167+ [[ -z $VMLINUX ]] && VMLINUX=/usr/lib/debug/lib/modules/${ARCHVERSION} /vmlinux
168+ [[ -e " $VMLINUX " ]] || die " kernel-debuginfo not installed"
169+
161170if [[ -n " $USERSRCDIR " ]]; then
162171 SRCDIR=" $CACHEDIR /src"
163172 OBJDIR=" $CACHEDIR /obj"
209218 elif [[ $ID = ubuntu ]]; then
210219
211220 echo " Debian/Ubuntu distribution detected"
221+
212222 cd $TEMPDIR
213223 echo " Downloading and unpacking kernel source for $ARCHVERSION "
214224 apt-get source linux || die " 'apt-get source linux' failed. you may need to run 'apt-get install dpkg-dev'"
@@ -234,7 +244,6 @@ echo "Building original kernel"
234244make mrproper >> " $LOGFILE " 2>&1 || die
235245make " -j$CPUS " vmlinux " O=$OBJDIR " >> " $LOGFILE " 2>&1 || die
236246cp -LR " $DATADIR /patch" " $TEMPDIR " || die
237- cp " $OBJDIR /vmlinux" " $TEMPDIR " || die
238247
239248echo " Building patched kernel"
240249patch -N -p1 < " $APPLIEDPATCHFILE " >> " $LOGFILE " 2>&1 || die
@@ -286,10 +295,10 @@ make prepare >> "$LOGFILE" 2>&1 || die
286295cd " $TEMPDIR /output"
287296ld -r -o ../patch/output.o $FILES >> " $LOGFILE " 2>&1 || die
288297cd " $TEMPDIR /patch"
289- " $TOOLSDIR " /add-patches-section output.o ../vmlinux >> " $LOGFILE " 2>&1 || die
298+ " $TOOLSDIR " /add-patches-section output.o " $VMLINUX " >> " $LOGFILE " 2>&1 || die
290299KPATCH_BUILD=" $SRCDIR " KPATCH_NAME=" $PATCHNAME " KBUILD_EXTRA_SYMBOLS=" $SYMVERSFILE " make " O=$OBJDIR " >> " $LOGFILE " 2>&1 || die
291300$STRIPCMD " kpatch-$PATCHNAME .ko" >> " $LOGFILE " 2>&1 || die
292- " $TOOLSDIR " /link-vmlinux-syms " kpatch-$PATCHNAME .ko" ../vmlinux >> " $LOGFILE " 2>&1 || die
301+ " $TOOLSDIR " /link-vmlinux-syms " kpatch-$PATCHNAME .ko" " $VMLINUX " >> " $LOGFILE " 2>&1 || die
293302
294303cp -f " $TEMPDIR /patch/kpatch-$PATCHNAME .ko" " $BASE " || die
295304
0 commit comments