dwarves.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: "Diego 'Flameeyes' Pettenò"
	<flameeyes-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: dwarves-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: dwarf_expr: unhandled 0x12 DW_OP_ operation
Date: Fri, 15 Feb 2008 11:49:23 -0200	[thread overview]
Message-ID: <20080215134923.GE31602@ghostprotocols.net> (raw)
In-Reply-To: <20080215133619.GD31602-f8uhVLnGfZaxAyOMLChx1axOck334EZe@public.gmane.org>

Em Fri, Feb 15, 2008 at 11:36:20AM -0200, Arnaldo Carvalho de Melo escreveu:
> Em Fri, Feb 15, 2008 at 11:11:36AM -0200, Arnaldo Carvalho de Melo escreveu:
> > struct IL1JetTools : virtual public IAlgTool {
> > public:
> > 
> >         /* struct IAlgTool            <ancestor>; */     /* 4294967295 4 */
> > 
> > <SNIP>
> > 
> > See the offset?
> 
> dwarf_expr: unhandled DWARF expression: DW_OP_dup DW_OP_deref DW_OP_lit28 DW_OP_minus DW_OP_deref DW_OP_plus 

<SNIP>
 
> So, for the first expression: it takes the value of some register,
> duplicates it on the stack, dereference the top of the stack and put it
> on the stack, puts lit28 on the stack, subtracts the two entries in the
> stack and puts the result on the stack and then dereferences the top of
> the stack and adds the two and puts the result on the stack, that should
> be the end result that will tell where the ancestor class instance is.
> 
> Now to understand what is DW_OP_lit28, perhaps just the value 28? But
> why do we have also DW_OP_const28u? /me reads the DWARF docs...

Dwarf3.pdf page 14:

2.5.1.1 Literal Encodings

The following operations all push a value onto the DWARF stack.

1. DW_OP_lit0, DW_OP_lit1, ..., DW_OP_lit31
    The DW_OP_litn operations encode the unsigned literal values from 0
through 31, inclusive.

2. DW_OP_addr
    The DW_OP_addr operation has a single operand that encodes a machine
address and whose size is the size of an address on the target machine.

3. DW_OP_const1u
    The single operand of the DW_OP_const1u operation provides a 1-byte
unsigned integer constant.

4. DW_OP_const1s
    The single operand of the DW_OP_const1s operation provides a 1-byte
signed integer constant.

5. DW_OP_const2u
    The single operand of the DW_OP_const2u operation provides a 2-byte
unsigned integer constant.

6. DW_OP_const2s
    The single operand of the DW_OP_const2s operation provides a 2-byte
signed integer constant.

<SNIP>

11. DW_OP_constu
    The single operand of the DW_OP_constu operation provides an
unsigned LEB128 integer constant.

12. DW_OP_consts
    The single operand of the DW_OP_consts operation provides a signed
LEB128 integer constant.

<SNIP>

7. DW_OP_deref
   The DW_OP_deref operation pops the top stack entry and treats it as
an address. The value retrieved from that address is pushed. The size of
the data retrieved from the dereferenced address is the size of an address
on the target machine.

So probably the best thing to do is to convert this location expression
to a C like syntax and show it in the offset comment.

- Arnaldo

      parent reply	other threads:[~2008-02-15 13:49 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-02-15 12:54 dwarf_expr: unhandled 0x12 DW_OP_ operation Diego 'Flameeyes' Pettenò
     [not found] ` <m2wsp68jnl.fsf-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2008-02-15 13:08   ` Arnaldo Carvalho de Melo
     [not found]     ` <20080215130818.GB31602-f8uhVLnGfZaxAyOMLChx1axOck334EZe@public.gmane.org>
2008-02-15 13:11       ` Arnaldo Carvalho de Melo
     [not found]         ` <20080215131136.GC31602-f8uhVLnGfZaxAyOMLChx1axOck334EZe@public.gmane.org>
2008-02-15 13:36           ` Arnaldo Carvalho de Melo
     [not found]             ` <20080215133619.GD31602-f8uhVLnGfZaxAyOMLChx1axOck334EZe@public.gmane.org>
2008-02-15 13:49               ` Arnaldo Carvalho de Melo [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080215134923.GE31602@ghostprotocols.net \
    --to=acme-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
    --cc=dwarves-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=flameeyes-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).