summaryrefslogtreecommitdiff
path: root/tools/objtool/tests
diff options
context:
space:
mode:
authorPuranjay Mohan <puranjay@kernel.org>2026-09-16 11:43:07 -0700
committerIngo Molnar <mingo@kernel.org>2026-09-21 11:02:40 +0200
commit960c3e352bac749c35041d683f32bdde467a2960 (patch)
tree6449394fe5f1432c614c95cc190c189632ac6048 /tools/objtool/tests
parentf4b8bfb1285992a6ab6f3d7cd25186d64f0773ee (diff)
downloadlinux-next-960c3e352bac749c35041d683f32bdde467a2960.tar.gz
linux-next-960c3e352bac749c35041d683f32bdde467a2960.zip
objtool/klp: Add test for newly introduced functions
A function added by the patch has no original to correlate against, and still has to be carried into the livepatch or the changed caller ends up referencing something which does not exist. The helper is noinline so the case survives the optimiser; otherwise the compiler folds it into its only caller and the test covers nothing. Signed-off-by: Puranjay Mohan <puranjay@kernel.org> Signed-off-by: Song Liu <song@kernel.org> Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org> Signed-off-by: Ingo Molnar <mingo@kernel.org> Assisted-by: Claude:claude-opus-5 Link: https://patch.msgid.link/20260916184351.2720310-15-song@kernel.org
Diffstat (limited to 'tools/objtool/tests')
-rw-r--r--tools/objtool/tests/generic/fixtures/new_function.c21
-rwxr-xr-xtools/objtool/tests/generic/test-new-function.sh16
2 files changed, 37 insertions, 0 deletions
diff --git a/tools/objtool/tests/generic/fixtures/new_function.c b/tools/objtool/tests/generic/fixtures/new_function.c
new file mode 100644
index 000000000000..e7886eaaff3e
--- /dev/null
+++ b/tools/objtool/tests/generic/fixtures/new_function.c
@@ -0,0 +1,21 @@
+// SPDX-License-Identifier: GPL-2.0
+/* Function introduced by the patch. noinline keeps it from being folded. */
+
+static const char __modinfo[]
+ __attribute__((section(".modinfo"), used, aligned(1))) = "\0name=vmlinux";
+
+#ifdef PATCHED
+static __attribute__((noinline)) int klp_new_helper(int x)
+{
+ return x * 7;
+}
+#endif
+
+int target(int x)
+{
+#ifdef PATCHED
+ return klp_new_helper(x);
+#else
+ return x;
+#endif
+}
diff --git a/tools/objtool/tests/generic/test-new-function.sh b/tools/objtool/tests/generic/test-new-function.sh
new file mode 100755
index 000000000000..b0b7f6443110
--- /dev/null
+++ b/tools/objtool/tests/generic/test-new-function.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-2.0
+#
+# A function added by the patch has no original to correlate against and must
+# still be carried into the livepatch.
+
+. "$(dirname "$0")/../lib.sh"
+
+setup
+build_pair new_function.c
+run_diff
+
+assert_patched target
+assert_symbol klp_new_helper
+
+pass "new function carried into the patch with its caller"