From 8d18ae5ae75bc756efe3354412b5bdbe6dfa6573 Mon Sep 17 00:00:00 2001 From: Roger Pau Monne Date: Thu, 10 Mar 2022 16:08:32 +0100 Subject: [PATCH] livepatch: use basename to perform object file matching MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The changes in the Xen build logic has resulted in the compiler and objcopy being called from xen/ instead of relative to each object directory. This requires using basename so that the directory is not taken into account when checking against the list of files to be explicitly ignored. Also adjust the paths used to store the differing object files, as with the current logic the resulting path will be wrong when using newer Xen versions, changed_objs would end containing entries like: xen/arch/x86/hvm/vmx/arch/x86/hvm/vmx/vmx.o Signed-off-by: Roger Pau Monné Reviewed-by: Bjoern Doebel Reviewed-by: Ross Lagerwall Signed-off-by: Ross Lagerwall --- livepatch-gcc | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/livepatch-gcc b/livepatch-gcc index 91333d5..fe782e0 100755 --- a/livepatch-gcc +++ b/livepatch-gcc @@ -32,10 +32,10 @@ if [[ "$TOOLCHAINCMD" =~ $GCC_RE ]] ; then if [ "$1" = "-o" ]; then obj=$2 [[ $2 = */.tmp_*.o ]] && obj=${2/.tmp_/} - case "$obj" in + case "$(basename $obj)" in version.o|\ debug.o|\ - efi/check.o|\ + check.o|\ *.xen-syms.*.o|\ *.xen.efi.*.o|\ built_in.o|\ @@ -46,6 +46,7 @@ if [[ "$TOOLCHAINCMD" =~ $GCC_RE ]] ; then *.o) path="$(pwd)/$(dirname $obj)" dir="${path#$LIVEPATCH_BUILD_DIR}" + obj=$(basename $obj) if [ -n "$LIVEPATCH_CAPTURE_DIR" -a -d "$LIVEPATCH_CAPTURE_DIR" ]; then echo "$dir/$obj" >> "${LIVEPATCH_CAPTURE_DIR}/changed_objs" keep=yes @@ -61,15 +62,16 @@ if [[ "$TOOLCHAINCMD" =~ $GCC_RE ]] ; then done elif [[ "$TOOLCHAINCMD" =~ $OBJCOPY_RE ]] ; then obj="${!#}" - case "$obj" in + case "$(basename $obj)" in version.o|\ debug.o|\ - efi/check.o|\ + check.o|\ .*.o) ;; *.o) path="$(pwd)/$(dirname $obj)" dir="${path#$LIVEPATCH_BUILD_DIR}" + obj=$(basename $obj) if [ -n "$LIVEPATCH_CAPTURE_DIR" -a -d "$LIVEPATCH_CAPTURE_DIR" ]; then echo "$dir/$obj" >> "${LIVEPATCH_CAPTURE_DIR}/changed_objs" keep=yes @@ -85,7 +87,7 @@ ret="$?" if [[ "$keep" = "yes" ]] ; then mkdir -p "$(dirname $LIVEPATCH_CAPTURE_DIR/$dir/$obj)" - cp "$obj" "$LIVEPATCH_CAPTURE_DIR/$dir/$obj" + cp "$path/$obj" "$LIVEPATCH_CAPTURE_DIR/$dir/$obj" fi exit "$ret" -- 2.39.5