[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