On Thu, Dec 4, 2025 at 8:59 AM Jakub Jelinek <[email protected]> wrote: > > On Thu, Dec 04, 2025 at 08:37:19AM -0800, Y Song via Dwarf-discuss wrote: > > Motivation > > ========== > > > > My particular use case is for bpf-based linux kernel > > tracing. When tracing a kernel function, the user would like > > to know the actual signature. This is critical. > > > > For example, if the actual signature is > > static int foo(int a, int c) { ... } > > and the source signature is > > static int foo(int a, int b, int c) { ... } > > That is pretty normal function cloning. > __attribute__((noinline)) static int foo (int a, int b, int c) { return a + > c; } > int bar (int a, int c) > { > return foo (a, 0, c) + foo (1, 1, 2) + foo (2, 2, 3) + foo (a, 3, 4) + foo > (5, 4, c); > } > > You can just normally emit > DW_TAG_subprogram > DW_AT_name "foo" > DW_AT_inline 1 > ... > DW_TAG_formal_parameter > DW_AT_name "a" > ... > DW_TAG_formal_parameter > DW_AT_name "b" > ... > DW_TAG_formal_parameter > DW_AT_name "c" > for the original user function (if it isn't emitted in that shape, > without DW_AT_low_pc/DW_AT_high_pc/DW_AT_ranges etc. > Then > DW_TAG_subprogram > DW_AT_abstract_origin <above foo DW_TAG_subprogram> > DW_AT_low_pc ... > DW_AT_high_pc ... > ... > DW_TAG_formal_parameter > DW_AT_abstract_origin <above a DW_TAG_formal_parameter> > DW_AT_location ... > DW_TAG_formal_parameter > DW_AT_abstract_origin <above b DW_TAG_formal_parameter> > DW_AT_location DW_OP_GNU_parameter_ref <reference to > DW_TAG_call_site_parameter> > DW_TAG_formal_parameter > DW_AT_abstract_origin <above c DW_TAG_formal_parameter> > DW_AT_location ... > > DW_OP_GNU_parameter_ref is an extension, see > https://dwarfstd.org/issues/230109.1.html > In any case, I don't see why you need something like > DW_TAG_inlined_subroutine at DW_TAG_compile_unit scope, you can't inline a > function into a translation unit.
Thanks. This is indeed an option. See https://github.com/llvm/llvm-project/pull/157349#issuecomment-3412590751 But lldb has some concerns since it change the *existing* output during lldb debugger. See the above link. Do you have better suggestions or have a way to make lldb people okay with it? > > Jakub > -- Dwarf-discuss mailing list [email protected] https://lists.dwarfstd.org/mailman/listinfo/dwarf-discuss
