diff --git a/llvm/lib/MC/XCOFFObjectWriter.cpp b/llvm/lib/MC/XCOFFObjectWriter.cpp --- a/llvm/lib/MC/XCOFFObjectWriter.cpp +++ b/llvm/lib/MC/XCOFFObjectWriter.cpp @@ -784,9 +784,9 @@ void XCOFFObjectWriter::writeRelocation(XCOFFRelocation Reloc, const ControlSection &CSection) { if (TargetObjectWriter->is64Bit()) - report_fatal_error("64-bit XCOFF object files are not supported yet."); - - W.write(CSection.Address + Reloc.FixupOffsetInCsect); + W.write(CSection.Address + Reloc.FixupOffsetInCsect); + else + W.write(CSection.Address + Reloc.FixupOffsetInCsect); W.write(Reloc.SymbolTableIndex); W.write(Reloc.SignAndSize); W.write(Reloc.Type); @@ -881,8 +881,10 @@ for (auto &Csect : *Group) { const size_t CsectRelocCount = Csect.Relocations.size(); - if (CsectRelocCount >= XCOFF::RelocOverflow || - Section->RelocationCount >= XCOFF::RelocOverflow - CsectRelocCount) + if (!TargetObjectWriter->is64Bit() && + (CsectRelocCount >= XCOFF::RelocOverflow || + Section->RelocationCount >= + XCOFF::RelocOverflow - CsectRelocCount)) report_fatal_error( "relocation entries overflowed; overflow section is " "not implemented yet"); diff --git a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCXCOFFObjectWriter.cpp b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCXCOFFObjectWriter.cpp --- a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCXCOFFObjectWriter.cpp +++ b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCXCOFFObjectWriter.cpp @@ -58,11 +58,12 @@ switch ((unsigned)Fixup.getKind()) { default: report_fatal_error("Unimplemented fixup kind."); + case PPC::fixup_ppc_half16ds: case PPC::fixup_ppc_half16: { const uint8_t SignAndSizeForHalf16 = EncodedSignednessIndicator | 15; switch (Modifier) { default: - report_fatal_error("Unsupported modifier for half16 fixup."); + report_fatal_error("Unsupported modifier for half16/half16ds fixup."); case MCSymbolRefExpr::VK_None: return {XCOFF::RelocationType::R_TOC, SignAndSizeForHalf16}; case MCSymbolRefExpr::VK_PPC_U: @@ -88,5 +89,7 @@ case MCSymbolRefExpr::VK_None: return {XCOFF::RelocationType::R_POS, EncodedSignednessIndicator | 31}; } + case FK_Data_8: + return {XCOFF::RelocationType::R_POS, EncodedSignednessIndicator | 63}; } } diff --git a/llvm/test/CodeGen/PowerPC/aix-available-externally-linkage.ll b/llvm/test/CodeGen/PowerPC/aix-available-externally-linkage.ll --- a/llvm/test/CodeGen/PowerPC/aix-available-externally-linkage.ll +++ b/llvm/test/CodeGen/PowerPC/aix-available-externally-linkage.ll @@ -11,10 +11,10 @@ ; RUN: llvm-readobj --symbols %t.o | \ ; RUN: FileCheck --check-prefix=XCOFF32 %s -; RUN: not --crash llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff \ -; RUN: -mcpu=pwr4 -mattr=-altivec -filetype=obj -o %t.o 2>&1 < %s | \ +; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr4 \ +; RUN: -mattr=-altivec -filetype=obj -o %t.o < %s +; RUN: llvm-readobj --symbols %t.o | \ ; RUN: FileCheck --check-prefix=XCOFF64 %s -; XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet. @_ZN3Foo1aE = available_externally constant i32 -1 @@ -37,3 +37,20 @@ ; XCOFF32-NEXT: StabInfoIndex: 0x0 ; XCOFF32-NEXT: StabSectNum: 0x0 ; XCOFF32-NEXT: } + +; XCOFF64: Index: [[#Index:]]{{.*}}{{[[:space:]] *}}Name: _ZN3Foo1aE +; XCOFF64-NEXT: Value (RelocatableAddress): 0x0 +; XCOFF64-NEXT: Section: N_UNDEF +; XCOFF64-NEXT: Type: 0x0 +; XCOFF64-NEXT: StorageClass: C_EXT (0x2) +; XCOFF64-NEXT: NumberOfAuxEntries: 1 +; XCOFF64-NEXT: CSECT Auxiliary Entry { +; XCOFF64-NEXT: Index: [[#Index+1]] +; XCOFF64-NEXT: SectionLen: 0 +; XCOFF64-NEXT: ParameterHashIndex: 0x0 +; XCOFF64-NEXT: TypeChkSectNum: 0x0 +; XCOFF64-NEXT: SymbolAlignmentLog2: 0 +; XCOFF64-NEXT: SymbolType: XTY_ER (0x0) +; XCOFF64-NEXT: StorageMappingClass: XMC_UA (0x4) +; XCOFF64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; XCOFF64-NEXT: } diff --git a/llvm/test/CodeGen/PowerPC/aix-extern-weak.ll b/llvm/test/CodeGen/PowerPC/aix-extern-weak.ll --- a/llvm/test/CodeGen/PowerPC/aix-extern-weak.ll +++ b/llvm/test/CodeGen/PowerPC/aix-extern-weak.ll @@ -8,11 +8,9 @@ ; RUN: -mattr=-altivec -data-sections=false -xcoff-traceback-table=false -filetype=obj -o %t.o < %s ; RUN: llvm-readobj --symbols %t.o | FileCheck --check-prefix=CHECKSYM %s -; RUN: not --crash llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff \ -; RUN: -mattr=-altivec -data-sections=false -xcoff-traceback-table=false -filetype=obj -o %t.o 2>&1 < %s | \ -; RUN: FileCheck --check-prefix=XCOFF64 %s -; XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet. - +; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr4 \ +; RUN: -mattr=-altivec -data-sections=false -xcoff-traceback-table=false -filetype=obj -o %t.o < %s +; RUN: llvm-readobj --symbols %t.o | FileCheck --check-prefix=CHECKSYM64 %s @foo_ext_weak_p = global void (...)* bitcast (void ()* @foo_ext_weak_ref to void (...)*) @b_w = extern_weak global i32 @@ -333,3 +331,263 @@ ; CHECKSYM-NEXT: } ; CHECKSYM-NEXT: } ; CHECKSYM-NEXT: ] + +; CHECKSYM64: Symbols [ +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: 0 +; CHECKSYM64-NEXT: Name: .file +; CHECKSYM64-NEXT: Value (SymbolTableIndex): 0x0 +; CHECKSYM64-NEXT: Section: N_DEBUG +; CHECKSYM64-NEXT: Source Language ID: TB_C (0x0) +; CHECKSYM64-NEXT: CPU Version ID: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_FILE (0x67) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 0 +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: [[#Index:]] +; CHECKSYM64-NEXT: Name: .foo_ext_weak +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x0 +; CHECKSYM64-NEXT: Section: N_UNDEF +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_WEAKEXT (0x6F) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: [[#Index+1]] +; CHECKSYM64-NEXT: SectionLen: 0 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 0 +; CHECKSYM64-NEXT: SymbolType: XTY_ER (0x0) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_PR (0x0) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: [[#Index+2]] +; CHECKSYM64-NEXT: Name: foo_ext_weak_ref +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x0 +; CHECKSYM64-NEXT: Section: N_UNDEF +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_WEAKEXT (0x6F) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: [[#Index+3]] +; CHECKSYM64-NEXT: SectionLen: 0 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 0 +; CHECKSYM64-NEXT: SymbolType: XTY_ER (0x0) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_DS (0xA) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: [[#Index+4]] +; CHECKSYM64-NEXT: Name: b_w +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x0 +; CHECKSYM64-NEXT: Section: N_UNDEF +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_WEAKEXT (0x6F) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: [[#Index+5]] +; CHECKSYM64-NEXT: SectionLen: 0 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 0 +; CHECKSYM64-NEXT: SymbolType: XTY_ER (0x0) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_UA (0x4) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: [[#Index+6]] +; CHECKSYM64-NEXT: Name: .foo_ext_weak_ref +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x0 +; CHECKSYM64-NEXT: Section: N_UNDEF +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_WEAKEXT (0x6F) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: [[#Index+7]] +; CHECKSYM64-NEXT: SectionLen: 0 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 0 +; CHECKSYM64-NEXT: SymbolType: XTY_ER (0x0) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_PR (0x0) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: [[#Index+8]] +; CHECKSYM64-NEXT: Name: foo_ext_weak +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x0 +; CHECKSYM64-NEXT: Section: N_UNDEF +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_WEAKEXT (0x6F) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: [[#Index+9]] +; CHECKSYM64-NEXT: SectionLen: 0 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 0 +; CHECKSYM64-NEXT: SymbolType: XTY_ER (0x0) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_DS (0xA) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: [[#Index+10]] +; CHECKSYM64-NEXT: Name: .text +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x0 +; CHECKSYM64-NEXT: Section: .text +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_HIDEXT (0x6B) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: [[#Index+11]] +; CHECKSYM64-NEXT: SectionLen: 80 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 4 +; CHECKSYM64-NEXT: SymbolType: XTY_SD (0x1) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_PR (0x0) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: [[#Index+12]] +; CHECKSYM64-NEXT: Name: .main +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x0 +; CHECKSYM64-NEXT: Section: .text +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_EXT (0x2) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: [[#Index+13]] +; CHECKSYM64-NEXT: ContainingCsectSymbolIndex: 11 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 0 +; CHECKSYM64-NEXT: SymbolType: XTY_LD (0x2) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_PR (0x0) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: [[#Index+14]] +; CHECKSYM64-NEXT: Name: .data +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x50 +; CHECKSYM64-NEXT: Section: .data +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_HIDEXT (0x6B) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: [[#Index+15]] +; CHECKSYM64-NEXT: SectionLen: 8 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 3 +; CHECKSYM64-NEXT: SymbolType: XTY_SD (0x1) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_RW (0x5) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: [[#Index+16]] +; CHECKSYM64-NEXT: Name: foo_ext_weak_p +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x50 +; CHECKSYM64-NEXT: Section: .data +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_EXT (0x2) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: [[#Index+17]] +; CHECKSYM64-NEXT: ContainingCsectSymbolIndex: 15 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 0 +; CHECKSYM64-NEXT: SymbolType: XTY_LD (0x2) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_RW (0x5) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: [[#Index+18]] +; CHECKSYM64-NEXT: Name: main +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x58 +; CHECKSYM64-NEXT: Section: .data +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_EXT (0x2) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: [[#Index+19]] +; CHECKSYM64-NEXT: SectionLen: 24 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 3 +; CHECKSYM64-NEXT: SymbolType: XTY_SD (0x1) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_DS (0xA) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: [[#Index+20]] +; CHECKSYM64-NEXT: Name: TOC +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x70 +; CHECKSYM64-NEXT: Section: .data +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_HIDEXT (0x6B) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: [[#Index+21]] +; CHECKSYM64-NEXT: SectionLen: 0 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 2 +; CHECKSYM64-NEXT: SymbolType: XTY_SD (0x1) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_TC0 (0xF) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: [[#Index+22]] +; CHECKSYM64-NEXT: Name: foo_ext_weak_p +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x70 +; CHECKSYM64-NEXT: Section: .data +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_HIDEXT (0x6B) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: [[#Index+23]] +; CHECKSYM64-NEXT: SectionLen: 8 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 3 +; CHECKSYM64-NEXT: SymbolType: XTY_SD (0x1) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_TC (0x3) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: [[#Index+24]] +; CHECKSYM64-NEXT: Name: b_w +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x78 +; CHECKSYM64-NEXT: Section: .data +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_HIDEXT (0x6B) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: [[#Index+25]] +; CHECKSYM64-NEXT: SectionLen: 8 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 3 +; CHECKSYM64-NEXT: SymbolType: XTY_SD (0x1) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_TC (0x3) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: ] diff --git a/llvm/test/CodeGen/PowerPC/aix-extern.ll b/llvm/test/CodeGen/PowerPC/aix-extern.ll --- a/llvm/test/CodeGen/PowerPC/aix-extern.ll +++ b/llvm/test/CodeGen/PowerPC/aix-extern.ll @@ -8,9 +8,9 @@ ; RUN: -mattr=-altivec -data-sections=false -xcoff-traceback-table=false -filetype=obj -o %t.o < %s ; RUN: llvm-readobj --symbols %t.o | FileCheck --check-prefix=CHECKSYM %s -; RUN: not --crash llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff \ -; RUN: -mattr=-altivec -data-sections=false -xcoff-traceback-table=false -filetype=obj -o %t.o 2>&1 < %s | FileCheck --check-prefix=XCOFF64 %s -; XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet. +; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr4 \ +; RUN: -mattr=-altivec -data-sections=false -xcoff-traceback-table=false -filetype=obj -o %t.o < %s +; RUN: llvm-readobj --symbols %t.o | FileCheck --check-prefix=CHECKSYM64 %s @bar_p = global i32 (...)* @bar_ref, align 4 @b_e = external global i32, align 4 @@ -394,3 +394,301 @@ ; CHECKSYM-NEXT: } ; CHECKSYM-NEXT: } ; CHECKSYM-NEXT: ] + +; CHECKSYM64: Symbols [ +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: 0 +; CHECKSYM64-NEXT: Name: .file +; CHECKSYM64-NEXT: Value (SymbolTableIndex): 0x0 +; CHECKSYM64-NEXT: Section: N_DEBUG +; CHECKSYM64-NEXT: Source Language ID: TB_C (0x0) +; CHECKSYM64-NEXT: CPU Version ID: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_FILE (0x67) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 0 +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: 1 +; CHECKSYM64-NEXT: Name: .bar_extern +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x0 +; CHECKSYM64-NEXT: Section: N_UNDEF +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_EXT (0x2) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: 2 +; CHECKSYM64-NEXT: SectionLen: 0 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 0 +; CHECKSYM64-NEXT: SymbolType: XTY_ER (0x0) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_PR (0x0) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: 3 +; CHECKSYM64-NEXT: Name: .bar_ref +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x0 +; CHECKSYM64-NEXT: Section: N_UNDEF +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_EXT (0x2) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: 4 +; CHECKSYM64-NEXT: SectionLen: 0 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 0 +; CHECKSYM64-NEXT: SymbolType: XTY_ER (0x0) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_PR (0x0) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: 5 +; CHECKSYM64-NEXT: Name: bar_ref +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x0 +; CHECKSYM64-NEXT: Section: N_UNDEF +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_EXT (0x2) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: 6 +; CHECKSYM64-NEXT: SectionLen: 0 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 0 +; CHECKSYM64-NEXT: SymbolType: XTY_ER (0x0) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_DS (0xA) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: 7 +; CHECKSYM64-NEXT: Name: b_e +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x0 +; CHECKSYM64-NEXT: Section: N_UNDEF +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_EXT (0x2) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: 8 +; CHECKSYM64-NEXT: SectionLen: 0 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 0 +; CHECKSYM64-NEXT: SymbolType: XTY_ER (0x0) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_UA (0x4) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: 9 +; CHECKSYM64-NEXT: Name: bar_extern +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x0 +; CHECKSYM64-NEXT: Section: N_UNDEF +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_EXT (0x2) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: 10 +; CHECKSYM64-NEXT: SectionLen: 0 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 0 +; CHECKSYM64-NEXT: SymbolType: XTY_ER (0x0) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_DS (0xA) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: 11 +; CHECKSYM64-NEXT: Name: .text +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x0 +; CHECKSYM64-NEXT: Section: .text +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_HIDEXT (0x6B) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: 12 +; CHECKSYM64-NEXT: SectionLen: 112 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 4 +; CHECKSYM64-NEXT: SymbolType: XTY_SD (0x1) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_PR (0x0) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: 13 +; CHECKSYM64-NEXT: Name: .foo +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x0 +; CHECKSYM64-NEXT: Section: .text +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_EXT (0x2) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: 14 +; CHECKSYM64-NEXT: ContainingCsectSymbolIndex: 11 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 0 +; CHECKSYM64-NEXT: SymbolType: XTY_LD (0x2) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_PR (0x0) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: 15 +; CHECKSYM64-NEXT: Name: .main +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x10 +; CHECKSYM64-NEXT: Section: .text +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_EXT (0x2) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: 16 +; CHECKSYM64-NEXT: ContainingCsectSymbolIndex: 11 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 0 +; CHECKSYM64-NEXT: SymbolType: XTY_LD (0x2) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_PR (0x0) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: 17 +; CHECKSYM64-NEXT: Name: .data +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x70 +; CHECKSYM64-NEXT: Section: .data +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_HIDEXT (0x6B) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: 18 +; CHECKSYM64-NEXT: SectionLen: 8 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 3 +; CHECKSYM64-NEXT: SymbolType: XTY_SD (0x1) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_RW (0x5) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: 19 +; CHECKSYM64-NEXT: Name: bar_p +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x70 +; CHECKSYM64-NEXT: Section: .data +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_EXT (0x2) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: 20 +; CHECKSYM64-NEXT: ContainingCsectSymbolIndex: 17 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 0 +; CHECKSYM64-NEXT: SymbolType: XTY_LD (0x2) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_RW (0x5) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: 21 +; CHECKSYM64-NEXT: Name: foo +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x78 +; CHECKSYM64-NEXT: Section: .data +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_EXT (0x2) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: 22 +; CHECKSYM64-NEXT: SectionLen: 24 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 3 +; CHECKSYM64-NEXT: SymbolType: XTY_SD (0x1) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_DS (0xA) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: 23 +; CHECKSYM64-NEXT: Name: main +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x90 +; CHECKSYM64-NEXT: Section: .data +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_EXT (0x2) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: 24 +; CHECKSYM64-NEXT: SectionLen: 24 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 3 +; CHECKSYM64-NEXT: SymbolType: XTY_SD (0x1) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_DS (0xA) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: 25 +; CHECKSYM64-NEXT: Name: TOC +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0xA8 +; CHECKSYM64-NEXT: Section: .data +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_HIDEXT (0x6B) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: 26 +; CHECKSYM64-NEXT: SectionLen: 0 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 2 +; CHECKSYM64-NEXT: SymbolType: XTY_SD (0x1) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_TC0 (0xF) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: 27 +; CHECKSYM64-NEXT: Name: b_e +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0xA8 +; CHECKSYM64-NEXT: Section: .data +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_HIDEXT (0x6B) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: 28 +; CHECKSYM64-NEXT: SectionLen: 8 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 3 +; CHECKSYM64-NEXT: SymbolType: XTY_SD (0x1) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_TC (0x3) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: 29 +; CHECKSYM64-NEXT: Name: bar_p +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0xB0 +; CHECKSYM64-NEXT: Section: .data +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_HIDEXT (0x6B) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: 30 +; CHECKSYM64-NEXT: SectionLen: 8 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 3 +; CHECKSYM64-NEXT: SymbolType: XTY_SD (0x1) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_TC (0x3) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: ] diff --git a/llvm/test/CodeGen/PowerPC/aix-func-align.ll b/llvm/test/CodeGen/PowerPC/aix-func-align.ll --- a/llvm/test/CodeGen/PowerPC/aix-func-align.ll +++ b/llvm/test/CodeGen/PowerPC/aix-func-align.ll @@ -9,9 +9,9 @@ ; RUN: -xcoff-traceback-table=false -filetype=obj -o %t.o < %s ; RUN: llvm-readobj --syms %t.o | FileCheck --check-prefix=SYMS %s -; RUN: not --crash llc -mtriple powerpc64-ibm-aix-xcoff -filetype=obj < %s 2>&1 | \ -; RUN: FileCheck --check-prefix=XCOFF64 %s -; XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet. +; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mattr=-altivec -mtriple powerpc64-ibm-aix-xcoff \ +; RUN: -xcoff-traceback-table=false -filetype=obj -o %t.o < %s +; RUN: llvm-readobj --syms %t.o | FileCheck --check-prefix=SYMS64 %s define i32 @foo() align 32 { entry: @@ -47,3 +47,21 @@ ; SYMS-NEXT: StabSectNum: 0x0 ; SYMS-NEXT: } ; SYMS-NEXT: } + +; SYMS64: Symbol {{[{][[:space:]] *}}Index: [[#INDX:]]{{[[:space:]] *}}Name: .text +; SYMS64-NEXT: Value (RelocatableAddress): 0x0 +; SYMS64-NEXT: Section: .text +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_HIDEXT (0x6B) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+1]] +; SYMS64-NEXT: SectionLen: 72 +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 6 +; SYMS64-NEXT: SymbolType: XTY_SD (0x1) +; SYMS64-NEXT: StorageMappingClass: XMC_PR (0x0) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } diff --git a/llvm/test/CodeGen/PowerPC/aix-internal.ll b/llvm/test/CodeGen/PowerPC/aix-internal.ll --- a/llvm/test/CodeGen/PowerPC/aix-internal.ll +++ b/llvm/test/CodeGen/PowerPC/aix-internal.ll @@ -1,8 +1,10 @@ ; RUN: llc -mtriple powerpc-ibm-aix -verify-machineinstrs -mcpu=pwr4 -mattr=-altivec \ ; 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 -mattr=-altivec \ -; RUN: -filetype=obj -o %t.o < %s 2>&1 | FileCheck --check-prefix=64-CHECK %s + +; RUN: llc -mtriple powerpc64-ibm-aix -verify-machineinstrs -mcpu=pwr4 -mattr=-altivec \ +; RUN: -filetype=obj -o %t.o < %s +; RUN: llvm-readobj --syms %t.o | FileCheck --check-prefix=CHECK64 %s define internal i32 @foo() { ret i32 1 @@ -35,4 +37,29 @@ ; Make sure no label is emitted. ; CHECK-NOT: Name: foo -;64-CHECK: LLVM ERROR: 64-bit XCOFF object files are not supported yet. +; CHECK64: Symbol { +; CHECK64: Name: .foo +; CHECK64-NEXT: Value (RelocatableAddress): +; CHECK64-NEXT: Section: .text +; CHECK64-NEXT: Type: 0x0 +; CHECK64-NEXT: StorageClass: C_HIDEXT (0x6B) + +; CHECK64: Symbol { +; CHECK64-NEXT: Index: [[#INDX:]] +; CHECK64-NEXT: Name: foo +; CHECK64-NEXT: Value (RelocatableAddress): +; CHECK64-NEXT: Section: .data +; CHECK64-NEXT: Type: 0x0 +; CHECK64-NEXT: StorageClass: C_HIDEXT (0x6B) +; CHECK64-NEXT: NumberOfAuxEntries: 1 +; CHECK64-NEXT: CSECT Auxiliary Entry { +; CHECK64-NEXT: Index: [[#INDX+1]] +; CHECK64-NEXT: SectionLen: 24 +; CHECK64-NEXT: ParameterHashIndex: +; CHECK64-NEXT: TypeChkSectNum: +; CHECK64-NEXT: SymbolAlignmentLog2: +; CHECK64-NEXT: SymbolType: XTY_SD (0x1) +; CHECK64-NEXT: StorageMappingClass: XMC_DS (0xA) + +; Make sure no label is emitted. +; CHECK64-NOT: Name: foo diff --git a/llvm/test/CodeGen/PowerPC/aix-llvm-intrinsic.ll b/llvm/test/CodeGen/PowerPC/aix-llvm-intrinsic.ll --- a/llvm/test/CodeGen/PowerPC/aix-llvm-intrinsic.ll +++ b/llvm/test/CodeGen/PowerPC/aix-llvm-intrinsic.ll @@ -9,10 +9,10 @@ ; RUN: llvm-readobj --symbols %t.o | FileCheck --check-prefix=CHECKSYM %s ; RUN: llvm-objdump -r -d --symbol-description %t.o | FileCheck --check-prefix=CHECKRELOC %s -; RUN: not --crash llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff \ -; RUN: -mattr=-altivec -filetype=obj -o %t.o 2>&1 < %s | \ -; RUN: FileCheck --check-prefix=XCOFF64 %s -; XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet. +; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff \ +; RUN: -mattr=-altivec -filetype=obj -o %t.o < %s +; RUN: not --crash llvm-objdump -r -d --symbol-description %t.o 2>&1 | FileCheck --check-prefix=XCOFF64 %s +; XCOFF64: LLVM ERROR: 64-bit support not implemented yet %struct.S = type { i32, i32 } diff --git a/llvm/test/CodeGen/PowerPC/aix-overflow-toc.py b/llvm/test/CodeGen/PowerPC/aix-overflow-toc.py --- a/llvm/test/CodeGen/PowerPC/aix-overflow-toc.py +++ b/llvm/test/CodeGen/PowerPC/aix-overflow-toc.py @@ -11,10 +11,10 @@ # RUN: -filetype=obj -o %t.o < %t.ll # RUN: llvm-objdump -D -r --symbol-description %t.o | FileCheck --check-prefix=DIS32 %s -# RUN: not --crash llc -mtriple powerpc64-ibm-aix-xcoff -data-sections=false \ -# RUN: -mcpu=pwr4 -mattr=-altivec -filetype=obj -o %t.o 2>&1 < %t.ll | \ -# RUN: FileCheck --check-prefix=XCOFF64 %s -# XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet. +# RUN: llc -mtriple powerpc64-ibm-aix-xcoff -data-sections=false \ +# RUN: -mcpu=pwr4 -mattr=-altivec -filetype=obj -o %t.o < %t.ll +# RUN: not --crash llvm-objdump -D -r --symbol-description %t.o 2>&1 | FileCheck --check-prefix=XCOFF64 %s +# XCOFF64: LLVM ERROR: 64-bit support not implemented yet numentries = 12290 for x in range(0, numentries): diff --git a/llvm/test/CodeGen/PowerPC/aix-return55.ll b/llvm/test/CodeGen/PowerPC/aix-return55.ll --- a/llvm/test/CodeGen/PowerPC/aix-return55.ll +++ b/llvm/test/CodeGen/PowerPC/aix-return55.ll @@ -5,9 +5,12 @@ ; RUN: llvm-objdump -D %t.o | FileCheck --check-prefix=CHECKOBJ %s ; RUN: llvm-readobj -sections %t.o | FileCheck --check-prefix=CHECKSECT %s -; RUN: not --crash llc -mtriple powerpc64-ibm-aix-xcoff -filetype=obj < %s 2>&1 | \ -; RUN: FileCheck --check-prefix=XCOFF64 %s -; XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet. +; RUN: llc -mcpu=pwr4 -mattr=-altivec -mtriple=powerpc64-ibm-aix-xcoff \ +; RUN: -verify-machineinstrs -data-sections=false -xcoff-traceback-table=false < %s | FileCheck %s +; RUN: llc -mcpu=pwr4 -mattr=-altivec -mtriple=powerpc64-ibm-aix-xcoff \ +; RUN: -verify-machineinstrs -data-sections=false -xcoff-traceback-table=false -filetype=obj -o %t.o < %s +; RUN: llvm-objdump -D %t.o | FileCheck --check-prefix=CHECKOBJ64 %s +; RUN: llvm-readobj -sections %t.o | FileCheck --check-prefix=CHECKSECT64 %s @a = global i64 320255973571806, align 8 @d = global double 5.000000e+00, align 8 @@ -68,3 +71,51 @@ ;CHECKSECT-NEXT: Type: STYP_DATA (0x40) ;CHECKSECT-NEXT: } ;CHECKSECT-NEXT: ] + +;CHECKOBJ64: 00000000 <.text>: +;CHECKOBJ64-NEXT: 0: 38 60 00 37 li 3, 55 +;CHECKOBJ64-NEXT: 4: 4e 80 00 20 blr{{[[:space:]] *}} +;CHECKOBJ64-NEXT: 00000008 <.rodata.str1.1>: +;CHECKOBJ64-NEXT: 8: 68 65 6c 6c xori 5, 3, 27756 +;CHECKOBJ64-NEXT: c: 6f 77 6f 72 xoris 23, 27, 28530 +;CHECKOBJ64-NEXT: 10: 0a 00 00 00 tdlti 0, 0{{[[:space:]] *}} +;CHECKOBJ64-NEXT: Disassembly of section .data:{{[[:space:]] *}} +;CHECKOBJ64-NEXT: 00000018 : +;CHECKOBJ64-NEXT: 18: 00 01 23 45 +;CHECKOBJ64-NEXT: 1c: 67 8a bc de oris 10, 28, 48350{{[[:space:]] *}} +;CHECKOBJ64-NEXT: 00000020 : +;CHECKOBJ64-NEXT: 20: 40 14 00 00 bdnzf 20, 0x20 +;CHECKOBJ64-NEXT: 24: 00 00 00 00 {{[[:space:]] *}} +;CHECKOBJ64-NEXT: 00000028 : +;CHECKOBJ64-NEXT: ... +;CHECKOBJ64-NEXT: 34: 00 00 00 40 +;CHECKOBJ64-NEXT: ... + +;CHECKSECT64: Sections [ +;CHECKSECT64-NEXT: Section { +;CHECKSECT64-NEXT: Index: 1 +;CHECKSECT64-NEXT: Name: .text +;CHECKSECT64-NEXT: PhysicalAddress: 0x0 +;CHECKSECT64-NEXT: VirtualAddress: 0x0 +;CHECKSECT64-NEXT: Size: 0x14 +;CHECKSECT64-NEXT: RawDataOffset: 0xA8 +;CHECKSECT64-NEXT: RelocationPointer: 0x0 +;CHECKSECT64-NEXT: LineNumberPointer: 0x0 +;CHECKSECT64-NEXT: NumberOfRelocations: 0 +;CHECKSECT64-NEXT: NumberOfLineNumbers: 0 +;CHECKSECT64-NEXT: Type: STYP_TEXT (0x20) +;CHECKSECT64-NEXT: } +;CHECKSECT64-NEXT: Section { +;CHECKSECT64-NEXT: Index: 2 +;CHECKSECT64-NEXT: Name: .data +;CHECKSECT64-NEXT: PhysicalAddress: 0x18 +;CHECKSECT64-NEXT: VirtualAddress: 0x18 +;CHECKSECT64-NEXT: Size: 0x28 +;CHECKSECT64-NEXT: RawDataOffset: 0xBC +;CHECKSECT64-NEXT: RelocationPointer: 0xE4 +;CHECKSECT64-NEXT: LineNumberPointer: 0x0 +;CHECKSECT64-NEXT: NumberOfRelocations: 2 +;CHECKSECT64-NEXT: NumberOfLineNumbers: 0 +;CHECKSECT64-NEXT: Type: STYP_DATA (0x40) +;CHECKSECT64-NEXT: } +;CHECKSECT64-NEXT: ] diff --git a/llvm/test/CodeGen/PowerPC/aix-tls-xcoff-variables.ll b/llvm/test/CodeGen/PowerPC/aix-tls-xcoff-variables.ll --- a/llvm/test/CodeGen/PowerPC/aix-tls-xcoff-variables.ll +++ b/llvm/test/CodeGen/PowerPC/aix-tls-xcoff-variables.ll @@ -10,8 +10,15 @@ ; RUN: llvm-readobj --syms %t.o | FileCheck --check-prefixes=SYMS,SYMS-NODATASECT %s ; RUN: llvm-objdump -D --symbol-description %t.o | FileCheck --check-prefixes=OBJDUMP-NODATASECT %s -; RUN: not --crash llc -mtriple powerpc64-ibm-aix-xcoff -filetype=obj < %s 2>&1 | FileCheck --check-prefix=XCOFF64 %s -; XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet. +; RUN: llc -mtriple powerpc64-ibm-aix-xcoff -filetype=obj -o %t.o < %s +; RUN: llvm-readobj --section-headers %t.o | FileCheck --check-prefix=SECTION64 %s +; RUN: llvm-readobj --syms %t.o | FileCheck --check-prefixes=SYMS64,SYMS64-DATASECT %s +; RUN: llvm-objdump -D --symbol-description %t.o | FileCheck --check-prefixes=OBJDUMP-DATASECT64 %s + +; RUN: llc -mtriple powerpc64-ibm-aix-xcoff -data-sections=false -filetype=obj -o %t.o < %s +; RUN: llvm-readobj --section-headers %t.o | FileCheck --check-prefix=SECTION64 %s +; RUN: llvm-readobj --syms %t.o | FileCheck --check-prefixes=SYMS64,SYMS64-NODATASECT %s +; RUN: llvm-objdump -D --symbol-description %t.o | FileCheck --check-prefixes=OBJDUMP-NODATASECT64 %s ; SECTION: File: {{.*}}aix-tls-xcoff-variables.ll.tmp.o ; SECTION-NEXT: Format: aixcoff-rs6000 @@ -644,3 +651,600 @@ @tls_global_long_long_weak_zero_initialized = weak thread_local global i64 0, align 8 @tls_global_alias_int_external_val_initialized = thread_local alias i32, i32* @tls_global_int_external_val_initialized @const_ivar = constant i32 6, align 4 + + +; SECTION64: File: {{.*}}aix-tls-xcoff-variables.ll.tmp.o +; SECTION64-NEXT: Format: aix5coff64-rs6000 +; SECTION64-NEXT: Arch: powerpc64 +; SECTION64-NEXT: AddressSize: 64bit +; SECTION64-NEXT: Sections [ +; SECTION64-NEXT: Section { +; SECTION64-NEXT: Index: 1 +; SECTION64-NEXT: Name: .text +; SECTION64-NEXT: PhysicalAddress: 0x0 +; SECTION64-NEXT: VirtualAddress: 0x0 +; SECTION64-NEXT: Size: 0x4 +; SECTION64-NEXT: RawDataOffset: 0xF0 +; SECTION64-NEXT: RelocationPointer: 0x0 +; SECTION64-NEXT: LineNumberPointer: 0x0 +; SECTION64-NEXT: NumberOfRelocations: 0 +; SECTION64-NEXT: NumberOfLineNumbers: 0 +; SECTION64-NEXT: Type: STYP_TEXT (0x20) +; SECTION64-NEXT: } +; SECTION64-NEXT: Section { +; SECTION64-NEXT: Index: 2 +; SECTION64-NEXT: Name: .tdata +; SECTION64-NEXT: PhysicalAddress: 0x0 +; SECTION64-NEXT: VirtualAddress: 0x0 +; SECTION64-NEXT: Size: 0x30 +; SECTION64-NEXT: RawDataOffset: 0xF4 +; SECTION64-NEXT: RelocationPointer: 0x0 +; SECTION64-NEXT: LineNumberPointer: 0x0 +; SECTION64-NEXT: NumberOfRelocations: 0 +; SECTION64-NEXT: NumberOfLineNumbers: 0 +; SECTION64-NEXT: Type: STYP_TDATA (0x400) +; SECTION64-NEXT: } +; SECTION64-NEXT: Section { +; SECTION64-NEXT: Index: 3 +; SECTION64-NEXT: Name: .tbss +; SECTION64-NEXT: PhysicalAddress: 0x30 +; SECTION64-NEXT: VirtualAddress: 0x30 +; SECTION64-NEXT: Size: 0x18 +; SECTION64-NEXT: RawDataOffset: 0x0 +; SECTION64-NEXT: RelocationPointer: 0x0 +; SECTION64-NEXT: LineNumberPointer: 0x0 +; SECTION64-NEXT: NumberOfRelocations: 0 +; SECTION64-NEXT: NumberOfLineNumbers: 0 +; SECTION64-NEXT: Type: STYP_TBSS (0x800) +; SECTION64-NEXT: } +; SECTION64-NEXT: ] + + +; SYMS64: File: {{.*}}aix-tls-xcoff-variables.ll.tmp.o +; SYMS64-NEXT: Format: aix5coff64-rs6000 +; SYMS64-NEXT: Arch: powerpc64 +; SYMS64-NEXT: AddressSize: 64bit +; SYMS64-NEXT: Symbols [ +; SYMS64-NEXT: Symbol { +; SYMS64-NEXT: Index: 0 +; SYMS64-NEXT: Name: .file +; SYMS64-NEXT: Value (SymbolTableIndex): 0x0 +; SYMS64-NEXT: Section: N_DEBUG +; SYMS64-NEXT: Source Language ID: TB_C (0x0) +; SYMS64-NEXT: CPU Version ID: 0x0 +; SYMS64-NEXT: StorageClass: C_FILE (0x67) +; SYMS64-NEXT: NumberOfAuxEntries: 0 +; SYMS64-NEXT: } +; SYMS64-NEXT: Symbol { +; SYMS64-NEXT: Index: [[#INDX:]] +; SYMS64-NEXT: Name: tls_global_int_external_uninitialized +; SYMS64-NEXT: Value (RelocatableAddress): 0x0 +; SYMS64-NEXT: Section: N_UNDEF +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+1]] +; SYMS64-NEXT: SectionLen: 0 +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 0 +; SYMS64-NEXT: SymbolType: XTY_ER (0x0) +; SYMS64-NEXT: StorageMappingClass: XMC_UL (0x15) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } +; SYMS64-NEXT: Symbol { +; SYMS64-NEXT: Index: [[#INDX+2]] +; SYMS64-NEXT: Name: tls_global_double_external_uninitialized +; SYMS64-NEXT: Value (RelocatableAddress): 0x0 +; SYMS64-NEXT: Section: N_UNDEF +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+3]] +; SYMS64-NEXT: SectionLen: 0 +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 0 +; SYMS64-NEXT: SymbolType: XTY_ER (0x0) +; SYMS64-NEXT: StorageMappingClass: XMC_UL (0x15) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64-NEXT: Symbol { +; SYMS64-NEXT: Index: [[#INDX+4]] +; SYMS64-NEXT: Name: .text +; SYMS64-NEXT: Value (RelocatableAddress): 0x0 +; SYMS64-NEXT: Section: .text +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_HIDEXT (0x6B) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+5]] +; SYMS64-NEXT: SectionLen: 0 +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 2 +; SYMS64-NEXT: SymbolType: XTY_SD (0x1) +; SYMS64-NEXT: StorageMappingClass: XMC_PR (0x0) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64-NODATASECT: Symbol { +; SYMS64-NODATASECT-NEXT: Index: [[#INDX+6]] +; SYMS64-NODATASECT-NEXT: Name: .rodata +; SYMS64-NODATASECT-NEXT: Value (RelocatableAddress): 0x0 +; SYMS64-NODATASECT-NEXT: Section: .text +; SYMS64-NODATASECT-NEXT: Type: 0x0 +; SYMS64-NODATASECT-NEXT: StorageClass: C_HIDEXT (0x6B) +; SYMS64-NODATASECT-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NODATASECT-NEXT: CSECT Auxiliary Entry { +; SYMS64-NODATASECT-NEXT: Index: [[#INDX+7]] +; SYMS64-NODATASECT-NEXT: SectionLen: 4 +; SYMS64-NODATASECT-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NODATASECT-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NODATASECT-NEXT: SymbolAlignmentLog2: 2 +; SYMS64-NODATASECT-NEXT: SymbolType: XTY_SD (0x1) +; SYMS64-NODATASECT-NEXT: StorageMappingClass: XMC_RO (0x1) +; SYMS64-NODATASECT-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NODATASECT-NEXT: } +; SYMS64-NODATASECT-NEXT: } + +; SYMS64: Symbol { +; SYMS64-DATASECT: Index: [[#INDX+6]] +; SYMS64-NODATASECT: Index: [[#INDX+8]] +; SYMS64-NEXT: Name: const_ivar +; SYMS64-NEXT: Value (RelocatableAddress): 0x0 +; SYMS64-NEXT: Section: .text +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-DATASECT: Index: [[#INDX+7]] +; SYMS64-DATASECT-NEXT: SectionLen: 4 +; SYMS64-NODATASECT: Index: [[#INDX+9]] +; SYMS64-NODATASECT-NEXT: ContainingCsectSymbolIndex: [[#INDX+6]] +; SYMS64: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-DATASECT: SymbolAlignmentLog2: 2 +; SYMS64-DATASECT-NEXT: SymbolType: XTY_SD (0x1) +; SYMS64-NODATASECT: SymbolAlignmentLog2: 0 +; SYMS64-NODATASECT-NEXT: SymbolType: XTY_LD (0x2) +; SYMS64: StorageMappingClass: XMC_RO (0x1) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64-NODATASECT: Symbol { +; SYMS64-NODATASECT-NEXT: Index: [[#INDX+10]] +; SYMS64-NODATASECT-NEXT: Name: .tdata +; SYMS64-NODATASECT-NEXT: Value (RelocatableAddress): 0x0 +; SYMS64-NODATASECT-NEXT: Section: .tdata +; SYMS64-NODATASECT-NEXT: Type: 0x0 +; SYMS64-NODATASECT-NEXT: StorageClass: C_HIDEXT (0x6B) +; SYMS64-NODATASECT-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NODATASECT-NEXT: CSECT Auxiliary Entry { +; SYMS64-NODATASECT-NEXT: Index: [[#INDX+11]] +; SYMS64-NODATASECT-NEXT: SectionLen: 48 +; SYMS64-NODATASECT-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NODATASECT-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NODATASECT-NEXT: SymbolAlignmentLog2: 3 +; SYMS64-NODATASECT-NEXT: SymbolType: XTY_SD (0x1) +; SYMS64-NODATASECT-NEXT: StorageMappingClass: XMC_TL (0x14) +; SYMS64-NODATASECT-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NODATASECT-NEXT: } +; SYMS64-NODATASECT-NEXT: } + +; SYMS64: Symbol { +; SYMS64-DATASECT: Index: [[#INDX+8]] +; SYMS64-NODATASECT: Index: [[#INDX+12]] +; SYMS64: Name: tls_global_int_external_val_initialized +; SYMS64-NEXT: Value (RelocatableAddress): 0x0 +; SYMS64-NEXT: Section: .tdata +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-DATASECT: Index: [[#INDX+9]] +; SYMS64-DATASECT-NEXT: SectionLen: 4 +; SYMS64-NODATASECT: Index: [[#INDX+13]] +; SYMS64-NODATASECT-NEXT: ContainingCsectSymbolIndex: [[#INDX+10]] +; SYMS64: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-DATASECT: SymbolAlignmentLog2: 2 +; SYMS64-DATASECT-NEXT: SymbolType: XTY_SD (0x1) +; SYMS64-NODATASECT: SymbolAlignmentLog2: 0 +; SYMS64-NODATASECT-NEXT: SymbolType: XTY_LD (0x2) +; SYMS64: StorageMappingClass: XMC_TL (0x14) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-DATASECT: Index: [[#INDX+10]] +; SYMS64-NODATASECT: Index: [[#INDX+14]] +; SYMS64: Name: tls_global_alias_int_external_val_initialized +; SYMS64-NEXT: Value (RelocatableAddress): 0x0 +; SYMS64-NEXT: Section: .tdata +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-DATASECT: Index: [[#INDX+11]] +; SYMS64-DATASECT-NEXT: ContainingCsectSymbolIndex: [[#INDX+8]] +; SYMS64-NODATASECT: Index: [[#INDX+15]] +; SYMS64-NODATASECT-NEXT: ContainingCsectSymbolIndex: [[#INDX+10]] +; SYMS64: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 0 +; SYMS64-NEXT: SymbolType: XTY_LD (0x2) +; SYMS64-NEXT: StorageMappingClass: XMC_TL (0x14) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-DATASECT: Index: [[#INDX+12]] +; SYMS64-NODATASECT: Index: [[#INDX+16]] +; SYMS64: Name: tls_global_int_external_zero_initialized +; SYMS64-NEXT: Value (RelocatableAddress): 0x4 +; SYMS64-NEXT: Section: .tdata +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-DATASECT: Index: [[#INDX+13]] +; SYMS64-DATASECT-NEXT: SectionLen: 4 +; SYMS64-NODATASECT: Index: [[#INDX+17]] +; SYMS64-NODATASECT-NEXT: ContainingCsectSymbolIndex: [[#INDX+10]] +; SYMS64: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-DATASECT: SymbolAlignmentLog2: 2 +; SYMS64-DATASECT-NEXT: SymbolType: XTY_SD (0x1) +; SYMS64-NODATASECT: SymbolAlignmentLog2: 0 +; SYMS64-NODATASECT-NEXT: SymbolType: XTY_LD (0x2) +; SYMS64: StorageMappingClass: XMC_TL (0x14) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-DATASECT: Index: [[#INDX+14]] +; SYMS64-NODATASECT: Index: [[#INDX+18]] +; SYMS64: Name: tls_global_int_local_val_initialized +; SYMS64-NEXT: Value (RelocatableAddress): 0x8 +; SYMS64-NEXT: Section: .tdata +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_HIDEXT (0x6B) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-DATASECT: Index: [[#INDX+15]] +; SYMS64-DATASECT-NEXT: SectionLen: 4 +; SYMS64-NODATASECT: Index: [[#INDX+19]] +; SYMS64-NODATASECT-NEXT: ContainingCsectSymbolIndex: [[#INDX+10]] +; SYMS64: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-DATASECT: SymbolAlignmentLog2: 2 +; SYMS64-DATASECT-NEXT: SymbolType: XTY_SD (0x1) +; SYMS64-NODATASECT: SymbolAlignmentLog2: 0 +; SYMS64-NODATASECT-NEXT: SymbolType: XTY_LD (0x2) +; SYMS64: StorageMappingClass: XMC_TL (0x14) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-DATASECT: Index: [[#INDX+16]] +; SYMS64-NODATASECT: Index: [[#INDX+20]] +; SYMS64: Name: tls_global_int_weak_zero_initialized +; SYMS64-NEXT: Value (RelocatableAddress): 0xC +; SYMS64-NEXT: Section: .tdata +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_WEAKEXT (0x6F) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-DATASECT: Index: [[#INDX+17]] +; SYMS64-DATASECT-NEXT: SectionLen: 4 +; SYMS64-NODATASECT: Index: [[#INDX+21]] +; SYMS64-NODATASECT-NEXT: ContainingCsectSymbolIndex: [[#INDX+10]] +; SYMS64: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-DATASECT: SymbolAlignmentLog2: 2 +; SYMS64-DATASECT-NEXT: SymbolType: XTY_SD (0x1) +; SYMS64-NODATASECT: SymbolAlignmentLog2: 0 +; SYMS64-NODATASECT-NEXT: SymbolType: XTY_LD (0x2) +; SYMS64: StorageMappingClass: XMC_TL (0x14) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-DATASECT: Index: [[#INDX+18]] +; SYMS64-NODATASECT: Index: [[#INDX+22]] +; SYMS64: Name: tls_global_int_weak_val_initialized +; SYMS64-NEXT: Value (RelocatableAddress): 0x10 +; SYMS64-NEXT: Section: .tdata +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_WEAKEXT (0x6F) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-DATASECT: Index: [[#INDX+19]] +; SYMS64-DATASECT-NEXT: SectionLen: 4 +; SYMS64-NODATASECT: Index: [[#INDX+23]] +; SYMS64-NODATASECT-NEXT: ContainingCsectSymbolIndex: [[#INDX+10]] +; SYMS64: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-DATASECT: SymbolAlignmentLog2: 2 +; SYMS64-DATASECT-NEXT: SymbolType: XTY_SD (0x1) +; SYMS64-NODATASECT: SymbolAlignmentLog2: 0 +; SYMS64-NODATASECT-NEXT: SymbolType: XTY_LD (0x2) +; SYMS64: StorageMappingClass: XMC_TL (0x14) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-DATASECT: Index: [[#INDX+20]] +; SYMS64-NODATASECT: Index: [[#INDX+24]] +; SYMS64: Name: tls_global_long_long_internal_val_initialized +; SYMS64-NEXT: Value (RelocatableAddress): 0x18 +; SYMS64-NEXT: Section: .tdata +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_HIDEXT (0x6B) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-DATASECT: Index: [[#INDX+21]] +; SYMS64-DATASECT-NEXT: SectionLen: 8 +; SYMS64-NODATASECT: Index: [[#INDX+25]] +; SYMS64-NODATASECT-NEXT: ContainingCsectSymbolIndex: [[#INDX+10]] +; SYMS64: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-DATASECT: SymbolAlignmentLog2: 3 +; SYMS64-DATASECT-NEXT: SymbolType: XTY_SD (0x1) +; SYMS64-NODATASECT: SymbolAlignmentLog2: 0 +; SYMS64-NODATASECT-NEXT: SymbolType: XTY_LD (0x2) +; SYMS64: StorageMappingClass: XMC_TL (0x14) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-DATASECT: Index: [[#INDX+22]] +; SYMS64-NODATASECT: Index: [[#INDX+26]] +; SYMS64: Name: tls_global_long_long_weak_val_initialized +; SYMS64-NEXT: Value (RelocatableAddress): 0x20 +; SYMS64-NEXT: Section: .tdata +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_WEAKEXT (0x6F) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-DATASECT: Index: [[#INDX+23]] +; SYMS64-DATASECT-NEXT: SectionLen: 8 +; SYMS64-NODATASECT: Index: [[#INDX+27]] +; SYMS64-NODATASECT-NEXT: ContainingCsectSymbolIndex: [[#INDX+10]] +; SYMS64: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-DATASECT: SymbolAlignmentLog2: 3 +; SYMS64-DATASECT-NEXT: SymbolType: XTY_SD (0x1) +; SYMS64-NODATASECT: SymbolAlignmentLog2: 0 +; SYMS64-NODATASECT-NEXT: SymbolType: XTY_LD (0x2) +; SYMS64: StorageMappingClass: XMC_TL (0x14) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-DATASECT: Index: [[#INDX+24]] +; SYMS64-NODATASECT: Index: [[#INDX+28]] +; SYMS64: Name: tls_global_long_long_weak_zero_initialized +; SYMS64-NEXT: Value (RelocatableAddress): 0x28 +; SYMS64-NEXT: Section: .tdata +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_WEAKEXT (0x6F) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-DATASECT: Index: [[#INDX+25]] +; SYMS64-DATASECT-NEXT: SectionLen: 8 +; SYMS64-NODATASECT: Index: [[#INDX+29]] +; SYMS64-NODATASECT-NEXT: ContainingCsectSymbolIndex: [[#INDX+10]] +; SYMS64: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-DATASECT: SymbolAlignmentLog2: 3 +; SYMS64-DATASECT-NEXT: SymbolType: XTY_SD (0x1) +; SYMS64-NODATASECT: SymbolAlignmentLog2: 0 +; SYMS64-NODATASECT-NEXT: SymbolType: XTY_LD (0x2) +; SYMS64: StorageMappingClass: XMC_TL (0x14) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-DATASECT: Index: [[#INDX+26]] +; SYMS64-NODATASECT: Index: [[#INDX+30]] +; SYMS64: Name: tls_global_int_local_zero_initialized +; SYMS64-NEXT: Value (RelocatableAddress): 0x30 +; SYMS64-NEXT: Section: .tbss +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_HIDEXT (0x6B) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-DATASECT: Index: [[#INDX+27]] +; SYMS64-NODATASECT: Index: [[#INDX+31]] +; SYMS64: SectionLen: 4 +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 2 +; SYMS64-NEXT: SymbolType: XTY_CM (0x3) +; SYMS64-NEXT: StorageMappingClass: XMC_UL (0x15) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-DATASECT: Index: [[#INDX+28]] +; SYMS64-NODATASECT: Index: [[#INDX+32]] +; SYMS64: Name: tls_global_int_common_zero_initialized +; SYMS64-NEXT: Value (RelocatableAddress): 0x34 +; SYMS64-NEXT: Section: .tbss +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-DATASECT: Index: [[#INDX+29]] +; SYMS64-NODATASECT: Index: [[#INDX+33]] +; SYMS64: SectionLen: 4 +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 2 +; SYMS64-NEXT: SymbolType: XTY_CM (0x3) +; SYMS64-NEXT: StorageMappingClass: XMC_UL (0x15) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-DATASECT: Index: [[#INDX+30]] +; SYMS64-NODATASECT: Index: [[#INDX+34]] +; SYMS64: Name: tls_global_double_common_zero_initialized +; SYMS64-NEXT: Value (RelocatableAddress): 0x38 +; SYMS64-NEXT: Section: .tbss +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-DATASECT: Index: [[#INDX+31]] +; SYMS64-NODATASECT: Index: [[#INDX+35]] +; SYMS64: SectionLen: 8 +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 3 +; SYMS64-NEXT: SymbolType: XTY_CM (0x3) +; SYMS64-NEXT: StorageMappingClass: XMC_UL (0x15) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-DATASECT: Index: [[#INDX+32]] +; SYMS64-NODATASECT: Index: [[#INDX+36]] +; SYMS64: Name: tls_global_long_long_internal_zero_initialized +; SYMS64-NEXT: Value (RelocatableAddress): 0x40 +; SYMS64-NEXT: Section: .tbss +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_HIDEXT (0x6B) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-DATASECT: Index: [[#INDX+33]] +; SYMS64-NODATASECT: Index: [[#INDX+37]] +; SYMS64: SectionLen: 8 +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 3 +; SYMS64-NEXT: SymbolType: XTY_CM (0x3) +; SYMS64-NEXT: StorageMappingClass: XMC_UL (0x15) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + + +; OBJDUMP-DATASECT64: Disassembly of section .text: +; OBJDUMP-DATASECT64-EMPTY: +; OBJDUMP-DATASECT64-NEXT: 00000000 (idx: 7) const_ivar[RO]: +; OBJDUMP-DATASECT64-NEXT: 0: 00 00 00 06 +; OBJDUMP-DATASECT64-EMPTY: +; OBJDUMP-DATASECT64-NEXT: Disassembly of section .tdata: +; OBJDUMP-DATASECT64-EMPTY: +; OBJDUMP-DATASECT64-NEXT: 00000000 (idx: 11) tls_global_alias_int_external_val_initialized: +; OBJDUMP-DATASECT64-NEXT: 0: 00 00 00 01 +; OBJDUMP-DATASECT64-EMPTY: +; OBJDUMP-DATASECT64-NEXT: 00000004 (idx: 13) tls_global_int_external_zero_initialized[TL]: +; OBJDUMP-DATASECT64-NEXT: 4: 00 00 00 00 +; OBJDUMP-DATASECT64-EMPTY: +; OBJDUMP-DATASECT64-NEXT: 00000008 (idx: 15) tls_global_int_local_val_initialized[TL]: +; OBJDUMP-DATASECT64-NEXT: 8: 00 00 00 02 +; OBJDUMP-DATASECT64-EMPTY: +; OBJDUMP-DATASECT64-NEXT: 0000000c (idx: 17) tls_global_int_weak_zero_initialized[TL]: +; OBJDUMP-DATASECT64-NEXT: c: 00 00 00 00 +; OBJDUMP-DATASECT64-EMPTY: +; OBJDUMP-DATASECT64-NEXT: 00000010 (idx: 19) tls_global_int_weak_val_initialized[TL]: +; OBJDUMP-DATASECT64-NEXT: 10: 00 00 00 01 +; OBJDUMP-DATASECT64-NEXT: 14: 00 00 00 00 +; OBJDUMP-DATASECT64-EMPTY: +; OBJDUMP-DATASECT64-NEXT: 00000018 (idx: 21) tls_global_long_long_internal_val_initialized[TL]: +; OBJDUMP-DATASECT64-NEXT: 18: 00 00 00 00 +; OBJDUMP-DATASECT64-NEXT: 1c: 00 00 00 01 +; OBJDUMP-DATASECT64-EMPTY: +; OBJDUMP-DATASECT64-NEXT: 00000020 (idx: 23) tls_global_long_long_weak_val_initialized[TL]: +; OBJDUMP-DATASECT64-NEXT: 20: 00 00 00 00 +; OBJDUMP-DATASECT64-NEXT: 24: 00 00 00 01 +; OBJDUMP-DATASECT64-EMPTY: +; OBJDUMP-DATASECT64-NEXT: 00000028 (idx: 25) tls_global_long_long_weak_zero_initialized[TL]: +; OBJDUMP-DATASECT64-NEXT: ... +; OBJDUMP-DATASECT64-EMPTY: + +; OBJDUMP-DATASECT64-NEXT: Disassembly of section .tbss: +; OBJDUMP-DATASECT64-EMPTY: +; OBJDUMP-DATASECT64-NEXT: 00000030 (idx: 27) tls_global_int_local_zero_initialized[UL]: +; OBJDUMP-DATASECT64-NEXT: ... +; OBJDUMP-DATASECT64-EMPTY: +; OBJDUMP-DATASECT64-NEXT: 00000034 (idx: 29) tls_global_int_common_zero_initialized[UL]: +; OBJDUMP-DATASECT64-NEXT: ... +; OBJDUMP-DATASECT64-EMPTY: +; OBJDUMP-DATASECT64-NEXT: 00000038 (idx: 31) tls_global_double_common_zero_initialized[UL] +; OBJDUMP-DATASECT64-NEXT: ... +; OBJDUMP-DATASECT64-EMPTY: +; OBJDUMP-DATASECT64-NEXT: 00000040 (idx: 33) tls_global_long_long_internal_zero_initialized[UL]: +; OBJDUMP-DATASECT64-NEXT: ... + +; OBJDUMP-NODATASECT64: Disassembly of section .text: +; OBJDUMP-NODATASECT64-EMPTY: +; OBJDUMP-NODATASECT64-NEXT: 00000000 (idx: 9) const_ivar: +; OBJDUMP-NODATASECT64-NEXT: 0: 00 00 00 06 +; OBJDUMP-NODATASECT64-EMPTY: +; OBJDUMP-NODATASECT64-NEXT: Disassembly of section .tdata: +; OBJDUMP-NODATASECT64-EMPTY: +; OBJDUMP-NODATASECT64: 00000000 (idx: 13) tls_global_int_external_val_initialized: +; OBJDUMP-NODATASECT64-NEXT: 0: 00 00 00 01 +; OBJDUMP-NODATASECT64-EMPTY: +; OBJDUMP-NODATASECT64-NEXT: 00000004 (idx: 17) tls_global_int_external_zero_initialized: +; OBJDUMP-NODATASECT64-NEXT: 4: 00 00 00 00 +; OBJDUMP-NODATASECT64-EMPTY: +; OBJDUMP-NODATASECT64-NEXT: 00000008 (idx: 19) tls_global_int_local_val_initialized: +; OBJDUMP-NODATASECT64-NEXT: 8: 00 00 00 02 +; OBJDUMP-NODATASECT64-EMPTY: +; OBJDUMP-NODATASECT64-NEXT: 0000000c (idx: 21) tls_global_int_weak_zero_initialized: +; OBJDUMP-NODATASECT64-NEXT: c: 00 00 00 00 +; OBJDUMP-NODATASECT64-EMPTY: +; OBJDUMP-NODATASECT64-NEXT: 00000010 (idx: 23) tls_global_int_weak_val_initialized: +; OBJDUMP-NODATASECT64-NEXT: 10: 00 00 00 01 +; OBJDUMP-NODATASECT64-NEXT: 14: 00 00 00 00 +; OBJDUMP-NODATASECT64-EMPTY: +; OBJDUMP-NODATASECT64-NEXT: 00000018 (idx: 25) tls_global_long_long_internal_val_initialized: +; OBJDUMP-NODATASECT64-NEXT: 18: 00 00 00 00 +; OBJDUMP-NODATASECT64-NEXT: 1c: 00 00 00 01 +; OBJDUMP-NODATASECT64-EMPTY: +; OBJDUMP-NODATASECT64-NEXT: 00000020 (idx: 27) tls_global_long_long_weak_val_initialized: +; OBJDUMP-NODATASECT64-NEXT: 20: 00 00 00 00 +; OBJDUMP-NODATASECT64-NEXT: 24: 00 00 00 01 +; OBJDUMP-NODATASECT64-EMPTY: +; OBJDUMP-NODATASECT64-NEXT: 00000028 (idx: 29) tls_global_long_long_weak_zero_initialized: +; OBJDUMP-NODATASECT64-NEXT: ... +; OBJDUMP-NODATASECT64-EMPTY: + +; OBJDUMP-NODATASECT64-NEXT: Disassembly of section .tbss: +; OBJDUMP-NODATASECT64-EMPTY: +; OBJDUMP-NODATASECT64-NEXT: 00000030 (idx: 31) tls_global_int_local_zero_initialized[UL]: +; OBJDUMP-NODATASECT64-NEXT: ... +; OBJDUMP-NODATASECT64-EMPTY: +; OBJDUMP-NODATASECT64-NEXT: 00000034 (idx: 33) tls_global_int_common_zero_initialized[UL]: +; OBJDUMP-NODATASECT64-NEXT: ... +; OBJDUMP-NODATASECT64-EMPTY: +; OBJDUMP-NODATASECT64-NEXT: 00000038 (idx: 35) tls_global_double_common_zero_initialized[UL]: +; OBJDUMP-NODATASECT64-NEXT: ... +; OBJDUMP-NODATASECT64-EMPTY: +; OBJDUMP-NODATASECT64-NEXT: 00000040 (idx: 37) tls_global_long_long_internal_zero_initialized[UL]: +; OBJDUMP-NODATASECT64-NEXT: ... diff --git a/llvm/test/CodeGen/PowerPC/aix-user-defined-memcpy.ll b/llvm/test/CodeGen/PowerPC/aix-user-defined-memcpy.ll --- a/llvm/test/CodeGen/PowerPC/aix-user-defined-memcpy.ll +++ b/llvm/test/CodeGen/PowerPC/aix-user-defined-memcpy.ll @@ -12,9 +12,10 @@ ; RUN: -mcpu=pwr4 -mattr=-altivec < %s | \ ; RUN: FileCheck %s -; RUN: not --crash llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff \ -; RUN: -mcpu=pwr4 -mattr=-altivec -filetype=obj < %s 2>&1 | FileCheck \ -; RUN: --check-prefix=64-CHECK %s +; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr4 \ +; RUN: -mattr=-altivec -filetype=obj -xcoff-traceback-table=false -o %t.o < %s + +; RUN: not --crash llvm-objdump -D -r %t.o 2>&1 | FileCheck --check-prefix=64-CHECK %s ; Test verifies: ; If there exists a user-defined function whose name is the same as the @@ -118,4 +119,4 @@ ; 32-DIS-NEXT: 2c: 7c 08 03 a6 mtlr 0 ; 32-DIS-NEXT: 30: 4e 80 00 20 blr -; 64-CHECK: LLVM ERROR: 64-bit XCOFF object files are not supported yet. +; 64-CHECK: LLVM ERROR: 64-bit support not implemented yet diff --git a/llvm/test/CodeGen/PowerPC/aix-weak.ll b/llvm/test/CodeGen/PowerPC/aix-weak.ll --- a/llvm/test/CodeGen/PowerPC/aix-weak.ll +++ b/llvm/test/CodeGen/PowerPC/aix-weak.ll @@ -8,10 +8,9 @@ ; RUN: -mattr=-altivec -data-sections=false -filetype=obj -o %t.o < %s ; RUN: llvm-readobj --symbols %t.o | FileCheck --check-prefix=CHECKSYM %s -; RUN: not --crash llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff \ -; RUN: -mattr=-altivec -data-sections=false -filetype=obj -o %t.o 2>&1 < %s | \ -; RUN: FileCheck --check-prefix=XCOFF64 %s -; XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet. +; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -xcoff-traceback-table=false -mcpu=pwr4 \ +; RUN: -mattr=-altivec -data-sections=false -filetype=obj -o %t.o < %s +; RUN: llvm-readobj --symbols %t.o | FileCheck --check-prefix=CHECKSYM64 %s @foo_weak_p = global void (...)* bitcast (void ()* @foo_ref_weak to void (...)*), align 4 @b = weak global i32 0, align 4 @@ -371,3 +370,263 @@ ; CHECKSYM-NEXT: } ; CHECKSYM-NEXT: } ; CHECKSYM-NEXT: ] + +; CHECKSYM64: Symbols [ +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: 0 +; CHECKSYM64-NEXT: Name: .file +; CHECKSYM64-NEXT: Value (SymbolTableIndex): 0x0 +; CHECKSYM64-NEXT: Section: N_DEBUG +; CHECKSYM64-NEXT: Source Language ID: TB_C (0x0) +; CHECKSYM64-NEXT: CPU Version ID: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_FILE (0x67) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 0 +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: [[#Index:]] +; CHECKSYM64-NEXT: Name: .text +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x0 +; CHECKSYM64-NEXT: Section: .text +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_HIDEXT (0x6B) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: [[#Index+1]] +; CHECKSYM64-NEXT: SectionLen: 136 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 4 +; CHECKSYM64-NEXT: SymbolType: XTY_SD (0x1) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_PR (0x0) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: [[#Index+2]] +; CHECKSYM64-NEXT: Name: .foo_weak +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x0 +; CHECKSYM64-NEXT: Section: .text +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_WEAKEXT (0x6F) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: [[#Index+3]] +; CHECKSYM64-NEXT: ContainingCsectSymbolIndex: [[#Index]] +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 0 +; CHECKSYM64-NEXT: SymbolType: XTY_LD (0x2) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_PR (0x0) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: [[#Index+4]] +; CHECKSYM64-NEXT: Name: .foo_ref_weak +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x20 +; CHECKSYM64-NEXT: Section: .text +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_WEAKEXT (0x6F) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: [[#Index+5]] +; CHECKSYM64-NEXT: ContainingCsectSymbolIndex: [[#Index]] +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 0 +; CHECKSYM64-NEXT: SymbolType: XTY_LD (0x2) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_PR (0x0) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: [[#Index+6]] +; CHECKSYM64-NEXT: Name: .main +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x30 +; CHECKSYM64-NEXT: Section: .text +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_EXT (0x2) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: [[#Index+7]] +; CHECKSYM64-NEXT: ContainingCsectSymbolIndex: [[#Index]] +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 0 +; CHECKSYM64-NEXT: SymbolType: XTY_LD (0x2) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_PR (0x0) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: [[#Index+8]] +; CHECKSYM64-NEXT: Name: .data +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x88 +; CHECKSYM64-NEXT: Section: .data +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_HIDEXT (0x6B) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: [[#Index+9]] +; CHECKSYM64-NEXT: SectionLen: 12 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 3 +; CHECKSYM64-NEXT: SymbolType: XTY_SD (0x1) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_RW (0x5) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: [[#Index+10]] +; CHECKSYM64-NEXT: Name: foo_weak_p +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x88 +; CHECKSYM64-NEXT: Section: .data +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_EXT (0x2) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: [[#Index+11]] +; CHECKSYM64-NEXT: ContainingCsectSymbolIndex: [[#Index+8]] +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 0 +; CHECKSYM64-NEXT: SymbolType: XTY_LD (0x2) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_RW (0x5) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: [[#Index+12]] +; CHECKSYM64-NEXT: Name: b +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x90 +; CHECKSYM64-NEXT: Section: .data +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_WEAKEXT (0x6F) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: [[#Index+13]] +; CHECKSYM64-NEXT: ContainingCsectSymbolIndex: [[#Index+8]] +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 0 +; CHECKSYM64-NEXT: SymbolType: XTY_LD (0x2) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_RW (0x5) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: [[#Index+14]] +; CHECKSYM64-NEXT: Name: foo_weak +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0x98 +; CHECKSYM64-NEXT: Section: .data +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_WEAKEXT (0x6F) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: [[#Index+15]] +; CHECKSYM64-NEXT: SectionLen: 24 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 3 +; CHECKSYM64-NEXT: SymbolType: XTY_SD (0x1) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_DS (0xA) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: [[#Index+16]] +; CHECKSYM64-NEXT: Name: foo_ref_weak +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0xB0 +; CHECKSYM64-NEXT: Section: .data +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_WEAKEXT (0x6F) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: [[#Index+17]] +; CHECKSYM64-NEXT: SectionLen: 24 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 3 +; CHECKSYM64-NEXT: SymbolType: XTY_SD (0x1) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_DS (0xA) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: [[#Index+18]] +; CHECKSYM64-NEXT: Name: main +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0xC8 +; CHECKSYM64-NEXT: Section: .data +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_EXT (0x2) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: [[#Index+19]] +; CHECKSYM64-NEXT: SectionLen: 24 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 3 +; CHECKSYM64-NEXT: SymbolType: XTY_SD (0x1) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_DS (0xA) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: [[#Index+20]] +; CHECKSYM64-NEXT: Name: TOC +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0xE0 +; CHECKSYM64-NEXT: Section: .data +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_HIDEXT (0x6B) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: [[#Index+21]] +; CHECKSYM64-NEXT: SectionLen: 0 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 2 +; CHECKSYM64-NEXT: SymbolType: XTY_SD (0x1) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_TC0 (0xF) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: [[#Index+22]] +; CHECKSYM64-NEXT: Name: foo_weak_p +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0xE0 +; CHECKSYM64-NEXT: Section: .data +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_HIDEXT (0x6B) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: [[#Index+23]] +; CHECKSYM64-NEXT: SectionLen: 8 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 3 +; CHECKSYM64-NEXT: SymbolType: XTY_SD (0x1) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_TC (0x3) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: Symbol { +; CHECKSYM64-NEXT: Index: [[#Index+24]] +; CHECKSYM64-NEXT: Name: b +; CHECKSYM64-NEXT: Value (RelocatableAddress): 0xE8 +; CHECKSYM64-NEXT: Section: .data +; CHECKSYM64-NEXT: Type: 0x0 +; CHECKSYM64-NEXT: StorageClass: C_HIDEXT (0x6B) +; CHECKSYM64-NEXT: NumberOfAuxEntries: 1 +; CHECKSYM64-NEXT: CSECT Auxiliary Entry { +; CHECKSYM64-NEXT: Index: [[#Index+25]] +; CHECKSYM64-NEXT: SectionLen: 8 +; CHECKSYM64-NEXT: ParameterHashIndex: 0x0 +; CHECKSYM64-NEXT: TypeChkSectNum: 0x0 +; CHECKSYM64-NEXT: SymbolAlignmentLog2: 3 +; CHECKSYM64-NEXT: SymbolType: XTY_SD (0x1) +; CHECKSYM64-NEXT: StorageMappingClass: XMC_TC (0x3) +; CHECKSYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: } +; CHECKSYM64-NEXT: ] diff --git a/llvm/test/CodeGen/PowerPC/aix-xcoff-data-only-notoc.ll b/llvm/test/CodeGen/PowerPC/aix-xcoff-data-only-notoc.ll --- a/llvm/test/CodeGen/PowerPC/aix-xcoff-data-only-notoc.ll +++ b/llvm/test/CodeGen/PowerPC/aix-xcoff-data-only-notoc.ll @@ -1,12 +1,11 @@ ; RUN: llc -mtriple powerpc-ibm-aix-xcoff < %s | FileCheck %s -; RUN: llc -mtriple powerpc64-ibm-aix-xcoff < %s 2>&1 | FileCheck %s +; RUN: llc -mtriple powerpc64-ibm-aix-xcoff < %s | FileCheck %s ; RUN: llc -mtriple powerpc-ibm-aix-xcoff -filetype=obj -o %t.o < %s ; RUN: llvm-readobj --syms %t.o | FileCheck --check-prefix=SYMS %s -; RUN: not --crash llc -mtriple powerpc64-ibm-aix-xcoff -filetype=obj < %s 2>&1 | \ -; RUN: FileCheck --check-prefix=OBJ64 %s -; OBJ64: LLVM ERROR: 64-bit XCOFF object files are not supported yet. +; RUN: llc -mtriple powerpc64-ibm-aix-xcoff -filetype=obj -o %t.o < %s +; RUN: llvm-readobj --syms %t.o | FileCheck --check-prefix=SYMS %s @a = external global i32, align 4 @b = external global i64, align 8 diff --git a/llvm/test/CodeGen/PowerPC/aix-xcoff-data.ll b/llvm/test/CodeGen/PowerPC/aix-xcoff-data.ll --- a/llvm/test/CodeGen/PowerPC/aix-xcoff-data.ll +++ b/llvm/test/CodeGen/PowerPC/aix-xcoff-data.ll @@ -9,9 +9,10 @@ ; RUN: FileCheck --check-prefix=OBJ %s ; RUN: llvm-readobj --syms %t.o | FileCheck --check-prefix=SYMS %s -; RUN: not --crash llc -mtriple powerpc64-ibm-aix-xcoff -data-sections=false -filetype=obj < %s 2>&1 | \ -; RUN: FileCheck --check-prefix=XCOFF64 %s -; XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet. +; RUN: llc -mtriple powerpc64-ibm-aix-xcoff -data-sections=false -filetype=obj -o %t.o < %s +; RUN: llvm-readobj --section-headers --file-header %t.o | \ +; RUN: FileCheck --check-prefix=OBJ64 %s +; RUN: llvm-readobj --syms %t.o | FileCheck --check-prefix=SYMS64 %s @ivar = local_unnamed_addr global i32 35, align 4 @llvar = local_unnamed_addr global i64 36, align 8 @@ -204,6 +205,64 @@ ; OBJ-NEXT: } ; OBJ: ] +; OBJ64: File: {{.*}}aix-xcoff-data.ll.tmp.o +; OBJ64-NEXT: Format: aix5coff64-rs6000 +; OBJ64-NEXT: Arch: powerpc64 +; OBJ64-NEXT: AddressSize: 64bit +; OBJ64-NEXT: FileHeader { +; OBJ64-NEXT: Magic: 0x1F7 +; OBJ64-NEXT: NumberOfSections: 3 +; OBJ64-NEXT: TimeStamp: +; OBJ64-NEXT: SymbolTableOffset: 0x170 +; OBJ64-NEXT: SymbolTableEntries: 45 +; OBJ64-NEXT: OptionalHeaderSize: 0x0 +; OBJ64-NEXT: Flags: 0x0 +; OBJ64-NEXT: } + +; OBJ64: Sections [ +; OBJ64: Section { +; OBJ64-NEXT: Index: [[#OBJ_INDX:]] +; OBJ64-NEXT: Name: .text +; OBJ64-NEXT: PhysicalAddress: 0x0 +; OBJ64-NEXT: VirtualAddress: 0x0 +; OBJ64-NEXT: Size: 0x0 +; OBJ64-NEXT: RawDataOffset: 0xF0 +; OBJ64-NEXT: RelocationPointer: 0x0 +; OBJ64-NEXT: LineNumberPointer: 0x0 +; OBJ64-NEXT: NumberOfRelocations: 0 +; OBJ64-NEXT: NumberOfLineNumbers: 0 +; OBJ64-NEXT: Type: STYP_TEXT (0x20) +; OBJ64-NEXT: } + +; OBJ64: Section { +; OBJ64-NEXT: Index: [[#OBJ_INDX+1]] +; OBJ64-NEXT: Name: .data +; OBJ64-NEXT: PhysicalAddress: 0x0 +; OBJ64-NEXT: VirtualAddress: 0x0 +; OBJ64-NEXT: Size: 0x80 +; OBJ64-NEXT: RawDataOffset: 0xF0 +; OBJ64-NEXT: RelocationPointer: 0x0 +; OBJ64-NEXT: LineNumberPointer: 0x0 +; OBJ64-NEXT: NumberOfRelocations: 0 +; OBJ64-NEXT: NumberOfLineNumbers: 0 +; OBJ64-NEXT: Type: STYP_DATA (0x40) +; OBJ64-NEXT: } + +; OBJ64: Section { +; OBJ64-NEXT: Index: [[#OBJ_INDX+2]] +; OBJ64-NEXT: Name: .bss +; OBJ64-NEXT: PhysicalAddress: 0x80 +; OBJ64-NEXT: VirtualAddress: 0x80 +; OBJ64-NEXT: Size: 0x6C +; OBJ64-NEXT: RawDataOffset: 0x0 +; OBJ64-NEXT: RelocationPointer: 0x0 +; OBJ64-NEXT: LineNumberPointer: 0x0 +; OBJ64-NEXT: NumberOfRelocations: 0 +; OBJ64-NEXT: NumberOfLineNumbers: 0 +; OBJ64-NEXT: Type: STYP_BSS (0x80) +; OBJ64-NEXT: } +; OBJ64: ] + ; SYMS: File: {{.*}}aix-xcoff-data.ll.tmp.o ; SYMS-NEXT: Format: aixcoff-rs6000 ; SYMS-NEXT: Arch: powerpc @@ -681,3 +740,459 @@ ; SYMS-NEXT: } ; SYMS-NEXT: } ; SYMS: ] + +; SYMS64: File: {{.*}}aix-xcoff-data.ll.tmp.o +; SYMS64-NEXT: Format: aix5coff64-rs6000 +; SYMS64-NEXT: Arch: powerpc64 +; SYMS64-NEXT: AddressSize: 64bit +; SYMS64: Symbols [ +; SYMS64-NEXT: Symbol { +; SYMS64-NEXT: Index: 0 +; SYMS64-NEXT: Name: .file +; SYMS64-NEXT: Value (SymbolTableIndex): 0x0 +; SYMS64-NEXT: Section: N_DEBUG +; SYMS64-NEXT: Source Language ID: TB_C (0x0) +; SYMS64-NEXT: CPU Version ID: 0x0 +; SYMS64-NEXT: StorageClass: C_FILE (0x67) +; SYMS64-NEXT: NumberOfAuxEntries: 0 +; SYMS64-NEXT: } +; SYMS64-NEXT: Symbol { +; SYMS64-NEXT: Index: [[#INDX:]] +; SYMS64-NEXT: Name: .text +; SYMS64-NEXT: Value (RelocatableAddress): 0x0 +; SYMS64-NEXT: Section: .text +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_HIDEXT (0x6B) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+1]] +; SYMS64-NEXT: SectionLen: 0 +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 2 +; SYMS64-NEXT: SymbolType: XTY_SD (0x1) +; SYMS64-NEXT: StorageMappingClass: XMC_PR (0x0) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-NEXT: Index: [[#INDX+2]] +; SYMS64-NEXT: Name: .data +; SYMS64-NEXT: Value (RelocatableAddress): 0x0 +; SYMS64-NEXT: Section: .data +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_HIDEXT (0x6B) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+3]] +; SYMS64-NEXT: SectionLen: 128 +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 5 +; SYMS64-NEXT: SymbolType: XTY_SD (0x1) +; SYMS64-NEXT: StorageMappingClass: XMC_RW (0x5) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-NEXT: Index: [[#INDX+4]] +; SYMS64-NEXT: Name: ivar +; SYMS64-NEXT: Value (RelocatableAddress): 0x0 +; SYMS64-NEXT: Section: .data +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+5]] +; SYMS64-NEXT: ContainingCsectSymbolIndex: [[#INDX+2]] +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 0 +; SYMS64-NEXT: SymbolType: XTY_LD (0x2) +; SYMS64-NEXT: StorageMappingClass: XMC_RW (0x5) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-NEXT: Index: [[#INDX+6]] +; SYMS64-NEXT: Name: llvar +; SYMS64-NEXT: Value (RelocatableAddress): 0x8 +; SYMS64-NEXT: Section: .data +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+7]] +; SYMS64-NEXT: ContainingCsectSymbolIndex: [[#INDX+2]] +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 0 +; SYMS64-NEXT: SymbolType: XTY_LD (0x2) +; SYMS64-NEXT: StorageMappingClass: XMC_RW (0x5) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-NEXT: Index: [[#INDX+8]] +; SYMS64-NEXT: Name: svar +; SYMS64-NEXT: Value (RelocatableAddress): 0x10 +; SYMS64-NEXT: Section: .data +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+9]] +; SYMS64-NEXT: ContainingCsectSymbolIndex: [[#INDX+2]] +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 0 +; SYMS64-NEXT: SymbolType: XTY_LD (0x2) +; SYMS64-NEXT: StorageMappingClass: XMC_RW (0x5) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-NEXT: Index: [[#INDX+10]] +; SYMS64-NEXT: Name: fvar +; SYMS64-NEXT: Value (RelocatableAddress): 0x14 +; SYMS64-NEXT: Section: .data +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+11]] +; SYMS64-NEXT: ContainingCsectSymbolIndex: [[#INDX+2]] +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 0 +; SYMS64-NEXT: SymbolType: XTY_LD (0x2) +; SYMS64-NEXT: StorageMappingClass: XMC_RW (0x5) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-NEXT: Index: [[#INDX+12]] +; SYMS64-NEXT: Name: dvar +; SYMS64-NEXT: Value (RelocatableAddress): 0x18 +; SYMS64-NEXT: Section: .data +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+13]] +; SYMS64-NEXT: ContainingCsectSymbolIndex: [[#INDX+2]] +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 0 +; SYMS64-NEXT: SymbolType: XTY_LD (0x2) +; SYMS64-NEXT: StorageMappingClass: XMC_RW (0x5) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-NEXT: Index: [[#INDX+14]] +; SYMS64-NEXT: Name: over_aligned +; SYMS64-NEXT: Value (RelocatableAddress): 0x20 +; SYMS64-NEXT: Section: .data +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+15]] +; SYMS64-NEXT: ContainingCsectSymbolIndex: [[#INDX+2]] +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 0 +; SYMS64-NEXT: SymbolType: XTY_LD (0x2) +; SYMS64-NEXT: StorageMappingClass: XMC_RW (0x5) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-NEXT: Index: [[#INDX+16]] +; SYMS64-NEXT: Name: chrarray +; SYMS64-NEXT: Value (RelocatableAddress): 0x28 +; SYMS64-NEXT: Section: .data +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+17]] +; SYMS64-NEXT: ContainingCsectSymbolIndex: [[#INDX+2]] +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 0 +; SYMS64-NEXT: SymbolType: XTY_LD (0x2) +; SYMS64-NEXT: StorageMappingClass: XMC_RW (0x5) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-NEXT: Index: [[#INDX+18]] +; SYMS64-NEXT: Name: dblarr +; SYMS64-NEXT: Value (RelocatableAddress): 0x30 +; SYMS64-NEXT: Section: .data +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+19]] +; SYMS64-NEXT: ContainingCsectSymbolIndex: [[#INDX+2]] +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 0 +; SYMS64-NEXT: SymbolType: XTY_LD (0x2) +; SYMS64-NEXT: StorageMappingClass: XMC_RW (0x5) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-NEXT: Index: [[#INDX+20]] +; SYMS64-NEXT: Name: d_0 +; SYMS64-NEXT: Value (RelocatableAddress): 0x50 +; SYMS64-NEXT: Section: .data +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+21]] +; SYMS64-NEXT: ContainingCsectSymbolIndex: [[#INDX+2]] +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 0 +; SYMS64-NEXT: SymbolType: XTY_LD (0x2) +; SYMS64-NEXT: StorageMappingClass: XMC_RW (0x5) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-NEXT: Index: [[#INDX+22]] +; SYMS64-NEXT: Name: s_0 +; SYMS64-NEXT: Value (RelocatableAddress): 0x58 +; SYMS64-NEXT: Section: .data +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+23]] +; SYMS64-NEXT: ContainingCsectSymbolIndex: [[#INDX+2]] +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 0 +; SYMS64-NEXT: SymbolType: XTY_LD (0x2) +; SYMS64-NEXT: StorageMappingClass: XMC_RW (0x5) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-NEXT: Index: [[#INDX+24]] +; SYMS64-NEXT: Name: f_0 +; SYMS64-NEXT: Value (RelocatableAddress): 0x5C +; SYMS64-NEXT: Section: .data +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+25]] +; SYMS64-NEXT: ContainingCsectSymbolIndex: [[#INDX+2]] +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 0 +; SYMS64-NEXT: SymbolType: XTY_LD (0x2) +; SYMS64-NEXT: StorageMappingClass: XMC_RW (0x5) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-NEXT: Index: [[#INDX+26]] +; SYMS64-NEXT: Name: astruct +; SYMS64-NEXT: Value (RelocatableAddress): 0x60 +; SYMS64-NEXT: Section: .data +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+27]] +; SYMS64-NEXT: ContainingCsectSymbolIndex: [[#INDX+2]] +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 0 +; SYMS64-NEXT: SymbolType: XTY_LD (0x2) +; SYMS64-NEXT: StorageMappingClass: XMC_RW (0x5) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-NEXT: Index: [[#INDX+28]] +; SYMS64-NEXT: Name: bstruct +; SYMS64-NEXT: Value (RelocatableAddress): 0x70 +; SYMS64-NEXT: Section: .data +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+29]] +; SYMS64-NEXT: ContainingCsectSymbolIndex: [[#INDX+2]] +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 0 +; SYMS64-NEXT: SymbolType: XTY_LD (0x2) +; SYMS64-NEXT: StorageMappingClass: XMC_RW (0x5) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-NEXT: Index: [[#INDX+30]] +; SYMS64-NEXT: Name: a +; SYMS64-NEXT: Value (RelocatableAddress): 0x80 +; SYMS64-NEXT: Section: .bss +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+31]] +; SYMS64-NEXT: SectionLen: 4 +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 2 +; SYMS64-NEXT: SymbolType: XTY_CM (0x3) +; SYMS64-NEXT: StorageMappingClass: XMC_RW (0x5) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-NEXT: Index: [[#INDX+32]] +; SYMS64-NEXT: Name: b +; SYMS64-NEXT: Value (RelocatableAddress): 0x88 +; SYMS64-NEXT: Section: .bss +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+33]] +; SYMS64-NEXT: SectionLen: 8 +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 3 +; SYMS64-NEXT: SymbolType: XTY_CM (0x3) +; SYMS64-NEXT: StorageMappingClass: XMC_RW (0x5) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-NEXT: Index: [[#INDX+34]] +; SYMS64-NEXT: Name: c +; SYMS64-NEXT: Value (RelocatableAddress): 0x90 +; SYMS64-NEXT: Section: .bss +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+35]] +; SYMS64-NEXT: SectionLen: 2 +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 1 +; SYMS64-NEXT: SymbolType: XTY_CM (0x3) +; SYMS64-NEXT: StorageMappingClass: XMC_RW (0x5) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-NEXT: Index: [[#INDX+36]] +; SYMS64-NEXT: Name: d +; SYMS64-NEXT: Value (RelocatableAddress): 0x98 +; SYMS64-NEXT: Section: .bss +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+37]] +; SYMS64-NEXT: SectionLen: 8 +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 3 +; SYMS64-NEXT: SymbolType: XTY_CM (0x3) +; SYMS64-NEXT: StorageMappingClass: XMC_RW (0x5) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-NEXT: Index: [[#INDX+38]] +; SYMS64-NEXT: Name: f +; SYMS64-NEXT: Value (RelocatableAddress): 0xA0 +; SYMS64-NEXT: Section: .bss +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+39]] +; SYMS64-NEXT: SectionLen: 4 +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 2 +; SYMS64-NEXT: SymbolType: XTY_CM (0x3) +; SYMS64-NEXT: StorageMappingClass: XMC_RW (0x5) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-NEXT: Index: [[#INDX+40]] +; SYMS64-NEXT: Name: over_aligned_comm +; SYMS64-NEXT: Value (RelocatableAddress): 0xC0 +; SYMS64-NEXT: Section: .bss +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+41]] +; SYMS64-NEXT: SectionLen: 8 +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 5 +; SYMS64-NEXT: SymbolType: XTY_CM (0x3) +; SYMS64-NEXT: StorageMappingClass: XMC_RW (0x5) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-NEXT: Index: [[#INDX+42]] +; SYMS64-NEXT: Name: array +; SYMS64-NEXT: Value (RelocatableAddress): 0xC8 +; SYMS64-NEXT: Section: .bss +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+43]] +; SYMS64-NEXT: SectionLen: 33 +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 0 +; SYMS64-NEXT: SymbolType: XTY_CM (0x3) +; SYMS64-NEXT: StorageMappingClass: XMC_RW (0x5) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } +; SYMS64: ] diff --git a/llvm/test/CodeGen/PowerPC/aix-xcoff-externL.ll b/llvm/test/CodeGen/PowerPC/aix-xcoff-externL.ll --- a/llvm/test/CodeGen/PowerPC/aix-xcoff-externL.ll +++ b/llvm/test/CodeGen/PowerPC/aix-xcoff-externL.ll @@ -8,10 +8,10 @@ ; RUN: llvm-readobj --symbols %t.o | \ ; RUN: FileCheck --check-prefix=XCOFF32 %s -; RUN: not --crash llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff \ -; RUN: -mcpu=pwr4 -mattr=-altivec -filetype=obj -o %t.o 2>&1 < %s | \ +; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr4 \ +; RUN: -mattr=-altivec -filetype=obj -o %t.o < %s +; RUN: llvm-readobj --symbols %t.o | \ ; RUN: FileCheck --check-prefix=XCOFF64 %s -; XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet. @La = external global i32, align 4 @@ -62,3 +62,40 @@ ; XCOFF32-NEXT: StabSectNum: 0x0 ; XCOFF32-NEXT: } ; XCOFF32-NEXT: } + +; XCOFF64: Index: [[#IND:]]{{.*}}{{[[:space:]] *}}Name: .Lb +; XCOFF64-NEXT: Value (RelocatableAddress): 0x0 +; XCOFF64-NEXT: Section: N_UNDEF +; XCOFF64-NEXT: Type: 0x0 +; XCOFF64-NEXT: StorageClass: C_EXT (0x2) +; XCOFF64-NEXT: NumberOfAuxEntries: 1 +; XCOFF64-NEXT: CSECT Auxiliary Entry { +; XCOFF64-NEXT: Index: [[#IND+1]] +; XCOFF64-NEXT: SectionLen: 0 +; XCOFF64-NEXT: ParameterHashIndex: 0x0 +; XCOFF64-NEXT: TypeChkSectNum: 0x0 +; XCOFF64-NEXT: SymbolAlignmentLog2: 0 +; XCOFF64-NEXT: SymbolType: XTY_ER (0x0) +; XCOFF64-NEXT: StorageMappingClass: XMC_PR (0x0) +; XCOFF64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; XCOFF64-NEXT: } +; XCOFF64-NEXT: } +; XCOFF64-NEXT: Symbol { +; XCOFF64-NEXT: Index: [[#IND+2]] +; XCOFF64-NEXT: Name: La +; XCOFF64-NEXT: Value (RelocatableAddress): 0x0 +; XCOFF64-NEXT: Section: N_UNDEF +; XCOFF64-NEXT: Type: 0x0 +; XCOFF64-NEXT: StorageClass: C_EXT (0x2) +; XCOFF64-NEXT: NumberOfAuxEntries: 1 +; XCOFF64-NEXT: CSECT Auxiliary Entry { +; XCOFF64-NEXT: Index: [[#IND+3]] +; XCOFF64-NEXT: SectionLen: 0 +; XCOFF64-NEXT: ParameterHashIndex: 0x0 +; XCOFF64-NEXT: TypeChkSectNum: 0x0 +; XCOFF64-NEXT: SymbolAlignmentLog2: 0 +; XCOFF64-NEXT: SymbolType: XTY_ER (0x0) +; XCOFF64-NEXT: StorageMappingClass: XMC_UA (0x4) +; XCOFF64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; XCOFF64-NEXT: } +; XCOFF64-NEXT: } diff --git a/llvm/test/CodeGen/PowerPC/aix-xcoff-huge-relocs.ll b/llvm/test/CodeGen/PowerPC/aix-xcoff-huge-relocs.ll --- a/llvm/test/CodeGen/PowerPC/aix-xcoff-huge-relocs.ll +++ b/llvm/test/CodeGen/PowerPC/aix-xcoff-huge-relocs.ll @@ -20,13 +20,14 @@ ; RUN: -mcpu=pwr4 -mattr=-altivec -filetype=obj -o %t.o %t.ll ; RUN: llvm-readobj --section-headers %t.o | FileCheck --check-prefix=XCOFF32 %s -; RUN: not --crash llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff \ -; RUN: -mcpu=pwr4 -mattr=-altivec -filetype=obj -o %t.o %t.overflow.ll 2>&1 | \ -; RUN: FileCheck --check-prefix=XCOFF64 %s -; RUN: not --crash llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff \ -; RUN: -mcpu=pwr4 -mattr=-altivec -filetype=obj -o %t.o %t.ll 2>&1 | \ -; RUN: FileCheck --check-prefix=XCOFF64 %s -; XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet. +; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff \ +; RUN: -mcpu=pwr4 -mattr=-altivec -filetype=obj -o %t.o %t.overflow.ll +; RUN: llvm-readobj --section-headers %t.o | FileCheck --check-prefix=XCOFF64_OVERF %s + +; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff \ +; RUN: -mcpu=pwr4 -mattr=-altivec -filetype=obj -o %t.o %t.ll +; RUN: llvm-readobj --section-headers %t.o | FileCheck --check-prefix=XCOFF64 %s + @c = external global i8, align 1 @arr = global [SIZE x i8*] [MACRO], align 8 @@ -47,3 +48,37 @@ ; XCOFF32-NEXT: } ; XCOFF32-NOT: Name: .ovrflo ; XCOFF32-NOT: Type: STYP_OVRFLO + +; XCOFF64-NOT: Name: .ovrflo +; XCOFF64-NOT: Type: STYP_OVRFLO +; XCOFF64: Section { +; XCOFF64: Name: .data +; XCOFF64-NEXT: PhysicalAddress: 0x0 +; XCOFF64-NEXT: VirtualAddress: 0x0 +; XCOFF64-NEXT: Size: 0x7FFF0 +; XCOFF64-NEXT: RawDataOffset: 0xA8 +; XCOFF64-NEXT: RelocationPointer: 0x80098 +; XCOFF64-NEXT: LineNumberPointer: 0x0 +; XCOFF64-NEXT: NumberOfRelocations: 65534 +; XCOFF64-NEXT: NumberOfLineNumbers: 0 +; XCOFF64-NEXT: Type: STYP_DATA (0x40) +; XCOFF64-NEXT: } +; XCOFF64-NOT: Name: .ovrflo +; XCOFF64-NOT: Type: STYP_OVRFLO + +; XCOFF64_OVERF-NOT: Name: .ovrflo +; XCOFF64_OVERF-NOT: Type: STYP_OVRFLO +; XCOFF64_OVERF: Section { +; XCOFF64_OVERF: Name: .data +; XCOFF64_OVERF-NEXT: PhysicalAddress: 0x0 +; XCOFF64_OVERF-NEXT: VirtualAddress: 0x0 +; XCOFF64_OVERF-NEXT: Size: 0x7FFF8 +; XCOFF64_OVERF-NEXT: RawDataOffset: 0xA8 +; XCOFF64_OVERF-NEXT: RelocationPointer: 0x800A0 +; XCOFF64_OVERF-NEXT: LineNumberPointer: 0x0 +; XCOFF64_OVERF-NEXT: NumberOfRelocations: 65535 +; XCOFF64_OVERF-NEXT: NumberOfLineNumbers: 0 +; XCOFF64_OVERF-NEXT: Type: STYP_DATA (0x40) +; XCOFF64_OVERF-NEXT: } +; XCOFF64_OVERF-NOT: Name: .ovrflo +; XCOFF64_OVERF-NOT: Type: STYP_OVRFLO diff --git a/llvm/test/CodeGen/PowerPC/aix-xcoff-lcomm.ll b/llvm/test/CodeGen/PowerPC/aix-xcoff-lcomm.ll --- a/llvm/test/CodeGen/PowerPC/aix-xcoff-lcomm.ll +++ b/llvm/test/CodeGen/PowerPC/aix-xcoff-lcomm.ll @@ -6,9 +6,10 @@ ; RUN: FileCheck --check-prefix=OBJ %s ; RUN: llvm-readobj --syms %t.o | FileCheck --check-prefix=SYMS %s -; RUN: not --crash llc -mtriple powerpc64-ibm-aix-xcoff -filetype=obj < %s 2>&1 | \ +; RUN: llc -mtriple powerpc64-ibm-aix-xcoff -filetype=obj -o %t.o < %s +; RUN: llvm-readobj --section-headers --file-header %t.o | \ ; RUN: FileCheck --check-prefix=OBJ64 %s -; OBJ64: LLVM ERROR: 64-bit XCOFF object files are not supported yet. +; RUN: llvm-readobj --syms %t.o | FileCheck --check-prefix=SYMS64 %s @a = internal global i32 0, align 4 @b = internal global i64 0, align 8 @@ -110,3 +111,93 @@ ; SYMS-NEXT: } ; SYMS-NEXT: } ; SYMS-NEXT: ] + +; OBJ64: File: {{.*}}aix-xcoff-lcomm.ll.tmp.o +; OBJ64-NEXT: Format: aix5coff64-rs6000 +; OBJ64-NEXT: Arch: powerpc64 +; OBJ64-NEXT: AddressSize: 64bit +; OBJ64-NEXT: FileHeader { +; OBJ64-NEXT: Magic: 0x1F7 +; OBJ64-NEXT: NumberOfSections: 2 +; OBJ64-NEXT: TimeStamp: +; OBJ64-NEXT: SymbolTableOffset: 0xA8 +; OBJ64-NEXT: SymbolTableEntries: 9 +; OBJ64-NEXT: OptionalHeaderSize: 0x0 +; OBJ64-NEXT: Flags: 0x0 +; OBJ64-NEXT: } +; OBJ64-NEXT: Sections [ +; OBJ64: Section {{[{][[:space:]] *}}Index: 2 +; OBJ64-NEXT: Name: .bss +; OBJ64-NEXT: PhysicalAddress: 0x0 +; OBJ64-NEXT: VirtualAddress: 0x0 +; OBJ64-NEXT: Size: 0x14 +; OBJ64-NEXT: RawDataOffset: 0x0 +; OBJ64-NEXT: RelocationPointer: 0x0 +; OBJ64-NEXT: LineNumberPointer: 0x0 +; OBJ64-NEXT: NumberOfRelocations: 0 +; OBJ64-NEXT: NumberOfLineNumbers: 0 +; OBJ64-NEXT: Type: STYP_BSS (0x80) +; OBJ64-NEXT: } +; OBJ64-NEXT: ] + +; SYMS64: File: {{.*}}aix-xcoff-lcomm.ll.tmp.o +; SYMS64-NEXT: Format: aix5coff64-rs6000 +; SYMS64-NEXT: Arch: powerpc64 +; SYMS64-NEXT: AddressSize: 64bit +; SYMS64-NEXT: Symbols [ +; SYMS64: Symbol {{[{][[:space:]] *}}Index: [[#Index:]]{{[[:space:]] *}}Name: a +; SYMS64-NEXT: Value (RelocatableAddress): 0x0 +; SYMS64-NEXT: Section: .bss +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_HIDEXT (0x6B) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#Index + 1]] +; SYMS64-NEXT: SectionLen: 4 +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 2 +; SYMS64-NEXT: SymbolType: XTY_CM (0x3) +; SYMS64-NEXT: StorageMappingClass: XMC_BS (0x9) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } +; SYMS64-NEXT: Symbol { +; SYMS64-NEXT: Index: [[#Index + 2]] +; SYMS64-NEXT: Name: b +; SYMS64-NEXT: Value (RelocatableAddress): 0x8 +; SYMS64-NEXT: Section: .bss +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_HIDEXT (0x6B) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#Index + 3]] +; SYMS64-NEXT: SectionLen: 8 +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 3 +; SYMS64-NEXT: SymbolType: XTY_CM (0x3) +; SYMS64-NEXT: StorageMappingClass: XMC_BS (0x9) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } +; SYMS64-NEXT: Symbol { +; SYMS64-NEXT: Index: [[#Index + 4]] +; SYMS64-NEXT: Name: c +; SYMS64-NEXT: Value (RelocatableAddress): 0x10 +; SYMS64-NEXT: Section: .bss +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_HIDEXT (0x6B) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#Index + 5]] +; SYMS64-NEXT: SectionLen: 2 +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 1 +; SYMS64-NEXT: SymbolType: XTY_CM (0x3) +; SYMS64-NEXT: StorageMappingClass: XMC_BS (0x9) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } +; SYMS64-NEXT: ] diff --git a/llvm/test/CodeGen/PowerPC/aix-xcoff-lower-comm.ll b/llvm/test/CodeGen/PowerPC/aix-xcoff-lower-comm.ll --- a/llvm/test/CodeGen/PowerPC/aix-xcoff-lower-comm.ll +++ b/llvm/test/CodeGen/PowerPC/aix-xcoff-lower-comm.ll @@ -6,10 +6,9 @@ ; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc-ibm-aix-xcoff -data-sections=false -filetype=obj -o %t.o < %s ; RUN: llvm-readobj -r --expand-relocs -t %t.o | FileCheck --check-prefixes=RELOC,SYM %s -; RUN: not --crash llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff \ -; RUN: -data-sections=false -filetype=obj < %s 2>&1 | \ -; RUN: FileCheck --check-prefix=XCOFF64 %s -; XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet. +; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff \ +; RUN: -data-sections=false -filetype=obj -o %t.o < %s +// UNSUPPORTED: powerpc64 @common = common global i32 0, align 4 @pointer = global i32* @common, align 4 diff --git a/llvm/test/CodeGen/PowerPC/aix-xcoff-reloc.ll b/llvm/test/CodeGen/PowerPC/aix-xcoff-reloc.ll --- a/llvm/test/CodeGen/PowerPC/aix-xcoff-reloc.ll +++ b/llvm/test/CodeGen/PowerPC/aix-xcoff-reloc.ll @@ -7,9 +7,9 @@ ; RUN: llvm-objdump -D %t.o | FileCheck --check-prefix=DIS %s ; RUN: llvm-objdump -r %t.o | FileCheck --check-prefix=DIS_REL %s -; RUN: not --crash llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff -mattr=-altivec -data-sections=false -filetype=obj < %s 2>&1 | \ -; RUN: FileCheck --check-prefix=XCOFF64 %s -; XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet. +; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff -mattr=-altivec -data-sections=false -filetype=obj -o %t.o < %s +; RUN: not --crash llvm-objdump -r %t.o 2>&1 | FileCheck --check-prefix=XCOFF64 %s +; XCOFF64: LLVM ERROR: 64-bit support not implemented yet @globalA = global i32 1, align 4 @globalB = global i32 2, align 4 diff --git a/llvm/test/CodeGen/PowerPC/aix-xcoff-rodata.ll b/llvm/test/CodeGen/PowerPC/aix-xcoff-rodata.ll --- a/llvm/test/CodeGen/PowerPC/aix-xcoff-rodata.ll +++ b/llvm/test/CodeGen/PowerPC/aix-xcoff-rodata.ll @@ -9,9 +9,11 @@ ; RUN: llvm-readobj --syms %t.o | FileCheck --check-prefix=SYMS %s ; RUN: llvm-objdump -D %t.o | FileCheck --check-prefix=DIS %s -; RUN: not --crash llc -verify-machineinstrs -mcpu=pwr7 -mtriple powerpc64-ibm-aix-xcoff -data-sections=false -filetype=obj < %s 2>&1 | \ -; RUN: FileCheck --check-prefix=XCOFF64 %s -; XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet. +; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mtriple powerpc64-ibm-aix-xcoff -data-sections=false -filetype=obj -o %t.o < %s +; RUN: llvm-readobj --section-headers --file-header %t.o | \ +; RUN: FileCheck --check-prefix=OBJ64 %s +; RUN: llvm-readobj --syms %t.o | FileCheck --check-prefix=SYMS64 %s +; RUN: llvm-objdump -D %t.o | FileCheck --check-prefix=DIS64 %s @const_ivar = constant i32 35, align 4 @const_llvar = constant i64 36, align 8 @@ -333,3 +335,255 @@ ; DIS-NEXT: 44: 00 00 00 00 ; DIS-NEXT: 48: 40 10 00 00 ; DIS-NEXT: 4c: 00 00 00 00 + +; OBJ64: File: {{.*}}aix-xcoff-rodata.ll.tmp.o +; OBJ64-NEXT: Format: aix5coff64-rs6000 +; OBJ64-NEXT: Arch: powerpc64 +; OBJ64-NEXT: AddressSize: 64bit +; OBJ64-NEXT: FileHeader { +; OBJ64-NEXT: Magic: 0x1F7 +; OBJ64-NEXT: NumberOfSections: 1 +; OBJ64-NEXT: TimeStamp: None (0x0) +; OBJ64-NEXT: SymbolTableOffset: 0xB0 +; OBJ64-NEXT: SymbolTableEntries: 21 +; OBJ64-NEXT: OptionalHeaderSize: 0x0 +; OBJ64-NEXT: Flags: 0x0 +; OBJ64-NEXT: } + +; OBJ64: Sections [ +; OBJ64: Section { +; OBJ64-NEXT: Index: 1 +; OBJ64-NEXT: Name: .text +; OBJ64-NEXT: PhysicalAddress: 0x0 +; OBJ64-NEXT: VirtualAddress: 0x0 +; OBJ64-NEXT: Size: 0x50 +; OBJ64-NEXT: RawDataOffset: 0x60 +; OBJ64-NEXT: RelocationPointer: 0x0 +; OBJ64-NEXT: LineNumberPointer: 0x0 +; OBJ64-NEXT: NumberOfRelocations: 0 +; OBJ64-NEXT: NumberOfLineNumbers: 0 +; OBJ64-NEXT: Type: STYP_TEXT (0x20) +; OBJ64-NEXT: } +; OBJ64-NEXT: ] + + +; SYMS64: File: {{.*}}aix-xcoff-rodata.ll.tmp.o +; SYMS64-NEXT: Format: aix5coff64-rs6000 +; SYMS64-NEXT: Arch: powerpc64 +; SYMS64-NEXT: AddressSize: 64bit +; SYMS64: Symbols [ +; SYMS64: Symbol {{[{][[:space:]] *}}Index: [[#INDX:]]{{[[:space:]] *}}Name: .rodata +; SYMS64-NEXT: Value (RelocatableAddress): 0x0 +; SYMS64-NEXT: Section: .text +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_HIDEXT (0x6B) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+1]] +; SYMS64-NEXT: SectionLen: 80 +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 5 +; SYMS64-NEXT: SymbolType: XTY_SD (0x1) +; SYMS64-NEXT: StorageMappingClass: XMC_RO (0x1) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-NEXT: Index: [[#INDX+2]] +; SYMS64-NEXT: Name: const_ivar +; SYMS64-NEXT: Value (RelocatableAddress): 0x0 +; SYMS64-NEXT: Section: .text +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+3]] +; SYMS64-NEXT: ContainingCsectSymbolIndex: [[#INDX]] +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 0 +; SYMS64-NEXT: SymbolType: XTY_LD (0x2) +; SYMS64-NEXT: StorageMappingClass: XMC_RO (0x1) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-NEXT: Index: [[#INDX+4]] +; SYMS64-NEXT: Name: const_llvar +; SYMS64-NEXT: Value (RelocatableAddress): 0x8 +; SYMS64-NEXT: Section: .text +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+5]] +; SYMS64-NEXT: ContainingCsectSymbolIndex: [[#INDX]] +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 0 +; SYMS64-NEXT: SymbolType: XTY_LD (0x2) +; SYMS64-NEXT: StorageMappingClass: XMC_RO (0x1) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-NEXT: Index: [[#INDX+6]] +; SYMS64-NEXT: Name: const_svar +; SYMS64-NEXT: Value (RelocatableAddress): 0x10 +; SYMS64-NEXT: Section: .text +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+7]] +; SYMS64-NEXT: ContainingCsectSymbolIndex: [[#INDX]] +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 0 +; SYMS64-NEXT: SymbolType: XTY_LD (0x2) +; SYMS64-NEXT: StorageMappingClass: XMC_RO (0x1) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-NEXT: Index: [[#INDX+8]] +; SYMS64-NEXT: Name: const_fvar +; SYMS64-NEXT: Value (RelocatableAddress): 0x14 +; SYMS64-NEXT: Section: .text +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+9]] +; SYMS64-NEXT: ContainingCsectSymbolIndex: [[#INDX]] +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 0 +; SYMS64-NEXT: SymbolType: XTY_LD (0x2) +; SYMS64-NEXT: StorageMappingClass: XMC_RO (0x1) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-NEXT: Index: [[#INDX+10]] +; SYMS64-NEXT: Name: const_dvar +; SYMS64-NEXT: Value (RelocatableAddress): 0x18 +; SYMS64-NEXT: Section: .text +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+11]] +; SYMS64-NEXT: ContainingCsectSymbolIndex: [[#INDX]] +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 0 +; SYMS64-NEXT: SymbolType: XTY_LD (0x2) +; SYMS64-NEXT: StorageMappingClass: XMC_RO (0x1) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-NEXT: Index: [[#INDX+12]] +; SYMS64-NEXT: Name: const_over_aligned +; SYMS64-NEXT: Value (RelocatableAddress): 0x20 +; SYMS64-NEXT: Section: .text +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+13]] +; SYMS64-NEXT: ContainingCsectSymbolIndex: [[#INDX]] +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 0 +; SYMS64-NEXT: SymbolType: XTY_LD (0x2) +; SYMS64-NEXT: StorageMappingClass: XMC_RO (0x1) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-NEXT: Index: [[#INDX+14]] +; SYMS64-NEXT: Name: const_chrarray +; SYMS64-NEXT: Value (RelocatableAddress): 0x28 +; SYMS64-NEXT: Section: .text +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+15]] +; SYMS64-NEXT: ContainingCsectSymbolIndex: [[#INDX]] +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 0 +; SYMS64-NEXT: SymbolType: XTY_LD (0x2) +; SYMS64-NEXT: StorageMappingClass: XMC_RO (0x1) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } + +; SYMS64: Symbol { +; SYMS64-NEXT: Index: [[#INDX+16]] +; SYMS64-NEXT: Name: const_dblarr +; SYMS64-NEXT: Value (RelocatableAddress): 0x30 +; SYMS64-NEXT: Section: .text +; SYMS64-NEXT: Type: 0x0 +; SYMS64-NEXT: StorageClass: C_EXT (0x2) +; SYMS64-NEXT: NumberOfAuxEntries: 1 +; SYMS64-NEXT: CSECT Auxiliary Entry { +; SYMS64-NEXT: Index: [[#INDX+17]] +; SYMS64-NEXT: ContainingCsectSymbolIndex: [[#INDX]] +; SYMS64-NEXT: ParameterHashIndex: 0x0 +; SYMS64-NEXT: TypeChkSectNum: 0x0 +; SYMS64-NEXT: SymbolAlignmentLog2: 0 +; SYMS64-NEXT: SymbolType: XTY_LD (0x2) +; SYMS64-NEXT: StorageMappingClass: XMC_RO (0x1) +; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYMS64-NEXT: } +; SYMS64-NEXT: } +; SYMS64: ] + +; DIS64: Disassembly of section .text: +; DIS64: 00000000 : +; DIS64-NEXT: 0: 00 00 00 23 +; DIS64-NEXT: 4: 00 00 00 00 + +; DIS64: 00000008 : +; DIS64-NEXT: 8: 00 00 00 00 +; DIS64-NEXT: c: 00 00 00 24 + +; DIS64: 00000010 : +; DIS64-NEXT: 10: 00 25 00 00 + +; DIS64: 00000014 : +; DIS64-NEXT: 14: 44 48 00 00 + +; DIS64: 00000018 : +; DIS64-NEXT: 18: 40 8c 20 00 +; DIS64-NEXT: 1c: 00 00 00 00 + +; DIS64: 00000020 : +; DIS64-NEXT: 20: 40 8c 20 00 +; DIS64-NEXT: 24: 00 00 00 00 + +; DIS64: 00000028 : +; DIS64-NEXT: 28: 61 62 63 64 +; DIS64-NEXT: 2c: 00 00 00 00 + +; DIS64: 00000030 : +; DIS64-NEXT: 30: 3f f0 00 00 +; DIS64-NEXT: 34: 00 00 00 00 +; DIS64-NEXT: 38: 40 00 00 00 +; DIS64-NEXT: 3c: 00 00 00 00 +; DIS64-NEXT: 40: 40 08 00 00 +; DIS64-NEXT: 44: 00 00 00 00 +; DIS64-NEXT: 48: 40 10 00 00 +; DIS64-NEXT: 4c: 00 00 00 00 diff --git a/llvm/test/CodeGen/PowerPC/aix-xcoff-toc.ll b/llvm/test/CodeGen/PowerPC/aix-xcoff-toc.ll --- a/llvm/test/CodeGen/PowerPC/aix-xcoff-toc.ll +++ b/llvm/test/CodeGen/PowerPC/aix-xcoff-toc.ll @@ -3,15 +3,15 @@ ; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mattr=-altivec -mtriple powerpc-ibm-aix-xcoff \ ; RUN: -xcoff-traceback-table=false < %s | FileCheck --check-prefixes CHECK,CHECK32 %s ; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mattr=-altivec -mtriple powerpc64-ibm-aix-xcoff \ -; RUN: -xcoff-traceback-table=false < %s 2>&1 | FileCheck --check-prefixes CHECK,CHECK64 %s +; RUN: -xcoff-traceback-table=false < %s | FileCheck --check-prefixes CHECK,CHECK64 %s ; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mattr=-altivec -mtriple powerpc-ibm-aix-xcoff \ ; RUN: --xcoff-traceback-table=false -filetype=obj -o %t.o < %s ; RUN: llvm-readobj --syms %t.o | FileCheck --check-prefix=SYM %s -; RUN: not --crash llc -verify-machineinstrs -mcpu=pwr4 -mattr=-altivec -mtriple powerpc64-ibm-aix-xcoff -filetype=obj -o %t.o 2>&1 \ -; RUN: < %s | FileCheck --check-prefix=XCOFF64 %s -; XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet. +; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mattr=-altivec -mtriple powerpc64-ibm-aix-xcoff \ +; RUN: --xcoff-traceback-table=false -filetype=obj -o %t.o < %s +; RUN: llvm-readobj --syms %t.o | FileCheck --check-prefix=SYM64 %s @a = external global i32, align 4 @b = external global i64, align 8 @@ -359,3 +359,270 @@ ; SYM-NEXT: StabSectNum: 0x0 ; SYM-NEXT: } ; SYM-NEXT: } + +; SYM64: File: {{.*}}aix-xcoff-toc.ll.tmp.o +; SYM64: Symbol {{[{][[:space:]] *}}Index: [[#UNDEF_INDX:]]{{[[:space:]] *}}Name: a +; SYM64-NEXT: Value (RelocatableAddress): 0x0 +; SYM64-NEXT: Section: N_UNDEF +; SYM64-NEXT: Type: 0x0 +; SYM64-NEXT: StorageClass: C_EXT (0x2) +; SYM64-NEXT: NumberOfAuxEntries: 1 +; SYM64-NEXT: CSECT Auxiliary Entry { +; SYM64-NEXT: Index: [[#UNDEF_INDX+1]] +; SYM64-NEXT: SectionLen: 0 +; SYM64-NEXT: ParameterHashIndex: 0x0 +; SYM64-NEXT: TypeChkSectNum: 0x0 +; SYM64-NEXT: SymbolAlignmentLog2: 0 +; SYM64-NEXT: SymbolType: XTY_ER (0x0) +; SYM64-NEXT: StorageMappingClass: XMC_UA (0x4) +; SYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYM64-NEXT: } +; SYM64-NEXT: } +; SYM64-NEXT: Symbol { +; SYM64-NEXT: Index: [[#UNDEF_INDX+2]] +; SYM64-NEXT: Name: b +; SYM64-NEXT: Value (RelocatableAddress): 0x0 +; SYM64-NEXT: Section: N_UNDEF +; SYM64-NEXT: Type: 0x0 +; SYM64-NEXT: StorageClass: C_EXT (0x2) +; SYM64-NEXT: NumberOfAuxEntries: 1 +; SYM64-NEXT: CSECT Auxiliary Entry { +; SYM64-NEXT: Index: [[#UNDEF_INDX+3]] +; SYM64-NEXT: SectionLen: 0 +; SYM64-NEXT: ParameterHashIndex: 0x0 +; SYM64-NEXT: TypeChkSectNum: 0x0 +; SYM64-NEXT: SymbolAlignmentLog2: 0 +; SYM64-NEXT: SymbolType: XTY_ER (0x0) +; SYM64-NEXT: StorageMappingClass: XMC_UA (0x4) +; SYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYM64-NEXT: } +; SYM64-NEXT: } +; SYM64-NEXT: Symbol { +; SYM64-NEXT: Index: [[#UNDEF_INDX+4]] +; SYM64-NEXT: Name: c +; SYM64-NEXT: Value (RelocatableAddress): 0x0 +; SYM64-NEXT: Section: N_UNDEF +; SYM64-NEXT: Type: 0x0 +; SYM64-NEXT: StorageClass: C_EXT (0x2) +; SYM64-NEXT: NumberOfAuxEntries: 1 +; SYM64-NEXT: CSECT Auxiliary Entry { +; SYM64-NEXT: Index: [[#UNDEF_INDX+5]] +; SYM64-NEXT: SectionLen: 0 +; SYM64-NEXT: ParameterHashIndex: 0x0 +; SYM64-NEXT: TypeChkSectNum: 0x0 +; SYM64-NEXT: SymbolAlignmentLog2: 0 +; SYM64-NEXT: SymbolType: XTY_ER (0x0) +; SYM64-NEXT: StorageMappingClass: XMC_UA (0x4) +; SYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYM64-NEXT: } +; SYM64-NEXT: } +; SYM64-NEXT: Symbol { +; SYM64-NEXT: Index: [[#UNDEF_INDX+6]] +; SYM64-NEXT: Name: .foo +; SYM64-NEXT: Value (RelocatableAddress): 0x0 +; SYM64-NEXT: Section: N_UNDEF +; SYM64-NEXT: Type: 0x0 +; SYM64-NEXT: StorageClass: C_EXT (0x2) +; SYM64-NEXT: NumberOfAuxEntries: 1 +; SYM64-NEXT: CSECT Auxiliary Entry { +; SYM64-NEXT: Index: [[#UNDEF_INDX+7]] +; SYM64-NEXT: SectionLen: 0 +; SYM64-NEXT: ParameterHashIndex: 0x0 +; SYM64-NEXT: TypeChkSectNum: 0x0 +; SYM64-NEXT: SymbolAlignmentLog2: 0 +; SYM64-NEXT: SymbolType: XTY_ER (0x0) +; SYM64-NEXT: StorageMappingClass: XMC_PR (0x0) +; SYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYM64-NEXT: } +; SYM64-NEXT: } +; SYM64-NEXT: Symbol { +; SYM64-NEXT: Index: [[#UNDEF_INDX+8]] +; SYM64-NEXT: Name: foo +; SYM64-NEXT: Value (RelocatableAddress): 0x0 +; SYM64-NEXT: Section: N_UNDEF +; SYM64-NEXT: Type: 0x0 +; SYM64-NEXT: StorageClass: C_EXT (0x2) +; SYM64-NEXT: NumberOfAuxEntries: 1 +; SYM64-NEXT: CSECT Auxiliary Entry { +; SYM64-NEXT: Index: [[#UNDEF_INDX+9]] +; SYM64-NEXT: SectionLen: 0 +; SYM64-NEXT: ParameterHashIndex: 0x0 +; SYM64-NEXT: TypeChkSectNum: 0x0 +; SYM64-NEXT: SymbolAlignmentLog2: 0 +; SYM64-NEXT: SymbolType: XTY_ER (0x0) +; SYM64-NEXT: StorageMappingClass: XMC_DS (0xA) +; SYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYM64-NEXT: } +; SYM64-NEXT: } + +; Test TOC entry symbol generation. + +; SYM64: Symbol {{[{][[:space:]] *}}Index: [[#TOC_INDX:]]{{[[:space:]] *}}Name: TOC +; SYM64-NEXT: Value (RelocatableAddress): 0xC0 +; SYM64-NEXT: Section: .data +; SYM64-NEXT: Type: 0x0 +; SYM64-NEXT: StorageClass: C_HIDEXT (0x6B) +; SYM64-NEXT: NumberOfAuxEntries: 1 +; SYM64-NEXT: CSECT Auxiliary Entry { +; SYM64-NEXT: Index: [[#TOC_INDX+1]] +; SYM64-NEXT: SectionLen: 0 +; SYM64-NEXT: ParameterHashIndex: 0x0 +; SYM64-NEXT: TypeChkSectNum: 0x0 +; SYM64-NEXT: SymbolAlignmentLog2: 2 +; SYM64-NEXT: SymbolType: XTY_SD (0x1) +; SYM64-NEXT: StorageMappingClass: XMC_TC0 (0xF) +; SYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYM64-NEXT: } +; SYM64-NEXT: } +; SYM64-NEXT: Symbol { +; SYM64-NEXT: Index: [[#TOC_INDX+2]] +; SYM64-NEXT: Name: a +; SYM64-NEXT: Value (RelocatableAddress): 0xC0 +; SYM64-NEXT: Section: .data +; SYM64-NEXT: Type: 0x0 +; SYM64-NEXT: StorageClass: C_HIDEXT (0x6B) +; SYM64-NEXT: NumberOfAuxEntries: 1 +; SYM64-NEXT: CSECT Auxiliary Entry { +; SYM64-NEXT: Index: [[#TOC_INDX+3]] +; SYM64-NEXT: SectionLen: 8 +; SYM64-NEXT: ParameterHashIndex: 0x0 +; SYM64-NEXT: TypeChkSectNum: 0x0 +; SYM64-NEXT: SymbolAlignmentLog2: 3 +; SYM64-NEXT: SymbolType: XTY_SD (0x1) +; SYM64-NEXT: StorageMappingClass: XMC_TC (0x3) +; SYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYM64-NEXT: } +; SYM64-NEXT: } +; SYM64-NEXT: Symbol { +; SYM64-NEXT: Index: [[#TOC_INDX+4]] +; SYM64-NEXT: Name: b +; SYM64-NEXT: Value (RelocatableAddress): 0xC8 +; SYM64-NEXT: Section: .data +; SYM64-NEXT: Type: 0x0 +; SYM64-NEXT: StorageClass: C_HIDEXT (0x6B) +; SYM64-NEXT: NumberOfAuxEntries: 1 +; SYM64-NEXT: CSECT Auxiliary Entry { +; SYM64-NEXT: Index: [[#TOC_INDX+5]] +; SYM64-NEXT: SectionLen: 8 +; SYM64-NEXT: ParameterHashIndex: 0x0 +; SYM64-NEXT: TypeChkSectNum: 0x0 +; SYM64-NEXT: SymbolAlignmentLog2: 3 +; SYM64-NEXT: SymbolType: XTY_SD (0x1) +; SYM64-NEXT: StorageMappingClass: XMC_TC (0x3) +; SYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYM64-NEXT: } +; SYM64-NEXT: } +; SYM64-NEXT: Symbol { +; SYM64-NEXT: Index: [[#TOC_INDX+6]] +; SYM64-NEXT: Name: c +; SYM64-NEXT: Value (RelocatableAddress): 0xD0 +; SYM64-NEXT: Section: .data +; SYM64-NEXT: Type: 0x0 +; SYM64-NEXT: StorageClass: C_HIDEXT (0x6B) +; SYM64-NEXT: NumberOfAuxEntries: 1 +; SYM64-NEXT: CSECT Auxiliary Entry { +; SYM64-NEXT: Index: [[#TOC_INDX+7]] +; SYM64-NEXT: SectionLen: 8 +; SYM64-NEXT: ParameterHashIndex: 0x0 +; SYM64-NEXT: TypeChkSectNum: 0x0 +; SYM64-NEXT: SymbolAlignmentLog2: 3 +; SYM64-NEXT: SymbolType: XTY_SD (0x1) +; SYM64-NEXT: StorageMappingClass: XMC_TC (0x3) +; SYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYM64-NEXT: } +; SYM64-NEXT: } +; SYM64-NEXT: Symbol { +; SYM64-NEXT: Index: [[#TOC_INDX+8]] +; SYM64-NEXT: Name: globa +; SYM64-NEXT: Value (RelocatableAddress): 0xD8 +; SYM64-NEXT: Section: .data +; SYM64-NEXT: Type: 0x0 +; SYM64-NEXT: StorageClass: C_HIDEXT (0x6B) +; SYM64-NEXT: NumberOfAuxEntries: 1 +; SYM64-NEXT: CSECT Auxiliary Entry { +; SYM64-NEXT: Index: [[#TOC_INDX+9]] +; SYM64-NEXT: SectionLen: 8 +; SYM64-NEXT: ParameterHashIndex: 0x0 +; SYM64-NEXT: TypeChkSectNum: 0x0 +; SYM64-NEXT: SymbolAlignmentLog2: 3 +; SYM64-NEXT: SymbolType: XTY_SD (0x1) +; SYM64-NEXT: StorageMappingClass: XMC_TC (0x3) +; SYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYM64-NEXT: } +; SYM64-NEXT: } +; SYM64-NEXT: Symbol { +; SYM64-NEXT: Index: [[#TOC_INDX+10]] +; SYM64-NEXT: Name: ptr +; SYM64-NEXT: Value (RelocatableAddress): 0xE0 +; SYM64-NEXT: Section: .data +; SYM64-NEXT: Type: 0x0 +; SYM64-NEXT: StorageClass: C_HIDEXT (0x6B) +; SYM64-NEXT: NumberOfAuxEntries: 1 +; SYM64-NEXT: CSECT Auxiliary Entry { +; SYM64-NEXT: Index: [[#TOC_INDX+11]] +; SYM64-NEXT: SectionLen: 8 +; SYM64-NEXT: ParameterHashIndex: 0x0 +; SYM64-NEXT: TypeChkSectNum: 0x0 +; SYM64-NEXT: SymbolAlignmentLog2: 3 +; SYM64-NEXT: SymbolType: XTY_SD (0x1) +; SYM64-NEXT: StorageMappingClass: XMC_TC (0x3) +; SYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYM64-NEXT: } +; SYM64-NEXT: } +; SYM64-NEXT: Symbol { +; SYM64-NEXT: Index: [[#TOC_INDX+12]] +; SYM64-NEXT: Name: bar +; SYM64-NEXT: Value (RelocatableAddress): 0xE8 +; SYM64-NEXT: Section: .data +; SYM64-NEXT: Type: 0x0 +; SYM64-NEXT: StorageClass: C_HIDEXT (0x6B) +; SYM64-NEXT: NumberOfAuxEntries: 1 +; SYM64-NEXT: CSECT Auxiliary Entry { +; SYM64-NEXT: Index: [[#TOC_INDX+13]] +; SYM64-NEXT: SectionLen: 8 +; SYM64-NEXT: ParameterHashIndex: 0x0 +; SYM64-NEXT: TypeChkSectNum: 0x0 +; SYM64-NEXT: SymbolAlignmentLog2: 3 +; SYM64-NEXT: SymbolType: XTY_SD (0x1) +; SYM64-NEXT: StorageMappingClass: XMC_TC (0x3) +; SYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYM64-NEXT: } +; SYM64-NEXT: } +; SYM64-NEXT: Symbol { +; SYM64-NEXT: Index: [[#TOC_INDX+14]] +; SYM64-NEXT: Name: foo +; SYM64-NEXT: Value (RelocatableAddress): 0xF0 +; SYM64-NEXT: Section: .data +; SYM64-NEXT: Type: 0x0 +; SYM64-NEXT: StorageClass: C_HIDEXT (0x6B) +; SYM64-NEXT: NumberOfAuxEntries: 1 +; SYM64-NEXT: CSECT Auxiliary Entry { +; SYM64-NEXT: Index: [[#TOC_INDX+15]] +; SYM64-NEXT: SectionLen: 8 +; SYM64-NEXT: ParameterHashIndex: 0x0 +; SYM64-NEXT: TypeChkSectNum: 0x0 +; SYM64-NEXT: SymbolAlignmentLog2: 3 +; SYM64-NEXT: SymbolType: XTY_SD (0x1) +; SYM64-NEXT: StorageMappingClass: XMC_TC (0x3) +; SYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYM64-NEXT: } +; SYM64-NEXT: } +; SYM64-NEXT: Symbol { +; SYM64-NEXT: Index: [[#TOC_INDX+16]] +; SYM64-NEXT: Name: foobar +; SYM64-NEXT: Value (RelocatableAddress): 0xF8 +; SYM64-NEXT: Section: .data +; SYM64-NEXT: Type: 0x0 +; SYM64-NEXT: StorageClass: C_HIDEXT (0x6B) +; SYM64-NEXT: NumberOfAuxEntries: 1 +; SYM64-NEXT: CSECT Auxiliary Entry { +; SYM64-NEXT: Index: [[#TOC_INDX+17]] +; SYM64-NEXT: SectionLen: 8 +; SYM64-NEXT: ParameterHashIndex: 0x0 +; SYM64-NEXT: TypeChkSectNum: 0x0 +; SYM64-NEXT: SymbolAlignmentLog2: 3 +; SYM64-NEXT: SymbolType: XTY_SD (0x1) +; SYM64-NEXT: StorageMappingClass: XMC_TC (0x3) +; SYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; SYM64-NEXT: } +; SYM64-NEXT: }