COFF: Fix weak external aliases.
[oota-llvm.git] / test / MC / COFF / weak.s
index d910059a47deef6ff746f1e39d02d3c54d54481a..b9df0f1df2fd5e567cf54efe6949371da77ef330 100644 (file)
@@ -1,51 +1,75 @@
-// This tests that default-null weak symbols (a GNU extension) are created\r
-// properly via the .weak directive.\r
-\r
-// RUN: llvm-mc -filetype=obj < %s | coff-dump.py | FileCheck %s\r
-\r
-    .def    _main;\r
-    .scl    2;\r
-    .type   32;\r
-    .endef\r
-    .text\r
-    .globl  _main\r
-    .align  16, 0x90\r
-_main:                                  # @main\r
-# BB#0:                                 # %entry\r
-    subl    $4, %esp\r
-    movl    $_test_weak, %eax\r
-    testl   %eax, %eax\r
-    je      LBB0_2\r
-# BB#1:                                 # %if.then\r
-    calll   _test_weak\r
-    movl    $1, %eax\r
-    addl    $4, %esp\r
-    ret\r
-LBB0_2:                                 # %return\r
-    xorl    %eax, %eax\r
-    addl    $4, %esp\r
-    ret\r
-\r
-    .weak   _test_weak\r
-\r
-// CHECK: Symbols = [\r
-\r
-// CHECK:      Name               = _test_weak\r
-// CHECK-NEXT: Value              = 0\r
-// CHECK-NEXT: SectionNumber      = 0\r
-// CHECK-NEXT: SimpleType         = IMAGE_SYM_TYPE_NULL (0)\r
-// CHECK-NEXT: ComplexType        = IMAGE_SYM_DTYPE_NULL (0)\r
-// CHECK-NEXT: StorageClass       = IMAGE_SYM_CLASS_WEAK_EXTERNAL (105)\r
-// CHECK-NEXT: NumberOfAuxSymbols = 1\r
-// CHECK-NEXT: AuxillaryData      =\r
-// CHECK-NEXT: 05 00 00 00 02 00 00 00 - 00 00 00 00 00 00 00 00 |................|\r
-// CHECK-NEXT: 00 00                                             |..|\r
-\r
-// CHECK:      Name               = .weak._test_weak.default\r
-// CHECK-NEXT: Value              = 0\r
-// CHECK-NEXT: SectionNumber      = 65535\r
-// CHECK-NEXT: SimpleType         = IMAGE_SYM_TYPE_NULL (0)\r
-// CHECK-NEXT: ComplexType        = IMAGE_SYM_DTYPE_NULL (0)\r
-// CHECK-NEXT: StorageClass       = IMAGE_SYM_CLASS_EXTERNAL (2)\r
-// CHECK-NEXT: NumberOfAuxSymbols = 0\r
-// CHECK-NEXT: AuxillaryData      =\r
+// 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:        (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:      Unused: (00 00 00 00 00 00 00 00 00 00)
+// CHECK-NEXT:   }
+// CHECK-NEXT: }
+
+// CHECK:      Symbol {
+// CHECK:        Name:                .weak._test_weak.default
+// CHECK-NEXT:   Value:               0
+// CHECK-NEXT:   Section:             (-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:        (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:      Unused: (00 00 00 00 00 00 00 00 00 00)
+// CHECK-NEXT:   }
+// CHECK-NEXT: }