summaryrefslogtreecommitdiff
path: root/scripts/livepatch
diff options
context:
space:
mode:
authorJosh Poimboeuf <jpoimboe@kernel.org>2025-09-17 09:04:09 -0700
committerJosh Poimboeuf <jpoimboe@kernel.org>2025-10-14 14:50:19 -0700
commit2c2f0b8626917c48e4b12827d296a3c654612b90 (patch)
tree0f0e553bead9e20121e94b9ddf3a6fbdd00730b2 /scripts/livepatch
parent24ebfcd65a871df4555b98c49c9ed9a92f146113 (diff)
livepatch/klp-build: Add --debug option to show cloning decisions
Add a --debug option which gets passed to "objtool klp diff" to enable debug output related to cloning decisions. Acked-by: Petr Mladek <pmladek@suse.com> Tested-by: Joe Lawrence <joe.lawrence@redhat.com> Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
Diffstat (limited to 'scripts/livepatch')
-rwxr-xr-xscripts/livepatch/klp-build16
1 files changed, 13 insertions, 3 deletions
diff --git a/scripts/livepatch/klp-build b/scripts/livepatch/klp-build
index 01ed0b66bfaf..28ee259ce5f6 100755
--- a/scripts/livepatch/klp-build
+++ b/scripts/livepatch/klp-build
@@ -20,7 +20,7 @@ set -o nounset
# This helps keep execution in pipes so pipefail+errexit can catch errors.
shopt -s lastpipe
-unset SKIP_CLEANUP XTRACE
+unset DEBUG_CLONE SKIP_CLEANUP XTRACE
REPLACE=1
SHORT_CIRCUIT=0
@@ -120,6 +120,7 @@ Options:
-v, --verbose Pass V=1 to kernel/module builds
Advanced Options:
+ -d, --debug Show symbol/reloc cloning decisions
-S, --short-circuit=STEP Start at build step (requires prior --keep-tmp)
1|orig Build original kernel (default)
2|patched Build patched kernel
@@ -140,8 +141,8 @@ process_args() {
local long
local args
- short="hj:o:vS:T"
- long="help,jobs:,output:,no-replace,verbose,short-circuit:,keep-tmp"
+ short="hj:o:vdS:T"
+ long="help,jobs:,output:,no-replace,verbose,debug,short-circuit:,keep-tmp"
args=$(getopt --options "$short" --longoptions "$long" -- "$@") || {
echo; usage; exit
@@ -174,6 +175,11 @@ process_args() {
VERBOSE="V=1"
shift
;;
+ -d | --debug)
+ DEBUG_CLONE=1
+ keep_tmp=1
+ shift
+ ;;
-S | --short-circuit)
[[ ! -d "$TMP_DIR" ]] && die "--short-circuit requires preserved klp-tmp dir"
keep_tmp=1
@@ -596,6 +602,7 @@ copy_patched_objects() {
diff_objects() {
local log="$KLP_DIFF_LOG"
local files=()
+ local opts=()
rm -rf "$DIFF_DIR"
mkdir -p "$DIFF_DIR"
@@ -603,6 +610,8 @@ diff_objects() {
find "$PATCHED_DIR" -type f -name "*.o" | mapfile -t files
[[ ${#files[@]} -eq 0 ]] && die "no changes detected"
+ [[ -v DEBUG_CLONE ]] && opts=("--debug")
+
# Diff all changed objects
for file in "${files[@]}"; do
local rel_file="${file#"$PATCHED_DIR"/}"
@@ -616,6 +625,7 @@ diff_objects() {
cmd=("$SRC/tools/objtool/objtool")
cmd+=("klp")
cmd+=("diff")
+ (( ${#opts[@]} > 0 )) && cmd+=("${opts[@]}")
cmd+=("$orig_file")
cmd+=("$patched_file")
cmd+=("$out_file")