[PATCH] D124392: [AIX][XCOFF] error on emit symbol visibility for XCOFF object file
David Tenty via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 26 16:23:03 PDT 2022
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rGf6d209b3ec4c: [AIX][XCOFF] error on emit symbol visibility for XCOFF object file (authored by daltenty).
Changed prior to commit:
https://reviews.llvm.org/D124392?vs=424910&id=425332#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D124392/new/
https://reviews.llvm.org/D124392
Files:
llvm/include/llvm/MC/MCSectionXCOFF.h
llvm/lib/MC/XCOFFObjectWriter.cpp
llvm/test/CodeGen/PowerPC/aix-xcoff-visibility.ll
Index: llvm/test/CodeGen/PowerPC/aix-xcoff-visibility.ll
===================================================================
--- llvm/test/CodeGen/PowerPC/aix-xcoff-visibility.ll
+++ llvm/test/CodeGen/PowerPC/aix-xcoff-visibility.ll
@@ -3,6 +3,18 @@
; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr4 -mattr=-altivec -data-sections=false < %s |\
; RUN: FileCheck %s
+; RUN: not --crash llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff \
+; RUN: -filetype=obj -o %t.o < %s 2>&1 | \
+; RUN: FileCheck --check-prefix=XCOFF32 %s
+; XCOFF32: LLVM ERROR: Emitting non-zero visibilities is not supported yet.
+
+; RUN: not --crash llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff \
+; RUN: -filetype=obj -o %t.o 2>&1 < %s 2>&1 | \
+; RUN: FileCheck --check-prefix=XCOFF64 %s
+; FIXME: This should check for the visibility error, but we actually fail before
+; that due to unimplemented relocations.
+; XCOFF64: LLVM ERROR: Unimplemented fixup kind.
+
@b = global i32 0, align 4
@b_h = hidden global i32 0, align 4
Index: llvm/lib/MC/XCOFFObjectWriter.cpp
===================================================================
--- llvm/lib/MC/XCOFFObjectWriter.cpp
+++ llvm/lib/MC/XCOFFObjectWriter.cpp
@@ -66,6 +66,10 @@
const MCSymbolXCOFF *const MCSym;
uint32_t SymbolTableIndex;
+ XCOFF::VisibilityType getVisibilityType() const {
+ return MCSym->getVisibilityType();
+ }
+
XCOFF::StorageClass getStorageClass() const {
return MCSym->getStorageClass();
}
@@ -84,6 +88,9 @@
SmallVector<Symbol, 1> Syms;
SmallVector<XCOFFRelocation, 1> Relocations;
StringRef getSymbolTableName() const { return MCSec->getSymbolTableName(); }
+ XCOFF::VisibilityType getVisibilityType() const {
+ return MCSec->getVisibilityType();
+ }
XCOFFSection(const MCSectionXCOFF *MCSec)
: MCSec(MCSec), SymbolTableIndex(-1), Address(-1), Size(0) {}
};
@@ -670,7 +677,8 @@
// 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?
+ if (SymbolType != 0)
+ report_fatal_error("Emitting non-zero visibilities is not supported yet.");
// TODO Set the function indicator (bit 10, 0x0020) for functions
// when debugging is enabled.
W.write<uint16_t>(SymbolType);
@@ -706,7 +714,7 @@
writeSymbolEntry(SymbolRef.getSymbolTableName(),
CSectionRef.Address + SymbolOffset, SectionIndex,
- /*SymbolType=*/0, SymbolRef.getStorageClass());
+ SymbolRef.getVisibilityType(), SymbolRef.getStorageClass());
writeSymbolAuxCsectEntry(CSectionRef.SymbolTableIndex, XCOFF::XTY_LD,
CSectionRef.MCSec->getMappingClass());
@@ -726,7 +734,7 @@
const XCOFFSection &CSectionRef, int16_t SectionIndex,
XCOFF::StorageClass StorageClass) {
writeSymbolEntry(CSectionRef.getSymbolTableName(), CSectionRef.Address,
- SectionIndex, /*SymbolType=*/0, StorageClass);
+ SectionIndex, CSectionRef.getVisibilityType(), StorageClass);
writeSymbolAuxCsectEntry(CSectionRef.Size, getEncodedType(CSectionRef.MCSec),
CSectionRef.MCSec->getMappingClass());
Index: llvm/include/llvm/MC/MCSectionXCOFF.h
===================================================================
--- llvm/include/llvm/MC/MCSectionXCOFF.h
+++ llvm/include/llvm/MC/MCSectionXCOFF.h
@@ -95,6 +95,9 @@
XCOFF::StorageClass getStorageClass() const {
return QualName->getStorageClass();
}
+ XCOFF::VisibilityType getVisibilityType() const {
+ return QualName->getVisibilityType();
+ }
XCOFF::SymbolType getCSectType() const {
assert(isCsect() && "Only csect section has symbol type property!");
return CsectProp->Type;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D124392.425332.patch
Type: text/x-patch
Size: 3924 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220426/c684e38e/attachment.bin>
More information about the llvm-commits
mailing list