[Bug translator/23074] New: unhandled DW_OP operation in DWARF expression

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

[Bug translator/23074] New: unhandled DW_OP operation in DWARF expression

github at kalvdans dot no-ip.org
https://sourceware.org/bugzilla/show_bug.cgi?id=23074

            Bug ID: 23074
           Summary: unhandled DW_OP operation in DWARF expression
           Product: systemtap
           Version: unspecified
            Status: NEW
          Severity: normal
          Priority: P2
         Component: translator
          Assignee: systemtap at sourceware dot org
          Reporter: mcermak at redhat dot com
  Target Milestone: ---

# stap --version; uname -r
Systemtap translator/driver (version 3.3/0.170, commit
release-3.2-170-g6cf36bad1fc1)
Copyright (C) 2005-2017 Red Hat, Inc. and others
This is free software; see the source for copying conditions.
tested kernel versions: 2.6.18 ... 4.16-rc4
enabled features: AVAHI BOOST_STRING_REF DYNINST BPF JAVA PYTHON2 LIBRPM
LIBSQLITE3 LIBVIRT LIBXML2 NLS NSS READLINE
4.14.0-49.el7a.x86_64
#
# stap -e 'probe sunrpc.clnt.call_sync {exit()}'
semantic error: while processing probe
module("sunrpc").function("rpc_call_sync@net/sunrpc/clnt.c:1064") from:
sunrpc.clnt.call_sync from: sunrpc.clnt.call_sync

semantic error: unhandled DW_OP operation in DWARF expression [0] at 0 (250:
121165, 0): identifier '$clnt' at
/usr/local/share/systemtap/tapset/linux/rpc.stp:476:28
        source:                 __xprt = rcu_dereference($clnt->cl_xprt)
                                                         ^

semantic error: unhandled DW_OP operation in DWARF expression [0] at 0 (250:
121165, 0): identifier '$clnt' at :476:28
        source:                 __xprt = rcu_dereference($clnt->cl_xprt)
                                                         ^

semantic error: unhandled DW_OP operation in DWARF expression [0] at 0 (250:
121165, 0): identifier '$clnt' at :476:28
        source:                 __xprt = rcu_dereference($clnt->cl_xprt)
                                                         ^

semantic error: unhandled DW_OP operation in DWARF expression [0] at 0 (250:
121165, 0): identifier '$clnt' at :476:28
        source:                 __xprt = rcu_dereference($clnt->cl_xprt)
                                                         ^

semantic error: unhandled DW_OP operation in DWARF expression [0] at 0 (250:
121165, 0): identifier '$clnt' at :476:28
        source:                 __xprt = rcu_dereference($clnt->cl_xprt)
                                                         ^

Pass 2: analysis failed.  [man error::pass2]
#

--
You are receiving this mail because:
You are the assignee for the bug.
Reply | Threaded
Open this post in threaded view
|

[Bug translator/23074] unhandled DW_OP operation in DWARF expression (DW_OP_GNU_parameter_ref)

github at kalvdans dot no-ip.org
https://sourceware.org/bugzilla/show_bug.cgi?id=23074

Mark Wielaard <mark at klomp dot org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |mark at klomp dot org
            Summary|unhandled DW_OP operation   |unhandled DW_OP operation
                   |in DWARF expression         |in DWARF expression
                   |                            |(DW_OP_GNU_parameter_ref)

--- Comment #1 from Mark Wielaard <mark at klomp dot org> ---
> semantic error: unhandled DW_OP operation in DWARF expression [0] at 0 (250: 121165, 0):

That (xxx: yyy, zzz) is the DW_OP atom number the first (and possibly) second
argument.

250 = 0xFA, which is DW_OP_GNU_parameter_ref (the first argument is a DIE
offset).

That is indeed not handled in loc2stap.c.

I'll at least make the error message more readable.

DW_OP_GNU_parameter_ref is a but like DW_OP_GNU_entry_value, which we also
currently don't handle. The operand is an unsigned CU relative DIE offset
pointing to a DW_TAG_formal_parameter (you can get it by calling
dwarf_getlocation_die). The value that parameter had at the call site of the
current function will be put on the DWARF stack.

One way to retrieve the value would be by finding the
DW_TAG_GNU_call_site_parameter which has as DW_AT_abstract_origin the same
formal parameter DIE. This DIE  might have a DW_AT_GNU_call_site_value or
DW_AT_GNU_call_site_data_value which is a DWARF expression describing the value
or the location of the value. (DWARF5 uses slightly different DIE tags and
attributes.)

--
You are receiving this mail because:
You are the assignee for the bug.
Reply | Threaded
Open this post in threaded view
|

[Bug translator/23074] unhandled DW_OP operation in DWARF expression (DW_OP_GNU_parameter_ref)

github at kalvdans dot no-ip.org
In reply to this post by github at kalvdans dot no-ip.org
https://sourceware.org/bugzilla/show_bug.cgi?id=23074

--- Comment #2 from Mark Wielaard <mark at klomp dot org> ---
(In reply to Mark Wielaard from comment #1)

> > semantic error: unhandled DW_OP operation in DWARF expression [0] at 0 (250: 121165, 0):
>
> That (xxx: yyy, zzz) is the DW_OP atom number the first (and possibly)
> second argument.
>
> 250 = 0xFA, which is DW_OP_GNU_parameter_ref (the first argument is a DIE
> offset).
>
> That is indeed not handled in loc2stap.c.
>
> I'll at least make the error message more readable.

commit 0b7f8e4f612df190b9a4a022dc95bf35ecfd0392
Author: Mark Wielaard <[hidden email]>
Date:   Tue Apr 17 18:50:31 2018 +0200

    loc2stap.c: Give proper error message for unhandled
DW_OP_GNU_parameter_ref.

--
You are receiving this mail because:
You are the assignee for the bug.
Reply | Threaded
Open this post in threaded view
|

[Bug translator/23074] unhandled DW_OP operation in DWARF expression (DW_OP_GNU_parameter_ref)

github at kalvdans dot no-ip.org
In reply to this post by github at kalvdans dot no-ip.org
https://sourceware.org/bugzilla/show_bug.cgi?id=23074

Frank Ch. Eigler <fche at redhat dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |fche at redhat dot com
           Assignee|systemtap at sourceware dot org    |juddin at redhat dot com

--
You are receiving this mail because:
You are the assignee for the bug.