diff options
author | Mark Wielaard <mjw@redhat.com> | 2009-09-17 15:06:57 +0200 |
---|---|---|
committer | Mark Wielaard <mjw@redhat.com> | 2009-09-17 17:01:38 +0200 |
commit | 24c7957b4dbddc8545d0e0c734377746a5ae6e60 (patch) | |
tree | e276329ae8a27bc46dda20c2ef665766cc97baa2 /loc2c.h | |
parent | 6287a9e628bcbe6192da8fd9f0ce659a8acc13fc (diff) | |
download | systemtap-steved-24c7957b4dbddc8545d0e0c734377746a5ae6e60.tar.gz systemtap-steved-24c7957b4dbddc8545d0e0c734377746a5ae6e60.tar.xz systemtap-steved-24c7957b4dbddc8545d0e0c734377746a5ae6e60.zip |
PR10417 Pass around attributes for supporting DW_OP_{implicit,stack}_value.
Preparation for retrieving the Dwarf_Block that holds the value of an
DW_OP_implicit_value. We need the Dwarf_Attribute that is associated with
the location expression operants. Depends on new elfutils 0.143
functionality. Recognizes, but does not yet handle the new operants
DW_OP_{implicit,stack}_value.
* loc2c.h (c_translate_location): Take an Dwarf_Attribute.
* loc2c.c (c_translate_location): Likewise and pass it on.
(location_relative): Likewise.
(location_from_address): Likewise.
(translate): Likewise and capture Dwarf_Block.
* loc2c-test.c (handle_variable): Pass in Dwarf_Attribute.
* dwflpp.cxx (translate_location): Likewise.
(literal_stmt_for_return): Pass in NULL to indicate no attribute.
Diffstat (limited to 'loc2c.h')
-rw-r--r-- | loc2c.h | 5 |
1 files changed, 4 insertions, 1 deletions
@@ -12,7 +12,9 @@ struct location; /* Opaque */ as the starting location, begin from scratch if *INPUT is null. If DW_OP_fbreg is used, it may have a subfragment computing from the FB_ATTR location expression. The call_frame might need to be - calculated by the cfa_ops for the given pc_address. + calculated by the cfa_ops for the given pc_address. If known the + locattr provides the attribute from which the locexpr array was + retrieved. On errors, call FAIL, which should not return. Any later errors will use FAIL and FAIL_ARG from the first c_translate_location call. @@ -32,6 +34,7 @@ struct location *c_translate_location (struct obstack *, int indent, Dwarf_Addr bias, Dwarf_Addr pc_address, + Dwarf_Attribute *attr, const Dwarf_Op *locexpr, size_t locexprlen, struct location **input, |