diff options
-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 |