1 # RUN: rm -rf %t && mkdir -p %t
2 # RUN: llvm-mc -triple=x86_64-pc-win32 -filetype=obj -o %t/COFF_x86_64.o %s
3 # RUN: llvm-rtdyld -triple=x86_64-pc-win32 -dummy-extern external_func=0x1 \
4 # RUN: -dummy-extern external_data=0x2 -verify -check=%s %t/COFF_x86_64.o
11 # rtdyld-check: *{2}Lreloc = 1
12 .reloc 4, secidx, section+4
20 .globl __real400921f9f01b866e
21 .section .rdata,"dr",discard,__real400921f9f01b866e
23 __real400921f9f01b866e
:
24 .quad 4614256650576692846 # double 3.1415899999999999
35 # rtdyld-check: decode_operand(inst1, 4) = __real400921f9f01b866e - next_pc(inst1)
37 movsd __real400921f9f01b866e
(%rip
), %xmm0
# xmm0 = mem[0],zero
43 .globl call_to_dllimport
45 # Check calls to dllimports.
47 # (1) Check that callq argument points to synthesized stub addr.
48 # rtdyld-check: decode_operand(call_to_dllimport, 3) = \
49 # rtdyld-check: stub_addr(COFF_x86_64.o/.text, __imp_external_func) - \
50 # rtdyld-check: next_pc(call_to_dllimport)
52 # (2) Check that synthesized stub entry points to call target.
53 # rtdyld-check: *{8}(stub_addr(COFF_x86_64.o/.text, __imp_external_func)) = \
54 # rtdyld-check: external_func
56 callq
*__imp_external_func
(%rip
)
58 .globl load_from_dllimport
60 # Check loads from dllimports.
62 # (1) Check that the movq argument points to synthesized stub addr.
63 # rtdyld-check: decode_operand(load_from_dllimport, 4) = \
64 # rtdyld-check: stub_addr(COFF_x86_64.o/.text, __imp_external_data) - \
65 # rtdyld-check: next_pc(load_from_dllimport)
67 # (2) Check that synthesized stub entry points to datao target.
68 # rtdyld-check: *{8}(stub_addr(COFF_x86_64.o/.text, __imp_external_data)) = \
69 # rtdyld-check: external_data
71 movq __imp_external_data
(%rip
), %rax
75 # rtdyld-check: *{8}x = F
79 # Make sure the JIT doesn't bail out on BSS sections.