From: Rafael Espindola Date: Fri, 29 May 2015 15:07:27 +0000 (+0000) Subject: Simplify now that symbols contain the correct section. X-Git-Tag: llvmorg-3.7.0-rc1~3479 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f4b4430f8c9c66c32a49e4c72bf594580d198501;p=platform%2Fupstream%2Fllvm.git Simplify now that symbols contain the correct section. The complexity in here was because before r233995 variable symbols would report the incorrect section. llvm-svn: 238559 --- diff --git a/llvm/lib/MC/ELFObjectWriter.cpp b/llvm/lib/MC/ELFObjectWriter.cpp index 827a1e3..27b8b9b 100644 --- a/llvm/lib/MC/ELFObjectWriter.cpp +++ b/llvm/lib/MC/ELFObjectWriter.cpp @@ -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(BaseSymbol->getSection()); + static_cast(Symbol.getSection()); MSD.SectionIndex = SectionIndexMap.lookup(&Section); assert(MSD.SectionIndex && "Invalid section index!"); if (MSD.SectionIndex >= ELF::SHN_LORESERVE)