From: Vitaly Buka Date: Mon, 7 Aug 2017 07:12:33 +0000 (+0000) Subject: Add -asan-force-dynamic-shadow test X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=483cdb41d2242f5d4cd1b70e868c8a98e0d2c0c6;p=llvm Add -asan-force-dynamic-shadow test git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@310240 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/Instrumentation/AddressSanitizer/force-dynamic-shadow.ll b/test/Instrumentation/AddressSanitizer/force-dynamic-shadow.ll new file mode 100644 index 00000000000..d0152d278ad --- /dev/null +++ b/test/Instrumentation/AddressSanitizer/force-dynamic-shadow.ll @@ -0,0 +1,22 @@ +; Test -asan-force-dynamic-shadow flag. +; +; RUN: opt -asan -asan-module -S -asan-force-dynamic-shadow=1 < %s | FileCheck %s --check-prefixes=CHECK,CHECK-FDS +; RUN: opt -asan -asan-module -S -asan-force-dynamic-shadow=0 < %s | FileCheck %s --check-prefixes=CHECK,CHECK-NDS + +target triple = "x86_64-unknown-linux-gnu" + +define i32 @test_load(i32* %a) sanitize_address { +; First instrumentation in the function must be to load the dynamic shadow +; address into a local variable. +; CHECK-LABEL: @test_load +; CHECK: entry: +; CHECK-FDS-NEXT: %[[SHADOW:[^ ]*]] = load i64, i64* @__asan_shadow_memory_dynamic_address +; CHECK-NDS-NOT: __asan_shadow_memory_dynamic_address + +; Shadow address is loaded and added into the whole offset computation. +; CHECK-FDS add i64 %{{.*}}, %[[SHADOW] ] + +entry: + %tmp1 = load i32, i32* %a, align 4 + ret i32 %tmp1 +}