| // RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s | llvm-readobj --symbols - | FileCheck %s | 
 | // RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s | llvm-readobj --symbols - | FileCheck %s | 
 |  | 
 | // When making weak references to labels/procedures, we reference them directly | 
 | // if they have global symbols; otherwise, we need to create a global symbol for | 
 | // the reference to resolve to. | 
 |  | 
 |     .text | 
 |  | 
 |     .globl proc1 | 
 | proc1: | 
 |     ret | 
 |  | 
 | proc2: | 
 |     ret | 
 | // CHECK:      Symbol { | 
 | // CHECK:        Name: proc2 | 
 | // CHECK-NEXT:   Value: [[PROC2_VALUE:[0-9]+]] | 
 | // CHECK-NEXT:   Section: [[PROC2_SECTION:.*]] | 
 | // CHECK-NEXT:   BaseType: Null | 
 | // CHECK-NEXT:   ComplexType: Null | 
 | // CHECK-NEXT:   StorageClass: Static | 
 | // CHECK-NEXT:   AuxSymbolCount: 0 | 
 | // CHECK-NEXT: } | 
 |  | 
 |     .weak t1 | 
 | t1 = proc1 | 
 |  | 
 | // CHECK:      Symbol { | 
 | // CHECK:        Name: t1 | 
 | // CHECK-NEXT:   Value: 0 | 
 | // CHECK-NEXT:   Section: IMAGE_SYM_UNDEFINED | 
 | // CHECK-NEXT:   BaseType: Null | 
 | // CHECK-NEXT:   ComplexType: Null | 
 | // CHECK-NEXT:   StorageClass: WeakExternal | 
 | // CHECK-NEXT:   AuxSymbolCount: 1 | 
 | // CHECK-NEXT:   AuxWeakExternal { | 
 | // CHECK-NEXT:     Linked: proc1 | 
 | // CHECK-NEXT:     Search: Alias | 
 | // CHECK-NEXT:   } | 
 | // CHECK-NEXT: } | 
 |  | 
 |     .weak t2 | 
 | t2 = proc2 | 
 |  | 
 | // CHECK:      Symbol { | 
 | // CHECK:        Name: t2 | 
 | // CHECK-NEXT:   Value: 0 | 
 | // CHECK-NEXT:   Section: IMAGE_SYM_UNDEFINED | 
 | // CHECK-NEXT:   BaseType: Null | 
 | // CHECK-NEXT:   ComplexType: Null | 
 | // CHECK-NEXT:   StorageClass: WeakExternal | 
 | // CHECK-NEXT:   AuxSymbolCount: 1 | 
 | // CHECK-NEXT:   AuxWeakExternal { | 
 | // CHECK-NEXT:     Linked: .weak.t2.default | 
 | // CHECK-NEXT:     Search: Alias | 
 | // CHECK-NEXT:   } | 
 | // CHECK-NEXT: } | 
 | // CHECK:      Symbol { | 
 | // CHECK:        Name: .weak.t2.default | 
 | // CHECK-NEXT:   Value: [[PROC2_VALUE]] | 
 | // CHECK-NEXT:   Section: [[PROC2_SECTION]] | 
 | // CHECK-NEXT:   BaseType: Null | 
 | // CHECK-NEXT:   ComplexType: Null | 
 | // CHECK-NEXT:   StorageClass: External | 
 | // CHECK-NEXT:   AuxSymbolCount: 0 | 
 | // CHECK-NEXT: } | 
 |  | 
 |     .weak t3 | 
 | t3 = foo | 
 |  | 
 | // CHECK:      Symbol { | 
 | // CHECK:        Name: t3 | 
 | // CHECK-NEXT:   Value: 0 | 
 | // CHECK-NEXT:   Section: IMAGE_SYM_UNDEFINED | 
 | // CHECK-NEXT:   BaseType: Null | 
 | // CHECK-NEXT:   ComplexType: Null | 
 | // CHECK-NEXT:   StorageClass: WeakExternal | 
 | // CHECK-NEXT:   AuxSymbolCount: 1 | 
 | // CHECK-NEXT:   AuxWeakExternal { | 
 | // CHECK-NEXT:     Linked: foo | 
 | // CHECK-NEXT:     Search: Alias | 
 | // CHECK-NEXT:   } | 
 | // CHECK-NEXT: } | 
 |  | 
 |     .weak t4 | 
 | t4 = bar | 
 |  | 
 |     .globl bar | 
 | bar: | 
 |     ret | 
 |  | 
 | // CHECK:      Symbol { | 
 | // CHECK:        Name: t4 | 
 | // CHECK-NEXT:   Value: 0 | 
 | // CHECK-NEXT:   Section: IMAGE_SYM_UNDEFINED | 
 | // CHECK-NEXT:   BaseType: Null | 
 | // CHECK-NEXT:   ComplexType: Null | 
 | // CHECK-NEXT:   StorageClass: WeakExternal | 
 | // CHECK-NEXT:   AuxSymbolCount: 1 | 
 | // CHECK-NEXT:   AuxWeakExternal { | 
 | // CHECK-NEXT:     Linked: bar | 
 | // CHECK-NEXT:     Search: Alias | 
 | // CHECK-NEXT:   } | 
 | // CHECK-NEXT: } | 
 |  | 
 |     .weak t5 | 
 | t5 = t2 | 
 |  | 
 | // CHECK:      Symbol { | 
 | // CHECK:        Name: t5 | 
 | // CHECK-NEXT:   Value: 0 | 
 | // CHECK-NEXT:   Section: IMAGE_SYM_UNDEFINED | 
 | // CHECK-NEXT:   BaseType: Null | 
 | // CHECK-NEXT:   ComplexType: Null | 
 | // CHECK-NEXT:   StorageClass: WeakExternal | 
 | // CHECK-NEXT:   AuxSymbolCount: 1 | 
 | // CHECK-NEXT:   AuxWeakExternal { | 
 | // CHECK-NEXT:     Linked: t2 | 
 | // CHECK-NEXT:     Search: Alias | 
 | // CHECK-NEXT:   } | 
 | // CHECK-NEXT: } |