# REQUIRES: x86
# RUN: llvm-mc -triple x86_64-windows-msvc %s -filetype=obj -o %t.obj
# RUN: lld-link %t.obj -guard:cf -guard:longjmp -out:%t.exe -entry:main
# 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: 1
# CHECK:   GuardFlags: 0x10500
# CHECK:   GuardAddressTakenIatEntryTable: 0x0
# CHECK:   GuardAddressTakenIatEntryCount: 0
# CHECK:   GuardLongJumpTargetTable: 0x14000{{.*}}
# CHECK:   GuardLongJumpTargetCount: 1
# CHECK: ]
# CHECK:      GuardLJmpTable [
# CHECK-NEXT:   0x14000{{.*}}
# CHECK-NEXT: ]


# This assembly is reduced from C code like:
# #include <setjmp.h>
# jmp_buf buf;
# void g() { longjmp(buf, 1); }
# void f() {
#   if (setjmp(buf))
#     return;
#   g();
# }
# int main() { f(); }

# We need @feat.00 to have 0x800 to indicate /guard:cf.
        .def     @feat.00;
        .scl    3;
        .type   0;
        .endef
        .globl  @feat.00
@feat.00 = 0x801
        .def     f; .scl    2; .type   32; .endef
        .globl  f
f:
        pushq   %rbp
        subq    $32, %rsp
        leaq    32(%rsp), %rbp
        leaq    buf(%rip), %rcx
        leaq    -32(%rbp), %rdx
        callq   _setjmp
.Lljmp1:
        testl   %eax, %eax
        je      .LBB1_1
        addq    $32, %rsp
        popq    %rbp
        retq
.LBB1_1:                                # %if.end
        leaq    buf(%rip), %rcx
        movl    $1, %edx
        callq   longjmp
        ud2

        # Record the longjmp target.
        .section        .gljmp$y,"dr"
        .symidx .Lljmp1
        .text

        # Provide setjmp/longjmp stubs.
        .def     _setjmp; .scl    2; .type   32; .endef
        .globl  _setjmp
_setjmp:
        retq

        .def     longjmp; .scl    2; .type   32; .endef
        .globl  longjmp
longjmp:
        retq

        .def     main; .scl    2; .type   32; .endef
        .globl  main                    # -- Begin function main
main:                                   # @main
        subq    $40, %rsp
        callq   f
        xorl    %eax, %eax
        addq    $40, %rsp
        retq

        .comm   buf,256,4               # @buf

        .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 12, 1, 0
        .quad __guard_iat_table
        .quad __guard_iat_count
        .quad __guard_longjmp_table
        .quad __guard_longjmp_count
        .fill 84, 1, 0
