; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 -mattr=-altivec -data-sections=false < %s | \ ; RUN: FileCheck %s ; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr4 -mattr=-altivec -data-sections=false < %s |\ ; RUN: FileCheck %s ; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -filetype=obj %s -o %t.o ; RUN: llvm-readobj --syms --auxiliary-header %t.o | FileCheck %s --check-prefixes=SYM,AUX32 ; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -filetype=obj %s -o %t64.o ; RUN: llvm-readobj --syms --auxiliary-header %t64.o | FileCheck %s --check-prefixes=SYM,AUX64 @b = global i32 0, align 4 @b_h = hidden global i32 0, align 4 @b_e = dllexport global i32 0, align 4 define void @foo() { entry: ret void } define hidden void @foo_h(i32* %ip) { entry: ret void } define dllexport void @foo_e(i32* %ip) { entry: ret void } define protected void @foo_protected(i32* %ip) { entry: ret void } define weak hidden void @foo_weak_h() { entry: ret void } define weak dllexport void @foo_weak_e() { entry: ret void } @foo_p = global void ()* @zoo_weak_extern_h, align 4 declare extern_weak hidden void @zoo_weak_extern_h() declare extern_weak dllexport void @zoo_weak_extern_e() define i32 @main() { entry: %call1= call i32 @bar_h(i32* @b_h) call void @foo_weak_h() %0 = load void ()*, void ()** @foo_p, align 4 call void %0() ret i32 0 } declare hidden i32 @bar_h(i32*) declare dllexport i32 @bar_e(i32*) ; CHECK: .globl foo[DS]{{[[:space:]]*([#].*)?$}} ; CHECK: .globl .foo{{[[:space:]]*([#].*)?$}} ; CHECK: .globl foo_h[DS],hidden ; CHECK: .globl .foo_h,hidden ; CHECK: .globl foo_e[DS],exported ; CHECK: .globl .foo_e,exported ; CHECK: .globl foo_protected[DS],protected ; CHECK: .globl .foo_protected,protected ; CHECK: .weak foo_weak_h[DS],hidden ; CHECK: .weak .foo_weak_h,hidden ; CHECK: .weak foo_weak_e[DS],exported ; CHECK: .weak .foo_weak_e,exported ; CHECK: .globl b{{[[:space:]]*([#].*)?$}} ; CHECK: .globl b_h,hidden ; CHECK: .globl b_e,exported ; CHECK: .weak .zoo_weak_extern_h[PR],hidden ; CHECK: .weak zoo_weak_extern_h[DS],hidden ; CHECK: .weak .zoo_weak_extern_e[PR],exported ; CHECK: .weak zoo_weak_extern_e[DS],exported ; CHECK: .extern .bar_h[PR],hidden ; CHECK: .extern bar_h[DS],hidden ; CHECK: .extern .bar_e[PR],exported ; CHECK: .extern bar_e[DS],exported ; AUX32: AuxiliaryHeader { ; AUX32-NEXT: Magic: 0x0 ; AUX32-NEXT: Version: 0x2 ; AUX32-NEXT: Size of .text section: 0x134 ; AUX32-NEXT: Size of .data section: 0x6C ; AUX32-NEXT: Size of .bss section: 0x0 ; AUX32-NEXT: Entry point address: 0x0 ; AUX32-NEXT: .text section start address: 0x0 ; AUX32-NEXT: .data section start address: 0x134 ; AUX32-NEXT: } ; AUX64: AuxiliaryHeader { ; AUX64-NEXT: } ; SYM: Name: .bar_h ; SYM-NEXT: Value (RelocatableAddress): 0x0 ; SYM-NEXT: Section: N_UNDEF ; SYM-NEXT: Type: 0x2000 ; SYM-NEXT: StorageClass: C_EXT (0x2) ; SYM: Name: zoo_weak_extern_h ; SYM-NEXT: Value (RelocatableAddress): 0x0 ; SYM-NEXT: Section: N_UNDEF ; SYM-NEXT: Type: 0x2000 ; SYM-NEXT: StorageClass: C_WEAKEXT (0x6F) ; SYM: Name: .zoo_weak_extern_h ; SYM-NEXT: Value (RelocatableAddress): 0x0 ; SYM-NEXT: Section: N_UNDEF ; SYM-NEXT: Type: 0x2000 ; SYM-NEXT: StorageClass: C_WEAKEXT (0x6F) ; SYM: Name: .zoo_weak_extern_e ; SYM-NEXT: Value (RelocatableAddress): 0x0 ; SYM-NEXT: Section: N_UNDEF ; SYM-NEXT: Type: 0x4000 ; SYM-NEXT: StorageClass: C_WEAKEXT (0x6F) ; SYM: Name: zoo_weak_extern_e ; SYM-NEXT: Value (RelocatableAddress): 0x0 ; SYM-NEXT: Section: N_UNDEF ; SYM-NEXT: Type: 0x4000 ; SYM-NEXT: StorageClass: C_WEAKEXT (0x6F) ; SYM: Name: bar_h ; SYM-NEXT: Value (RelocatableAddress): 0x0 ; SYM-NEXT: Section: N_UNDEF ; SYM-NEXT: Type: 0x2000 ; SYM-NEXT: StorageClass: C_EXT (0x2) ; SYM: Name: .bar_e ; SYM-NEXT: Value (RelocatableAddress): 0x0 ; SYM-NEXT: Section: N_UNDEF ; SYM-NEXT: Type: 0x4000 ; SYM-NEXT: StorageClass: C_EXT (0x2) ; SYM: Name: bar_e ; SYM-NEXT: Value (RelocatableAddress): 0x0 ; SYM-NEXT: Section: N_UNDEF ; SYM-NEXT: Type: 0x4000 ; SYM-NEXT: StorageClass: C_EXT (0x2) ; SYM: Name: .foo ; SYM-NEXT: Value (RelocatableAddress): 0x0 ; SYM-NEXT: Section: .text ; SYM-NEXT: Type: 0x0 ; SYM-NEXT: StorageClass: C_EXT (0x2) ; SYM: Name: .foo_h ; SYM-NEXT: Value (RelocatableAddress): 0x1C ; SYM-NEXT: Section: .text ; SYM-NEXT: Type: 0x2000 ; SYM-NEXT: StorageClass: C_EXT (0x2) ; SYM: Name: .foo_e ; SYM-NEXT: Value (RelocatableAddress): 0x3C ; SYM-NEXT: Section: .text ; SYM-NEXT: Type: 0x4000 ; SYM-NEXT: StorageClass: C_EXT (0x2) ; SYM: Name: .foo_protected ; SYM-NEXT: Value (RelocatableAddress): 0x5C ; SYM-NEXT: Section: .text ; SYM-NEXT: Type: 0x3000 ; SYM-NEXT: StorageClass: C_EXT (0x2) ; SYM: Name: .foo_weak_h ; SYM-NEXT: Value (RelocatableAddress): 0x84 ; SYM-NEXT: Section: .text ; SYM-NEXT: Type: 0x2000 ; SYM-NEXT: StorageClass: C_WEAKEXT (0x6F) ; SYM: Name: .foo_weak_e ; SYM-NEXT: Value (RelocatableAddress): 0xA4 ; SYM-NEXT: Section: .text ; SYM-NEXT: Type: 0x4000 ; SYM-NEXT: StorageClass: C_WEAKEXT (0x6F) ; SYM: Name: b ; SYM-NEXT: Value (RelocatableAddress): 0x134 ; SYM-NEXT: Section: .data ; SYM-NEXT: Type: 0x0 ; SYM-NEXT: StorageClass: C_EXT (0x2) ; SYM: Name: b_h ; SYM-NEXT: Value (RelocatableAddress): 0x138 ; SYM-NEXT: Section: .data ; SYM-NEXT: Type: 0x2000 ; SYM-NEXT: StorageClass: C_EXT (0x2) ; SYM: Name: b_e ; SYM-NEXT: Value (RelocatableAddress): 0x13C ; SYM-NEXT: Section: .data ; SYM-NEXT: Type: 0x4000 ; SYM-NEXT: StorageClass: C_EXT (0x2) ; SYM: Name: foo ; SYM-NEXT: Value (RelocatableAddress): {{[0-9]+}} ; SYM-NEXT: Section: .data ; SYM-NEXT: Type: 0x0 ; SYM-NEXT: StorageClass: C_EXT (0x2) ; SYM: Name: foo_h ; SYM-NEXT: Value (RelocatableAddress): {{[0-9]+}} ; SYM-NEXT: Section: .data ; SYM-NEXT: Type: 0x2000 ; SYM-NEXT: StorageClass: C_EXT (0x2) ; SYM: Name: foo_e ; SYM-NEXT: Value (RelocatableAddress): {{[0-9]+}} ; SYM-NEXT: Section: .data ; SYM-NEXT: Type: 0x4000 ; SYM-NEXT: StorageClass: C_EXT (0x2) ; SYM: Name: foo_protected ; SYM-NEXT: Value (RelocatableAddress): {{[0-9]+}} ; SYM-NEXT: Section: .data ; SYM-NEXT: Type: 0x3000 ; SYM-NEXT: StorageClass: C_EXT (0x2) ; SYM: Name: foo_weak_h ; SYM-NEXT: Value (RelocatableAddress): {{[0-9]+}} ; SYM-NEXT: Section: .data ; SYM-NEXT: Type: 0x2000 ; SYM-NEXT: StorageClass: C_WEAKEXT (0x6F) ; SYM: Name: foo_weak_e ; SYM-NEXT: Value (RelocatableAddress): {{[0-9]+}} ; SYM-NEXT: Section: .data ; SYM-NEXT: Type: 0x4000 ; SYM-NEXT: StorageClass: C_WEAKEXT (0x6F)