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>
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
case "$obj" in
version.o|\
debug.o|\
+ efi/check.o|\
*.xen-syms.*.o|\
+ *.xen.efi.*.o|\
built_in.o|\
prelink.o|\
.*.o)
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[@]}"