diff options
author | Josh Stone <jistone@redhat.com> | 2009-02-18 12:53:08 -0800 |
---|---|---|
committer | Josh Stone <jistone@redhat.com> | 2009-02-18 12:53:08 -0800 |
commit | 23ad66b41ded81502948584816390c634f66c5ee (patch) | |
tree | db900ca0141a16152c3bf27395cd4975cad6a1ab /ChangeLog | |
parent | 2aa2ccb83142c3bf98ac8ee1558a0ee72dff3a1f (diff) | |
parent | 482fe2af17347b472232c5d7c4b26e53606e395e (diff) | |
download | systemtap-steved-23ad66b41ded81502948584816390c634f66c5ee.tar.gz systemtap-steved-23ad66b41ded81502948584816390c634f66c5ee.tar.xz systemtap-steved-23ad66b41ded81502948584816390c634f66c5ee.zip |
Enable typecasting with @cast
println(@cast(myptr, "task_struct")->pid)
println(@cast(myptr, "task_struct", "kernel")->pid)
Merge branch 'typecast', bump ChangeLog entries to push date
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 53 |
1 files changed, 53 insertions, 0 deletions
@@ -1,3 +1,56 @@ +2009-02-18 Josh Stone <jistone@redhat.com> + + * 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. + +2009-02-18 Josh Stone <jistone@redhat.com> + + * session.h (systemtap_session): Add a vector of update_visitors + that will act as filters for all probes and functions. + * elaborate.cxx (semantic_pass_symbols): Run probes and functions + through each registered code filter. + +2009-02-18 Josh Stone <jistone@redhat.com> + + * tapsets.cxx (dwarf_var_expanding_visitor::visit_cast_op): While + expanding dwarf probes, provide the current module as a default to + @casts without a module name. + +2009-02-18 Josh Stone <jistone@redhat.com> + + * staptree.h (struct cast_op, visitor::visit_cast_op): New. + * staptree.cxx (cast_op::print/visit, various visitor::visit_cast_op's): + Incorporate cast_op into the basic tree operations. + * parse.cxx (parser::parse_symbol): Parse @cast operator with an + expression operand, type string, and optional module string. + * translate.cxx (c_unparser::visit_cast_op): Error out if a @cast + survives to translation. + * elaborate.cxx (typeresolution_info::visit_cast_op): Error out if a + @cast survives to type resolution. + (symbol_fetcher::visit_cast_op): treat @casts as a symbol target + (void_statement_reducer::visit_cast_op): unused @casts can be discarded, + but the operand should still be evaluated. + 2009-02-17 Frank Ch. Eigler <fche@elastic.org> * AUTHORS: Regenerated with ... |