| # RUN: rm -rf %t && mkdir -p %t |
| # RUN: llvm-mc -triple=x86_64-pc-win32 -filetype=obj -o %t/COFF_x86_64.o %s |
| # RUN: llvm-rtdyld -triple=x86_64-pc-win32 -dummy-extern external_func=0x1 \ |
| # RUN: -dummy-extern external_data=0x2 -verify -check=%s %t/COFF_x86_64.o |
| |
| |
| .text |
| .def F; |
| .scl 2; |
| .type 32; |
| .endef |
| .globl __real400921f9f01b866e |
| .section .rdata,"dr",discard,__real400921f9f01b866e |
| .align 8 |
| __real400921f9f01b866e: |
| .quad 4614256650576692846 # double 3.1415899999999999 |
| .text |
| .globl F |
| .global inst1 |
| .align 16, 0x90 |
| F: # @F |
| .Ltmp0: |
| .seh_proc F |
| # %bb.0: # %entry |
| .Ltmp1: |
| .seh_endprologue |
| # rtdyld-check: decode_operand(inst1, 4) = __real400921f9f01b866e - next_pc(inst1) |
| inst1: |
| movsd __real400921f9f01b866e(%rip), %xmm0 # xmm0 = mem[0],zero |
| retq |
| .Leh_func_end0: |
| .Ltmp2: |
| .seh_endproc |
| |
| .globl call_to_dllimport |
| .p2align 4, 0x90 |
| # Check calls to dllimports. |
| # |
| # (1) Check that callq argument points to synthesized stub addr. |
| # rtdyld-check: decode_operand(call_to_dllimport, 3) = \ |
| # rtdyld-check: stub_addr(COFF_x86_64.o/.text, __imp_external_func) - \ |
| # rtdyld-check: next_pc(call_to_dllimport) |
| # |
| # (2) Check that synthesized stub entry points to call target. |
| # rtdyld-check: *{8}(stub_addr(COFF_x86_64.o/.text, __imp_external_func)) = \ |
| # rtdyld-check: external_func |
| call_to_dllimport: |
| callq *__imp_external_func(%rip) |
| |
| .globl load_from_dllimport |
| .p2align 4, 0x90 |
| # Check loads from dllimports. |
| # |
| # (1) Check that the movq argument points to synthesized stub addr. |
| # rtdyld-check: decode_operand(load_from_dllimport, 4) = \ |
| # rtdyld-check: stub_addr(COFF_x86_64.o/.text, __imp_external_data) - \ |
| # rtdyld-check: next_pc(load_from_dllimport) |
| # |
| # (2) Check that synthesized stub entry points to datao target. |
| # rtdyld-check: *{8}(stub_addr(COFF_x86_64.o/.text, __imp_external_data)) = \ |
| # rtdyld-check: external_data |
| load_from_dllimport: |
| movq __imp_external_data(%rip), %rax |
| |
| .data |
| .globl x # @x |
| # rtdyld-check: *{8}x = F |
| x: |
| .quad F |
| |
| # Make sure the JIT doesn't bail out on BSS sections. |
| .bss |
| bss_check: |
| .fill 8, 1, 0 |