On Mon, Mar 23, 2026 at 9:49 AM Sasha Levin <[email protected]> wrote: > > Embed DWARF-derived function parameter name and type information in the > kernel image so that oops and WARN dumps display the crashing function's > register-passed arguments with their names, types, and values. > > A new build-time tool (scripts/gen_paraminfo.c) parses DW_TAG_subprogram > and DW_TAG_formal_parameter entries from DWARF .debug_info, extracting > parameter names and human-readable type strings. The resulting tables are > stored in .rodata using the same two-phase link approach as lineinfo. > > At runtime, kallsyms_show_paraminfo() performs a binary search on the > paraminfo tables, maps parameters to x86-64 calling convention registers > (RDI, RSI, RDX, RCX, R8, R9), and prints each parameter's name, type, > and value from pt_regs. If a parameter value matches the page fault > address (CR2), it is highlighted with "<-- fault address". > > Integration at show_regs() means this works for both oops and WARN() > automatically, since both paths provide full pt_regs at the exception > point. > > Example output: > > Function parameters (ext4_readdir): > file (struct file *) = 0xffff888123456000 > ctx (struct dir_context *) = 0x0000000000001234 <-- fault address > > Gated behind CONFIG_KALLSYMS_PARAMINFO (depends on CONFIG_KALLSYMS_LINEINFO). > Adds approximately 1-2 MB to the kernel image for ~58K functions. > > Assisted-by: Claude:claude-opus-4-6 > Signed-off-by: Sasha Levin <[email protected]>
Nack. You asked claude to reinvent pahole and BTF and it did it completely missing years of fine tuning that pahole does. dwarf cannot be trusted as-is. pahole converts it carefully by analyzing optimized out arguments and dropping signatures from BTF that are not accurate. This work is still ongoing. For example see this set: https://lore.kernel.org/bpf/[email protected]/ pahole isn't perfect, but what you attempted to do here is just broken.

