# REQUIRES: x86 # RUN: llvm-mc -triple x86_64-pc-win32 %s -filetype=obj -o %t.obj # RUN: lld-link %t.obj -guard:cf -dll -out:%t.dll -noentry # RUN: llvm-readobj --coff-load-config %t.dll | FileCheck %s --check-prefix=CHECK # There should be a single entry in the table for the exported symbol. # # CHECK: GuardFidTable [ # CHECK-NEXT: 0x180001000 # CHECK-NEXT: ] .def func_export; .scl 2; .type 32; .endef .globl func_export .section .text,"xr",one_only,func_export .p2align 4 func_export: movl $1, %eax .globl label_export label_export: movl $2, %eax ret .data .globl data_export data_export: .long 42 .section .drectve,"dr" .ascii " /EXPORT:func_export" .ascii " /EXPORT:label_export" .ascii " /EXPORT:data_export" # Load configuration directory entry (winnt.h _IMAGE_LOAD_CONFIG_DIRECTORY64). # The linker will define the __guard_* symbols. .section .rdata,"dr" .globl _load_config_used _load_config_used: .long 256 .fill 124, 1, 0 .quad __guard_fids_table .quad __guard_fids_count .long __guard_flags .fill 128, 1, 0