milos-linux/scripts
Masami Hiramatsu (Google) ecfad17122 decode_stacktrace: decode caller address
Decode the caller address instead of the return address by default.  This
also introduced -R option to provide return address decoding mode.

This changes the decode_stacktrace.sh to decode the line info 1byte before
the return address which will be the call(branch) instruction address.  If
the return address is a symbol address (zero offset from it), it falls
back to decoding the return address.

This improves results especially when optimizations have changed the order
of the lines around the return address, or when the return address does
not have the actual line information.

With this change;
 Call Trace:
  <TASK>
  dump_stack_lvl (lib/dump_stack.c:94 lib/dump_stack.c:120)
  lockdep_rcu_suspicious (kernel/locking/lockdep.c:6876)
  event_filter_pid_sched_process_fork (kernel/trace/trace_events.c:1057)
  kernel_clone (include/trace/events/sched.h:396 include/trace/events/sched.h:396 kernel/fork.c:2664)
  __x64_sys_clone (kernel/fork.c:2795 kernel/fork.c:2779 kernel/fork.c:2779)
  do_syscall_64 (arch/x86/entry/syscall_64.c:63 arch/x86/entry/syscall_64.c:94)
  ? entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:121)
  ? trace_irq_disable (include/trace/events/preemptirq.h:36)
  entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:121)

Without this (or give -R option);
 Call Trace:
  <TASK>
  dump_stack_lvl (lib/dump_stack.c:122)
  lockdep_rcu_suspicious (kernel/locking/lockdep.c:6877)
  event_filter_pid_sched_process_fork (kernel/trace/trace_events.c:?)
  kernel_clone (include/trace/events/sched.h:? include/trace/events/sched.h:396 kernel/fork.c:2664)
  __x64_sys_clone (kernel/fork.c:2779)
  do_syscall_64 (arch/x86/entry/syscall_64.c:?)
  ? entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130)
  ? trace_irq_disable (include/trace/events/preemptirq.h:36)
  entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130)

