Consider the base pointer for setting the symbol type.
[oota-llvm.git] / lib / MC / ELFObjectWriter.cpp
index 0f3fa04c079d5bbc0f08f59342f62bd7b8969c12..54703b9912b13e0b61f56cbb26287e55a3befa57 100644 (file)
@@ -580,8 +580,9 @@ void ELFObjectWriter::WriteSymbol(MCDataFragment *SymtabF,
                                   ELFSymbolData &MSD,
                                   const MCAsmLayout &Layout) {
   MCSymbolData &OrigData = *MSD.SymbolData;
-  MCSymbolData &Data =
-    Layout.getAssembler().getSymbolData(OrigData.getSymbol().AliasedSymbol());
+  const MCSymbol *Base = OrigData.getSymbol().getBaseSymbol(Layout);
+  const MCSymbolData &Data =
+      Base ? Layout.getAssembler().getSymbolData(*Base) : OrigData;
 
   bool IsReserved = Data.isCommon() || Data.getSymbol().isAbsolute() ||
     Data.getSymbol().isVariable();