================
@@ -471,6 +475,18 @@ int clang_main(int Argc, char **Argv, const
llvm::ToolContext &ToolContext) {
Res = 1;
#endif
+#if LLVM_ON_UNIX
+ // On Unix, signals are represented by return codes of 128 plus the signal
+ // number. If the return code indicates it was from a signal handler, raise
+ // the signal so that the exit code includes the signal number, as required
+ // by POSIX. Return code 255 is excluded because some tools, such as
+ // llvm-ifs, exit with code 255 (-1) on failure.
+ if (CommandRes > 128 && CommandRes != 255) {
----------------
daltenty wrote:
My only worry here is that not all programs the driver invokes are necessarily
unix utilities (though many are), so it’s possible the exit code might not
actually represent a signal value.
That said, I don't think there's much we can do other than to handle it on a
case-by-case base as you did with llvm-ifs here, so I think think this is the
best we can do for now.
https://github.com/llvm/llvm-project/pull/169340
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits