[PATCH] D74924: [XCOFF][AIX] Put undefined symbol name into StringTable when neccessary
Jason Liu via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Feb 21 10:23:59 PST 2020
This revision was automatically updated to reflect the committed changes.
Closed by commit rG6b4a193defbe: [XCOFF][AIX] Put undefined symbol name into StringTable when neccessary (authored by jasonliu).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D74924/new/
https://reviews.llvm.org/D74924
Files:
llvm/lib/MC/XCOFFObjectWriter.cpp
llvm/test/CodeGen/PowerPC/aix-undef-func-call.ll
Index: llvm/test/CodeGen/PowerPC/aix-undef-func-call.ll
===================================================================
--- llvm/test/CodeGen/PowerPC/aix-undef-func-call.ll
+++ llvm/test/CodeGen/PowerPC/aix-undef-func-call.ll
@@ -4,10 +4,12 @@
define void @bar() {
entry:
call void bitcast (void (...)* @foo to void ()*)()
+ call void bitcast (void (...)* @long_undef_name to void ()*)()
ret void
}
declare void @foo(...)
+declare void @long_undef_name(...)
;CHECK: Symbol {
;CHECK: Name: .foo
@@ -27,3 +29,21 @@
;CHECK-NEXT: StabSectNum: 0x0
;CHECK-NEXT: }
;CHECK-NEXT: }
+;CHECK: Symbol {
+;CHECK: Name: .long_undef_name
+;CHECK-NEXT: Value (RelocatableAddress): 0x0
+;CHECK-NEXT: Section: N_UNDEF
+;CHECK-NEXT: Type: 0x0
+;CHECK-NEXT: StorageClass: C_EXT (0x2)
+;CHECK-NEXT: NumberOfAuxEntries: 1
+;CHECK-NEXT: CSECT Auxiliary Entry {
+;CHECK: SectionLen: 0
+;CHECK-NEXT: ParameterHashIndex: 0x0
+;CHECK-NEXT: TypeChkSectNum: 0x0
+;CHECK-NEXT: SymbolAlignmentLog2: 0
+;CHECK-NEXT: SymbolType: XTY_ER (0x0)
+;CHECK-NEXT: StorageMappingClass: XMC_PR (0x0)
+;CHECK-NEXT: StabInfoIndex: 0x0
+;CHECK-NEXT: StabSectNum: 0x0
+;CHECK-NEXT: }
+;CHECK-NEXT: }
Index: llvm/lib/MC/XCOFFObjectWriter.cpp
===================================================================
--- llvm/lib/MC/XCOFFObjectWriter.cpp
+++ llvm/lib/MC/XCOFFObjectWriter.cpp
@@ -343,29 +343,27 @@
const MCSymbolXCOFF *XSym = cast<MCSymbolXCOFF>(&S);
const MCSectionXCOFF *ContainingCsect = XSym->getContainingCsect();
- // Handle undefined symbol.
if (ContainingCsect->getCSectType() == XCOFF::XTY_ER) {
+ // Handle undefined symbol.
UndefinedCsects.emplace_back(ContainingCsect);
SectionMap[ContainingCsect] = &UndefinedCsects.back();
- continue;
- }
-
- // If the symbol is the csect itself, we don't need to put the symbol
- // into csect's Syms.
- if (XSym == ContainingCsect->getQualNameSymbol())
- continue;
-
- assert(SectionMap.find(ContainingCsect) != SectionMap.end() &&
- "Expected containing csect to exist in map");
+ } else {
+ // If the symbol is the csect itself, we don't need to put the symbol
+ // into csect's Syms.
+ if (XSym == ContainingCsect->getQualNameSymbol())
+ continue;
- // Lookup the containing csect and add the symbol to it.
- SectionMap[ContainingCsect]->Syms.emplace_back(XSym);
+ assert(SectionMap.find(ContainingCsect) != SectionMap.end() &&
+ "Expected containing csect to exist in map");
+ // Lookup the containing csect and add the symbol to it.
+ SectionMap[ContainingCsect]->Syms.emplace_back(XSym);
+ }
// If the name does not fit in the storage provided in the symbol table
// entry, add it to the string table.
if (nameShouldBeInStringTable(XSym->getName()))
Strings.add(XSym->getName());
- }
+ }
Strings.finalize();
assignAddressesAndIndices(Layout);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D74924.245917.patch
Type: text/x-patch
Size: 3019 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200221/65a1b6a4/attachment.bin>
More information about the llvm-commits
mailing list