On Tue, Feb 06, 2024 at 01:02:26PM +0100, Sebastian Andrzej Siewior wrote: > with linux kernel v6.8-rc2-RT and the following file as testcase > > ----->8-------- > > #include <linux/spinlock.h> > #include <linux/local_lock.h> > > struct per_cpu_struct { > local_lock_t lock; > unsigned int something; > }; > > static DEFINE_PER_CPU(struct per_cpu_struct, per_cpu_struct) = { > .lock = INIT_LOCAL_LOCK(lock), > }; > > DEFINE_GUARD(ll_lock, local_lock_t __percpu*, > local_lock(_T), > local_unlock(_T)) > > void function(void); > void function(void) > { > struct per_cpu_struct *pcs = this_cpu_ptr(&per_cpu_struct); > > guard(ll_lock)(&per_cpu_struct.lock); > pcs->something++; > } > > -----8<-------- > > compiling and running pahole afterwards: > | make kernel/pahole-tc.o && pahole -J --btf_gen_floats -j --lang_exclude=rust kernel/pahole-tc.o > | CC kernel/pahole-tc.o > | error: found variable 'per_cpu_struct' in CU 'kernel/pahole-tc.c' that has void type > > This doesn't look good. If I swap the order of "lock" and "something" > within per_cpu_struct then it goes away. > The dwarf/die object it complains about has only DW_AT_abstract_origin > and DW_AT_location set. > At this point I am not sure if gcc wrongly created the dwarf information > or of pahole accidentally matches the internal local_lock_t member as > per_cpu_struct because it starts the same address. > > >From dumpwarf the problematic entry is: > | 0x0000085b: DW_TAG_variable > | DW_AT_abstract_origin (0x0000099e "t") > | DW_AT_location (DW_OP_addr 0x0, DW_OP_stack_value) > > which looks slightly different in the good case: > | 0x00000852: DW_TAG_variable > | DW_AT_abstract_origin (0x00000980 "t") > | DW_AT_location (0x00000040: > | [0x0000000000000046, 0x000000000000005b): DW_OP_reg3 RBX > | [0x000000000000005b, 0x0000000000000061): DW_OP_addr 0x0, DW_OP_stack_value) > | DW_AT_GNU_locviews (0x0000003c) > > I made an archive with c file, the compiled version in bad and good case > (swapped the first two members), the dumpwarf output and uploaded to > https://breakpoint.cc/pahole-tc.tar.xz Lots of great info, I'm on it. - Arnaldo