Simplify now that symbols contain the correct section.
authorRafael Espindola <rafael.espindola@gmail.com>
Fri, 29 May 2015 15:07:27 +0000 (15:07 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Fri, 29 May 2015 15:07:27 +0000 (15:07 +0000)
The complexity in here was because before r233995 variable symbols would report
the incorrect section.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@238559 91177308-0d34-0410-b5e6-96231b3b80d8

lib/MC/ELFObjectWriter.cpp

index 827a1e3b6d79b18c42e6f61f49508e28cf6e07a7..27b8b9be9fda7187ee4a743750dccbade3d7ce73 100644 (file)
@@ -823,24 +823,19 @@ void ELFObjectWriter::computeSymbolTable(
 
     ELFSymbolData MSD;
     MSD.Symbol = &Symbol;
-    const MCSymbol *BaseSymbol = Layout.getBaseSymbol(Symbol);
 
     // Undefined symbols are global, but this is the first place we
     // are able to set it.
     bool Local = isLocal(Symbol, Used, isSignature);
-    if (!Local && MCELF::GetBinding(SD) == ELF::STB_LOCAL) {
-      assert(BaseSymbol);
-      MCSymbolData &BaseData = BaseSymbol->getData();
+    if (!Local && MCELF::GetBinding(SD) == ELF::STB_LOCAL)
       MCELF::SetBinding(SD, ELF::STB_GLOBAL);
-      MCELF::SetBinding(BaseData, ELF::STB_GLOBAL);
-    }
 
-    if (!BaseSymbol) {
+    if (Symbol.isAbsolute()) {
       MSD.SectionIndex = ELF::SHN_ABS;
     } else if (SD.isCommon()) {
       assert(!Local);
       MSD.SectionIndex = ELF::SHN_COMMON;
-    } else if (BaseSymbol->isUndefined()) {
+    } else if (Symbol.isUndefined()) {
       if (isSignature && !Used) {
         MSD.SectionIndex = RevGroupMap.lookup(&Symbol);
         if (MSD.SectionIndex >= ELF::SHN_LORESERVE)
@@ -852,7 +847,7 @@ void ELFObjectWriter::computeSymbolTable(
         MCELF::SetBinding(SD, ELF::STB_WEAK);
     } else {
       const MCSectionELF &Section =
-        static_cast<const MCSectionELF&>(BaseSymbol->getSection());
+          static_cast<const MCSectionELF &>(Symbol.getSection());
       MSD.SectionIndex = SectionIndexMap.lookup(&Section);
       assert(MSD.SectionIndex && "Invalid section index!");
       if (MSD.SectionIndex >= ELF::SHN_LORESERVE)