MC-COFF: Add support for default-null weak externals.
[oota-llvm.git] / test / MC / COFF / weak.s
1 // This tests that default-null weak symbols (a GNU extension) are created\r
2 // properly via the .weak directive.\r
3 \r
4 // RUN: llvm-mc -filetype=obj < %s | coff-dump.py | FileCheck %s\r
5 \r
6     .def    _main;\r
7     .scl    2;\r
8     .type   32;\r
9     .endef\r
10     .text\r
11     .globl  _main\r
12     .align  16, 0x90\r
13 _main:                                  # @main\r
14 # BB#0:                                 # %entry\r
15     subl    $4, %esp\r
16     movl    $_test_weak, %eax\r
17     testl   %eax, %eax\r
18     je      LBB0_2\r
19 # BB#1:                                 # %if.then\r
20     calll   _test_weak\r
21     movl    $1, %eax\r
22     addl    $4, %esp\r
23     ret\r
24 LBB0_2:                                 # %return\r
25     xorl    %eax, %eax\r
26     addl    $4, %esp\r
27     ret\r
28 \r
29     .weak   _test_weak\r
30 \r
31 // CHECK: Symbols = [\r
32 \r
33 // CHECK:      Name               = _test_weak\r
34 // CHECK-NEXT: Value              = 0\r
35 // CHECK-NEXT: SectionNumber      = 0\r
36 // CHECK-NEXT: SimpleType         = IMAGE_SYM_TYPE_NULL (0)\r
37 // CHECK-NEXT: ComplexType        = IMAGE_SYM_DTYPE_NULL (0)\r
38 // CHECK-NEXT: StorageClass       = IMAGE_SYM_CLASS_WEAK_EXTERNAL (105)\r
39 // CHECK-NEXT: NumberOfAuxSymbols = 1\r
40 // CHECK-NEXT: AuxillaryData      =\r
41 // CHECK-NEXT: 05 00 00 00 02 00 00 00 - 00 00 00 00 00 00 00 00 |................|\r
42 // CHECK-NEXT: 00 00                                             |..|\r
43 \r
44 // CHECK:      Name               = .weak._test_weak.default\r
45 // CHECK-NEXT: Value              = 0\r
46 // CHECK-NEXT: SectionNumber      = 65535\r
47 // CHECK-NEXT: SimpleType         = IMAGE_SYM_TYPE_NULL (0)\r
48 // CHECK-NEXT: ComplexType        = IMAGE_SYM_DTYPE_NULL (0)\r
49 // CHECK-NEXT: StorageClass       = IMAGE_SYM_CLASS_EXTERNAL (2)\r
50 // CHECK-NEXT: NumberOfAuxSymbols = 0\r
51 // CHECK-NEXT: AuxillaryData      =\r