[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