diff options
author | Srikar Dronamraju <srikar@linux.vnet.ibm.com> | 2008-10-28 16:13:01 -0400 |
---|---|---|
committer | Frank Ch. Eigler <fche@elastic.org> | 2008-10-28 16:13:01 -0400 |
commit | 3cec42574e444b7f91e2d887527bea45348ffb79 (patch) | |
tree | 658f46bbca4cd663d25e751d47ba5551582fd009 /testsuite/systemtap.base/bz5274.c | |
parent | d4b35e96eab28e96353b53954111662cf76ced2d (diff) | |
download | systemtap-steved-3cec42574e444b7f91e2d887527bea45348ffb79.tar.gz systemtap-steved-3cec42574e444b7f91e2d887527bea45348ffb79.tar.xz systemtap-steved-3cec42574e444b7f91e2d887527bea45348ffb79.zip |
PR5274: uretprobe vs. longjmp support
Diffstat (limited to 'testsuite/systemtap.base/bz5274.c')
-rw-r--r-- | testsuite/systemtap.base/bz5274.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/testsuite/systemtap.base/bz5274.c b/testsuite/systemtap.base/bz5274.c new file mode 100644 index 00000000..4e4cfb16 --- /dev/null +++ b/testsuite/systemtap.base/bz5274.c @@ -0,0 +1,44 @@ +#include <setjmp.h> +#include <stdio.h> +#include <stdlib.h> + +void funcd(int i, jmp_buf env) +{ + printf("In %s: %s :%d : i=%d. Calling longjmp\n", "bz5274.c",__func__,__LINE__,i); + longjmp(env, i); +} + +void funcc(int i, jmp_buf env) +{ + printf("In %s: %s :%d : i=%d. Calling funcd\n", "bz5274.c",__func__,__LINE__,i); + funcd(i,env); +} + + +void funcb(int i, jmp_buf env) +{ + printf("In %s: %s :%d : i=%d. Calling funcc\n", "bz5274.c",__func__,__LINE__,i); + funcc(i,env); +} + + +void funca(char *s, jmp_buf env) +{ + int i; + + i = setjmp(env); + if (i == 4) + return; + funcb(++i, env); + return; +} + + + +int main(int argc, char **argv) +{ + jmp_buf env; + + funca("Hello World", env); + exit(0); +} |