mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-23 05:25:50 -04:00

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. <rdar://problem/22243143> llvm-svn: 257120
39 lines
781 B
C
39 lines
781 B
C
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <unistd.h>
|
|
|
|
int
|
|
main (int argc, char **argv)
|
|
{
|
|
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");
|
|
touch_me_not[0] = 'a';
|
|
}
|
|
printf ("Got there on time and it did not crash.\n");
|
|
return 0;
|
|
}
|