From 962260c852c945d529ac32dced2c456b6f58097f Mon Sep 17 00:00:00 2001 From: Jim Ingham Date: Fri, 8 Jan 2016 00:20:47 +0000 Subject: Fix a glitch in the Driver's batch mode when used with "attach". Batch mode is supposed to stop execution and return control to the user when an exceptional stop occurs (crash, signal or instrumentation). But attach always stops with a SIGSTOP on OSX (maybe on Linux too?) which would short circuit the rest of the commands given. This change allows a command result object to indicate that it expected to leave the process stopped with an exceptional stop reason, and it is okay for batch mode to keep going. llvm-svn: 257120 --- .../Python/lldbsuite/test/driver/batch_mode/main.c | 25 +++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'lldb/packages/Python/lldbsuite/test/driver/batch_mode/main.c') diff --git a/lldb/packages/Python/lldbsuite/test/driver/batch_mode/main.c b/lldb/packages/Python/lldbsuite/test/driver/batch_mode/main.c index 418160eaa36..7f943689d15 100644 --- a/lldb/packages/Python/lldbsuite/test/driver/batch_mode/main.c +++ b/lldb/packages/Python/lldbsuite/test/driver/batch_mode/main.c @@ -1,10 +1,33 @@ #include #include +#include int main (int argc, char **argv) { - if (argc >= 2 && strcmp (argv[1], "CRASH") == 0) + int do_crash = 0; + int do_wait = 0; + + for (int idx = 1; idx < argc; idx++) + { + if (strcmp(argv[idx], "CRASH") == 0) + do_crash = 1; + if (strcmp(argv[idx], "WAIT") == 0) + do_wait = 1; + } + printf("PID: %d END\n", getpid()); + + if (do_wait) + { + int keep_waiting = 1; + while (keep_waiting) + { + printf ("Waiting\n"); + sleep(1); // Stop here to unset keep_waiting + } + } + + if (do_crash) { char *touch_me_not = (char *) 0; printf ("About to crash.\n"); -- cgit v1.2.3