Re: perf probe: can't find unnamed union members

From: Masami Hiramatsu
Date: Fri Mar 06 2015 - 07:03:11 EST


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@xxxxxxxxxxx


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/