summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Wielaard <mwielaard@redhat.com>2008-09-10 13:21:50 +0200
committerMark Wielaard <mjw@redhat.com>2008-09-10 14:01:32 +0200
commitf6f5a33817ac1d406c8c2687e32493cbc38ef4e7 (patch)
tree1196394a0621bbf0494d1cc27f9b85e1928aaba9
parent61a805842f0ac863affa37245fc012e3cdcb4312 (diff)
downloadsystemtap-steved-f6f5a33817ac1d406c8c2687e32493cbc38ef4e7.tar.gz
systemtap-steved-f6f5a33817ac1d406c8c2687e32493cbc38ef4e7.tar.xz
systemtap-steved-f6f5a33817ac1d406c8c2687e32493cbc38ef4e7.zip
Feed dwarf unwinder data through _stp_mod_sec_lookup (), but disabled for now.
-rw-r--r--runtime/ChangeLog8
-rw-r--r--runtime/runtime.h6
-rw-r--r--runtime/stack-x86_64.c2
-rw-r--r--runtime/unwind.c3
4 files changed, 15 insertions, 4 deletions
diff --git a/runtime/ChangeLog b/runtime/ChangeLog
index b51a2c9b..7502bf34 100644
--- a/runtime/ChangeLog
+++ b/runtime/ChangeLog
@@ -1,3 +1,11 @@
+2008-09-10 Mark Wielaard <mjw@redhat.com>
+
+ * unwind.c (unwind): Use _stp_mod_sec_lookup to get module and
+ unwind tables.
+ * runtime.h (STP_USE_FRAME_BUFFER): Disable by default for now.
+ * stack-x86_64.c (__stp_stack_print): Add levels to
+ _stp_stack_print_fallback call.
+
2008-09-09 Masami Hiramatsu <mhiramat@redhat.com>
* regs-ia64.c (__ia64_fetch_register): Return the address of the
diff --git a/runtime/runtime.h b/runtime/runtime.h
index fd0cac9e..52d689a3 100644
--- a/runtime/runtime.h
+++ b/runtime/runtime.h
@@ -73,8 +73,10 @@ static struct
#endif
#endif
-/* dwarf unwinder only tested so far on i386 and x86_64 */
-#if !defined(STP_USE_FRAME_BUFFER) && (defined(__i386__) || defined(__x86_64__))
+/* dwarf unwinder only tested so far on i386 and x86_64,
+ but globally disabled for now */
+#if 0
+// !defined(STP_USE_FRAME_BUFFER) && (defined(__i386__) || defined(__x86_64__))
#define STP_USE_DWARF_UNWINDER
#endif
diff --git a/runtime/stack-x86_64.c b/runtime/stack-x86_64.c
index 783e72bd..d3ec91cf 100644
--- a/runtime/stack-x86_64.c
+++ b/runtime/stack-x86_64.c
@@ -45,6 +45,6 @@ static void __stp_stack_print(struct pt_regs *regs, int verbose, int levels)
break;
}
#else /* ! STP_USE_DWARF_UNWINDER */
- _stp_stack_print_fallback(REG_SP(regs), verbose);
+ _stp_stack_print_fallback(REG_SP(regs), verbose, levels);
#endif
}
diff --git a/runtime/unwind.c b/runtime/unwind.c
index 21ea4559..7b19573d 100644
--- a/runtime/unwind.c
+++ b/runtime/unwind.c
@@ -676,6 +676,7 @@ int unwind(struct unwind_frame_info *frame)
signed ptrType = -1;
uleb128_t retAddrReg = 0;
struct _stp_module *m;
+ struct _stp_section *s = NULL;
struct unwind_state state;
dbug_unwind(1, "pc=%lx, %lx", pc, UNW_PC(frame));
@@ -683,7 +684,7 @@ int unwind(struct unwind_frame_info *frame)
if (UNW_PC(frame) == 0)
return -EINVAL;
- m = NULL /*_stp_get_unwind_info(pc) */;
+ m = _stp_mod_sec_lookup (pc, &s);
if (unlikely(m == NULL)) {
dbug_unwind(1, "No module found for pc=%lx", pc);
return -EINVAL;