[akpm@linux-foundation.org: fix spello]
Link: https://lkml.kernel.org/r/177275821652.1557019.18367881408364381866.stgit@mhiramat.tok.corp.google.com
Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Tested-by: Luca Ceresoli <luca.ceresoli@bootlin.com>	[arm64]
Cc: Carlos Llamas <cmllamas@google.com>
Cc: Sasha Levin (Microsoft) <sashal@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
2026-03-27 21:19:45 -07:00
..
atomic rust: helpers: Move #define __rust_helper out of atomic.c 2026-01-09 19:01:42 +08:00
bash-completion
basic
clang-tools Revert "scripts/clang-tools: Handle included .c files in gen_compile_commands" 2025-12-27 20:48:01 +01:00
coccinelle coccinelle: Add kmalloc_objs conversion script 2026-02-09 10:48:20 -08:00
crypto lib/crypto: tests: Add KUnit tests for NH 2026-01-12 11:07:49 -08:00
dtc of: Add for_each_compatible_node_scoped() helper 2026-02-03 20:58:12 -06:00
dummy-tools kbuild: dummy-tools: Add python3 2026-01-29 17:12:13 -07:00
gcc-plugins
gdb scripts/gdb/symbols: handle module path parameters 2026-03-27 21:19:41 -07:00
gendwarfksyms gendwarfksyms: Fix build on 32-bit hosts 2025-12-22 16:35:54 +00:00
genksyms genksyms: Fix parsing a declarator with a preceding attribute 2026-02-26 11:53:05 -07:00
include
ipe
kconfig Kbuild/Kconfig updates for 7.0 2026-02-12 11:28:27 -05:00
ksymoops
livepatch livepatch/klp-build: Fix inconsistent kernel version 2026-03-16 12:50:17 -07:00
mod Kbuild/Kconfig updates for 7.0 2026-02-12 11:28:27 -05:00
package kbuild: install-extmod-build: Package resolve_btfids if necessary 2026-02-26 14:49:34 -07:00
selinux
tracing
.gitignore scripts: add tracepoint-update to the list of ignores files 2025-10-29 08:46:05 -04:00
as-version.sh
asn1_compiler.c
bloat-o-meter scripts/bloat-o-meter: rename file arguments to match output 2026-03-27 21:19:33 -07:00
bootgraph.pl
bpf_doc.py bpf: Finish constification of 1st parameter of bpf_d_path() 2025-10-04 09:05:23 -07:00
build-version
cc-can-link.sh kbuild: Fix CC_CAN_LINK detection 2026-02-13 14:23:06 -05:00
cc-version.sh
check-function-names.sh kbuild: prefer ${NM} in check-function-names.sh 2026-01-14 14:13:41 +01:00
check-git
check-sysctl-docs
check-uapi.sh
check_extable.sh
checkdeclares.pl
checker-valid.sh compiler: Use __typeof_unqual__() for __unqual_scalar_typeof() 2026-01-18 10:32:03 +01:00
checkincludes.pl
checkkconfigsymbols.py
checkpatch.pl virtio,vhost,vdpa: features, fixes 2026-02-13 12:02:18 -08:00
checkstack.pl
checksyscalls.sh
checkversion.pl
cleanfile
cleanpatch
coccicheck scripts: coccicheck: warn on unset debug file 2026-02-21 17:22:30 +01:00
config
const_structs.checkpatch
container scripts: add tool to run containerized builds 2026-01-22 15:30:48 -07:00
context-analysis-suppression.txt sched: Enable context analysis for core.c and fair.c 2026-01-05 16:43:36 +01:00
decode_stacktrace.sh decode_stacktrace: decode caller address 2026-03-27 21:19:45 -07:00
decodecode
depmod.sh
dev-needs.sh
diffconfig
elf-parse.c sorttable: Move ELF parsing into scripts/elf-parse.[ch] 2025-10-24 16:43:14 -04:00
elf-parse.h sorttable: Move ELF parsing into scripts/elf-parse.[ch] 2025-10-24 16:43:14 -04:00
extract-fwblobs
extract-ikconfig
extract-module-sig.pl
extract-sys-certs.pl
extract-vmlinux
extract_xc3028.pl
faddr2line scripts/faddr2line: Fix "Argument list too long" error 2025-10-14 14:45:20 -07:00
file-size.sh
gen-btf.sh scripts/gen-btf.sh: Use CONFIG_SHELL for execution 2026-01-21 12:36:32 -08:00
gen-crc-consts.py
gen-randstruct-seed.sh
gen_packed_field_checks.c
generate_builtin_ranges.awk
generate_initcall_order.pl
generate_rust_analyzer.py Rust changes for v6.20 / v7.0 2026-02-10 11:53:01 -08:00
generate_rust_target.rs
get_dvb_firmware
get_maintainer.pl get_maintainer: add ** glob pattern support 2026-03-27 21:19:38 -07:00
gfp-translate
git-resolve.sh
git.orderFile
head-object-list.txt
headerdep.pl
headers_install.sh scripts: headers_install.sh: Remove config leak ignore machinery 2026-01-30 16:46:17 +01:00
insert-sys-cert.c
install.sh
integer-wrap-ignore.scl
jobserver-exec docs: Move the python libraries to tools/lib/python 2025-11-18 09:22:40 -07:00
kallsyms.c kallsyms: Get rid of kallsyms relative base 2026-01-22 15:58:22 -07:00
Kbuild.include
Kconfig.include rust: kconfig: Don't require RUST_IS_AVAILABLE for rustc-option 2026-02-03 15:29:17 -07:00
kernel-doc docs: add a scripts/kernel-doc symbolic link 2026-01-20 15:57:06 -07:00
ld-version.sh
leaking_addresses.pl
Lindent
link-vmlinux.sh Kbuild/Kconfig updates for 7.0 2026-02-11 13:40:35 -08:00
macro_checker.py
make_fit.py scripts/make_fit.py: Drop explicit LZMA parallel compression 2026-02-13 14:24:01 -05:00
Makefile tracing: Add a tracepoint verification check at build time 2025-10-24 16:43:14 -04:00
Makefile.asm-headers
Makefile.autofdo
Makefile.btf resolve_btfids: Change in-place update with raw binary output 2025-12-19 10:55:40 -08:00
Makefile.build rust: ptr: add projection infrastructure 2026-03-07 23:06:17 +01:00
Makefile.clang
Makefile.clean
Makefile.compiler
Makefile.context-analysis compiler-context-analysis: Introduce header suppressions 2026-01-05 16:43:33 +01:00
Makefile.debug
Makefile.defconf
Makefile.dtbinst
Makefile.dtbs scripts/dtc: Update to upstream version v1.7.2-62-ga26ef6400bd8 2026-02-03 20:58:12 -06:00
Makefile.gcc-plugins
Makefile.headersinst
Makefile.host
Makefile.kasan
Makefile.kcov
Makefile.kcsan
Makefile.kmsan
Makefile.kstack_erase
Makefile.lib Kbuild/Kconfig updates for 7.0 2026-02-11 13:40:35 -08:00
Makefile.modfinal scripts/gen-btf.sh: Use CONFIG_SHELL for execution 2026-01-21 12:36:32 -08:00
Makefile.modinst kbuild: Use objtree for module signing key path 2025-11-08 12:17:58 +01:00
Makefile.modpost
Makefile.package kbuild: Add top-level target for building gen_init_cpio 2025-12-19 14:58:11 -07:00
Makefile.propeller
Makefile.randstruct
Makefile.ubsan
Makefile.userprogs
Makefile.vdsoinst
Makefile.vmlinux bpf-next-7.0 2026-02-10 11:26:21 -08:00
Makefile.vmlinux_o kbuild: Check for functions with ambiguous -ffunction-sections section names 2025-11-21 10:04:10 +01:00
Makefile.warn kbuild: Drop superfluous compiler option checks 2026-01-14 14:22:33 -07:00
makelst
markup_oops.pl
min-tool-version.sh
misc-check
mkcompile_h
mksysmap
mkuboot.sh
module-common.c
module.lds.S livepatch: Free klp_{object,func}_ext data after initialization 2026-02-05 08:00:45 -08:00
modules-check.sh
nsdeps
objdiff
objdump-func
orc_hash.sh
pahole-version.sh
parse-maintainers.pl
patch-kernel
profile2linkerlist.pl
prune-kernel
recordmcount.c
recordmcount.h
recordmcount.pl
relocs_check.sh
remove-stale-files
rust_is_available.sh
rust_is_available_bindgen_0_66.h
rust_is_available_bindgen_libclang.h
rust_is_available_bindgen_libclang_concat.h
rust_is_available_test.py
rustc-llvm-version.sh
rustc-version.sh
rustdoc_test_builder.rs
rustdoc_test_gen.rs Rust changes for v6.20 / v7.0 2026-02-10 11:53:01 -08:00
setlocalversion
show_delta
sign-file.c Modules changes for v7.0-rc1 2026-02-10 09:49:18 -08:00
sorttable.c sorttable: Move ELF parsing into scripts/elf-parse.[ch] 2025-10-24 16:43:14 -04:00
spdxcheck-test.sh
spdxcheck.py treewide: Update email address 2026-01-11 06:09:11 -10:00
spdxexclude
spelling.txt scripts/spelling.txt: add "exaclty" typo 2026-03-27 21:19:34 -07:00
ssl-common.h
stackdelta
stackusage
subarch.include
syscall.tbl rseq: Implement sys_rseq_slice_yield() 2026-01-22 11:11:17 +01:00
syscallhdr.sh
syscallnr.sh
syscalltbl.sh
tags.sh tags: Add regex for context_lock_struct 2026-01-05 16:43:37 +01:00
tools-support-relr.sh
tracepoint-update.c scripts/tracepoint-update: Fix memory leak in add_string() on failure 2026-01-23 13:34:45 -05:00
unifdef.c
ver_linux
verify_builtin_ranges.awk
xen-hypercalls.sh
xz_wrap.sh