summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Clayton <gclayton@apple.com>2011-01-07 22:10:25 +0000
committerGreg Clayton <gclayton@apple.com>2011-01-07 22:10:25 +0000
commit46595b9ae2af6a7c7857f43cecf8fb4af8366ba0 (patch)
treede3dde8d83fa8fe8427295020f47f1eb18168617
parent36f0a06593bbd4a5564c94b890a04309eb316af9 (diff)
downloadbcm5719-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/Makefile5
-rw-r--r--lldb/test/recurse/main.c28
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
OpenPOWER on IntegriCloud