Messages in this thread | | | Date | Fri, 06 Mar 2015 21:02:50 +0900 | From | Masami Hiramatsu <> | Subject | Re: perf probe: can't find unnamed union members |
| |
Hi,
(2015/03/06 0:32), Arnaldo Carvalho de Melo wrote: > > Hi Masami, > > [root@zoo ~]# perf probe -x ~/bin/perf -L lock__delete <lock__delete@/home/git/linux/tools/perf/util/annotate.c:0> > 0 static void lock__delete(struct ins_operands *ops) > 1 { > 2 struct ins *ins = ops->locked.ins; > > 4 if (ins && ins->ops->free) > 5 ins->ops->free(ops->locked.ops); > else > 7 ins__delete(ops->locked.ops); > > 9 zfree(&ops->locked.ops); > 10 zfree(&ops->target.raw); > 11 zfree(&ops->target.name); > 12 } > > And: > > [root@zoo ~]# pahole ~/bin/perf -C ins_operands > struct ins_operands { > char * raw; /* 0 8 */ > struct { > char * raw; /* 8 8 */ > char * name; /* 16 8 */ > u64 addr; /* 24 8 */ > u64 offset; /* 32 8 */ > } target; /* 8 32 */ > union { > struct { > char * raw; /* 40 8 */ > char * name; /* 48 8 */ > u64 addr; /* 56 8 */ > } source; /* 24 */ > struct { > struct ins * ins; /* 40 8 */ > struct ins_operands * ops; /* 48 8 */ > } locked; /* 16 */ > }; /* 40 24 */ > /* --- cacheline 1 boundary (64 bytes) --- */ > > /* size: 64, cachelines: 1, members: 3 */ > }; > [root@zoo ~]# > > But: > > [root@zoo ~]# perf probe -x ~/bin/perf lock__delete ops 'locked_ops=ops->locked.ops' > ops(type:ins_operands) has no member locked. > Error: Failed to add events. > [root@zoo ~]# > > Yes, it has :-)
Oh, I see. That is not yet supported. Here, I got the structure in debuginfo.
[ fac4e] structure_type name (strp) "ins_operands" byte_size (data1) 64 decl_file (data1) 5 decl_line (data1) 16 sibling (ref4) [ fac79] [ fac5a] member name (string) "raw" decl_file (data1) 5 decl_line (data1) 17 type (ref4) [ f8bdb] data_member_location (data1) 0 [ fac66] member name (strp) "target" decl_file (data1) 5 decl_line (data1) 23 type (ref4) [ fab9c] data_member_location (data1) 8 [ fac72] member <= here is the unnamed one type (ref4) [ fac7f] data_member_location (data1) 28 [ fac79] pointer_type byte_size (data1) 8 type (ref4) [ fac4e] [ fac7f] union_type byte_size (data1) 24 decl_file (data1) 5 decl_line (data1) 24 sibling (ref4) [ fac9e] [ fac87] member name (strp) "source" decl_file (data1) 5 decl_line (data1) 29 type (ref4) [ fabd5] [ fac92] member <= here is actual member name (strp) "locked" decl_file (data1) 5 decl_line (data1) 33 type (ref4) [ fac02]
Let me see how I can solve this...
Thank you for reporting!
> > - Arnaldo >
-- Masami HIRAMATSU Software Platform Research Dept. Linux Technology Research Center Hitachi, Ltd., Yokohama Research Laboratory E-mail: masami.hiramatsu.pt@hitachi.com
| |