This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


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.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]