--- /dev/null
+; RUN: llc -mtriple powerpc-ibm-aix -verify-machineinstrs -mcpu=pwr4 \
+; RUN: -filetype=obj -o %t.o < %s
+; RUN: llvm-readobj --syms %t.o | FileCheck %s
+; RUN: not --crash llc -mtriple powerpc64-ibm-aix -verify-machineinstrs -mcpu=pwr4 \
+; RUN: -filetype=obj -o %t.o < %s 2>&1 | FileCheck --check-prefix=64-CHECK %s
+
+define internal i32 @foo() {
+ ret i32 1
+}
+
+; CHECK: Symbol {
+; CHECK: Name: .foo
+; CHECK-NEXT: Value (RelocatableAddress):
+; CHECK-NEXT: Section: .text
+; CHECK-NEXT: Type: 0x0
+; CHECK-NEXT: StorageClass: C_HIDEXT (0x6B)
+
+; CHECK: Symbol {
+; CHECK-NEXT: Index: [[#INDX:]]
+; CHECK-NEXT: Name: foo
+; CHECK-NEXT: Value (RelocatableAddress):
+; CHECK-NEXT: Section: .data
+; CHECK-NEXT: Type: 0x0
+; CHECK-NEXT: StorageClass: C_HIDEXT (0x6B)
+; CHECK-NEXT: NumberOfAuxEntries: 1
+; CHECK-NEXT: CSECT Auxiliary Entry {
+; CHECK-NEXT: Index: [[#INDX+1]]
+; CHECK-NEXT: SectionLen: 12
+; CHECK-NEXT: ParameterHashIndex:
+; CHECK-NEXT: TypeChkSectNum:
+; CHECK-NEXT: SymbolAlignmentLog2:
+; CHECK-NEXT: SymbolType: XTY_SD (0x1)
+; CHECK-NEXT: StorageMappingClass: XMC_DS (0xA)
+
+; Make sure no label is emitted.
+; CHECK-NOT: Name: foo
+
+;64-CHECK: LLVM ERROR: 64-bit XCOFF object files are not supported yet.
;CHECKOBJ-NEXT: 4: 4e 80 00 20 blr
;CHECKOBJ-NEXT: ...{{[[:space:]] *}}
;CHECKOBJ-NEXT: 00000010 .rodata:
-;CHECKOBJ-NEXT: 10: 40 00 00 00 bdnzf 0, .+0
-;CHECKOBJ-NEXT: 14: 00 00 00 32 <unknown>
+;CHECKOBJ-NEXT: 10: 40 00 00 00
+;CHECKOBJ-NEXT: 14: 00 00 00 32
;CHECKOBJ-NEXT: ...{{[[:space:]] *}}
-;CHECKOBJ-NEXT: 00000030 .L__const.main.cnst16:
-;CHECKOBJ-NEXT: 30: 40 00 00 00 bdnzf 0, .+0
-;CHECKOBJ-NEXT: 34: 00 00 00 16 <unknown>
+;CHECKOBJ-SAME: 30: 40 00 00 00
+;CHECKOBJ-NEXT: 34: 00 00 00 16
;CHECKOBJ-NEXT: ...{{[[:space:]] *}}
-;CHECKOBJ-NEXT: 00000040 .L__const.main.cnst8:
-;CHECKOBJ-NEXT: 40: 40 00 00 08 bdnzf 0, .+8
-;CHECKOBJ-NEXT: 44: 00 00 00 00 <unknown>{{[[:space:]] *}}
-;CHECKOBJ-NEXT: 00000048 .L__const.main.cnst4:
-;CHECKOBJ-NEXT: 48: 40 08 00 00 bdnzf 8, .+0
+;CHECKOBJ-SAME: 40: 40 00 00 08
+;CHECKOBJ-NEXT: 44: 00 00 00 00
+;CHECKOBJ-NEXT: 48: 40 08 00 00
;CHECKSYM: Symbol {{[{][[:space:]] *}}Index: [[#Index:]]{{[[:space:]] *}}Name: .rodata
;CHECKSYM-NEXT: StabSectNum: 0x0
;CHECKSYM-NEXT: }
;CHECKSYM-NEXT: }
-;CHECKSYM-NEXT: Symbol {
-;CHECKSYM-NEXT: Index: [[#Index+2]]
-;CHECKSYM-NEXT: Name: .L__const.main.cnst32
-;CHECKSYM-NEXT: Value (RelocatableAddress): 0x10
-;CHECKSYM-NEXT: Section: .text
-;CHECKSYM-NEXT: Type: 0x0
-;CHECKSYM-NEXT: StorageClass: C_HIDEXT (0x6B)
-;CHECKSYM-NEXT: NumberOfAuxEntries: 1
-;CHECKSYM-NEXT: CSECT Auxiliary Entry {
-;CHECKSYM-NEXT: Index: [[#Index+3]]
-;CHECKSYM-NEXT: ContainingCsectSymbolIndex: [[#Index]]
-;CHECKSYM-NEXT: ParameterHashIndex: 0x0
-;CHECKSYM-NEXT: TypeChkSectNum: 0x0
-;CHECKSYM-NEXT: SymbolAlignmentLog2: 0
-;CHECKSYM-NEXT: SymbolType: XTY_LD (0x2)
-;CHECKSYM-NEXT: StorageMappingClass: XMC_RO (0x1)
-;CHECKSYM-NEXT: StabInfoIndex: 0x0
-;CHECKSYM-NEXT: StabSectNum: 0x0
-;CHECKSYM-NEXT: }
-;CHECKSYM-NEXT: }
-;CHECKSYM-NEXT: Symbol {
-;CHECKSYM-NEXT: Index: [[#Index+4]]
-;CHECKSYM-NEXT: Name: .L__const.main.cnst16
-;CHECKSYM-NEXT: Value (RelocatableAddress): 0x30
-;CHECKSYM-NEXT: Section: .text
-;CHECKSYM-NEXT: Type: 0x0
-;CHECKSYM-NEXT: StorageClass: C_HIDEXT (0x6B)
-;CHECKSYM-NEXT: NumberOfAuxEntries: 1
-;CHECKSYM-NEXT: CSECT Auxiliary Entry {
-;CHECKSYM-NEXT: Index: [[#Index+5]]
-;CHECKSYM-NEXT: ContainingCsectSymbolIndex: [[#Index]]
-;CHECKSYM-NEXT: ParameterHashIndex: 0x0
-;CHECKSYM-NEXT: TypeChkSectNum: 0x0
-;CHECKSYM-NEXT: SymbolAlignmentLog2: 0
-;CHECKSYM-NEXT: SymbolType: XTY_LD (0x2)
-;CHECKSYM-NEXT: StorageMappingClass: XMC_RO (0x1)
-;CHECKSYM-NEXT: StabInfoIndex: 0x0
-;CHECKSYM-NEXT: StabSectNum: 0x0
-;CHECKSYM-NEXT: }
-;CHECKSYM-NEXT: }
-;CHECKSYM-NEXT: Symbol {
-;CHECKSYM-NEXT: Index: [[#Index+6]]
-;CHECKSYM-NEXT: Name: .L__const.main.cnst8
-;CHECKSYM-NEXT: Value (RelocatableAddress): 0x40
-;CHECKSYM-NEXT: Section: .text
-;CHECKSYM-NEXT: Type: 0x0
-;CHECKSYM-NEXT: StorageClass: C_HIDEXT (0x6B)
-;CHECKSYM-NEXT: NumberOfAuxEntries: 1
-;CHECKSYM-NEXT: CSECT Auxiliary Entry {
-;CHECKSYM-NEXT: Index: [[#Index+7]]
-;CHECKSYM-NEXT: ContainingCsectSymbolIndex: [[#Index]]
-;CHECKSYM-NEXT: ParameterHashIndex: 0x0
-;CHECKSYM-NEXT: TypeChkSectNum: 0x0
-;CHECKSYM-NEXT: SymbolAlignmentLog2: 0
-;CHECKSYM-NEXT: SymbolType: XTY_LD (0x2)
-;CHECKSYM-NEXT: StorageMappingClass: XMC_RO (0x1)
-;CHECKSYM-NEXT: StabInfoIndex: 0x0
-;CHECKSYM-NEXT: StabSectNum: 0x0
-;CHECKSYM-NEXT: }
-;CHECKSYM-NEXT: }
-;CHECKSYM-NEXT: Symbol {
-;CHECKSYM-NEXT: Index: [[#Index+8]]
-;CHECKSYM-NEXT: Name: .L__const.main.cnst4
-;CHECKSYM-NEXT: Value (RelocatableAddress): 0x48
-;CHECKSYM-NEXT: Section: .text
-;CHECKSYM-NEXT: Type: 0x0
-;CHECKSYM-NEXT: StorageClass: C_HIDEXT (0x6B)
-;CHECKSYM-NEXT: NumberOfAuxEntries: 1
-;CHECKSYM-NEXT: CSECT Auxiliary Entry {
-;CHECKSYM-NEXT: Index: [[#Index+9]]
-;CHECKSYM-NEXT: ContainingCsectSymbolIndex: [[#Index]]
-;CHECKSYM-NEXT: ParameterHashIndex: 0x0
-;CHECKSYM-NEXT: TypeChkSectNum: 0x0
-;CHECKSYM-NEXT: SymbolAlignmentLog2: 0
-;CHECKSYM-NEXT: SymbolType: XTY_LD (0x2)
-;CHECKSYM-NEXT: StorageMappingClass: XMC_RO (0x1)
-;CHECKSYM-NEXT: StabInfoIndex: 0x0
-;CHECKSYM-NEXT: StabSectNum: 0x0
-;CHECKSYM-NEXT: }
-;CHECKSYM-NEXT: }