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 [thread overview]
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
next prev parent reply other threads:[~2008-02-15 13:36 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 [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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.