[compiler-rt] [compiler-rt][asan][tests] Reland: Stabilize wchar tests on Darwin/Android (test-only) (PR #162002)
Yixuan Cao via llvm-commits
llvm-commits at lists.llvm.org
Sun Oct 5 02:50:02 PDT 2025
https://github.com/Cao-Wuhui created https://github.com/llvm/llvm-project/pull/162002
Reland of #161624, depends on revert [#162001](https://github.com/llvm/llvm-project/pull/162001). NFC: test-only.
- Android: keep `%env_asan_opts=log_to_stderr=1` to route the ASan header to stderr.
- Darwin: use a DAG group for the two potentially reordered lines:
- `// CHECK-DAG: Good so far.`
- `// CHECK-DAG: ERROR: AddressSanitizer: stack-buffer-overflow on address [[ADDR:...]] at pc {{...}} bp {{...}} sp {{...}}`
- Then enforce strict order:
- `// CHECK: WRITE of size {{[0-9]+}} at [[ADDR]] thread T0`
- `// CHECK: #0 {{0x[0-9a-f]+}} in <func>`
>From 9a7f6740cdd7340889fbf437a3eef153a935c2a7 Mon Sep 17 00:00:00 2001
From: Yixuan Cao <caoyixuan2019 at email.szu.edu.cn>
Date: Sun, 5 Oct 2025 17:21:28 +0800
Subject: [PATCH] [compiler-rt][asan][tests] Reland: Stabilize wchar tests on
Darwin/Android (test-only)
Reland of #161624; depends on revert #162001.
- Android: keep %env_asan_opts=log_to_stderr=1.
- Darwin: use CHECK-DAG for the pre-crash marker and header; frame line matches function only.
- Common: reuse [[ADDR]].
NFC: test-only.
Signed-off-by: Yixuan Cao <caoyixuan2019 at email.szu.edu.cn>
---
compiler-rt/test/asan/TestCases/wcscat.cpp | 4 ++--
compiler-rt/test/asan/TestCases/wcscpy.cpp | 4 ++--
compiler-rt/test/asan/TestCases/wcsncat.cpp | 4 ++--
compiler-rt/test/asan/TestCases/wcsncpy.cpp | 4 ++--
4 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/compiler-rt/test/asan/TestCases/wcscat.cpp b/compiler-rt/test/asan/TestCases/wcscat.cpp
index f0a8ec12580b3..1dde1262cd0f3 100644
--- a/compiler-rt/test/asan/TestCases/wcscat.cpp
+++ b/compiler-rt/test/asan/TestCases/wcscat.cpp
@@ -16,10 +16,10 @@ int main() {
wchar_t badDst[9];
wcscpy(badDst, start);
fprintf(stderr, "Good so far.\n");
- // CHECK: Good so far.
+ // CHECK-DAG: Good so far.
fflush(stderr);
wcscat(badDst, append); // Boom!
- // CHECK: ERROR: AddressSanitizer: stack-buffer-overflow on address [[ADDR:0x[0-9a-f]+]] at pc {{0x[0-9a-f]+}} bp {{0x[0-9a-f]+}} sp {{0x[0-9a-f]+}}
+ // CHECK-DAG: ERROR: AddressSanitizer: stack-buffer-overflow on address [[ADDR:0x[0-9a-f]+]] at pc {{0x[0-9a-f]+}} bp {{0x[0-9a-f]+}} sp {{0x[0-9a-f]+}}
// CHECK: WRITE of size {{[0-9]+}} at [[ADDR]] thread T0
// CHECK: #0 {{0x[0-9a-f]+}} in wcscat
printf("Should have failed with ASAN error.\n");
diff --git a/compiler-rt/test/asan/TestCases/wcscpy.cpp b/compiler-rt/test/asan/TestCases/wcscpy.cpp
index a280d29289e37..2553e428e5464 100644
--- a/compiler-rt/test/asan/TestCases/wcscpy.cpp
+++ b/compiler-rt/test/asan/TestCases/wcscpy.cpp
@@ -13,10 +13,10 @@ int main() {
wchar_t badDst[7];
fprintf(stderr, "Good so far.\n");
- // CHECK: Good so far.
+ // CHECK-DAG: Good so far.
fflush(stderr);
wcscpy(badDst, src); // Boom!
- // CHECK: ERROR: AddressSanitizer: stack-buffer-overflow on address [[ADDR:0x[0-9a-f]+]] at pc {{0x[0-9a-f]+}} bp {{0x[0-9a-f]+}} sp {{0x[0-9a-f]+}}
+ // CHECK-DAG: ERROR: AddressSanitizer: stack-buffer-overflow on address [[ADDR:0x[0-9a-f]+]] at pc {{0x[0-9a-f]+}} bp {{0x[0-9a-f]+}} sp {{0x[0-9a-f]+}}
// CHECK: WRITE of size {{[0-9]+}} at [[ADDR]] thread T0
// CHECK: #0 {{0x[0-9a-f]+}} in wcscpy
printf("Should have failed with ASAN error.\n");
diff --git a/compiler-rt/test/asan/TestCases/wcsncat.cpp b/compiler-rt/test/asan/TestCases/wcsncat.cpp
index eb7d095e45c7a..fdf4247532e45 100644
--- a/compiler-rt/test/asan/TestCases/wcsncat.cpp
+++ b/compiler-rt/test/asan/TestCases/wcsncat.cpp
@@ -17,10 +17,10 @@ int main() {
wcscpy(badDst, start);
wcsncat(badDst, append, 1);
fprintf(stderr, "Good so far.\n");
- // CHECK: Good so far.
+ // CHECK-DAG: Good so far.
fflush(stderr);
wcsncat(badDst, append, 3); // Boom!
- // CHECK: ERROR: AddressSanitizer: stack-buffer-overflow on address [[ADDR:0x[0-9a-f]+]] at pc {{0x[0-9a-f]+}} bp {{0x[0-9a-f]+}} sp {{0x[0-9a-f]+}}
+ // CHECK-DAG: ERROR: AddressSanitizer: stack-buffer-overflow on address [[ADDR:0x[0-9a-f]+]] at pc {{0x[0-9a-f]+}} bp {{0x[0-9a-f]+}} sp {{0x[0-9a-f]+}}
// CHECK: WRITE of size {{[0-9]+}} at [[ADDR]] thread T0
// CHECK: #0 {{0x[0-9a-f]+}} in wcsncat
printf("Should have failed with ASAN error.\n");
diff --git a/compiler-rt/test/asan/TestCases/wcsncpy.cpp b/compiler-rt/test/asan/TestCases/wcsncpy.cpp
index 1106bf5d264e5..70824e0d06c5a 100644
--- a/compiler-rt/test/asan/TestCases/wcsncpy.cpp
+++ b/compiler-rt/test/asan/TestCases/wcsncpy.cpp
@@ -14,11 +14,11 @@ int main() {
wchar_t badDst[7];
wcsncpy(badDst, src, 7); // This should still work.
fprintf(stderr, "Good so far.\n");
- // CHECK: Good so far.
+ // CHECK-DAG: Good so far.
fflush(stderr);
wcsncpy(badDst, src, 15); // Boom!
- // CHECK: ERROR: AddressSanitizer: stack-buffer-overflow on address [[ADDR:0x[0-9a-f]+]] at pc {{0x[0-9a-f]+}} bp {{0x[0-9a-f]+}} sp {{0x[0-9a-f]+}}
+ // CHECK-DAG: ERROR: AddressSanitizer: stack-buffer-overflow on address [[ADDR:0x[0-9a-f]+]] at pc {{0x[0-9a-f]+}} bp {{0x[0-9a-f]+}} sp {{0x[0-9a-f]+}}
// CHECK: WRITE of size {{[0-9]+}} at [[ADDR]] thread T0
// CHECK: #0 {{0x[0-9a-f]+}} in wcsncpy
printf("Should have failed with ASAN error.\n");
More information about the llvm-commits
mailing list