manual/probes.texi: Add documentation of setjmp/longjmp probes
authorWill Newton <will.newton@linaro.org>
Tue, 28 Jan 2014 14:29:35 +0000 (14:29 +0000)
committerWill Newton <will.newton@linaro.org>
Tue, 11 Feb 2014 10:19:24 +0000 (10:19 +0000)
Add some documentation of the setjmp, longjmp and longjmp_target
Systemtap probe points.

ChangeLog:

2014-02-11  Will Newton  <will.newton@linaro.org>

* manual/probes.texi (Internal Probes): Add documentation
of setjmp, longjmp and longjmp_target probes.

ChangeLog
manual/probes.texi

index cfd48c0..15cfe18 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2014-02-11  Will Newton  <will.newton@linaro.org>
 
+       * manual/probes.texi (Internal Probes): Add documentation
+       of setjmp, longjmp and longjmp_target probes.
+
+2014-02-11  Will Newton  <will.newton@linaro.org>
+
        * include/stap-probe.h: Add comment about probe argument
        format.
 
index 25d06e5..8fe8a78 100644 (file)
@@ -17,6 +17,7 @@ arguments.
 @menu
 * Memory Allocation Probes::  Probes in the memory allocation subsystem
 * Mathematical Function Probes::  Probes in mathematical functions
+* Non-local Goto Probes::  Probes in setjmp and longjmp
 @end menu
 
 @node Memory Allocation Probes
@@ -368,3 +369,42 @@ results in multiple precision computation with precision 32.  Argument
 @var{$arg1} is the input to the function, @var{$arg2} is the error bound of
 @var{$arg1} and @var{$arg3} is the computed result.
 @end deftp
+
+@node Non-local Goto Probes
+@section Non-local Goto Probes
+
+These probes are used to signal calls to @code{setjmp}, @code{sigsetjmp},
+@code{longjmp} or @code{siglongjmp}.
+
+@deftp Probe setjmp (void *@var{$arg1}, int @var{$arg2}, void *@var{$arg3})
+This probe is triggered whenever @code{setjmp} or @code{sigsetjmp} is
+called.  Argument @var{$arg1} is a pointer to the @code{jmp_buf}
+passed as the first argument of @code{setjmp} or @code{sigsetjmp},
+@var{$arg2} is the second argument of @code{sigsetjmp} or zero if this
+is a call to @code{setjmp} and @var{$arg3} is a pointer to the return
+address that will be stored in the @code{jmp_buf}.
+@end deftp
+
+@deftp Probe longjmp (void *@var{$arg1}, int @var{$arg2}, void *@var{$arg3})
+This probe is triggered whenever @code{longjmp} or @code{siglongjmp}
+is called. Argument @var{$arg1} is a pointer to the @code{jmp_buf}
+passed as the first argument of @code{longjmp} or @code{siglongjmp},
+@var{$arg2} is the return value passed as the second argument of
+@code{longjmp} or @code{siglongjmp} and @var{$arg3} is a pointer to
+the return address @code{longjmp} or @code{siglongjmp} will return to.
+
+The @code{longjmp} probe is triggered at a point where the registers
+have not yet been restored to the values in the @code{jmp_buf} and
+unwinding will show a call stack including the caller of
+@code{longjmp} or @code{siglongjmp}.
+@end deftp
+
+@deftp Probe longjmp_target (void *@var{$arg1}, int @var{$arg2}, void *@var{$arg3})
+This probe is triggered under the same conditions and with the same
+arguments as the @code{longjmp} probe.
+
+The @code{longjmp_target} probe is triggered at a point where the
+registers have been restored to the values in the @code{jmp_buf} and
+unwinding will show a call stack including the caller of @code{setjmp}
+or @code{sigsetjmp}.
+@end deftp