From: Ross Lagerwall Date: Thu, 28 Nov 2019 14:36:07 +0000 (+0000) Subject: Fix building with updated ENFORCE_UNIQUE_SYMBOLS behaviour X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=4add03a77facc03929656ec4adb315c0baee22f4;p=livepatch-build-tools.git Fix building with updated ENFORCE_UNIQUE_SYMBOLS behaviour 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 --- diff --git a/livepatch-gcc b/livepatch-gcc index 01e4b8c..91333d5 100755 --- a/livepatch-gcc +++ b/livepatch-gcc @@ -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[@]}"