torture: Add kvm.sh --debug-info argument
authorPaul E. McKenney <paulmck@kernel.org>
Wed, 23 Aug 2023 19:50:10 +0000 (12:50 -0700)
committerFrederic Weisbecker <frederic@kernel.org>
Sun, 24 Sep 2023 15:24:02 +0000 (17:24 +0200)
This commit adds a --debug-info argument to kvm.sh in order to ease
interpretation of addresses printed on the console and the like.
This argument also disables KASLR.

Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
tools/testing/selftests/rcutorture/bin/kvm.sh

index b0f36a6..7af73dd 100755 (executable)
@@ -49,6 +49,7 @@ TORTURE_SHUTDOWN_GRACE=180
 TORTURE_SUITE=rcu
 TORTURE_MOD=rcutorture
 TORTURE_TRUST_MAKE=""
+debuginfo="CONFIG_DEBUG_INFO_NONE=n CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y"
 resdir=""
 configs=""
 cpus=0
@@ -68,6 +69,7 @@ usage () {
        echo "       --cpus N"
        echo "       --datestamp string"
        echo "       --defconfig string"
+       echo "       --debug-info"
        echo "       --dryrun batches|scenarios|sched|script"
        echo "       --duration minutes | <seconds>s | <hours>h | <days>d"
        echo "       --gdb"
@@ -135,6 +137,15 @@ do
                ds=$2
                shift
                ;;
+       --debug-info|--debuginfo)
+               if test -z "$TORTURE_KCONFIG_KCSAN_ARG" && test -z "$TORTURE_BOOT_GDB_ARG"
+               then
+                       TORTURE_KCONFIG_KCSAN_ARG="$debuginfo"; export TORTURE_KCONFIG_KCSAN_ARG
+                       TORTURE_BOOT_GDB_ARG="nokaslr"; export TORTURE_BOOT_GDB_ARG
+               else
+                       echo "Ignored redundant --debug-info (implied by --kcsan &c)"
+               fi
+               ;;
        --defconfig)
                checkarg --defconfig "defconfigtype" "$#" "$2" '^[^/][^/]*$' '^--'
                TORTURE_DEFCONFIG=$2
@@ -163,7 +174,7 @@ do
                shift
                ;;
        --gdb)
-               TORTURE_KCONFIG_GDB_ARG="CONFIG_DEBUG_INFO_NONE=n CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y"; export TORTURE_KCONFIG_GDB_ARG
+               TORTURE_KCONFIG_GDB_ARG="$debuginfo"; export TORTURE_KCONFIG_GDB_ARG
                TORTURE_BOOT_GDB_ARG="nokaslr"; export TORTURE_BOOT_GDB_ARG
                TORTURE_QEMU_GDB_ARG="-s -S"; export TORTURE_QEMU_GDB_ARG
                ;;
@@ -179,7 +190,7 @@ do
                shift
                ;;
        --kasan)
-               TORTURE_KCONFIG_KASAN_ARG="CONFIG_DEBUG_INFO_NONE=n CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y CONFIG_KASAN=y"; export TORTURE_KCONFIG_KASAN_ARG
+               TORTURE_KCONFIG_KASAN_ARG="$debuginfo CONFIG_KASAN=y"; export TORTURE_KCONFIG_KASAN_ARG
                if test -n "$torture_qemu_mem_default"
                then
                        TORTURE_QEMU_MEM=2G
@@ -191,7 +202,7 @@ do
                shift
                ;;
        --kcsan)
-               TORTURE_KCONFIG_KCSAN_ARG="CONFIG_DEBUG_INFO_NONE=n CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y CONFIG_KCSAN=y CONFIG_KCSAN_STRICT=y CONFIG_KCSAN_REPORT_ONCE_IN_MS=100000 CONFIG_KCSAN_VERBOSE=y CONFIG_DEBUG_LOCK_ALLOC=y CONFIG_PROVE_LOCKING=y"; export TORTURE_KCONFIG_KCSAN_ARG
+               TORTURE_KCONFIG_KCSAN_ARG="$debuginfo CONFIG_KCSAN=y CONFIG_KCSAN_STRICT=y CONFIG_KCSAN_REPORT_ONCE_IN_MS=100000 CONFIG_KCSAN_VERBOSE=y CONFIG_DEBUG_LOCK_ALLOC=y CONFIG_PROVE_LOCKING=y"; export TORTURE_KCONFIG_KCSAN_ARG
                ;;
        --kmake-arg|--kmake-args)
                checkarg --kmake-arg "(kernel make arguments)" $# "$2" '.*' '^error$'