about summary refs log tree commit diff homepage
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/Feature/Vararg.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/test/Feature/Vararg.c b/test/Feature/Vararg.c
index a78b784e..9f4e9dab 100644
--- a/test/Feature/Vararg.c
+++ b/test/Feature/Vararg.c
@@ -1,8 +1,10 @@
-// REQUIRES: not-darwin
-// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc
+// RUN: %llvmgcc %s -emit-llvm -O0 -c -g -o %t1.bc
 // RUN: rm -rf %t.klee-out
-// RUN: %klee --output-dir=%t.klee-out %t1.bc > %t2.out
-// RUN: grep "types: (52, 37, 2.00, (9,12,15))" %t2.out
+// This test needs deterministic allocation with enough spacing between the allocations.
+// Otherwise, if by coincidence the allocated vararg memory object is directly before another valid memory object,
+// KLEE will be able to resolve the out-of-bounds access with another object and not detect the false access.
+// This will fail this test case.
+// RUN: %klee --output-dir=%t.klee-out --allocate-determ=true --allocate-determ-start-address=0x0 %t1.bc | FileCheck %s
 // RUN: test -f %t.klee-out/test000001.ptr.err
 
 #include <stdarg.h>
@@ -72,6 +74,7 @@ int va_array(int N, ...) {
 int main() {
   struct triple p = { 9, 12, 15 };
   test1(-1, 52, 37ll, 2.0, p);
+  // CHECK: types: (52, 37, 2.00, (9,12,15))
 
   assert(sum(2, 3, 4) == 11);
   assert(sum(0) == 0);