[PATCH] D53210: Revert 344389 "Revert r344375 "[Driver] check for exit code from SIGPIPE""
richard.barton.arm added a comment. Hi @nickdesaulniers - thanks for the clarification. I was suffering from some PEBCAK of my own when I thought the commits were not on master. Thanks for these patches - a great help. Repository: rC Clang https://reviews.llvm.org/D53210 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D53210: Revert 344389 "Revert r344375 "[Driver] check for exit code from SIGPIPE""
nickdesaulniers added a comment. Hi @richard.barton.arm , this has landed already. If you click "show older" you'll see the UI element that shows this landed as r344536 (Oct 15 2018). If your clang version is later than r344536 (what will become clang-8) and you still see this, please open a new bug. The commit is definitely confusing; it looks like a revert, but it's a revert of a revert (double negative) which is relanding the patch. The lld failures were PEBKAC on my part, unrelated to this patch. Repository: rC Clang https://reviews.llvm.org/D53210 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D53210: Revert 344389 "Revert r344375 "[Driver] check for exit code from SIGPIPE""
richard.barton.arm added a comment. Hi @nickdesaulniers I have run into this too recently so would love to see this patch land. Did you get anywhere with those lld test failures? Ta Rich Repository: rC Clang https://reviews.llvm.org/D53210 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D53210: Revert 344389 "Revert r344375 "[Driver] check for exit code from SIGPIPE""
nickdesaulniers added a comment. Nevermind, looks like flaky tests. Will try to repro and contact msan maintainers. Repository: rC Clang https://reviews.llvm.org/D53210 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D53210: Revert 344389 "Revert r344375 "[Driver] check for exit code from SIGPIPE""
nickdesaulniers added a comment. I think this is now breaking: lld :: ELF/format-binary.test lld :: ELF/relocatable-versioned.s Repository: rC Clang https://reviews.llvm.org/D53210 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D53210: Revert 344389 "Revert r344375 "[Driver] check for exit code from SIGPIPE""
This revision was automatically updated to reflect the committed changes. Closed by commit rC344536: Revert 344389 Revert r344375 [Driver] check for exit code from SIGPIPE (authored by nickdesaulniers, committed by ). Changed prior to commit: https://reviews.llvm.org/D53210?vs=169474=169723#toc Repository: rC Clang https://reviews.llvm.org/D53210 Files: lib/Driver/Driver.cpp Index: lib/Driver/Driver.cpp === --- lib/Driver/Driver.cpp +++ lib/Driver/Driver.cpp @@ -81,6 +81,7 @@ #include #if LLVM_ON_UNIX #include // getpid +#include // EX_IOERR #endif using namespace clang::driver; @@ -1388,20 +1389,30 @@ // Otherwise, remove result files and print extra information about abnormal // failures. + int Res = 0; for (const auto : FailingCommands) { -int Res = CmdPair.first; +int CommandRes = CmdPair.first; const Command *FailingCommand = CmdPair.second; // Remove result files if we're not saving temps. if (!isSaveTempsEnabled()) { const JobAction *JA = cast(>getSource()); C.CleanupFileMap(C.getResultFiles(), JA, true); // Failure result files are valid unless we crashed. - if (Res < 0) + if (CommandRes < 0) C.CleanupFileMap(C.getFailureResultFiles(), JA, true); } +#if LLVM_ON_UNIX +// llvm/lib/Support/Unix/Signals.inc will exit with a special return code +// for SIGPIPE. Do not print diagnostics for this case. +if (CommandRes == EX_IOERR) { + Res = CommandRes; + continue; +} +#endif + // Print extra information about abnormal failures, if possible. // // This is ad-hoc, but we don't want to be excessively noisy. If the result @@ -1411,17 +1422,17 @@ // diagnostics, so always print the diagnostic there. const Tool = FailingCommand->getCreator(); -if (!FailingCommand->getCreator().hasGoodDiagnostics() || Res != 1) { +if (!FailingCommand->getCreator().hasGoodDiagnostics() || CommandRes != 1) { // FIXME: See FIXME above regarding result code interpretation. - if (Res < 0) + if (CommandRes < 0) Diag(clang::diag::err_drv_command_signalled) << FailingTool.getShortName(); else -Diag(clang::diag::err_drv_command_failed) << FailingTool.getShortName() - << Res; +Diag(clang::diag::err_drv_command_failed) +<< FailingTool.getShortName() << CommandRes; } } - return 0; + return Res; } void Driver::PrintHelp(bool ShowHidden) const { Index: lib/Driver/Driver.cpp === --- lib/Driver/Driver.cpp +++ lib/Driver/Driver.cpp @@ -81,6 +81,7 @@ #include #if LLVM_ON_UNIX #include // getpid +#include // EX_IOERR #endif using namespace clang::driver; @@ -1388,20 +1389,30 @@ // Otherwise, remove result files and print extra information about abnormal // failures. + int Res = 0; for (const auto : FailingCommands) { -int Res = CmdPair.first; +int CommandRes = CmdPair.first; const Command *FailingCommand = CmdPair.second; // Remove result files if we're not saving temps. if (!isSaveTempsEnabled()) { const JobAction *JA = cast(>getSource()); C.CleanupFileMap(C.getResultFiles(), JA, true); // Failure result files are valid unless we crashed. - if (Res < 0) + if (CommandRes < 0) C.CleanupFileMap(C.getFailureResultFiles(), JA, true); } +#if LLVM_ON_UNIX +// llvm/lib/Support/Unix/Signals.inc will exit with a special return code +// for SIGPIPE. Do not print diagnostics for this case. +if (CommandRes == EX_IOERR) { + Res = CommandRes; + continue; +} +#endif + // Print extra information about abnormal failures, if possible. // // This is ad-hoc, but we don't want to be excessively noisy. If the result @@ -1411,17 +1422,17 @@ // diagnostics, so always print the diagnostic there. const Tool = FailingCommand->getCreator(); -if (!FailingCommand->getCreator().hasGoodDiagnostics() || Res != 1) { +if (!FailingCommand->getCreator().hasGoodDiagnostics() || CommandRes != 1) { // FIXME: See FIXME above regarding result code interpretation. - if (Res < 0) + if (CommandRes < 0) Diag(clang::diag::err_drv_command_signalled) << FailingTool.getShortName(); else -Diag(clang::diag::err_drv_command_failed) << FailingTool.getShortName() - << Res; +Diag(clang::diag::err_drv_command_failed) +<< FailingTool.getShortName() << CommandRes; } } - return 0; + return Res; } void Driver::PrintHelp(bool ShowHidden) const { ___ cfe-commits mailing list cfe-commits@lists.llvm.org
[PATCH] D53210: Revert 344389 "Revert r344375 "[Driver] check for exit code from SIGPIPE""
rnk accepted this revision. rnk added a comment. This revision is now accepted and ready to land. I think it's fine, just remove the git hash from the commit message and just refer to the svn number. Repository: rC Clang https://reviews.llvm.org/D53210 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D53210: Revert 344389 "Revert r344375 "[Driver] check for exit code from SIGPIPE""
nickdesaulniers created this revision. nickdesaulniers added reviewers: rnk, majnemer, jfb. Herald added a subscriber: cfe-commits. Add preprocessor guards for UNIX. This reverts commit c2275676c1bde4ed20c06affdeeb1a93692f29a8. Repository: rC Clang https://reviews.llvm.org/D53210 Files: lib/Driver/Driver.cpp Index: lib/Driver/Driver.cpp === --- lib/Driver/Driver.cpp +++ lib/Driver/Driver.cpp @@ -81,6 +81,7 @@ #include #if LLVM_ON_UNIX #include // getpid +#include // EX_IOERR #endif using namespace clang::driver; @@ -1388,20 +1389,30 @@ // Otherwise, remove result files and print extra information about abnormal // failures. + int Res = 0; for (const auto : FailingCommands) { -int Res = CmdPair.first; +int CommandRes = CmdPair.first; const Command *FailingCommand = CmdPair.second; // Remove result files if we're not saving temps. if (!isSaveTempsEnabled()) { const JobAction *JA = cast(>getSource()); C.CleanupFileMap(C.getResultFiles(), JA, true); // Failure result files are valid unless we crashed. - if (Res < 0) + if (CommandRes < 0) C.CleanupFileMap(C.getFailureResultFiles(), JA, true); } +#if LLVM_ON_UNIX +// llvm/lib/Support/Unix/Signals.inc will exit with a special return code +// for SIGPIPE. Do not print diagnostics for this case. +if (CommandRes == EX_IOERR) { + Res = CommandRes; + continue; +} +#endif + // Print extra information about abnormal failures, if possible. // // This is ad-hoc, but we don't want to be excessively noisy. If the result @@ -1411,17 +1422,17 @@ // diagnostics, so always print the diagnostic there. const Tool = FailingCommand->getCreator(); -if (!FailingCommand->getCreator().hasGoodDiagnostics() || Res != 1) { +if (!FailingCommand->getCreator().hasGoodDiagnostics() || CommandRes != 1) { // FIXME: See FIXME above regarding result code interpretation. - if (Res < 0) + if (CommandRes < 0) Diag(clang::diag::err_drv_command_signalled) << FailingTool.getShortName(); else -Diag(clang::diag::err_drv_command_failed) << FailingTool.getShortName() - << Res; +Diag(clang::diag::err_drv_command_failed) +<< FailingTool.getShortName() << CommandRes; } } - return 0; + return Res; } void Driver::PrintHelp(bool ShowHidden) const { Index: lib/Driver/Driver.cpp === --- lib/Driver/Driver.cpp +++ lib/Driver/Driver.cpp @@ -81,6 +81,7 @@ #include #if LLVM_ON_UNIX #include // getpid +#include // EX_IOERR #endif using namespace clang::driver; @@ -1388,20 +1389,30 @@ // Otherwise, remove result files and print extra information about abnormal // failures. + int Res = 0; for (const auto : FailingCommands) { -int Res = CmdPair.first; +int CommandRes = CmdPair.first; const Command *FailingCommand = CmdPair.second; // Remove result files if we're not saving temps. if (!isSaveTempsEnabled()) { const JobAction *JA = cast(>getSource()); C.CleanupFileMap(C.getResultFiles(), JA, true); // Failure result files are valid unless we crashed. - if (Res < 0) + if (CommandRes < 0) C.CleanupFileMap(C.getFailureResultFiles(), JA, true); } +#if LLVM_ON_UNIX +// llvm/lib/Support/Unix/Signals.inc will exit with a special return code +// for SIGPIPE. Do not print diagnostics for this case. +if (CommandRes == EX_IOERR) { + Res = CommandRes; + continue; +} +#endif + // Print extra information about abnormal failures, if possible. // // This is ad-hoc, but we don't want to be excessively noisy. If the result @@ -1411,17 +1422,17 @@ // diagnostics, so always print the diagnostic there. const Tool = FailingCommand->getCreator(); -if (!FailingCommand->getCreator().hasGoodDiagnostics() || Res != 1) { +if (!FailingCommand->getCreator().hasGoodDiagnostics() || CommandRes != 1) { // FIXME: See FIXME above regarding result code interpretation. - if (Res < 0) + if (CommandRes < 0) Diag(clang::diag::err_drv_command_signalled) << FailingTool.getShortName(); else -Diag(clang::diag::err_drv_command_failed) << FailingTool.getShortName() - << Res; +Diag(clang::diag::err_drv_command_failed) +<< FailingTool.getShortName() << CommandRes; } } - return 0; + return Res; } void Driver::PrintHelp(bool ShowHidden) const { ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits