[compiler-rt] Augment `uncaught-exception.test` fuzzer test to be msvc-compatible (PR #125924)

via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 5 12:09:05 PST 2025


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-compiler-rt-sanitizer

Author: David Justo (davidmrdavid)

<details>
<summary>Changes</summary>

Today, the `uncaught-exception.test` fuzzer test checks for the string "libFuzzer: deadly signal" in the program output as the result of an uncaught exception.

Although this is correct for `clang`, `msvc` reports a different error message: "libFuzzer: uncaught C++ exception". Since `msvc` reuses the `libFuzzer` infrastructure for ASan regression testing, it would help us greatly if the test handled the `msvc` divergence more gracefully.

**This PR:** augments this test so check for a different string (namely "libFuzzer: uncaught C++ exception") if the compiler target matches the `msvc` naming scheme.

I understand if this is outside the scope of support for LLVM as well, and I'm also open for different approaches here. Thanks!

---
Full diff: https://github.com/llvm/llvm-project/pull/125924.diff


1 Files Affected:

- (modified) compiler-rt/test/fuzzer/uncaught-exception.test (+6-3) 


``````````diff
diff --git a/compiler-rt/test/fuzzer/uncaught-exception.test b/compiler-rt/test/fuzzer/uncaught-exception.test
index b055c88f6d9039..d1b98cfb7c74ba 100644
--- a/compiler-rt/test/fuzzer/uncaught-exception.test
+++ b/compiler-rt/test/fuzzer/uncaught-exception.test
@@ -4,7 +4,10 @@
 REQUIRES: windows
 RUN: %cpp_compiler %S/UncaughtException.cpp -o %t-UncaughtException
 
-RUN: not %run %t-UncaughtException 2>&1 | FileCheck %s
+# Clang will fail the test with 'deadly signal', but other compilers may fail with different error messages.
+# For example, msvc fails with 'uncaught C++ exception'. So the error we check depends on the compiler target.
+RUN: not %run %t-UncaughtException 2>&1 | FileCheck %s --check-prefixes=CHECK-CRASH,%if target={{.*-windows-msvc.*}} %{CHECK-MSVC%} %else %{CHECK-ERROR%}
 
-CHECK: ERROR: libFuzzer: deadly signal
-CHECK: Test unit written to ./crash
+CHECK-ERROR: ERROR: libFuzzer: deadly signal
+CHECK-MSVC: ERROR: libFuzzer: uncaught C++ exception
+CHECK-CRASH: Test unit written to ./crash

``````````

</details>


https://github.com/llvm/llvm-project/pull/125924


More information about the llvm-commits mailing list