diff options
author | Mark Wielaard <mjw@redhat.com> | 2009-07-15 12:04:57 +0200 |
---|---|---|
committer | Mark Wielaard <mjw@redhat.com> | 2009-07-15 12:04:57 +0200 |
commit | 00b01a991cc4300f18c747853e85841d187b1fa4 (patch) | |
tree | 6a165d27d3e44afe1e42298d24b0c36081aa2c39 /dwflpp.h | |
parent | d52761f89a1826b1cca29b1a63269eafe7197756 (diff) | |
download | systemtap-steved-00b01a991cc4300f18c747853e85841d187b1fa4.tar.gz systemtap-steved-00b01a991cc4300f18c747853e85841d187b1fa4.tar.xz systemtap-steved-00b01a991cc4300f18c747853e85841d187b1fa4.zip |
PR10388 Support DW_OP_call_frame_cfa.
Depends on elfutils 0.142 cfi support.
* loc2c.h (c_translate_location): Take (optional) Dwarf_Op *cfa_ops.
* loc2c.c (translate): Recognize DW_OP_call_frame_cfa.
(location_from_address): Take cfa_ops, examine fb_ops, if it is
DW_OP_call_frame_cfa, pass cfa_ops to translate instead.
(location_relative): Take cfa_ops, pass to location_from_address.
(c_translate_location): Take cfa_ops, pass to location_from_address.
* loc2c-test.c (handle_variable): Take cfa_ops, pass to c_translate_location
when needed.
(main): Fetch cfa_ops, pass to handle_variable.
* dwflpp.h (struct dwflpp): Add new method get_cfa_ops.
* dwflpp.cxx: Include elfutils/version.h.
(translate_location): Fetch cfa_ops when necessary.
(get_cfa_ops): New method.
Diffstat (limited to 'dwflpp.h')
-rw-r--r-- | dwflpp.h | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -376,6 +376,10 @@ private: int num_cached_scopes; Dwarf_Die *cached_scopes; int dwarf_getscopes_cached (Dwarf_Addr pc, Dwarf_Die **scopes); + + // Returns the call frame address operations for the given program counter. + Dwarf_Op *get_cfa_ops (Dwarf_Addr pc); + }; #endif // DWFLPP_H |