54dc0a
From 764a57b1756dffba9bf7c990f752dbd739ea149f Mon Sep 17 00:00:00 2001
54dc0a
From: Song Liu <song@kernel.org>
54dc0a
Date: Mon, 6 Mar 2023 22:43:43 -0800
54dc0a
Subject: [PATCH 106/107] kpatch-build: Run objtool on thinlto files
54dc0a
54dc0a
In this way, CDO should generate patches with required sections, such as
54dc0a
the .orc sections.
54dc0a
54dc0a
Signed-off-by: Song Liu <song@kernel.org>
54dc0a
---
54dc0a
 kpatch-build/kpatch-build | 10 ++++++++++
54dc0a
 1 file changed, 10 insertions(+)
54dc0a
54dc0a
diff --git a/kpatch-build/kpatch-build b/kpatch-build/kpatch-build
54dc0a
index fc9f92b..938e88f 100755
54dc0a
--- a/kpatch-build/kpatch-build
54dc0a
+++ b/kpatch-build/kpatch-build
54dc0a
@@ -1212,6 +1212,9 @@ fi
54dc0a
 
54dc0a
 if [[ -n "$CONFIG_LTO_CLANG" ]]; then
54dc0a
 	DIFF_OBJS="$TEMPDIR/thinlto_objs"
54dc0a
+
54dc0a
+	# Get the objtool command line, so we can run it on the thinlto files
54dc0a
+	OBJTOOL_CMD=$(grep -o -e "/tools/objtool/objtool .*" "$BUILDDIR"/.vmlinux.o.cmd  | sed 's/vmlinux.o//')
54dc0a
 else
54dc0a
 	DIFF_OBJS="$TEMPDIR/changed_objs"
54dc0a
 fi
54dc0a
@@ -1314,6 +1317,13 @@ for i in $FILES; do
54dc0a
 			# skip .thinlto file without any functions
54dc0a
 			num_func=$("$READELF" --symbols "orig/$i" | grep -c FUNC)
54dc0a
 			[[ $num_func -eq 0 ]] && continue
54dc0a
+			if [[ $i = vmlinux.o.* ]] ; then
54dc0a
+				eval "$BUILDDIR/$OBJTOOL_CMD orig/$i"
54dc0a
+				eval "$BUILDDIR/$OBJTOOL_CMD patched/$i"
54dc0a
+			else
54dc0a
+				eval "$BUILDDIR/$OBJTOOL_CMD --module orig/$i"
54dc0a
+				eval "$BUILDDIR/$OBJTOOL_CMD --module patched/$i"
54dc0a
+			fi
54dc0a
 		fi
54dc0a
 
54dc0a
 		# create-diff-object orig.o patched.o parent-name parent-symtab
54dc0a
-- 
54dc0a
2.37.3
54dc0a