diff options
author | Greg Clayton <gclayton@apple.com> | 2011-01-07 22:10:25 +0000 |
---|---|---|
committer | Greg Clayton <gclayton@apple.com> | 2011-01-07 22:10:25 +0000 |
commit | 46595b9ae2af6a7c7857f43cecf8fb4af8366ba0 (patch) | |
tree | de3dde8d83fa8fe8427295020f47f1eb18168617 | |
parent | 36f0a06593bbd4a5564c94b890a04309eb316af9 (diff) | |
download | bcm5719-llvm-46595b9ae2af6a7c7857f43cecf8fb4af8366ba0.tar.gz bcm5719-llvm-46595b9ae2af6a7c7857f43cecf8fb4af8366ba0.zip |
Added a recursive loop stress test for the unwinder. Not a real world test
by any means, but something to stress test our unwinder with 260,000+ frames
on a standard darwin thread.
llvm-svn: 123037
-rw-r--r-- | lldb/test/recurse/Makefile | 5 | ||||
-rw-r--r-- | lldb/test/recurse/main.c | 28 |
2 files changed, 33 insertions, 0 deletions
diff --git a/lldb/test/recurse/Makefile b/lldb/test/recurse/Makefile new file mode 100644 index 00000000000..d6cd0db0506 --- /dev/null +++ b/lldb/test/recurse/Makefile @@ -0,0 +1,5 @@ +LEVEL = ../make + +C_SOURCES := main.c + +include $(LEVEL)/Makefile.rules diff --git a/lldb/test/recurse/main.c b/lldb/test/recurse/main.c new file mode 100644 index 00000000000..1159669ebf1 --- /dev/null +++ b/lldb/test/recurse/main.c @@ -0,0 +1,28 @@ +#include <stdint.h> +#include <stdio.h> + +uint32_t +recurse_crash (uint32_t depth) +{ + if (depth > 0) + return recurse_crash (depth - 1); + return 0; +} + +int +main (int argc, char const *argv[]) +{ + // If we have more than one argument, then it should a depth to recurse to. + // If we have just the program name as an argument, use UINT32_MAX so we + // eventually crash the program by overflowing the stack + uint32_t depth = UINT32_MAX; + if (argc > 1) + { + char *end = NULL; + depth = strtoul (argv[1], &end, 0); + if (end == NULL || *end != '\0') + depth = UINT32_MAX; + } + recurse_crash (depth); + return 0; +}
\ No newline at end of file |