summaryrefslogtreecommitdiff
path: root/test/Instrumentation
diff options
context:
space:
mode:
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>2014-04-24 09:56:15 +0000
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>2014-04-24 09:56:15 +0000
commitfd46b84dddfdb736b7d3c70d17ee934b6cbb39f8 (patch)
tree5ddee7d1f2a53ea93c85757f35ff08095202121b /test/Instrumentation
parentbcb39a444bd8dfdd872d7d3b23aa871e8a29b103 (diff)
downloadllvm-fd46b84dddfdb736b7d3c70d17ee934b6cbb39f8.tar.gz
llvm-fd46b84dddfdb736b7d3c70d17ee934b6cbb39f8.tar.bz2
llvm-fd46b84dddfdb736b7d3c70d17ee934b6cbb39f8.tar.xz
[asan] Fix instrumentation of x86 intel syntax inline assembly.
Patch by Yuri Gorshenin. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207092 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Instrumentation')
-rw-r--r--test/Instrumentation/AddressSanitizer/X86/asm_swap_intel.s71
1 files changed, 71 insertions, 0 deletions
diff --git a/test/Instrumentation/AddressSanitizer/X86/asm_swap_intel.s b/test/Instrumentation/AddressSanitizer/X86/asm_swap_intel.s
new file mode 100644
index 0000000000..4144bf5e56
--- /dev/null
+++ b/test/Instrumentation/AddressSanitizer/X86/asm_swap_intel.s
@@ -0,0 +1,71 @@
+# RUN: llvm-mc %s -x86-asm-syntax=intel -triple=x86_64-unknown-linux-gnu -asm-instrumentation=address | FileCheck %s
+
+ .text
+ .globl swap
+ .align 16, 0x90
+ .type swap,@function
+# CHECK-LABEL: swap:
+#
+# CHECK: subq $128, %rsp
+# CHECK-NEXT: pushq %rdi
+# CHECK-NEXT: leaq (%rcx), %rdi
+# CHECK-NEXT: callq __sanitizer_sanitize_load8@PLT
+# CHECK-NEXT: popq %rdi
+# CHECK-NEXT: addq $128, %rsp
+#
+# CHECK-NEXT: movq (%rcx), %rax
+#
+# CHECK-NEXT: subq $128, %rsp
+# CHECK-NEXT: pushq %rdi
+# CHECK-NEXT: leaq (%rdx), %rdi
+# CHECK-NEXT: callq __sanitizer_sanitize_load8@PLT
+# CHECK-NEXT: popq %rdi
+# CHECK-NEXT: addq $128, %rsp
+#
+# CHECK-NEXT: movq (%rdx), %rbx
+#
+# CHECK: subq $128, %rsp
+# CHECK-NEXT: pushq %rdi
+# CHECK-NEXT: leaq (%rcx), %rdi
+# CHECK-NEXT: callq __sanitizer_sanitize_store8@PLT
+# CHECK-NEXT: popq %rdi
+# CHECK-NEXT: addq $128, %rsp
+#
+# CHECK-NEXT: movq %rbx, (%rcx)
+#
+# CHECK-NEXT: subq $128, %rsp
+# CHECK-NEXT: pushq %rdi
+# CHECK-NEXT: leaq (%rdx), %rdi
+# CHECK-NEXT: callq __sanitizer_sanitize_store8@PLT
+# CHECK-NEXT: popq %rdi
+# CHECK-NEXT: addq $128, %rsp
+#
+# CHECK-NEXT: movq %rax, (%rdx)
+swap: # @swap
+ .cfi_startproc
+# BB#0:
+ push rbx
+.Ltmp0:
+ .cfi_def_cfa_offset 16
+.Ltmp1:
+ .cfi_offset rbx, -16
+ mov rcx, rdi
+ mov rdx, rsi
+ #APP
+
+
+ mov rax, qword ptr [rcx]
+ mov rbx, qword ptr [rdx]
+ mov qword ptr [rcx], rbx
+ mov qword ptr [rdx], rax
+
+ #NO_APP
+ pop rbx
+ ret
+.Ltmp2:
+ .size swap, .Ltmp2-swap
+ .cfi_endproc
+
+
+ .ident "clang version 3.5.0 "
+ .section ".note.GNU-stack","",@progbits