[PATCH 0/2] libtraceevent: Add BTF parsing for function arguments
Steven Rostedt <[email protected]> Thu, 31 Jul 2025 14:52:32 -0400
| Newsgroups | org.kernel.vger.linux-trace-devel |
|---|---|
| Message-ID | <[email protected]> |
From: "Steven Rostedt (Google)" <[email protected]> Now that functions can save the first 6 registers of their args during a trace, and BTF can be used to decipher those arguments, have libtraceevent handle this as well. Add a tep_load_btf() function that loads the content of /sys/kernel/btf/vmlinux and then uses that to parse it to show the arguments of functions in the trace. When trace-cmd supports this, it would look like: # trace-cmd record -p function -O func-args cat /etc/passwd # trace-cmd report cat-33501 [005] ..... 136155.767937: function: mutex_unlock(lock=0xffffffff831dbbe0) cat-33501 [005] ..... 136155.767939: function: __mutex_unlock_slowpath(lock=0xffffffff831dbbe0, ip=0xffffffff814a7154) cat-33501 [005] ..... 136155.767940: function: __f_unlock_pos(f=0xffff8881538de000) cat-33501 [005] ..... 136155.767940: function: mutex_unlock(lock=0xffff8881538de090) cat-33501 [005] ..... 136155.767940: function: __mutex_unlock_slowpath(lock=0xffff8881538de090, ip=0xffffffff816e8ed1) cat-33501 [005] ..... 136155.767941: function: mem_cgroup_handle_over_high(gfp_mask=0xcc0) cat-33501 [005] ..... 136155.767941: function: blkcg_maybe_throttle_current() cat-33501 [005] ..... 136155.767942: function: __rseq_handle_notify_resume(ksig=0x0, regs=0xffffc9000e3eff58) cat-33501 [005] d.... 136155.767943: function: fpregs_assert_state_consistent() cat-33501 [005] d.... 136155.767943: function: switch_fpu_return() cat-33501 [005] ..... 136155.767950: function: __x64_sys_execve(regs=0xffffc9000e3eff58) cat-33501 [005] ..... 136155.767951: function: getname_flags(filename=0x7ffe7d33f3d0, flags=0) cat-33501 [005] ..... 136155.767951: function: getname_flags.part.0(7ffe7d33f3d0, 0, 0, 0, 0, 0) cat-33501 [005] ..... 136155.767951: function: kmem_cache_alloc_noprof(s=0xffff8881001d3800, gfpflags=0xcc0) cat-33501 [005] ..... 136155.767951: function: fs_reclaim_acquire(gfp_mask=0xcc0) cat-33501 [005] ..... 136155.767952: function: fs_reclaim_release(gfp_mask=0xcc0) cat-33501 [005] ..... 136155.767953: function: kmemleak_alloc(ptr=0xffff8881114a0000, size=0x1000, min_count=1, gfp=0xcc0) cat-33501 [005] ..... 136155.767953: function: __create_object(ptr=0xffff8881114a0000, size=0x1000, min_count=1, gfp=0xcc0, objflags=0x0) cat-33501 [005] ..... 136155.767954: function: __alloc_object(gfp=0xcc0) Steven Rostedt (Google) (2): libtraceevent: Add loading of BTF to the tep handle libtraceevent: Add man page for the new BTF functions Documentation/libtraceevent-btf.txt | 158 ++++++++++ Documentation/libtraceevent.txt | 5 + include/traceevent/event-parse.h | 5 + plugins/plugin_function.c | 15 +- src/Makefile | 1 + src/event-parse-local.h | 6 + src/event-parse.c | 2 + src/trace-btf.c | 449 ++++++++++++++++++++++++++++ 8 files changed, 631 insertions(+), 10 deletions(-) create mode 100644 Documentation/libtraceevent-btf.txt create mode 100644 src/trace-btf.c -- 2.47.2