unset LIVEPATCH_CAPTURE_DIR
}
+strip_extra_symbols ()
+{
+ local -r FILE="$1"
+ local -a STRIP_CMD_OPTS=()
+ local -a SYM_PREFIX=("livepatch_load_data_"
+ "livepatch_unload_data_"
+ "livepatch_preapply_data_"
+ "livepatch_apply_data_"
+ "livepatch_postapply_data_"
+ "livepatch_prerevert_data_"
+ "livepatch_revert_data_"
+ "livepatch_postrevert_data_")
+
+ STRIP_CMD_OPTS+=("-w")
+ for sym in "${SYM_PREFIX[@]}"; do
+ STRIP_CMD_OPTS+=("-N")
+ STRIP_CMD_OPTS+=("\"${sym}*\"")
+ done
+
+ strip "${STRIP_CMD_OPTS[@]}" "$FILE"
+}
+
function create_patch()
{
echo "Extracting new and modified ELF sections..."
NEW_FILES=$(comm -23 <(cd patched/xen && find . -type f -name '*.o' | sort) <(cd original/xen && find . -type f -name '*.o' | sort))
for i in $NEW_FILES; do
cp "patched/$i" "output/$i"
+ strip --strip-unneeded "output/$i"
CHANGED=1
done
"${TOOLSDIR}"/prelink $debugopt output.o "${PATCHNAME}.livepatch" "$XENSYMS" &>> "${OUTPUT}/prelink.log" || die
fi
+ strip_extra_symbols "${PATCHNAME}.livepatch"
+
objcopy --add-section .livepatch.depends=depends.bin "${PATCHNAME}.livepatch"
objcopy --set-section-flags .livepatch.depends=alloc,readonly "${PATCHNAME}.livepatch"