summaryrefslogtreecommitdiffstats
path: root/parse.cxx
diff options
context:
space:
mode:
authorJosh Stone <jistone@redhat.com>2009-02-17 18:15:06 -0800
committerJosh Stone <jistone@redhat.com>2009-02-18 12:49:30 -0800
commitc4ce66a13b44386263ede8ac13924d666b69d53e (patch)
tree197b92b7ea4f15c8fd22ff4fef115cf9963a9985 /parse.cxx
parentf80d90043cf900dc6027329a61489444d7ab4ee3 (diff)
downloadsystemtap-steved-c4ce66a13b44386263ede8ac13924d666b69d53e.tar.gz
systemtap-steved-c4ce66a13b44386263ede8ac13924d666b69d53e.tar.xz
systemtap-steved-c4ce66a13b44386263ede8ac13924d666b69d53e.zip
Enable dwarf expansion of @casts
This will iterate over the module and its CUs looking for the type definition, and then work with loc2c to dereference the pointer. * loc2c.c (c_translate_argument): Create a dummy location to start the address computation from a function parameter. * translate.cxx (base_query, dwarf_query): Move some members from base_query to dwarf_query, so the former can be more generic. Also add a constructor using a module string instead of probe parameters. (dwflpp::query_modules, dwflpp::iterate_over_modules): Use a generic base_query instead of a dwarf_query. (dwarf_cast_query): New query to scan the modules and CUs for a matching type definition, and then produce a code fragment to deref each component. (dwarf_cast_expanding_visitor): Tries to replace @casts with a function call to the result of a dwarf_cast_query. (dwflpp::declaration_resolve): Search by name instead of by die. (dwflpp::translate_components): Use the incoming vardie as the first type die, so we don't assume that attr_mem has a DW_AT_type already. (dwflpp::literal_stmt_for_pointer): Construct a C fragment that starts with a pointer argument (THIS->pointer) and dereferences each member component from there. (*_derived_probe::register_patterns): Take a session parameter instead of a match_node, so we can manipulate session-wide data. (dwarf_derived_probe::register_patterns): Add a session code filter to expand @casts with a dwarf_cast_expanding_visitor.
Diffstat (limited to 'parse.cxx')
0 files changed, 0 insertions, 0 deletions