mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
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>
This commit is contained in:
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user