brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.3 KiB · e700aab Raw
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