summaryrefslogtreecommitdiffstats
path: root/runtime/unwind/i386.h
diff options
context:
space:
mode:
authorMark Wielaard <mjw@redhat.com>2009-07-31 18:46:47 +0200
committerMark Wielaard <mjw@redhat.com>2009-07-31 19:01:45 +0200
commit6415dddecb81f59996e422e87e1d3da266d743e8 (patch)
treebd8d939f14299912e111e2027399c39538e394ca /runtime/unwind/i386.h
parentf1312b2c2bc1ec7b0475a251f27a2f75779f4ccb (diff)
downloadsystemtap-steved-6415dddecb81f59996e422e87e1d3da266d743e8.tar.gz
systemtap-steved-6415dddecb81f59996e422e87e1d3da266d743e8.tar.xz
systemtap-steved-6415dddecb81f59996e422e87e1d3da266d743e8.zip
PR10458. User actual breakpoint address for [ku]probe[ret].
Setup the pt_regs REG_IP to the actual breakpoint address before entering a probe handler for [ku]probe[ret] (and restore it after returning). This helps getting symbol resolution and backtraces more correct and makes it more conform with other probe handlers like the iutrace and profile timers that also provide pt_regs (which untill now exhibited off-by-one errors while unwinding). * tapsets.cxx (dwarf_derived_probe_group::emit_module_decls): Setup REG_IP correctly before calling enter_kprobe_probe and enter_kretprobe_probe, and restore afterwards. (uprobe_derived_probe_group::emit_module_decls): Likewise for enter_uprobe_probe and enter_uretprobe_probe. (kprobe_derived_probe_group::emit_module_decls): Likewise for enter_kprobe2_probe and enter_kretprobe2_probe. * runtime/unwind/i386.h (arch_unw_init_frame_info): Initialize info->call_frame to zero. * runtime/unwind/x86_64.h (arch_unw_init_frame_info): Likewise.
Diffstat (limited to 'runtime/unwind/i386.h')
-rw-r--r--runtime/unwind/i386.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/runtime/unwind/i386.h b/runtime/unwind/i386.h
index 9f488f07..b19df584 100644
--- a/runtime/unwind/i386.h
+++ b/runtime/unwind/i386.h
@@ -92,7 +92,7 @@ static inline void arch_unw_init_frame_info(struct unwind_frame_info *info,
#endif
}
- info->call_frame = 1;
+ info->call_frame = 0;
}
static inline void arch_unw_init_blocked(struct unwind_frame_info *info)