# REQUIRES: x86 # RUN: grep -B99999 [S]PLITMARKER %s | llvm-mc -triple x86_64-windows-msvc -filetype=obj -o %t1.obj # RUN: grep -A99999 [S]PLITMARKER %s | llvm-mc -triple x86_64-windows-msvc -filetype=obj -o %t2.obj # RUN: lld-link %t1.obj %t2.obj -guard:nolongjmp -out:%t.exe -entry:main -opt:noref # RUN: llvm-readobj --file-headers --coff-load-config %t.exe | FileCheck %s # CHECK: ImageBase: 0x140000000 # CHECK: LoadConfig [ # CHECK: SEHandlerTable: 0x0 # CHECK: SEHandlerCount: 0 # CHECK: GuardCFCheckFunction: 0x0 # CHECK: GuardCFCheckDispatch: 0x0 # CHECK: GuardCFFunctionTable: 0x14000{{.*}} # CHECK: GuardCFFunctionCount: 3 # CHECK: GuardFlags: 0x500 # CHECK: GuardAddressTakenIatEntryTable: 0x0 # CHECK: GuardAddressTakenIatEntryCount: 0 # CHECK: GuardLongJumpTargetTable: 0x0 # CHECK: GuardLongJumpTargetCount: 0 # CHECK: ] # CHECK: GuardFidTable [ # CHECK-NEXT: 0x14000{{.*}} # CHECK-NEXT: 0x14000{{.*}} # CHECK-NEXT: 0x14000{{.*}} # CHECK-NEXT: ] # Indicate that no gfids are present. All symbols used by relocations in this # file will be considered address-taken. .def @feat.00; .scl 3; .type 0; .endef .globl @feat.00 @feat.00 = 0 .def main; .scl 2; .type 32; .endef .section .text,"xr",one_only,main .globl main main: subq $8, %rsp leaq foo(%rip), %rdx callq bar movl $0, %eax addq $8, %rsp retq # Should not appear in gfids table. .def baz; .scl 2; .type 32; .endef .section .text,"xr",one_only,baz .globl baz baz: mov $1, %eax retq .def qux; .scl 2; .type 32; .endef .section .text,"xr",one_only,qux .globl qux qux: mov $2, %eax retq .def quxx; .scl 2; .type 32; .endef .section .text,"xr",one_only,quxx .globl quxx quxx: mov $3, %eax retq # Load config. .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 # SPLITMARKER # Indicate that gfids are present. This file does not take any addresses. .def @feat.00; .scl 3; .type 0; .endef .globl @feat.00 @feat.00 = 0x800 .def foo; .scl 2; .type 32; .endef .section .text,"xr",one_only,foo .global foo foo: movl $42, %eax retq .def bar; .scl 2; .type 32; .endef .section .text,"xr",one_only,bar .global bar bar: movl $13, %eax retq