summaryrefslogtreecommitdiffstats
path: root/tapset/ucontext-unwind.stp
diff options
context:
space:
mode:
Diffstat (limited to 'tapset/ucontext-unwind.stp')
-rw-r--r--tapset/ucontext-unwind.stp22
1 files changed, 20 insertions, 2 deletions
diff --git a/tapset/ucontext-unwind.stp b/tapset/ucontext-unwind.stp
index d699e588..399ce0c5 100644
--- a/tapset/ucontext-unwind.stp
+++ b/tapset/ucontext-unwind.stp
@@ -28,7 +28,25 @@ function print_ubacktrace () %{ /* unprivileged */
assert_is_myproc();
if (CONTEXT->regs) {
_stp_stack_print(CONTEXT->regs, 1, CONTEXT->pi, MAXTRACE,
- current);
+ current, CONTEXT->ri);
+ } else {
+ _stp_printf("Systemtap probe: %s\n", CONTEXT->probe_point);
+ }
+%}
+
+/**
+ * sfunction print_ubacktrace_brief- Print stack back trace for current task. EXPERIMENTAL!
+ *
+ * Equivalent to print_ubacktrace(), but output for each symbol is
+ * shorter (just name and offset), and the function address is
+ * printed if it can't be mapped to a name.
+ */
+
+function print_ubacktrace_brief () %{ /* unprivileged */
+ assert_is_myproc();
+ if (CONTEXT->regs) {
+ _stp_stack_print(CONTEXT->regs, SYM_VERBOSE_BRIEF, CONTEXT->pi,
+ MAXTRACE, current, CONTEXT->ri);
} else {
_stp_printf("Systemtap probe: %s\n", CONTEXT->probe_point);
}
@@ -47,7 +65,7 @@ function ubacktrace:string () %{ /* pure */ /* unprivileged */
if (CONTEXT->regs)
_stp_stack_snprint (THIS->__retvalue, MAXSTRINGLEN,
CONTEXT->regs, 0, CONTEXT->pi, MAXTRACE,
- current);
+ current, CONTEXT->ri);
else
strlcpy (THIS->__retvalue, "", MAXSTRINGLEN);
%}