[compiler-rt] [asan, test] Make alloca_loop_unpoisoning.cpp robust and fix s390x failure (PR #78774)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 19 12:12:06 PST 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-compiler-rt-sanitizer
Author: Fangrui Song (MaskRay)
<details>
<summary>Changes</summary>
In the test from https://reviews.llvm.org/D7098, `char array[len];` is
32-byte aligned on most targets whether it is instrumented or not
(optimized by StackSafetyAnalysis), due to the the used `*FrameLowering`
being `StackRealignable`.
However, when using `SystemZELFFrameLowering`, an un-instrumented
`char array[len];` is only 8-byte aligned.
Ensure `char array[len];` gets instrumented like what we did to
`alloca_vla_interact.cpp`, to make the test pass on s390x.
---
Full diff: https://github.com/llvm/llvm-project/pull/78774.diff
1 Files Affected:
- (modified) compiler-rt/test/asan/TestCases/alloca_loop_unpoisoning.cpp (+4-3)
``````````diff
diff --git a/compiler-rt/test/asan/TestCases/alloca_loop_unpoisoning.cpp b/compiler-rt/test/asan/TestCases/alloca_loop_unpoisoning.cpp
index ac25a4faa2dc1b..bf84ab3d20d7de 100644
--- a/compiler-rt/test/asan/TestCases/alloca_loop_unpoisoning.cpp
+++ b/compiler-rt/test/asan/TestCases/alloca_loop_unpoisoning.cpp
@@ -2,7 +2,6 @@
// RUN: %env_asan_opts=detect_stack_use_after_return=0 %run %t 2>&1
//
// REQUIRES: stable-runtime
-// UNSUPPORTED: target=s390{{.*}}
// This testcase checks that allocas and VLAs inside loop are correctly unpoisoned.
@@ -25,11 +24,13 @@ void *top, *bot;
__attribute__((noinline)) void foo(int len) {
char x;
top = &x;
- char array[len];
+ volatile char array[len];
+ if (len) array[0] = 0;
assert(!(reinterpret_cast<uintptr_t>(array) & 31L));
alloca(len);
for (int i = 0; i < 32; ++i) {
- char array[i];
+ volatile char array[i];
+ if (i) array[0] = 0;
bot = alloca(i);
assert(!(reinterpret_cast<uintptr_t>(bot) & 31L));
}
``````````
</details>
https://github.com/llvm/llvm-project/pull/78774
More information about the llvm-commits
mailing list