[llvm] a081868 - [AIX][XCOFF] emit symbol visibility for xcoff object file.
via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 21 08:01:33 PDT 2020
Author: diggerlin
Date: 2020-08-21T11:00:56-04:00
New Revision: a0818689213234d5a078641432d10eccccf61a13
URL: https://github.com/llvm/llvm-project/commit/a0818689213234d5a078641432d10eccccf61a13
DIFF: https://github.com/llvm/llvm-project/commit/a0818689213234d5a078641432d10eccccf61a13.diff
LOG: [AIX][XCOFF] emit symbol visibility for xcoff object file.
SUMMARY:
Reviewers: Jason liu
Differential Revision: https://reviews.llvm.org/D84265
Added:
Modified:
llvm/include/llvm/MC/MCSectionXCOFF.h
llvm/lib/MC/XCOFFObjectWriter.cpp
llvm/test/CodeGen/PowerPC/aix-xcoff-visibility.ll
Removed:
################################################################################
diff --git a/llvm/include/llvm/MC/MCSectionXCOFF.h b/llvm/include/llvm/MC/MCSectionXCOFF.h
index 4ad9aa76a210..babb2dcb24d1 100644
--- a/llvm/include/llvm/MC/MCSectionXCOFF.h
+++ b/llvm/include/llvm/MC/MCSectionXCOFF.h
@@ -66,6 +66,11 @@ class MCSectionXCOFF final : public MCSection {
XCOFF::StorageClass getStorageClass() const {
return QualName->getStorageClass();
}
+
+ XCOFF::VisibilityType getVisibilityType() const {
+ return QualName->getVisibilityType();
+ }
+
XCOFF::SymbolType getCSectType() const { return Type; }
MCSymbolXCOFF *getQualNameSymbol() const { return QualName; }
diff --git a/llvm/lib/MC/XCOFFObjectWriter.cpp b/llvm/lib/MC/XCOFFObjectWriter.cpp
index 0dabdc9777d6..d6565f2a4378 100644
--- a/llvm/lib/MC/XCOFFObjectWriter.cpp
+++ b/llvm/lib/MC/XCOFFObjectWriter.cpp
@@ -68,6 +68,11 @@ struct Symbol {
XCOFF::StorageClass getStorageClass() const {
return MCSym->getStorageClass();
}
+
+ XCOFF::VisibilityType getVisibilityType() const {
+ return MCSym->getVisibilityType();
+ }
+
StringRef getSymbolTableName() const { return MCSym->getSymbolTableName(); }
Symbol(const MCSymbolXCOFF *MCSym) : MCSym(MCSym), SymbolTableIndex(-1) {}
};
@@ -561,13 +566,12 @@ void XCOFFObjectWriter::writeSymbolTableEntryForCsectMemberLabel(
W.write<uint32_t>(CSectionRef.Address + SymbolOffset);
W.write<int16_t>(SectionIndex);
// Basic/Derived type. See the description of the n_type field for symbol
- // table entries for a detailed description. Since we don't yet support
- // visibility, and all other bits are either optionally set or reserved, this
- // is always zero.
- // TODO FIXME How to assert a symbol's visibilty is default?
+ // table entries for a detailed description. Since we support visibility, and
+ // all other bits are either optionally set or reserved, we only set bits 0-3
+ // for symbol's visibility and leave other bits to zero.
// TODO Set the function indicator (bit 10, 0x0020) for functions
// when debugging is enabled.
- W.write<uint16_t>(0);
+ W.write<uint16_t>(SymbolRef.getVisibilityType());
W.write<uint8_t>(SymbolRef.getStorageClass());
// Always 1 aux entry for now.
W.write<uint8_t>(1);
@@ -598,13 +602,12 @@ void XCOFFObjectWriter::writeSymbolTableEntryForControlSection(
// n_scnum
W.write<int16_t>(SectionIndex);
// Basic/Derived type. See the description of the n_type field for symbol
- // table entries for a detailed description. Since we don't yet support
- // visibility, and all other bits are either optionally set or reserved, this
- // is always zero.
- // TODO FIXME How to assert a symbol's visibilty is default?
+ // table entries for a detailed description. Since we support visibility, and
+ // all other bits are either optionally set or reserved, we only set bits 0-3
+ // for symbol's visibility and leave other bits to zero.
// TODO Set the function indicator (bit 10, 0x0020) for functions
// when debugging is enabled.
- W.write<uint16_t>(0);
+ W.write<uint16_t>(CSectionRef.MCCsect->getVisibilityType());
// n_sclass
W.write<uint8_t>(StorageClass);
// Always 1 aux entry for now.
diff --git a/llvm/test/CodeGen/PowerPC/aix-xcoff-visibility.ll b/llvm/test/CodeGen/PowerPC/aix-xcoff-visibility.ll
index 04c2e0cfe22b..42bdf5d22a2a 100644
--- a/llvm/test/CodeGen/PowerPC/aix-xcoff-visibility.ll
+++ b/llvm/test/CodeGen/PowerPC/aix-xcoff-visibility.ll
@@ -3,6 +3,16 @@
; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr4 -mattr=-altivec < %s |\
; RUN: FileCheck %s
+; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 \
+; RUN: -mattr=-altivec -filetype=obj -o %t.o < %s
+; 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: FileCheck --check-prefix=XCOFF64 %s
+; XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet.
+
@b = global i32 0, align 4
@b_h = hidden global i32 0, align 4
@@ -56,3 +66,446 @@ declare hidden i32 @bar_h(i32*)
; CHECK: .weak zoo_weak_extern_h[DS],hidden
; CHECK: .extern .bar_h[PR],hidden
; CHECK: .extern bar_h[DS],hidden
+
+; XCOFF32: Symbols [
+; XCOFF32-NEXT: Symbol {
+; XCOFF32-NEXT: Index: [[#Index:]]
+; XCOFF32-NEXT: Name: .bar_h
+; XCOFF32-NEXT: Value (RelocatableAddress): 0x0
+; XCOFF32-NEXT: Section: N_UNDEF
+; XCOFF32-NEXT: Type: 0x2000
+; XCOFF32-NEXT: StorageClass: C_EXT (0x2)
+; XCOFF32-NEXT: NumberOfAuxEntries: 1
+; XCOFF32-NEXT: CSECT Auxiliary Entry {
+; XCOFF32-NEXT: Index: [[#Index+1]]
+; XCOFF32-NEXT: SectionLen: 0
+; XCOFF32-NEXT: ParameterHashIndex: 0x0
+; XCOFF32-NEXT: TypeChkSectNum: 0x0
+; XCOFF32-NEXT: SymbolAlignmentLog2: 0
+; XCOFF32-NEXT: SymbolType: XTY_ER (0x0)
+; XCOFF32-NEXT: StorageMappingClass: XMC_PR (0x0)
+; XCOFF32-NEXT: StabInfoIndex: 0x0
+; XCOFF32-NEXT: StabSectNum: 0x0
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: Symbol {
+; XCOFF32-NEXT: Index: [[#Index+2]]
+; XCOFF32-NEXT: Name: zoo_weak_extern_h
+; XCOFF32-NEXT: Value (RelocatableAddress): 0x0
+; XCOFF32-NEXT: Section: N_UNDEF
+; XCOFF32-NEXT: Type: 0x2000
+; XCOFF32-NEXT: StorageClass: C_WEAKEXT (0x6F)
+; XCOFF32-NEXT: NumberOfAuxEntries: 1
+; XCOFF32-NEXT: CSECT Auxiliary Entry {
+; XCOFF32-NEXT: Index: [[#Index+3]]
+; XCOFF32-NEXT: SectionLen: 0
+; XCOFF32-NEXT: ParameterHashIndex: 0x0
+; XCOFF32-NEXT: TypeChkSectNum: 0x0
+; XCOFF32-NEXT: SymbolAlignmentLog2: 0
+; XCOFF32-NEXT: SymbolType: XTY_ER (0x0)
+; XCOFF32-NEXT: StorageMappingClass: XMC_DS (0xA)
+; XCOFF32-NEXT: StabInfoIndex: 0x0
+; XCOFF32-NEXT: StabSectNum: 0x0
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: Symbol {
+; XCOFF32-NEXT: Index: [[#Index+4]]
+; XCOFF32-NEXT: Name: .zoo_weak_extern_h
+; XCOFF32-NEXT: Value (RelocatableAddress): 0x0
+; XCOFF32-NEXT: Section: N_UNDEF
+; XCOFF32-NEXT: Type: 0x2000
+; XCOFF32-NEXT: StorageClass: C_WEAKEXT (0x6F)
+; XCOFF32-NEXT: NumberOfAuxEntries: 1
+; XCOFF32-NEXT: CSECT Auxiliary Entry {
+; XCOFF32-NEXT: Index: [[#Index+5]]
+; XCOFF32-NEXT: SectionLen: 0
+; XCOFF32-NEXT: ParameterHashIndex: 0x0
+; XCOFF32-NEXT: TypeChkSectNum: 0x0
+; XCOFF32-NEXT: SymbolAlignmentLog2: 0
+; XCOFF32-NEXT: SymbolType: XTY_ER (0x0)
+; XCOFF32-NEXT: StorageMappingClass: XMC_PR (0x0)
+; XCOFF32-NEXT: StabInfoIndex: 0x0
+; XCOFF32-NEXT: StabSectNum: 0x0
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: Symbol {
+; XCOFF32-NEXT: Index: [[#Index+6]]
+; XCOFF32-NEXT: Name: bar_h
+; XCOFF32-NEXT: Value (RelocatableAddress): 0x0
+; XCOFF32-NEXT: Section: N_UNDEF
+; XCOFF32-NEXT: Type: 0x2000
+; XCOFF32-NEXT: StorageClass: C_EXT (0x2)
+; XCOFF32-NEXT: NumberOfAuxEntries: 1
+; XCOFF32-NEXT: CSECT Auxiliary Entry {
+; XCOFF32-NEXT: Index: [[#Index+7]]
+; XCOFF32-NEXT: SectionLen: 0
+; XCOFF32-NEXT: ParameterHashIndex: 0x0
+; XCOFF32-NEXT: TypeChkSectNum: 0x0
+; XCOFF32-NEXT: SymbolAlignmentLog2: 0
+; XCOFF32-NEXT: SymbolType: XTY_ER (0x0)
+; XCOFF32-NEXT: StorageMappingClass: XMC_DS (0xA)
+; XCOFF32-NEXT: StabInfoIndex: 0x0
+; XCOFF32-NEXT: StabSectNum: 0x0
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: Symbol {
+; XCOFF32-NEXT: Index: [[#Index+8]]
+; XCOFF32-NEXT: Name: .text
+; XCOFF32-NEXT: Value (RelocatableAddress): 0x0
+; XCOFF32-NEXT: Section: .text
+; XCOFF32-NEXT: Type: 0x0
+; XCOFF32-NEXT: StorageClass: C_HIDEXT (0x6B)
+; XCOFF32-NEXT: NumberOfAuxEntries: 1
+; XCOFF32-NEXT: CSECT Auxiliary Entry {
+; XCOFF32-NEXT: Index: [[#Index+9]]
+; XCOFF32-NEXT: SectionLen: 152
+; XCOFF32-NEXT: ParameterHashIndex: 0x0
+; XCOFF32-NEXT: TypeChkSectNum: 0x0
+; XCOFF32-NEXT: SymbolAlignmentLog2: 4
+; XCOFF32-NEXT: SymbolType: XTY_SD (0x1)
+; XCOFF32-NEXT: StorageMappingClass: XMC_PR (0x0)
+; XCOFF32-NEXT: StabInfoIndex: 0x0
+; XCOFF32-NEXT: StabSectNum: 0x0
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: Symbol {
+; XCOFF32-NEXT: Index: [[#Index+10]]
+; XCOFF32-NEXT: Name: .foo
+; XCOFF32-NEXT: Value (RelocatableAddress): 0x0
+; XCOFF32-NEXT: Section: .text
+; XCOFF32-NEXT: Type: 0x0
+; XCOFF32-NEXT: StorageClass: C_EXT (0x2)
+; XCOFF32-NEXT: NumberOfAuxEntries: 1
+; XCOFF32-NEXT: CSECT Auxiliary Entry {
+; XCOFF32-NEXT: Index: [[#Index+11]]
+; XCOFF32-NEXT: ContainingCsectSymbolIndex: 8
+; XCOFF32-NEXT: ParameterHashIndex: 0x0
+; XCOFF32-NEXT: TypeChkSectNum: 0x0
+; XCOFF32-NEXT: SymbolAlignmentLog2: 0
+; XCOFF32-NEXT: SymbolType: XTY_LD (0x2)
+; XCOFF32-NEXT: StorageMappingClass: XMC_PR (0x0)
+; XCOFF32-NEXT: StabInfoIndex: 0x0
+; XCOFF32-NEXT: StabSectNum: 0x0
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: Symbol {
+; XCOFF32-NEXT: Index: [[#Index+12]]
+; XCOFF32-NEXT: Name: .foo_h
+; XCOFF32-NEXT: Value (RelocatableAddress): 0x10
+; XCOFF32-NEXT: Section: .text
+; XCOFF32-NEXT: Type: 0x2000
+; XCOFF32-NEXT: StorageClass: C_EXT (0x2)
+; XCOFF32-NEXT: NumberOfAuxEntries: 1
+; XCOFF32-NEXT: CSECT Auxiliary Entry {
+; XCOFF32-NEXT: Index: [[#Index+13]]
+; XCOFF32-NEXT: ContainingCsectSymbolIndex: 8
+; XCOFF32-NEXT: ParameterHashIndex: 0x0
+; XCOFF32-NEXT: TypeChkSectNum: 0x0
+; XCOFF32-NEXT: SymbolAlignmentLog2: 0
+; XCOFF32-NEXT: SymbolType: XTY_LD (0x2)
+; XCOFF32-NEXT: StorageMappingClass: XMC_PR (0x0)
+; XCOFF32-NEXT: StabInfoIndex: 0x0
+; XCOFF32-NEXT: StabSectNum: 0x0
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: Symbol {
+; XCOFF32-NEXT: Index: [[#Index+14]]
+; XCOFF32-NEXT: Name: .foo_protected
+; XCOFF32-NEXT: Value (RelocatableAddress): 0x20
+; XCOFF32-NEXT: Section: .text
+; XCOFF32-NEXT: Type: 0x3000
+; XCOFF32-NEXT: StorageClass: C_EXT (0x2)
+; XCOFF32-NEXT: NumberOfAuxEntries: 1
+; XCOFF32-NEXT: CSECT Auxiliary Entry {
+; XCOFF32-NEXT: Index: [[#Index+15]]
+; XCOFF32-NEXT: ContainingCsectSymbolIndex: 8
+; XCOFF32-NEXT: ParameterHashIndex: 0x0
+; XCOFF32-NEXT: TypeChkSectNum: 0x0
+; XCOFF32-NEXT: SymbolAlignmentLog2: 0
+; XCOFF32-NEXT: SymbolType: XTY_LD (0x2)
+; XCOFF32-NEXT: StorageMappingClass: XMC_PR (0x0)
+; XCOFF32-NEXT: StabInfoIndex: 0x0
+; XCOFF32-NEXT: StabSectNum: 0x0
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: Symbol {
+; XCOFF32-NEXT: Index: [[#Index+16]]
+; XCOFF32-NEXT: Name: .foo_weak_h
+; XCOFF32-NEXT: Value (RelocatableAddress): 0x30
+; XCOFF32-NEXT: Section: .text
+; XCOFF32-NEXT: Type: 0x2000
+; XCOFF32-NEXT: StorageClass: C_WEAKEXT (0x6F)
+; XCOFF32-NEXT: NumberOfAuxEntries: 1
+; XCOFF32-NEXT: CSECT Auxiliary Entry {
+; XCOFF32-NEXT: Index: [[#Index+17]]
+; XCOFF32-NEXT: ContainingCsectSymbolIndex: 8
+; XCOFF32-NEXT: ParameterHashIndex: 0x0
+; XCOFF32-NEXT: TypeChkSectNum: 0x0
+; XCOFF32-NEXT: SymbolAlignmentLog2: 0
+; XCOFF32-NEXT: SymbolType: XTY_LD (0x2)
+; XCOFF32-NEXT: StorageMappingClass: XMC_PR (0x0)
+; XCOFF32-NEXT: StabInfoIndex: 0x0
+; XCOFF32-NEXT: StabSectNum: 0x0
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: Symbol {
+; XCOFF32-NEXT: Index: [[#Index+18]]
+; XCOFF32-NEXT: Name: .main
+; XCOFF32-NEXT: Value (RelocatableAddress): 0x40
+; XCOFF32-NEXT: Section: .text
+; XCOFF32-NEXT: Type: 0x0
+; XCOFF32-NEXT: StorageClass: C_EXT (0x2)
+; XCOFF32-NEXT: NumberOfAuxEntries: 1
+; XCOFF32-NEXT: CSECT Auxiliary Entry {
+; XCOFF32-NEXT: Index: [[#Index+19]]
+; XCOFF32-NEXT: ContainingCsectSymbolIndex: 8
+; XCOFF32-NEXT: ParameterHashIndex: 0x0
+; XCOFF32-NEXT: TypeChkSectNum: 0x0
+; XCOFF32-NEXT: SymbolAlignmentLog2: 0
+; XCOFF32-NEXT: SymbolType: XTY_LD (0x2)
+; XCOFF32-NEXT: StorageMappingClass: XMC_PR (0x0)
+; XCOFF32-NEXT: StabInfoIndex: 0x0
+; XCOFF32-NEXT: StabSectNum: 0x0
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: Symbol {
+; XCOFF32-NEXT: Index: [[#Index+20]]
+; XCOFF32-NEXT: Name: .data
+; XCOFF32-NEXT: Value (RelocatableAddress): 0x98
+; XCOFF32-NEXT: Section: .data
+; XCOFF32-NEXT: Type: 0x0
+; XCOFF32-NEXT: StorageClass: C_HIDEXT (0x6B)
+; XCOFF32-NEXT: NumberOfAuxEntries: 1
+; XCOFF32-NEXT: CSECT Auxiliary Entry {
+; XCOFF32-NEXT: Index: [[#Index+21]]
+; XCOFF32-NEXT: SectionLen: 12
+; XCOFF32-NEXT: ParameterHashIndex: 0x0
+; XCOFF32-NEXT: TypeChkSectNum: 0x0
+; XCOFF32-NEXT: SymbolAlignmentLog2: 2
+; XCOFF32-NEXT: SymbolType: XTY_SD (0x1)
+; XCOFF32-NEXT: StorageMappingClass: XMC_RW (0x5)
+; XCOFF32-NEXT: StabInfoIndex: 0x0
+; XCOFF32-NEXT: StabSectNum: 0x0
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: Symbol {
+; XCOFF32-NEXT: Index: [[#Index+22]]
+; XCOFF32-NEXT: Name: b
+; XCOFF32-NEXT: Value (RelocatableAddress): 0x98
+; XCOFF32-NEXT: Section: .data
+; XCOFF32-NEXT: Type: 0x0
+; XCOFF32-NEXT: StorageClass: C_EXT (0x2)
+; XCOFF32-NEXT: NumberOfAuxEntries: 1
+; XCOFF32-NEXT: CSECT Auxiliary Entry {
+; XCOFF32-NEXT: Index: [[#Index+23]]
+; XCOFF32-NEXT: ContainingCsectSymbolIndex: 20
+; XCOFF32-NEXT: ParameterHashIndex: 0x0
+; XCOFF32-NEXT: TypeChkSectNum: 0x0
+; XCOFF32-NEXT: SymbolAlignmentLog2: 0
+; XCOFF32-NEXT: SymbolType: XTY_LD (0x2)
+; XCOFF32-NEXT: StorageMappingClass: XMC_RW (0x5)
+; XCOFF32-NEXT: StabInfoIndex: 0x0
+; XCOFF32-NEXT: StabSectNum: 0x0
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: Symbol {
+; XCOFF32-NEXT: Index: [[#Index+24]]
+; XCOFF32-NEXT: Name: b_h
+; XCOFF32-NEXT: Value (RelocatableAddress): 0x9C
+; XCOFF32-NEXT: Section: .data
+; XCOFF32-NEXT: Type: 0x2000
+; XCOFF32-NEXT: StorageClass: C_EXT (0x2)
+; XCOFF32-NEXT: NumberOfAuxEntries: 1
+; XCOFF32-NEXT: CSECT Auxiliary Entry {
+; XCOFF32-NEXT: Index: [[#Index+25]]
+; XCOFF32-NEXT: ContainingCsectSymbolIndex: 20
+; XCOFF32-NEXT: ParameterHashIndex: 0x0
+; XCOFF32-NEXT: TypeChkSectNum: 0x0
+; XCOFF32-NEXT: SymbolAlignmentLog2: 0
+; XCOFF32-NEXT: SymbolType: XTY_LD (0x2)
+; XCOFF32-NEXT: StorageMappingClass: XMC_RW (0x5)
+; XCOFF32-NEXT: StabInfoIndex: 0x0
+; XCOFF32-NEXT: StabSectNum: 0x0
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: Symbol {
+; XCOFF32-NEXT: Index: [[#Index+26]]
+; XCOFF32-NEXT: Name: foo_p
+; XCOFF32-NEXT: Value (RelocatableAddress): 0xA0
+; XCOFF32-NEXT: Section: .data
+; XCOFF32-NEXT: Type: 0x0
+; XCOFF32-NEXT: StorageClass: C_EXT (0x2)
+; XCOFF32-NEXT: NumberOfAuxEntries: 1
+; XCOFF32-NEXT: CSECT Auxiliary Entry {
+; XCOFF32-NEXT: Index: [[#Index+27]]
+; XCOFF32-NEXT: ContainingCsectSymbolIndex: 20
+; XCOFF32-NEXT: ParameterHashIndex: 0x0
+; XCOFF32-NEXT: TypeChkSectNum: 0x0
+; XCOFF32-NEXT: SymbolAlignmentLog2: 0
+; XCOFF32-NEXT: SymbolType: XTY_LD (0x2)
+; XCOFF32-NEXT: StorageMappingClass: XMC_RW (0x5)
+; XCOFF32-NEXT: StabInfoIndex: 0x0
+; XCOFF32-NEXT: StabSectNum: 0x0
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: Symbol {
+; XCOFF32-NEXT: Index: [[#Index+28]]
+; XCOFF32-NEXT: Name: foo
+; XCOFF32-NEXT: Value (RelocatableAddress): 0xA4
+; XCOFF32-NEXT: Section: .data
+; XCOFF32-NEXT: Type: 0x0
+; XCOFF32-NEXT: StorageClass: C_EXT (0x2)
+; XCOFF32-NEXT: NumberOfAuxEntries: 1
+; XCOFF32-NEXT: CSECT Auxiliary Entry {
+; XCOFF32-NEXT: Index: [[#Index+29]]
+; XCOFF32-NEXT: SectionLen: 12
+; XCOFF32-NEXT: ParameterHashIndex: 0x0
+; XCOFF32-NEXT: TypeChkSectNum: 0x0
+; XCOFF32-NEXT: SymbolAlignmentLog2: 2
+; XCOFF32-NEXT: SymbolType: XTY_SD (0x1)
+; XCOFF32-NEXT: StorageMappingClass: XMC_DS (0xA)
+; XCOFF32-NEXT: StabInfoIndex: 0x0
+; XCOFF32-NEXT: StabSectNum: 0x0
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: Symbol {
+; XCOFF32-NEXT: Index: [[#Index+30]]
+; XCOFF32-NEXT: Name: foo_h
+; XCOFF32-NEXT: Value (RelocatableAddress): 0xB0
+; XCOFF32-NEXT: Section: .data
+; XCOFF32-NEXT: Type: 0x2000
+; XCOFF32-NEXT: StorageClass: C_EXT (0x2)
+; XCOFF32-NEXT: NumberOfAuxEntries: 1
+; XCOFF32-NEXT: CSECT Auxiliary Entry {
+; XCOFF32-NEXT: Index: [[#Index+31]]
+; XCOFF32-NEXT: SectionLen: 12
+; XCOFF32-NEXT: ParameterHashIndex: 0x0
+; XCOFF32-NEXT: TypeChkSectNum: 0x0
+; XCOFF32-NEXT: SymbolAlignmentLog2: 2
+; XCOFF32-NEXT: SymbolType: XTY_SD (0x1)
+; XCOFF32-NEXT: StorageMappingClass: XMC_DS (0xA)
+; XCOFF32-NEXT: StabInfoIndex: 0x0
+; XCOFF32-NEXT: StabSectNum: 0x0
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: Symbol {
+; XCOFF32-NEXT: Index: [[#Index+32]]
+; XCOFF32-NEXT: Name: foo_protected
+; XCOFF32-NEXT: Value (RelocatableAddress): 0xBC
+; XCOFF32-NEXT: Section: .data
+; XCOFF32-NEXT: Type: 0x3000
+; XCOFF32-NEXT: StorageClass: C_EXT (0x2)
+; XCOFF32-NEXT: NumberOfAuxEntries: 1
+; XCOFF32-NEXT: CSECT Auxiliary Entry {
+; XCOFF32-NEXT: Index: [[#Index+33]]
+; XCOFF32-NEXT: SectionLen: 12
+; XCOFF32-NEXT: ParameterHashIndex: 0x0
+; XCOFF32-NEXT: TypeChkSectNum: 0x0
+; XCOFF32-NEXT: SymbolAlignmentLog2: 2
+; XCOFF32-NEXT: SymbolType: XTY_SD (0x1)
+; XCOFF32-NEXT: StorageMappingClass: XMC_DS (0xA)
+; XCOFF32-NEXT: StabInfoIndex: 0x0
+; XCOFF32-NEXT: StabSectNum: 0x0
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: Symbol {
+; XCOFF32-NEXT: Index: [[#Index+34]]
+; XCOFF32-NEXT: Name: foo_weak_h
+; XCOFF32-NEXT: Value (RelocatableAddress): 0xC8
+; XCOFF32-NEXT: Section: .data
+; XCOFF32-NEXT: Type: 0x2000
+; XCOFF32-NEXT: StorageClass: C_WEAKEXT (0x6F)
+; XCOFF32-NEXT: NumberOfAuxEntries: 1
+; XCOFF32-NEXT: CSECT Auxiliary Entry {
+; XCOFF32-NEXT: Index: [[#Index+35]]
+; XCOFF32-NEXT: SectionLen: 12
+; XCOFF32-NEXT: ParameterHashIndex: 0x0
+; XCOFF32-NEXT: TypeChkSectNum: 0x0
+; XCOFF32-NEXT: SymbolAlignmentLog2: 2
+; XCOFF32-NEXT: SymbolType: XTY_SD (0x1)
+; XCOFF32-NEXT: StorageMappingClass: XMC_DS (0xA)
+; XCOFF32-NEXT: StabInfoIndex: 0x0
+; XCOFF32-NEXT: StabSectNum: 0x0
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: Symbol {
+; XCOFF32-NEXT: Index: [[#Index+36]]
+; XCOFF32-NEXT: Name: main
+; XCOFF32-NEXT: Value (RelocatableAddress): 0xD4
+; XCOFF32-NEXT: Section: .data
+; XCOFF32-NEXT: Type: 0x0
+; XCOFF32-NEXT: StorageClass: C_EXT (0x2)
+; XCOFF32-NEXT: NumberOfAuxEntries: 1
+; XCOFF32-NEXT: CSECT Auxiliary Entry {
+; XCOFF32-NEXT: Index: [[#Index+37]]
+; XCOFF32-NEXT: SectionLen: 12
+; XCOFF32-NEXT: ParameterHashIndex: 0x0
+; XCOFF32-NEXT: TypeChkSectNum: 0x0
+; XCOFF32-NEXT: SymbolAlignmentLog2: 2
+; XCOFF32-NEXT: SymbolType: XTY_SD (0x1)
+; XCOFF32-NEXT: StorageMappingClass: XMC_DS (0xA)
+; XCOFF32-NEXT: StabInfoIndex: 0x0
+; XCOFF32-NEXT: StabSectNum: 0x0
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: Symbol {
+; XCOFF32-NEXT: Index: [[#Index+38]]
+; XCOFF32-NEXT: Name: TOC
+; XCOFF32-NEXT: Value (RelocatableAddress): 0xE0
+; XCOFF32-NEXT: Section: .data
+; XCOFF32-NEXT: Type: 0x0
+; XCOFF32-NEXT: StorageClass: C_HIDEXT (0x6B)
+; XCOFF32-NEXT: NumberOfAuxEntries: 1
+; XCOFF32-NEXT: CSECT Auxiliary Entry {
+; XCOFF32-NEXT: Index: [[#Index+39]]
+; XCOFF32-NEXT: SectionLen: 0
+; XCOFF32-NEXT: ParameterHashIndex: 0x0
+; XCOFF32-NEXT: TypeChkSectNum: 0x0
+; XCOFF32-NEXT: SymbolAlignmentLog2: 2
+; XCOFF32-NEXT: SymbolType: XTY_SD (0x1)
+; XCOFF32-NEXT: StorageMappingClass: XMC_TC0 (0xF)
+; XCOFF32-NEXT: StabInfoIndex: 0x0
+; XCOFF32-NEXT: StabSectNum: 0x0
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: Symbol {
+; XCOFF32-NEXT: Index: [[#Index+40]]
+; XCOFF32-NEXT: Name: b_h
+; XCOFF32-NEXT: Value (RelocatableAddress): 0xE0
+; XCOFF32-NEXT: Section: .data
+; XCOFF32-NEXT: Type: 0x0
+; XCOFF32-NEXT: StorageClass: C_HIDEXT (0x6B)
+; XCOFF32-NEXT: NumberOfAuxEntries: 1
+; XCOFF32-NEXT: CSECT Auxiliary Entry {
+; XCOFF32-NEXT: Index: [[#Index+41]]
+; XCOFF32-NEXT: SectionLen: 4
+; XCOFF32-NEXT: ParameterHashIndex: 0x0
+; XCOFF32-NEXT: TypeChkSectNum: 0x0
+; XCOFF32-NEXT: SymbolAlignmentLog2: 2
+; XCOFF32-NEXT: SymbolType: XTY_SD (0x1)
+; XCOFF32-NEXT: StorageMappingClass: XMC_TC (0x3)
+; XCOFF32-NEXT: StabInfoIndex: 0x0
+; XCOFF32-NEXT: StabSectNum: 0x0
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: Symbol {
+; XCOFF32-NEXT: Index: [[#Index+42]]
+; XCOFF32-NEXT: Name: foo_p
+; XCOFF32-NEXT: Value (RelocatableAddress): 0xE4
+; XCOFF32-NEXT: Section: .data
+; XCOFF32-NEXT: Type: 0x0
+; XCOFF32-NEXT: StorageClass: C_HIDEXT (0x6B)
+; XCOFF32-NEXT: NumberOfAuxEntries: 1
+; XCOFF32-NEXT: CSECT Auxiliary Entry {
+; XCOFF32-NEXT: Index: [[#Index+43]]
+; XCOFF32-NEXT: SectionLen: 4
+; XCOFF32-NEXT: ParameterHashIndex: 0x0
+; XCOFF32-NEXT: TypeChkSectNum: 0x0
+; XCOFF32-NEXT: SymbolAlignmentLog2: 2
+; XCOFF32-NEXT: SymbolType: XTY_SD (0x1)
+; XCOFF32-NEXT: StorageMappingClass: XMC_TC (0x3)
+; XCOFF32-NEXT: StabInfoIndex: 0x0
+; XCOFF32-NEXT: StabSectNum: 0x0
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: }
+; XCOFF32-NEXT: ]
More information about the llvm-commits
mailing list