[compiler-rt] [compiler-rt][asan][test] Make wchar tests more robust (PR #163715)
Maosu Zhao via llvm-commits
llvm-commits at lists.llvm.org
Thu Oct 16 00:06:08 PDT 2025
https://github.com/zhaomaosu created https://github.com/llvm/llvm-project/pull/163715
The stack buffer which is used to trigger out of bounds issue doesn't have obervable side effects, so it can easily be optimized by compiler as dead code.
>From 30e4f8edf32d9c5af7d28cc891f694744e8aa121 Mon Sep 17 00:00:00 2001
From: Maosu Zhao <maosu.zhao at intel.com>
Date: Thu, 16 Oct 2025 15:02:00 +0800
Subject: [PATCH] [compiler-rt][asan][test] Make wchar tests more robust
The stack buffer which is used to trigger out of bounds issue doesn't
have obervable side effects, so it can easily be optimized by compiler
as dead code.
Signed-off-by: Maosu Zhao <maosu.zhao at intel.com>
---
compiler-rt/test/asan/TestCases/wcscat.cpp | 6 ++++--
compiler-rt/test/asan/TestCases/wcscpy.cpp | 6 ++++--
compiler-rt/test/asan/TestCases/wcsncat.cpp | 6 ++++--
compiler-rt/test/asan/TestCases/wcsncpy.cpp | 6 ++++--
4 files changed, 16 insertions(+), 8 deletions(-)
diff --git a/compiler-rt/test/asan/TestCases/wcscat.cpp b/compiler-rt/test/asan/TestCases/wcscat.cpp
index fd0b5a4310351..beab1dc52e437 100644
--- a/compiler-rt/test/asan/TestCases/wcscat.cpp
+++ b/compiler-rt/test/asan/TestCases/wcscat.cpp
@@ -9,11 +9,13 @@
int main() {
const wchar_t *start = L"X means ";
const wchar_t *append = L"dog";
- wchar_t goodDst[12];
+ wchar_t goodArray[12];
+ wchar_t *volatile goodDst = goodArray;
wcscpy(goodDst, start);
wcscat(goodDst, append);
- wchar_t badDst[9];
+ wchar_t badArray[9];
+ wchar_t *volatile badDst = badArray;
wcscpy(badDst, start);
fprintf(stderr, "Good so far.\n");
// CHECK-DAG: Good so far.
diff --git a/compiler-rt/test/asan/TestCases/wcscpy.cpp b/compiler-rt/test/asan/TestCases/wcscpy.cpp
index 8133a588cb071..2b828035cb498 100644
--- a/compiler-rt/test/asan/TestCases/wcscpy.cpp
+++ b/compiler-rt/test/asan/TestCases/wcscpy.cpp
@@ -8,10 +8,12 @@
int main() {
const wchar_t *src = L"X means dog";
- wchar_t goodDst[12];
+ wchar_t goodArray[12];
+ wchar_t *volatile goodDst = goodArray;
wcscpy(goodDst, src);
- wchar_t badDst[7];
+ wchar_t badArray[7];
+ wchar_t *volatile badDst = badArray;
fprintf(stderr, "Good so far.\n");
// CHECK-DAG: Good so far.
fflush(stderr);
diff --git a/compiler-rt/test/asan/TestCases/wcsncat.cpp b/compiler-rt/test/asan/TestCases/wcsncat.cpp
index 365e732e2d051..04cdcf290ffed 100644
--- a/compiler-rt/test/asan/TestCases/wcsncat.cpp
+++ b/compiler-rt/test/asan/TestCases/wcsncat.cpp
@@ -9,11 +9,13 @@
int main() {
const wchar_t *start = L"X means ";
const wchar_t *append = L"dog";
- wchar_t goodDst[15];
+ wchar_t goodArray[15];
+ wchar_t *volatile goodDst = goodArray;
wcscpy(goodDst, start);
wcsncat(goodDst, append, 5);
- wchar_t badDst[11];
+ wchar_t badArray[11];
+ wchar_t *volatile badDst = badArray;
wcscpy(badDst, start);
wcsncat(badDst, append, 1);
fprintf(stderr, "Good so far.\n");
diff --git a/compiler-rt/test/asan/TestCases/wcsncpy.cpp b/compiler-rt/test/asan/TestCases/wcsncpy.cpp
index 485ddc4804dcd..9e11b55fe4ec9 100644
--- a/compiler-rt/test/asan/TestCases/wcsncpy.cpp
+++ b/compiler-rt/test/asan/TestCases/wcsncpy.cpp
@@ -8,10 +8,12 @@
int main() {
const wchar_t *src = L"X means dog";
- wchar_t goodDst[12];
+ wchar_t goodArray[12];
+ wchar_t *volatile goodDst = goodArray;
wcsncpy(goodDst, src, 12);
- wchar_t badDst[7];
+ wchar_t badArray[7];
+ wchar_t *volatile badDst = badArray;
wcsncpy(badDst, src, 7); // This should still work.
fprintf(stderr, "Good so far.\n");
// CHECK-DAG: Good so far.
More information about the llvm-commits
mailing list