For PR351:

* Allow the ExecuteAndWait to return negative values if a signal is
  detected as the reason for the child termination. This is needed to
  support bugpoint detecting bad things in its child processes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24960 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Reid Spencer 2005-12-22 20:00:16 +00:00
parent 171eee5471
commit d555f413cd

View File

@ -209,17 +209,22 @@ Program::ExecuteAndWait(const Path& path,
sigaction(SIGALRM, &Old, 0);
}
// If the program exited normally with a zero exit status, return success!
// Return the proper exit status. 0=success, >0 is programs' exit status,
// <0 means a signal was returned, -9999999 means the program dumped core.
int result = 0;
if (WIFEXITED (status))
return WEXITSTATUS(status);
result = WEXITSTATUS(status);
else if (WIFSIGNALED(status))
return 1;
#else
throw std::string(
"Program::ExecuteAndWait not implemented on this platform!\n");
result = 0 - WTERMSIG(status);
#ifdef WCOREDUMP
if (WCOREDUMP(status))
result |= 0x01000000;
#endif
return 0;
return result;
#else
return -99;
#endif
}
}