113 lines · plain
1// This tests that default-null weak symbols (a GNU extension) are created2// properly via the .weak directive.3 4// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s | llvm-readobj --symbols - | FileCheck %s5// RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s | llvm-readobj --symbols - | FileCheck %s6 7 .def _main;8 .scl 2;9 .type 32;10 .endef11 .text12 .globl _main13 .align 16, 0x9014_main: # @main15# %bb.0: # %entry16 subl $4, %esp17 movl $_test_weak, %eax18 testl %eax, %eax19 je LBB0_220# %bb.1: # %if.then21 call _test_weak22 movl $1, %eax23 addl $4, %esp24 ret25LBB0_2: # %return26 xorl %eax, %eax27 addl $4, %esp28 ret29 30 .weak _test_weak31 32 .weak _test_weak_alias33 _test_weak_alias=_main34 35 .weak weakfunc36 .globl weakfunc37weakfunc:38 ret39 40// CHECK: Symbols [41 42// CHECK: Symbol {43// CHECK: Name: _main44// CHECK-NEXT: Value: 045// CHECK-NEXT: Section: .text46// CHECK-NEXT: BaseType: Null47// CHECK-NEXT: ComplexType: Function48// CHECK-NEXT: StorageClass: External49// CHECK-NEXT: AuxSymbolCount: 050// CHECK-NEXT: }51 52// CHECK: Symbol {53// CHECK: Name: _test_weak54// CHECK-NEXT: Value: 055// CHECK-NEXT: Section: IMAGE_SYM_UNDEFINED56// CHECK-NEXT: BaseType: Null57// CHECK-NEXT: ComplexType: Null58// CHECK-NEXT: StorageClass: WeakExternal59// CHECK-NEXT: AuxSymbolCount: 160// CHECK-NEXT: AuxWeakExternal {61// CHECK-NEXT: Linked: .weak._test_weak.default62// CHECK-NEXT: Search: Alias63// CHECK-NEXT: }64// CHECK-NEXT: }65 66// CHECK: Symbol {67// CHECK: Name: .weak._test_weak.default._main68// CHECK-NEXT: Value: 069// CHECK-NEXT: Section: IMAGE_SYM_ABSOLUTE70// CHECK-NEXT: BaseType: Null71// CHECK-NEXT: ComplexType: Null72// CHECK-NEXT: StorageClass: External73// CHECK-NEXT: AuxSymbolCount: 074// CHECK-NEXT: }75 76// CHECK: Symbol {77// CHECK: Name: _test_weak_alias78// CHECK-NEXT: Value: 079// CHECK-NEXT: Section: IMAGE_SYM_UNDEFINED80// CHECK-NEXT: BaseType: Null81// CHECK-NEXT: ComplexType: Null82// CHECK-NEXT: StorageClass: WeakExternal83// CHECK-NEXT: AuxSymbolCount: 184// CHECK-NEXT: AuxWeakExternal {85// CHECK-NEXT: Linked: _main86// CHECK-NEXT: Search: Alias87// CHECK-NEXT: }88// CHECK-NEXT: }89 90// CHECK: Symbol {91// CHECK: Name: weakfunc92// CHECK-NEXT: Value: 093// CHECK-NEXT: Section: IMAGE_SYM_UNDEFINED94// CHECK-NEXT: BaseType: Null95// CHECK-NEXT: ComplexType: Null96// CHECK-NEXT: StorageClass: WeakExternal97// CHECK-NEXT: AuxSymbolCount: 198// CHECK-NEXT: AuxWeakExternal {99// CHECK-NEXT: Linked: .weak.weakfunc.default100// CHECK-NEXT: Search: Alias101// CHECK-NEXT: }102// CHECK-NEXT: }103// CHECK: Symbol {104// CHECK: Name: .weak.weakfunc.default105// CHECK-NOT: Value: 0106// CHECK-NOT: Symbol {107// CHECK: Section: .text108// CHECK-NEXT: BaseType: Null109// CHECK-NEXT: ComplexType: Null110// CHECK-NEXT: StorageClass: External111// CHECK-NEXT: AuxSymbolCount: 0112// CHECK-NEXT: }113