]> xenbits.xensource.com Git - livepatch-build-tools.git/commitdiff
Fix building with updated ENFORCE_UNIQUE_SYMBOLS behaviour
authorRoss Lagerwall <ross.lagerwall@citrix.com>
Thu, 28 Nov 2019 14:36:07 +0000 (14:36 +0000)
committerRoss Lagerwall <ross.lagerwall@citrix.com>
Thu, 28 Nov 2019 14:42:29 +0000 (14:42 +0000)
The patch "build: provide option to disambiguate symbol names" changes
ENFORCE_UNIQUE_SYMBOLS so that gcc generates output to a temporary file
and then objcopy is used to create the final object file. This breaks
livepatch-build's interposition of GCC to capture the changed object
files so intercept calls to objcopy as well to capture the final object
files.

While in the area, add a couple of extra object files to be ignored when
patching.

Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
livepatch-gcc

index 01e4b8c2a5d8d6364d64c0c4de506eff8f6494c4..91333d5b60f55bb023f57c8de70d399f2f7c3b03 100755 (executable)
@@ -26,6 +26,7 @@ declare -a args=("$@")
 keep=no
 
 declare -r GCC_RE='gcc.*'
+declare -r OBJCOPY_RE='objcopy.*'
 if [[ "$TOOLCHAINCMD" =~ $GCC_RE ]] ; then
     while [ "$#" -gt 0 ]; do
         if [ "$1" = "-o" ]; then
@@ -34,7 +35,9 @@ if [[ "$TOOLCHAINCMD" =~ $GCC_RE ]] ; then
             case "$obj" in
             version.o|\
             debug.o|\
+            efi/check.o|\
             *.xen-syms.*.o|\
+            *.xen.efi.*.o|\
             built_in.o|\
             prelink.o|\
             .*.o)
@@ -56,6 +59,25 @@ if [[ "$TOOLCHAINCMD" =~ $GCC_RE ]] ; then
     fi
     shift
 done
+elif [[ "$TOOLCHAINCMD" =~ $OBJCOPY_RE ]] ; then
+    obj="${!#}"
+    case "$obj" in
+        version.o|\
+        debug.o|\
+        efi/check.o|\
+        .*.o)
+            ;;
+        *.o)
+            path="$(pwd)/$(dirname $obj)"
+            dir="${path#$LIVEPATCH_BUILD_DIR}"
+            if [ -n "$LIVEPATCH_CAPTURE_DIR" -a -d "$LIVEPATCH_CAPTURE_DIR" ]; then
+                echo "$dir/$obj" >> "${LIVEPATCH_CAPTURE_DIR}/changed_objs"
+                keep=yes
+            fi
+            ;;
+        *)
+            ;;
+    esac
 fi
 
 "$TOOLCHAINCMD" "${args[@]}"