Dwarves Archive on lore.kernel.org
 help / color / 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:36:20 -0200
Message-ID: <20080215133619.GD31602@ghostprotocols.net> (raw)
In-Reply-To: <20080215131136.GC31602-f8uhVLnGfZaxAyOMLChx1axOck334EZe@public.gmane.org>

Em Fri, Feb 15, 2008 at 11:11:36AM -0200, Arnaldo Carvalho de Melo escreveu:
> Em Fri, Feb 15, 2008 at 11:08:18AM -0200, Arnaldo Carvalho de Melo escreveu:
> > Em Fri, Feb 15, 2008 at 01:54:22PM +0100, Diego 'Flameeyes' Pettenò escreveu:
> > > 
> > > I'm trying to use pfunct to identify software that bundles internal
> > > copies of common libraries (I've started with zlib's adler32 function
> > > for now), and I've seen this message being repeated tons of times for
> > > kile, kxmleditor, VirtualBox and a lot more stuff.
> > > 
> > > Has anybody an idea of what that means?
> > 
> > virtual public classes :-\ Can you send me one of the object files? I'll
> > try to work on supporting non-trivial DWARF expressions so that we
> > properly support this.
> 
> No need for that, I have an object from the ATLAS project that has these
> types of classes:
> 
> 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 
dwarf_expr: unhandled DWARF expression: DW_OP_dup DW_OP_deref DW_OP_const1u DW_OP_shl DW_OP_minus DW_OP_deref DW_OP_plus 
dwarf_expr: unhandled DWARF expression: DW_OP_dup DW_OP_deref DW_OP_lit28 DW_OP_minus DW_OP_deref DW_OP_plus 
dwarf_expr: unhandled DWARF expression: DW_OP_dup DW_OP_deref DW_OP_lit20 DW_OP_minus DW_OP_deref DW_OP_plus 
dwarf_expr: unhandled DWARF expression: DW_OP_dup DW_OP_deref DW_OP_const1u DW_OP_lit28 DW_OP_minus DW_OP_deref DW_OP_plus 
dwarf_expr: unhandled DWARF expression: DW_OP_dup DW_OP_deref DW_OP_const1u DW_OP_reg8 DW_OP_minus DW_OP_deref DW_OP_plus 
dwarf_expr: unhandled DWARF expression: DW_OP_dup DW_OP_deref DW_OP_const1u DW_OP_lit20 DW_OP_minus DW_OP_deref DW_OP_plus 
dwarf_expr: unhandled DWARF expression: DW_OP_dup DW_OP_deref DW_OP_lit28 DW_OP_minus DW_OP_deref DW_OP_plus 
dwarf_expr: unhandled DWARF expression: DW_OP_dup DW_OP_deref DW_OP_const1u DW_OP_shl DW_OP_minus DW_OP_deref DW_OP_plus 
dwarf_expr: unhandled DWARF expression: DW_OP_dup DW_OP_deref DW_OP_lit28 DW_OP_minus DW_OP_deref DW_OP_plus 
dwarf_expr: unhandled DWARF expression: DW_OP_dup DW_OP_deref DW_OP_lit20 DW_OP_minus DW_OP_deref DW_OP_plus 
dwarf_expr: unhandled DWARF expression: DW_OP_dup DW_OP_deref DW_OP_const1u DW_OP_lit28 DW_OP_minus DW_OP_deref DW_OP_plus 
dwarf_expr: unhandled DWARF expression: DW_OP_dup DW_OP_deref DW_OP_const1u DW_OP_lit20 DW_OP_minus DW_OP_deref DW_OP_plus 
dwarf_expr: unhandled DWARF expression: DW_OP_dup DW_OP_deref DW_OP_const1u DW_OP_reg8 DW_OP_minus DW_OP_deref DW_OP_plus 

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...

- Arnaldo

  parent reply index

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-02-15 12:54 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 [this message]
     [not found]             ` <20080215133619.GD31602-f8uhVLnGfZaxAyOMLChx1axOck334EZe@public.gmane.org>
2008-02-15 13:49               ` Arnaldo Carvalho de Melo

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=20080215133619.GD31602@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

Dwarves Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/dwarves/0 dwarves/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dwarves dwarves/ https://lore.kernel.org/dwarves \
		dwarves@vger.kernel.org
	public-inbox-index dwarves

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.dwarves


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git