diff --git a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp --- a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp +++ b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp @@ -2292,16 +2292,16 @@ // function entry point. We choose to always return a function descriptor // here. if (const GlobalObject *GO = dyn_cast(GV)) { + if (GO->isDeclarationForLinker()) + return cast(getSectionForExternalReference(GO, TM)) + ->getQualNameSymbol(); + if (const GlobalVariable *GVar = dyn_cast(GV)) if (GVar->hasAttribute("toc-data")) return cast( SectionForGlobal(GVar, SectionKind::getData(), TM)) ->getQualNameSymbol(); - if (GO->isDeclarationForLinker()) - return cast(getSectionForExternalReference(GO, TM)) - ->getQualNameSymbol(); - SectionKind GOKind = getKindForGlobal(GO, TM); if (GOKind.isText()) return cast( @@ -2360,6 +2360,10 @@ if (GO->isThreadLocal()) SMC = XCOFF::XMC_UL; + if (const GlobalVariable *GVar = dyn_cast(GO)) + if (GVar->hasAttribute("toc-data")) + SMC = XCOFF::XMC_TD; + // Externals go into a csect of type ER. return getContext().getXCOFFSection( Name, SectionKind::getMetadata(), 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 @@ -457,13 +457,12 @@ return TOCCsects; case XCOFF::XMC_TC: case XCOFF::XMC_TE: + case XCOFF::XMC_TD: assert(XCOFF::XTY_SD == MCSec->getCSectType() && "Only an initialized csect can contain TC entry."); assert(!TOCCsects.empty() && "We should at least have a TOC-base in this CsectGroup."); return TOCCsects; - case XCOFF::XMC_TD: - report_fatal_error("toc-data not yet supported when writing object files."); default: report_fatal_error("Unhandled mapping of csect to section."); } @@ -608,9 +607,6 @@ const MCSectionXCOFF *SymASec = getContainingCsect(cast(SymA)); - if (SymASec->isCsect() && SymASec->getMappingClass() == XCOFF::XMC_TD) - report_fatal_error("toc-data not yet supported when writing object files."); - assert(SectionMap.find(SymASec) != SectionMap.end() && "Expected containing csect to exist in map."); diff --git a/llvm/test/CodeGen/PowerPC/basic-toc-data-def.ll b/llvm/test/CodeGen/PowerPC/basic-toc-data-def.ll --- a/llvm/test/CodeGen/PowerPC/basic-toc-data-def.ll +++ b/llvm/test/CodeGen/PowerPC/basic-toc-data-def.ll @@ -1,20 +1,97 @@ ; RUN: llc -mtriple powerpc-ibm-aix-xcoff -verify-machineinstrs < %s | FileCheck %s -; RUN: not --crash llc -filetype=obj -mtriple powerpc-ibm-aix-xcoff \ -; RUN: -verify-machineinstrs < %s 2>&1 | \ -; RUN: FileCheck %s --check-prefix=OBJ - ; RUN: llc -mtriple powerpc64-ibm-aix-xcoff -verify-machineinstrs < %s | FileCheck %s -; RUN: not --crash llc -filetype=obj -mtriple powerpc64-ibm-aix-xcoff \ -; RUN: -verify-machineinstrs < %s 2>&1 | \ -; RUN: FileCheck %s --check-prefix=OBJ + +; RUN: llc -filetype=obj -mtriple powerpc-ibm-aix-xcoff -verify-machineinstrs < %s -o %t32.o +; RUN: llvm-readobj %t32.o --syms | FileCheck %s --check-prefix=OBJ32 +; RUN: llc -filetype=obj -mtriple powerpc64-ibm-aix-xcoff -verify-machineinstrs < %s -o %t64.o +; RUN: llvm-readobj %t64.o --syms | FileCheck %s --check-prefix=OBJ64 @i = global i32 55, align 4 #0 attributes #0 = { "toc-data" } + ; CHECK: .toc ; CHECK-NEXT: .csect i[TD],2 ; CHECK-NEXT: .globl i[TD] ; CHECK-NEXT: .align 2 ; CHECK-NEXT: .vbyte 4, 55 -; OBJ: LLVM ERROR: toc-data not yet supported when writing object files. +; OBJ32: Symbol { +; OBJ32: Index: 3 +; OBJ32-NEXT: Name: TOC +; OBJ32-NEXT: Value (RelocatableAddress): 0x0 +; OBJ32-NEXT: Section: .data +; OBJ32-NEXT: Type: 0x0 +; OBJ32-NEXT: StorageClass: C_HIDEXT (0x6B) +; OBJ32-NEXT: NumberOfAuxEntries: 1 +; OBJ32-NEXT: CSECT Auxiliary Entry { +; OBJ32-NEXT: Index: 4 +; OBJ32-NEXT: SectionLen: 0 +; OBJ32-NEXT: ParameterHashIndex: 0x0 +; OBJ32-NEXT: TypeChkSectNum: 0x0 +; OBJ32-NEXT: SymbolAlignmentLog2: 2 +; OBJ32-NEXT: SymbolType: XTY_SD (0x1) +; OBJ32-NEXT: StorageMappingClass: XMC_TC0 (0xF) +; OBJ32-NEXT: StabInfoIndex: 0x0 +; OBJ32-NEXT: StabSectNum: 0x0 +; OBJ32-NEXT: } +; OBJ32-NEXT: } +; OBJ32-NEXT: Symbol { +; OBJ32-NEXT: Index: 5 +; OBJ32-NEXT: Name: i +; OBJ32-NEXT: Value (RelocatableAddress): 0x0 +; OBJ32-NEXT: Section: .data +; OBJ32-NEXT: Type: 0x0 +; OBJ32-NEXT: StorageClass: C_EXT (0x2) +; OBJ32-NEXT: NumberOfAuxEntries: 1 +; OBJ32-NEXT: CSECT Auxiliary Entry { +; OBJ32-NEXT: Index: 6 +; OBJ32-NEXT: SectionLen: 4 +; OBJ32-NEXT: ParameterHashIndex: 0x0 +; OBJ32-NEXT: TypeChkSectNum: 0x0 +; OBJ32-NEXT: SymbolAlignmentLog2: 2 +; OBJ32-NEXT: SymbolType: XTY_SD (0x1) +; OBJ32-NEXT: StorageMappingClass: XMC_TD (0x10) +; OBJ32-NEXT: StabInfoIndex: 0x0 +; OBJ32-NEXT: StabSectNum: 0x0 +; OBJ32-NEXT: } +; OBJ32-NEXT: } + +; OBJ64: Symbol { +; OBJ64: Index: 3 +; OBJ64-NEXT: Name: TOC +; OBJ64-NEXT: Value (RelocatableAddress): 0x0 +; OBJ64-NEXT: Section: .data +; OBJ64-NEXT: Type: 0x0 +; OBJ64-NEXT: StorageClass: C_HIDEXT (0x6B) +; OBJ64-NEXT: NumberOfAuxEntries: 1 +; OBJ64-NEXT: CSECT Auxiliary Entry { +; OBJ64-NEXT: Index: 4 +; OBJ64-NEXT: SectionLen: 0 +; OBJ64-NEXT: ParameterHashIndex: 0x0 +; OBJ64-NEXT: TypeChkSectNum: 0x0 +; OBJ64-NEXT: SymbolAlignmentLog2: 2 +; OBJ64-NEXT: SymbolType: XTY_SD (0x1) +; OBJ64-NEXT: StorageMappingClass: XMC_TC0 (0xF) +; OBJ64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; OBJ64-NEXT: } +; OBJ64-NEXT: } +; OBJ64-NEXT: Symbol { +; OBJ64-NEXT: Index: 5 +; OBJ64-NEXT: Name: i +; OBJ64-NEXT: Value (RelocatableAddress): 0x0 +; OBJ64-NEXT: Section: .data +; OBJ64-NEXT: Type: 0x0 +; OBJ64-NEXT: StorageClass: C_EXT (0x2) +; OBJ64-NEXT: NumberOfAuxEntries: 1 +; OBJ64-NEXT: CSECT Auxiliary Entry { +; OBJ64-NEXT: Index: 6 +; OBJ64-NEXT: SectionLen: 4 +; OBJ64-NEXT: ParameterHashIndex: 0x0 +; OBJ64-NEXT: TypeChkSectNum: 0x0 +; OBJ64-NEXT: SymbolAlignmentLog2: 2 +; OBJ64-NEXT: SymbolType: XTY_SD (0x1) +; OBJ64-NEXT: StorageMappingClass: XMC_TD (0x10) +; OBJ64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; OBJ64-NEXT: } +; OBJ64-NEXT: } diff --git a/llvm/test/CodeGen/PowerPC/basic-toc-data-extern.ll b/llvm/test/CodeGen/PowerPC/basic-toc-data-extern.ll --- a/llvm/test/CodeGen/PowerPC/basic-toc-data-extern.ll +++ b/llvm/test/CodeGen/PowerPC/basic-toc-data-extern.ll @@ -1,12 +1,10 @@ ; RUN: llc -mtriple powerpc-ibm-aix-xcoff -verify-machineinstrs < %s | FileCheck %s -; RUN: not --crash llc -filetype=obj -mtriple powerpc-ibm-aix-xcoff \ -; RUN: -verify-machineinstrs < %s 2>&1 | \ -; RUN: FileCheck %s --check-prefix=OBJ - ; RUN: llc -mtriple powerpc64-ibm-aix-xcoff -verify-machineinstrs < %s | FileCheck %s -; RUN: not --crash llc -filetype=obj -mtriple powerpc64-ibm-aix-xcoff \ -; RUN: -verify-machineinstrs < %s 2>&1 | \ -; RUN: FileCheck %s --check-prefix=OBJ + +; RUN: llc -filetype=obj -mtriple powerpc-ibm-aix-xcoff -verify-machineinstrs < %s -o %t32.o +; RUN: llvm-readobj %t32.o --syms --relocs | FileCheck %s --check-prefix=OBJ32 +; RUN: llc -filetype=obj -mtriple powerpc64-ibm-aix-xcoff -verify-machineinstrs < %s -o %t64.o +; RUN: llvm-readobj %t64.o --syms --relocs | FileCheck %s --check-prefix=OBJ64 @i = external global i32, align 4 #0 @@ -16,10 +14,108 @@ ret ptr @i } +attributes #0 = { "toc-data" } + ; CHECK: la 3, i[TD](2) ; CHECK: .toc ; CHECK-NEXT: .extern i[TD] -; OBJ: LLVM ERROR: toc-data not yet supported when writing object files. +; OBJ32: Relocations [ +; OBJ32-NEXT: Section (index: 1) .text { +; OBJ32-NEXT: 0x2 R_TOC i(1) 0xF +; OBJ32-NEXT: } +; OBJ32-NEXT: Section (index: 2) .data { +; OBJ32-NEXT: 0x20 R_POS .get(5) 0x1F +; OBJ32-NEXT: 0x24 R_POS TOC(9) 0x1F +; OBJ32-NEXT: } +; OBJ32-NEXT: ] -attributes #0 = { "toc-data" } +; OBJ32: Symbol { +; OBJ32: Index: 1 +; OBJ32-NEXT: Name: i +; OBJ32-NEXT: Value (RelocatableAddress): 0x0 +; OBJ32-NEXT: Section: N_UNDEF +; OBJ32-NEXT: Type: 0x0 +; OBJ32-NEXT: StorageClass: C_EXT (0x2) +; OBJ32-NEXT: NumberOfAuxEntries: 1 +; OBJ32-NEXT: CSECT Auxiliary Entry { +; OBJ32-NEXT: Index: 2 +; OBJ32-NEXT: SectionLen: 0 +; OBJ32-NEXT: ParameterHashIndex: 0x0 +; OBJ32-NEXT: TypeChkSectNum: 0x0 +; OBJ32-NEXT: SymbolAlignmentLog2: 0 +; OBJ32-NEXT: SymbolType: XTY_ER (0x0) +; OBJ32-NEXT: StorageMappingClass: XMC_TD (0x10) +; OBJ32-NEXT: StabInfoIndex: 0x0 +; OBJ32-NEXT: StabSectNum: 0x0 +; OBJ32-NEXT: } +; OBJ32-NEXT: } +; OBJ32: Symbol { +; OBJ32: Index: 9 +; OBJ32-NEXT: Name: TOC +; OBJ32-NEXT: Value (RelocatableAddress): 0x2C +; OBJ32-NEXT: Section: .data +; OBJ32-NEXT: Type: 0x0 +; OBJ32-NEXT: StorageClass: C_HIDEXT (0x6B) +; OBJ32-NEXT: NumberOfAuxEntries: 1 +; OBJ32-NEXT: CSECT Auxiliary Entry { +; OBJ32-NEXT: Index: 10 +; OBJ32-NEXT: SectionLen: 0 +; OBJ32-NEXT: ParameterHashIndex: 0x0 +; OBJ32-NEXT: TypeChkSectNum: 0x0 +; OBJ32-NEXT: SymbolAlignmentLog2: 2 +; OBJ32-NEXT: SymbolType: XTY_SD (0x1) +; OBJ32-NEXT: StorageMappingClass: XMC_TC0 (0xF) +; OBJ32-NEXT: StabInfoIndex: 0x0 +; OBJ32-NEXT: StabSectNum: 0x0 +; OBJ32-NEXT: } +; OBJ32-NEXT: } + +; OBJ64: Relocations [ +; OBJ64-NEXT: Section (index: 1) .text { +; OBJ64-NEXT: 0x2 R_TOC i(1) 0xF +; OBJ64-NEXT: } +; OBJ64-NEXT: Section (index: 2) .data { +; OBJ64-NEXT: 0x20 R_POS .get(5) 0x3F +; OBJ64-NEXT: 0x28 R_POS TOC(9) 0x3F +; OBJ64-NEXT: } +; OBJ64-NEXT: ] + +; OBJ64: Symbol { +; OBJ64: Index: 1 +; OBJ64-NEXT: Name: i +; OBJ64-NEXT: Value (RelocatableAddress): 0x0 +; OBJ64-NEXT: Section: N_UNDEF +; OBJ64-NEXT: Type: 0x0 +; OBJ64-NEXT: StorageClass: C_EXT (0x2) +; OBJ64-NEXT: NumberOfAuxEntries: 1 +; OBJ64-NEXT: CSECT Auxiliary Entry { +; OBJ64-NEXT: Index: 2 +; OBJ64-NEXT: SectionLen: 0 +; OBJ64-NEXT: ParameterHashIndex: 0x0 +; OBJ64-NEXT: TypeChkSectNum: 0x0 +; OBJ64-NEXT: SymbolAlignmentLog2: 0 +; OBJ64-NEXT: SymbolType: XTY_ER (0x0) +; OBJ64-NEXT: StorageMappingClass: XMC_TD (0x10) +; OBJ64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; OBJ64-NEXT: } +; OBJ64-NEXT: } +; OBJ64: Symbol { +; OBJ64: Index: 9 +; OBJ64-NEXT: Name: TOC +; OBJ64-NEXT: Value (RelocatableAddress): 0x38 +; OBJ64-NEXT: Section: .data +; OBJ64-NEXT: Type: 0x0 +; OBJ64-NEXT: StorageClass: C_HIDEXT (0x6B) +; OBJ64-NEXT: NumberOfAuxEntries: 1 +; OBJ64-NEXT: CSECT Auxiliary Entry { +; OBJ64-NEXT: Index: 10 +; OBJ64-NEXT: SectionLen: 0 +; OBJ64-NEXT: ParameterHashIndex: 0x0 +; OBJ64-NEXT: TypeChkSectNum: 0x0 +; OBJ64-NEXT: SymbolAlignmentLog2: 2 +; OBJ64-NEXT: SymbolType: XTY_SD (0x1) +; OBJ64-NEXT: StorageMappingClass: XMC_TC0 (0xF) +; OBJ64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; OBJ64-NEXT: } +; OBJ64-NEXT: } diff --git a/llvm/test/CodeGen/PowerPC/toc-data-const.ll b/llvm/test/CodeGen/PowerPC/toc-data-const.ll --- a/llvm/test/CodeGen/PowerPC/toc-data-const.ll +++ b/llvm/test/CodeGen/PowerPC/toc-data-const.ll @@ -1,6 +1,11 @@ ; RUN: llc -mtriple powerpc-ibm-aix-xcoff < %s | FileCheck %s --check-prefix CHECK ; RUN: llc -mtriple powerpc64-ibm-aix-xcoff < %s | FileCheck %s --check-prefix CHECK +; RUN: llc -filetype=obj -mtriple powerpc-ibm-aix-xcoff -verify-machineinstrs < %s -o %t32.o +; RUN: llvm-readobj %t32.o --syms --relocs | FileCheck %s --check-prefix=OBJ32 +; RUN: llc -filetype=obj -mtriple powerpc64-ibm-aix-xcoff -verify-machineinstrs < %s -o %t64.o +; RUN: llvm-readobj %t64.o --syms --relocs | FileCheck %s --check-prefix=OBJ64 + @i1 = external constant i32 #0 @i2 = constant ptr @i1 #0 @@ -13,6 +18,8 @@ ret ptr @i2 } +attributes #0 = { "toc-data" } + ; CHECK: .read: ; CHECK: la 3, i1[TD](2) @@ -23,4 +30,149 @@ ; CHECK: .extern i1[TD] ; CHECK: .csect i2[TD] -attributes #0 = { "toc-data" } +; OBJ32: Relocations [ +; OBJ32-NEXT: Section (index: 1) .text { +; OBJ32-NEXT: 0x2 R_TOC i1(1) 0xF +; OBJ32-NEXT: 0x26 R_TOC i2(15) 0xF +; OBJ32-NEXT: } +; OBJ32-NEXT: Section (index: 2) .data { +; OBJ32-NEXT: 0x44 R_POS .read(5) 0x1F +; OBJ32-NEXT: 0x48 R_POS TOC(13) 0x1F +; OBJ32-NEXT: 0x50 R_POS .retptr(7) 0x1F +; OBJ32-NEXT: 0x54 R_POS TOC(13) 0x1F +; OBJ32-NEXT: 0x5C R_POS i1(1) 0x1F +; OBJ32-NEXT: } +; OBJ32-NEXT: ] + +; OBJ32: Symbol { +; OBJ32: Index: 1 +; OBJ32-NEXT: Name: i1 +; OBJ32-NEXT: Value (RelocatableAddress): 0x0 +; OBJ32-NEXT: Section: N_UNDEF +; OBJ32-NEXT: Type: 0x0 +; OBJ32-NEXT: StorageClass: C_EXT (0x2) +; OBJ32-NEXT: NumberOfAuxEntries: 1 +; OBJ32-NEXT: CSECT Auxiliary Entry { +; OBJ32-NEXT: Index: 2 +; OBJ32-NEXT: SectionLen: 0 +; OBJ32-NEXT: ParameterHashIndex: 0x0 +; OBJ32-NEXT: TypeChkSectNum: 0x0 +; OBJ32-NEXT: SymbolAlignmentLog2: 0 +; OBJ32-NEXT: SymbolType: XTY_ER (0x0) +; OBJ32-NEXT: StorageMappingClass: XMC_TD (0x10) +; OBJ32-NEXT: StabInfoIndex: 0x0 +; OBJ32-NEXT: StabSectNum: 0x0 +; OBJ32-NEXT: } +; OBJ32-NEXT: } +; OBJ32: Symbol { +; OBJ32: Index: 13 +; OBJ32-NEXT: Name: TOC +; OBJ32-NEXT: Value (RelocatableAddress): 0x5C +; OBJ32-NEXT: Section: .data +; OBJ32-NEXT: Type: 0x0 +; OBJ32-NEXT: StorageClass: C_HIDEXT (0x6B) +; OBJ32-NEXT: NumberOfAuxEntries: 1 +; OBJ32-NEXT: CSECT Auxiliary Entry { +; OBJ32-NEXT: Index: 14 +; OBJ32-NEXT: SectionLen: 0 +; OBJ32-NEXT: ParameterHashIndex: 0x0 +; OBJ32-NEXT: TypeChkSectNum: 0x0 +; OBJ32-NEXT: SymbolAlignmentLog2: 2 +; OBJ32-NEXT: SymbolType: XTY_SD (0x1) +; OBJ32-NEXT: StorageMappingClass: XMC_TC0 (0xF) +; OBJ32-NEXT: StabInfoIndex: 0x0 +; OBJ32-NEXT: StabSectNum: 0x0 +; OBJ32-NEXT: } +; OBJ32-NEXT: } +; OBJ32: Symbol { +; OBJ32: Index: 15 +; OBJ32-NEXT: Name: i2 +; OBJ32-NEXT: Value (RelocatableAddress): 0x5C +; OBJ32-NEXT: Section: .data +; OBJ32-NEXT: Type: 0x0 +; OBJ32-NEXT: StorageClass: C_EXT (0x2) +; OBJ32-NEXT: NumberOfAuxEntries: 1 +; OBJ32-NEXT: CSECT Auxiliary Entry { +; OBJ32-NEXT: Index: 16 +; OBJ32-NEXT: SectionLen: 4 +; OBJ32-NEXT: ParameterHashIndex: 0x0 +; OBJ32-NEXT: TypeChkSectNum: 0x0 +; OBJ32-NEXT: SymbolAlignmentLog2: 2 +; OBJ32-NEXT: SymbolType: XTY_SD (0x1) +; OBJ32-NEXT: StorageMappingClass: XMC_TD (0x10) +; OBJ32-NEXT: StabInfoIndex: 0x0 +; OBJ32-NEXT: StabSectNum: 0x0 +; OBJ32-NEXT: } +; OBJ32-NEXT: } + +; OBJ64: Relocations [ +; OBJ64-NEXT: Section (index: 1) .text { +; OBJ64-NEXT: 0x2 R_TOC i1(1) 0xF +; OBJ64-NEXT: 0x26 R_TOC i2(15) 0xF +; OBJ64-NEXT: } +; OBJ64-NEXT: Section (index: 2) .data { +; OBJ64-NEXT: 0x48 R_POS .read(5) 0x3F +; OBJ64-NEXT: 0x50 R_POS TOC(13) 0x3F +; OBJ64-NEXT: 0x60 R_POS .retptr(7) 0x3F +; OBJ64-NEXT: 0x68 R_POS TOC(13) 0x3F +; OBJ64-NEXT: 0x78 R_POS i1(1) 0x3F +; OBJ64-NEXT: } +; OBJ64-NEXT: ] + +; OBJ64: Symbol { +; OBJ64: Index: 1 +; OBJ64-NEXT: Name: i1 +; OBJ64-NEXT: Value (RelocatableAddress): 0x0 +; OBJ64-NEXT: Section: N_UNDEF +; OBJ64-NEXT: Type: 0x0 +; OBJ64-NEXT: StorageClass: C_EXT (0x2) +; OBJ64-NEXT: NumberOfAuxEntries: 1 +; OBJ64-NEXT: CSECT Auxiliary Entry { +; OBJ64-NEXT: Index: 2 +; OBJ64-NEXT: SectionLen: 0 +; OBJ64-NEXT: ParameterHashIndex: 0x0 +; OBJ64-NEXT: TypeChkSectNum: 0x0 +; OBJ64-NEXT: SymbolAlignmentLog2: 0 +; OBJ64-NEXT: SymbolType: XTY_ER (0x0) +; OBJ64-NEXT: StorageMappingClass: XMC_TD (0x10) +; OBJ64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; OBJ64-NEXT: } +; OBJ64-NEXT: } +; OBJ64: Symbol { +; OBJ64: Index: 13 +; OBJ64-NEXT: Name: TOC +; OBJ64-NEXT: Value (RelocatableAddress): 0x78 +; OBJ64-NEXT: Section: .data +; OBJ64-NEXT: Type: 0x0 +; OBJ64-NEXT: StorageClass: C_HIDEXT (0x6B) +; OBJ64-NEXT: NumberOfAuxEntries: 1 +; OBJ64-NEXT: CSECT Auxiliary Entry { +; OBJ64-NEXT: Index: 14 +; OBJ64-NEXT: SectionLen: 0 +; OBJ64-NEXT: ParameterHashIndex: 0x0 +; OBJ64-NEXT: TypeChkSectNum: 0x0 +; OBJ64-NEXT: SymbolAlignmentLog2: 2 +; OBJ64-NEXT: SymbolType: XTY_SD (0x1) +; OBJ64-NEXT: StorageMappingClass: XMC_TC0 (0xF) +; OBJ64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; OBJ64-NEXT: } +; OBJ64-NEXT: } +; OBJ64: Symbol { +; OBJ64: Index: 15 +; OBJ64-NEXT: Name: i2 +; OBJ64-NEXT: Value (RelocatableAddress): 0x78 +; OBJ64-NEXT: Section: .data +; OBJ64-NEXT: Type: 0x0 +; OBJ64-NEXT: StorageClass: C_EXT (0x2) +; OBJ64-NEXT: NumberOfAuxEntries: 1 +; OBJ64-NEXT: CSECT Auxiliary Entry { +; OBJ64-NEXT: Index: 16 +; OBJ64-NEXT: SectionLen: 8 +; OBJ64-NEXT: ParameterHashIndex: 0x0 +; OBJ64-NEXT: TypeChkSectNum: 0x0 +; OBJ64-NEXT: SymbolAlignmentLog2: 3 +; OBJ64-NEXT: SymbolType: XTY_SD (0x1) +; OBJ64-NEXT: StorageMappingClass: XMC_TD (0x10) +; OBJ64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) +; OBJ64-NEXT: } +; OBJ64-NEXT: }