123 lines · plain
1// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s | llvm-readobj --symbols - | FileCheck %s2// RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s | llvm-readobj --symbols - | FileCheck %s3 4// When making weak references to labels/procedures, we reference them directly5// if they have global symbols; otherwise, we need to create a global symbol for6// the reference to resolve to.7 8 .text9 10 .globl proc111proc1:12 ret13 14proc2:15 ret16// CHECK: Symbol {17// CHECK: Name: proc218// CHECK-NEXT: Value: [[PROC2_VALUE:[0-9]+]]19// CHECK-NEXT: Section: [[PROC2_SECTION:.*]]20// CHECK-NEXT: BaseType: Null21// CHECK-NEXT: ComplexType: Null22// CHECK-NEXT: StorageClass: Static23// CHECK-NEXT: AuxSymbolCount: 024// CHECK-NEXT: }25 26 .weak t127t1 = proc128 29// CHECK: Symbol {30// CHECK: Name: t131// CHECK-NEXT: Value: 032// CHECK-NEXT: Section: IMAGE_SYM_UNDEFINED33// CHECK-NEXT: BaseType: Null34// CHECK-NEXT: ComplexType: Null35// CHECK-NEXT: StorageClass: WeakExternal36// CHECK-NEXT: AuxSymbolCount: 137// CHECK-NEXT: AuxWeakExternal {38// CHECK-NEXT: Linked: proc139// CHECK-NEXT: Search: Alias40// CHECK-NEXT: }41// CHECK-NEXT: }42 43 .weak t244t2 = proc245 46// CHECK: Symbol {47// CHECK: Name: t248// CHECK-NEXT: Value: 049// CHECK-NEXT: Section: IMAGE_SYM_UNDEFINED50// CHECK-NEXT: BaseType: Null51// CHECK-NEXT: ComplexType: Null52// CHECK-NEXT: StorageClass: WeakExternal53// CHECK-NEXT: AuxSymbolCount: 154// CHECK-NEXT: AuxWeakExternal {55// CHECK-NEXT: Linked: .weak.t2.default56// CHECK-NEXT: Search: Alias57// CHECK-NEXT: }58// CHECK-NEXT: }59// CHECK: Symbol {60// CHECK: Name: .weak.t2.default61// CHECK-NEXT: Value: [[PROC2_VALUE]]62// CHECK-NEXT: Section: [[PROC2_SECTION]]63// CHECK-NEXT: BaseType: Null64// CHECK-NEXT: ComplexType: Null65// CHECK-NEXT: StorageClass: External66// CHECK-NEXT: AuxSymbolCount: 067// CHECK-NEXT: }68 69 .weak t370t3 = foo71 72// CHECK: Symbol {73// CHECK: Name: t374// CHECK-NEXT: Value: 075// CHECK-NEXT: Section: IMAGE_SYM_UNDEFINED76// CHECK-NEXT: BaseType: Null77// CHECK-NEXT: ComplexType: Null78// CHECK-NEXT: StorageClass: WeakExternal79// CHECK-NEXT: AuxSymbolCount: 180// CHECK-NEXT: AuxWeakExternal {81// CHECK-NEXT: Linked: foo82// CHECK-NEXT: Search: Alias83// CHECK-NEXT: }84// CHECK-NEXT: }85 86 .weak t487t4 = bar88 89 .globl bar90bar:91 ret92 93// CHECK: Symbol {94// CHECK: Name: t495// CHECK-NEXT: Value: 096// CHECK-NEXT: Section: IMAGE_SYM_UNDEFINED97// CHECK-NEXT: BaseType: Null98// CHECK-NEXT: ComplexType: Null99// CHECK-NEXT: StorageClass: WeakExternal100// CHECK-NEXT: AuxSymbolCount: 1101// CHECK-NEXT: AuxWeakExternal {102// CHECK-NEXT: Linked: bar103// CHECK-NEXT: Search: Alias104// CHECK-NEXT: }105// CHECK-NEXT: }106 107 .weak t5108t5 = t2109 110// CHECK: Symbol {111// CHECK: Name: t5112// CHECK-NEXT: Value: 0113// CHECK-NEXT: Section: IMAGE_SYM_UNDEFINED114// CHECK-NEXT: BaseType: Null115// CHECK-NEXT: ComplexType: Null116// CHECK-NEXT: StorageClass: WeakExternal117// CHECK-NEXT: AuxSymbolCount: 1118// CHECK-NEXT: AuxWeakExternal {119// CHECK-NEXT: Linked: t2120// CHECK-NEXT: Search: Alias121// CHECK-NEXT: }122// CHECK-NEXT: }123