# RUN: rm -rf %t && mkdir -p %t # RUN: llvm-mc -triple=x86_64-pc-win32 -filetype=obj -o %t/COFF_x86_64_IMGREL.o %s # RUN: llvm-rtdyld -triple=x86_64-pc-win32 -verify -target-addr-start=40960000000000 -check=%s %t/COFF_x86_64_IMGREL.o .text .def F; .scl 2; .type 32; .endef .globl __constdata .section .rdata, "dr", discard, __constdata .align 8 __constdata: .quad 0 .text .globl F .align 16, 0x90 F: # @F # rtdyld-check: decode_operand(inst1, 3) = section_addr(COFF_x86_64_IMGREL.o, .text)+0-40960000000000 inst1: mov %ebx, F@IMGREL # rtdyld-check: decode_operand(inst2, 3) = section_addr(COFF_x86_64_IMGREL.o, .rdata)+5-40960000000000 inst2: mov %ebx, (__constdata@imgrel+5) .data .space 375 rel1: # rtdyld-check: *{4}rel1 = string - section_addr(COFF_x86_64_IMGREL.o, .data) .secrel32 string # We explicitly add padding to put string outside of the 16bit address space # (absolute and as an offset from .data), so that relocations involving # 32bit addresses / offsets are not accidentally truncated to 16 bits. .space 65536 .global string .align 1 string: .asciz "Hello World\n"