]> sourceware.org Git - systemtap.git/commit
PR5916: Exploit kretprobe data storage area
authorJosh Stone <jistone@redhat.com>
Wed, 11 Nov 2009 02:37:02 +0000 (18:37 -0800)
committerJosh Stone <jistone@redhat.com>
Wed, 11 Nov 2009 02:48:34 +0000 (18:48 -0800)
commitaf234c407dbab3e62994863272a63b612b0c8c63
tree7b2fb7929bbc776a3eae96ef311f890e319a0bf2
parentb513cd75dac185ac258dc8260a01891c30be6251
PR5916: Exploit kretprobe data storage area

Since 2.6.25, kretprobes can carry a data packet to be filled in an
entry_handler.  This patch lets us store our implicitly-saved $target
variables in .return probes in that data area.

* tapset/kretprobe.stp: New get/set functions for kretprobe data.
* translate.cxx (c_unparser::emit_common_header): Add context->pi_longs.
* tapsets.cxx
  (dwarf_var_expanding_visitor::visit_target_symbol_saved_return): Switch
  between the old and new methods of saving $vars in .return probes.
  (dwarf_var_expanding_visitor::gen_mapped_saved_return): The old way.
  (dwarf_var_expanding_visitor::gen_kretprobe_saved_return): The new way.
  (dwarf_derived_probe::join_group): Don't register paired entry-handlers.
  (dwarf_derived_probe::dwarf_derived_probe): Remember saved-var details.
  (dwarf_derived_probe_group::emit_module_decls): Output saved-var details.
  Also split the kretprobe handler whether we're on entry or return.
  (dwarf_derived_probe_group::emit_module_init): Prepare the entry handler.
* testsuite/systemtap.base/kretprobe-vars.stp: Test implicit $var saving.
tapset/kretprobe.stp [new file with mode: 0644]
tapsets.cxx
testsuite/systemtap.base/kretprobe-vars.exp [new file with mode: 0644]
testsuite/systemtap.base/kretprobe-vars.stp [new file with mode: 0644]
translate.cxx
This page took 0.02578 seconds and 5 git commands to generate.