From cab32309f828f241653e579605d662db0cd8137d Mon Sep 17 00:00:00 2001 From: Kostya Serebryany Date: Fri, 6 Dec 2013 09:00:25 +0000 Subject: [PATCH] [asan] rewrite asan's stack frame layout, compiler-rt part llvm-svn: 196569 --- .../TestCases/Linux/heavy_uar_test.cc | 4 +-- .../stack-buffer-overflow-with-position.cc | 33 +++++++++---------- .../TestCases/stack-use-after-return.cc | 4 +-- 3 files changed, 20 insertions(+), 21 deletions(-) diff --git a/compiler-rt/lib/asan/lit_tests/TestCases/Linux/heavy_uar_test.cc b/compiler-rt/lib/asan/lit_tests/TestCases/Linux/heavy_uar_test.cc index 27b179e83624..0e2bf2fee8cc 100644 --- a/compiler-rt/lib/asan/lit_tests/TestCases/Linux/heavy_uar_test.cc +++ b/compiler-rt/lib/asan/lit_tests/TestCases/Linux/heavy_uar_test.cc @@ -47,8 +47,8 @@ int main(int argc, char **argv) { RecuriveFunctionWithStackFrame<1024>(10); stale_stack[100]++; // CHECK: ERROR: AddressSanitizer: stack-use-after-return on address - // CHECK: is located in stack of thread T0 at offset 132 in frame + // CHECK: is located in stack of thread T0 at offset {{116|132}} in frame // CHECK: in LeakStack(){{.*}}heavy_uar_test.cc: - // CHECK: [32, 1056) 'x' + // CHECK: [{{16|32}}, {{1040|1056}}) 'x' return 0; } diff --git a/compiler-rt/lib/asan/lit_tests/TestCases/stack-buffer-overflow-with-position.cc b/compiler-rt/lib/asan/lit_tests/TestCases/stack-buffer-overflow-with-position.cc index 91820db0142a..7fbe5c595757 100644 --- a/compiler-rt/lib/asan/lit_tests/TestCases/stack-buffer-overflow-with-position.cc +++ b/compiler-rt/lib/asan/lit_tests/TestCases/stack-buffer-overflow-with-position.cc @@ -5,15 +5,14 @@ // RUN: %t 8 // RUN: not %t 9 2>&1 | FileCheck --check-prefix=CHECK-9 %s // RUN: not %t 10 2>&1 | FileCheck --check-prefix=CHECK-10 %s +// RUN: not %t 30 2>&1 | FileCheck --check-prefix=CHECK-30 %s +// RUN: not %t 31 2>&1 | FileCheck --check-prefix=CHECK-31 %s +// RUN: not %t 41 2>&1 | FileCheck --check-prefix=CHECK-41 %s +// RUN: not %t 42 2>&1 | FileCheck --check-prefix=CHECK-42 %s // RUN: not %t 62 2>&1 | FileCheck --check-prefix=CHECK-62 %s // RUN: not %t 63 2>&1 | FileCheck --check-prefix=CHECK-63 %s -// RUN: not %t 63 2>&1 | FileCheck --check-prefix=CHECK-63 %s // RUN: not %t 73 2>&1 | FileCheck --check-prefix=CHECK-73 %s // RUN: not %t 74 2>&1 | FileCheck --check-prefix=CHECK-74 %s -// RUN: not %t 126 2>&1 | FileCheck --check-prefix=CHECK-126 %s -// RUN: not %t 127 2>&1 | FileCheck --check-prefix=CHECK-127 %s -// RUN: not %t 137 2>&1 | FileCheck --check-prefix=CHECK-137 %s -// RUN: not %t 138 2>&1 | FileCheck --check-prefix=CHECK-138 %s #include #include #include @@ -31,15 +30,15 @@ int main(int argc, char **argv) { // make sure BBB and CCC are not removed; return *(short*)(p) + BBB[argc % 2] + CCC[argc % 2]; } -// CHECK-m2: 'AAA' <== Memory access at offset 30 underflows this variable -// CHECK-m1: 'AAA' <== Memory access at offset 31 partially underflows this variable -// CHECK-9: 'AAA' <== Memory access at offset 41 partially overflows this variable -// CHECK-10: 'AAA' <== Memory access at offset 42 overflows this variable -// CHECK-62: 'BBB' <== Memory access at offset 94 underflows this variable -// CHECK-63: 'BBB' <== Memory access at offset 95 partially underflows this variable -// CHECK-73: 'BBB' <== Memory access at offset 105 partially overflows this variable -// CHECK-74: 'BBB' <== Memory access at offset 106 overflows this variable -// CHECK-126: 'CCC' <== Memory access at offset 158 underflows this variable -// CHECK-127: 'CCC' <== Memory access at offset 159 partially underflows this variable -// CHECK-137: 'CCC' <== Memory access at offset 169 partially overflows this variable -// CHECK-138: 'CCC' <== Memory access at offset 170 overflows this variable +// CHECK-m2: 'AAA' <== {{.*}}underflows this variable +// CHECK-m1: 'AAA' <== {{.*}}partially underflows this variable +// CHECK-9: 'AAA' <== {{.*}}partially overflows this variable +// CHECK-10: 'AAA' <== {{.*}}overflows this variable +// CHECK-30: 'BBB' <== {{.*}}underflows this variable +// CHECK-31: 'BBB' <== {{.*}}partially underflows this variable +// CHECK-41: 'BBB' <== {{.*}}partially overflows this variable +// CHECK-42: 'BBB' <== {{.*}}overflows this variable +// CHECK-62: 'CCC' <== {{.*}}underflows this variable +// CHECK-63: 'CCC' <== {{.*}}partially underflows this variable +// CHECK-73: 'CCC' <== {{.*}}partially overflows this variable +// CHECK-74: 'CCC' <== {{.*}}overflows this variable diff --git a/compiler-rt/lib/asan/lit_tests/TestCases/stack-use-after-return.cc b/compiler-rt/lib/asan/lit_tests/TestCases/stack-use-after-return.cc index 5ed42a8c0c97..0b160c1bef01 100644 --- a/compiler-rt/lib/asan/lit_tests/TestCases/stack-use-after-return.cc +++ b/compiler-rt/lib/asan/lit_tests/TestCases/stack-use-after-return.cc @@ -51,11 +51,11 @@ void Func2(char *x) { // CHECK: WRITE of size 1 {{.*}} thread T0 // CHECK: #0{{.*}}Func2{{.*}}stack-use-after-return.cc:[[@LINE-2]] // CHECK: is located in stack of thread T0 at offset - // CHECK: 'local' <== Memory access at offset 32 is inside this variable + // CHECK: 'local' <== Memory access at offset {{16|32}} is inside this variable // THREAD: WRITE of size 1 {{.*}} thread T{{[1-9]}} // THREAD: #0{{.*}}Func2{{.*}}stack-use-after-return.cc:[[@LINE-6]] // THREAD: is located in stack of thread T{{[1-9]}} at offset - // THREAD: 'local' <== Memory access at offset 32 is inside this variable + // THREAD: 'local' <== Memory access at offset {{16|32}} is inside this variable // CHECK-20: T0: FakeStack created:{{.*}} stack_size_log: 20 // CHECK-24: T0: FakeStack created:{{.*}} stack_size_log: 24 }