dwarves.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* pahole regression: -a no longer works?
@ 2009-06-26  1:29 Samuel Bronson
       [not found] ` <20090627144405.GE4981@ghostprotocols.net>
  0 siblings, 1 reply; 5+ messages in thread
From: Samuel Bronson @ 2009-06-26  1:29 UTC (permalink / raw)
  To: dwarves-u79uwXL29TY76Z2rM5mHXA

I've just noticed that pahole's -a flag does not seem to result in
typedef'd structs being printed anymore.

For example, with Debian's dwarves 1.3-1, on a self-compiled libVEX
from valgrind, I see loads of typedef'd struct types like this one:

typedef struct {
        IRTypeEnv *                type_env;             /*     0     4 */
        HReg *                     vregmap;              /*     4     4 */
        Int                        n_vregmap;            /*     8     4 */
        HInstrArray *              code;                 /*    12     4 */
        Int                        vreg_ctr;             /*    16     4 */

        /* size: 20, cachelines: 1 */
        /* last cacheline: 20 bytes */
} ISelEnv;      /* definitions: 1 */

but in the latest, I get only the following three:

struct _IRConst {
        IRConstTag                 tag;                  /*     0     4 */
        union {
                Bool               U1;                   /*           1 */
                UChar              U8;                   /*           1 */
                UShort             U16;                  /*           2 */
                UInt               U32;                  /*           4 */
                ULong              U64;                  /*           8 */
                Double             F64;                  /*           8 */
                ULong              F64i;                 /*           8 */
                UShort             V128;                 /*           2 */
        } Ico;                                           /*     4     8 */

        /* size: 12, cachelines: 1, members: 2 */
        /* last cacheline: 12 bytes */
};
struct _IRExpr {
        IRExprTag                  tag;                  /*     0     4 */
        union {
                struct {
                        Int        binder;               /*     4     4 */
                } Binder;                                /*           4 */
                struct {
                        Int        offset;               /*     4     4 */
                        IRType     ty;                   /*     8     4 */
                } Get;                                   /*           8 */
                struct {
                        IRRegArray * descr;              /*     4     4 */
                        IRExpr *   ix;                   /*     8     4 */
                        Int        bias;                 /*    12     4 */
                } GetI;                                  /*          12 */
                struct {
                        IRTemp     tmp;                  /*     4     4 */
                } RdTmp;                                 /*           4 */
                struct {
                        IROp       op;                   /*     4     4 */
                        IRExpr *   arg1;                 /*     8     4 */
                        IRExpr *   arg2;                 /*    12     4 */
                        IRExpr *   arg3;                 /*    16     4 */
                        IRExpr *   arg4;                 /*    20     4 */
                } Qop;                                   /*          20 */
                struct {
                        IROp       op;                   /*     4     4 */
                        IRExpr *   arg1;                 /*     8     4 */
                        IRExpr *   arg2;                 /*    12     4 */
                        IRExpr *   arg3;                 /*    16     4 */
                } Triop;                                 /*          16 */
                struct {
                        IROp       op;                   /*     4     4 */
                        IRExpr *   arg1;                 /*     8     4 */
                        IRExpr *   arg2;                 /*    12     4 */
                } Binop;                                 /*          12 */
                struct {
                        IROp       op;                   /*     4     4 */
                        IRExpr *   arg;                  /*     8     4 */
                } Unop;                                  /*           8 */
                struct {
                        IREndness  end;                  /*     4     4 */
                        IRType     ty;                   /*     8     4 */
                        IRExpr *   addr;                 /*    12     4 */
                } Load;                                  /*          12 */
                struct {
                        IRConst *  con;                  /*     4     4 */
                } Const;                                 /*           4 */
                struct {
                        IRCallee * cee;                  /*     4     4 */
                        IRType     retty;                /*     8     4 */
                        IRExpr * * args;                 /*    12     4 */
                } CCall;                                 /*          12 */
                struct {
                        IRExpr *   cond;                 /*     4     4 */
                        IRExpr *   expr0;                /*     8     4 */
                        IRExpr *   exprX;                /*    12     4 */
                } Mux0X;                                 /*          12 */
        } Iex;                                           /*     4    20 */

        /* size: 24, cachelines: 1, members: 2 */
        /* last cacheline: 24 bytes */
};
struct _IRStmt {
        IRStmtTag                  tag;                  /*     0     4 */
        union {
                struct {
                } NoOp;                                  /*           0 */
                struct {
                        Addr64     addr;                 /*     4     8 */
                        Int        len;                  /*    12     4 */
                } IMark;                                 /*          12 */
                struct {
                        IRExpr *   base;                 /*     4     4 */
                        Int        len;                  /*     8     4 */
                        IRExpr *   nia;                  /*    12     4 */
                } AbiHint;                               /*          12 */
                struct {
                        Int        offset;               /*     4     4 */
                        IRExpr *   data;                 /*     8     4 */
                } Put;                                   /*           8 */
                struct {
                        IRRegArray * descr;              /*     4     4 */
                        IRExpr *   ix;                   /*     8     4 */
                        Int        bias;                 /*    12     4 */
                        IRExpr *   data;                 /*    16     4 */
                } PutI;                                  /*          16 */
                struct {
                        IRTemp     tmp;                  /*     4     4 */
                        IRExpr *   data;                 /*     8     4 */
                } WrTmp;                                 /*           8 */
                struct {
                        IREndness  end;                  /*     4     4 */
                        IRExpr *   addr;                 /*     8     4 */
                        IRExpr *   data;                 /*    12     4 */
                } Store;                                 /*          12 */
                struct {
                        IRDirty *  details;              /*     4     4 */
                } Dirty;                                 /*           4 */
                        IRExpr *   data;                 /*     8     4 */
                } WrTmp;                                 /*           8 */
                struct {
                        IREndness  end;                  /*     4     4 */
                        IRExpr *   addr;                 /*     8     4 */
                        IRExpr *   data;                 /*    12     4 */
                } Store;                                 /*          12 */
                struct {
                        IRDirty *  details;              /*     4     4 */
                } Dirty;                                 /*           4 */
                struct {
                        IRMBusEvent event;               /*     4     4 */
                } MBE;                                   /*           4 */
                struct {
                        IRExpr *   guard;                /*     4     4 */
                        IRJumpKind jk;                   /*     8     4 */
                        IRConst *  dst;                  /*    12     4 */
                } Exit;                                  /*          12 */
        } Ist;                                           /*     4    16 */

        /* size: 20, cachelines: 1, members: 2 */
        /* last cacheline: 20 bytes */
};

This should be pretty easy to reproduce, but if not I could provide
you with an .o file... I'd bisect it myself if it weren't for the fact
that libebl.a is no longer available on Debian squeeze/sid, which
means I can't build without patching the cmake :-(
--
To unsubscribe from this list: send the line "unsubscribe dwarves" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 5+ messages in thread
* Re: pahole regression: -a no longer works?
@ 2009-06-27 15:36 Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 5+ messages in thread
From: Arnaldo Carvalho de Melo @ 2009-06-27 15:36 UTC (permalink / raw)
  To: Samuel Bronson; +Cc: dwarves-u79uwXL29TY76Z2rM5mHXA

Em Thu, Jun 25, 2009 at 09:29:28PM -0400, Samuel Bronson escreveu:
> I've just noticed that pahole's -a flag does not seem to result in
> typedef'd structs being printed anymore.
> 
> For example, with Debian's dwarves 1.3-1, on a self-compiled libVEX
> from valgrind, I see loads of typedef'd struct types like this one:
> 
> typedef struct {
>         IRTypeEnv *                type_env;             /*     0     4 */
>         HReg *                     vregmap;              /*     4     4 */
>         Int                        n_vregmap;            /*     8     4 */
>         HInstrArray *              code;                 /*    12     4 */
>         Int                        vreg_ctr;             /*    16     4 */
> 
>         /* size: 20, cachelines: 1 */
>         /* last cacheline: 20 bytes */
> } ISelEnv;      /* definitions: 1 */
> 
> but in the latest, I get only the following three:

<SNIP>

Yeah, that is a regression, I'll fix it, till then just use "pdwtags",
it will print all the tags, including the structs that have no name.
 
> This should be pretty easy to reproduce, but if not I could provide
> you with an .o file... I'd bisect it myself if it weren't for the fact
> that libebl.a is no longer available on Debian squeeze/sid, which
> means I can't build without patching the cmake :-(

What about my suggestion to change the proposed patch to check if it is
running on a debian system and if so to avoid checking for libebl?

- Arnaldo
--
To unsubscribe from this list: send the line "unsubscribe dwarves" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2009-06-27 16:34 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-06-26  1:29 pahole regression: -a no longer works? Samuel Bronson
     [not found] ` <20090627144405.GE4981@ghostprotocols.net>
     [not found]   ` <20090627144405.GE4981-f8uhVLnGfZaxAyOMLChx1axOck334EZe@public.gmane.org>
2009-06-27 15:44     ` Samuel Bronson
     [not found]       ` <87eit5lm0u.wl%naesten-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2009-06-27 15:50         ` Arnaldo Carvalho de Melo
2009-06-27 16:34         ` Arnaldo Carvalho de Melo
2009-06-27 15:36 Arnaldo Carvalho de Melo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).