// This tests that default-null weak symbols (a GNU extension) are created
// properly via the .weak directive.

// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s | llvm-readobj -t | FileCheck %s
// RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s | llvm-readobj -t | FileCheck %s

    .def    _main;
    .scl    2;
    .type   32;
    .endef
    .text
    .globl  _main
    .align  16, 0x90
_main:                                  # @main
# BB#0:                                 # %entry
    subl    $4, %esp
    movl    $_test_weak, %eax
    testl   %eax, %eax
    je      LBB0_2
# BB#1:                                 # %if.then
    call    _test_weak
    movl    $1, %eax
    addl    $4, %esp
    ret
LBB0_2:                                 # %return
    xorl    %eax, %eax
    addl    $4, %esp
    ret

    .weak   _test_weak

    .weak   _test_weak_alias
    _test_weak_alias=_main

// CHECK: Symbols [

// CHECK:      Symbol {
// CHECK:        Name:           _test_weak
// CHECK-NEXT:   Value:          0
// CHECK-NEXT:   Section:        IMAGE_SYM_UNDEFINED (0)
// CHECK-NEXT:   BaseType:       Null
// CHECK-NEXT:   ComplexType:    Null
// CHECK-NEXT:   StorageClass:   WeakExternal
// CHECK-NEXT:   AuxSymbolCount: 1
// CHECK-NEXT:   AuxWeakExternal {
// CHECK-NEXT:     Linked: .weak._test_weak.default
// CHECK-NEXT:      Search: Library
// CHECK-NEXT:   }
// CHECK-NEXT: }

// CHECK:      Symbol {
// CHECK:        Name:                .weak._test_weak.default
// CHECK-NEXT:   Value:               0
// CHECK-NEXT:   Section:             IMAGE_SYM_ABSOLUTE (-1)
// CHECK-NEXT:   BaseType:            Null
// CHECK-NEXT:   ComplexType:         Null
// CHECK-NEXT:   StorageClass:        External
// CHECK-NEXT:   AuxSymbolCount:      0
// CHECK-NEXT: }

// CHECK:      Symbol {
// CHECK:        Name:           _test_weak_alias
// CHECK-NEXT:   Value:          0
// CHECK-NEXT:   Section:        IMAGE_SYM_UNDEFINED (0)
// CHECK-NEXT:   BaseType:       Null
// CHECK-NEXT:   ComplexType:    Null
// CHECK-NEXT:   StorageClass:   WeakExternal
// CHECK-NEXT:   AuxSymbolCount: 1
// CHECK-NEXT:   AuxWeakExternal {
// CHECK-NEXT:     Linked: _main
// CHECK-NEXT:      Search: Library
// CHECK-NEXT:   }
// CHECK-NEXT: }
