summaryrefslogtreecommitdiffstats
path: root/runtime
diff options
context:
space:
mode:
authorMartin Hunt <hunt@redhat.com>2008-03-31 11:05:13 -0400
committerMartin Hunt <hunt@redhat.com>2008-03-31 11:05:13 -0400
commitb45613ad2a9740217ad3050adc6fcd038286ce88 (patch)
tree297c4a233db4efa3b9286dac6caca2dc6a547c11 /runtime
parenta18db0a7895c33bb5246a15f715b30fbd006bd9b (diff)
downloadsystemtap-steved-b45613ad2a9740217ad3050adc6fcd038286ce88.tar.gz
systemtap-steved-b45613ad2a9740217ad3050adc6fcd038286ce88.tar.xz
systemtap-steved-b45613ad2a9740217ad3050adc6fcd038286ce88.zip
Add new define STP_USE_DWARF_UNWINDER which is set based on which archs
work with the unwinder.
Diffstat (limited to 'runtime')
-rw-r--r--runtime/ChangeLog4
-rw-r--r--runtime/runtime.h5
-rw-r--r--runtime/transport/ChangeLog2
-rw-r--r--runtime/transport/symbols.c11
4 files changed, 17 insertions, 5 deletions
diff --git a/runtime/ChangeLog b/runtime/ChangeLog
index 7c6dbbea..e6d8ed72 100644
--- a/runtime/ChangeLog
+++ b/runtime/ChangeLog
@@ -1,3 +1,7 @@
+2008-03-31 Martin Hunt <hunt@redhat.com>
+
+ * runtime.h (STP_USE_DWARF_UNWINDER): Define.
+
2008-03-30 Martin Hunt <hunt@redhat.com>
* runtime.h (STP_USE_FRAME_POINTER): Define when frame pointers
diff --git a/runtime/runtime.h b/runtime/runtime.h
index 6d8d9dc9..8d267173 100644
--- a/runtime/runtime.h
+++ b/runtime/runtime.h
@@ -77,6 +77,11 @@ 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__))
+#define STP_USE_DWARF_UNWINDER
+#endif
+
#include "alloc.c"
#include "print.c"
#include "string.c"
diff --git a/runtime/transport/ChangeLog b/runtime/transport/ChangeLog
index 56f4477b..0bb62497 100644
--- a/runtime/transport/ChangeLog
+++ b/runtime/transport/ChangeLog
@@ -1,5 +1,7 @@
2008-03-31 Martin Hunt <hunt@redhat.com>
+ * symbols.c (_stp_init_modules): Use STP_USE_DWARF_UNWINDER.
+
* transport.c (_stp_get_root_dir): Remove misleading error message.
2008-03-30 Martin Hunt <hunt@redhat.com>
diff --git a/runtime/transport/symbols.c b/runtime/transport/symbols.c
index 118d5693..8bab1e70 100644
--- a/runtime/transport/symbols.c
+++ b/runtime/transport/symbols.c
@@ -581,10 +581,7 @@ static int _stp_init_modules(void)
/* unlocks the list */
modules_op->stop(NULL, NULL);
-#ifdef STP_USE_FRAME_POINTER
- /* done with modules, now go */
- _stp_ctl_send(STP_TRANSPORT, NULL, 0);
-#else
+#ifdef STP_USE_DWARF_UNWINDER
/* now that we have all the modules, ask for their unwind info */
{
unsigned long flags;
@@ -616,7 +613,11 @@ static int _stp_init_modules(void)
left -= 2;
_stp_ctl_send(STP_UNWIND, buf, sizeof(buf) - left);
}
-#endif
+#else
+ /* done with modules, now go */
+ _stp_ctl_send(STP_TRANSPORT, NULL, 0);
+#endif /* STP_USE_DWARF_UNWINDER */
+
return 0;
}