diff --git a/llvm/include/llvm/MC/MCSymbol.h b/llvm/include/llvm/MC/MCSymbol.h index a89de5dfa22f12..a83781f5c5864a 100644 --- a/llvm/include/llvm/MC/MCSymbol.h +++ b/llvm/include/llvm/MC/MCSymbol.h @@ -94,7 +94,8 @@ class MCSymbol { mutable unsigned IsRegistered : 1; - /// This symbol is visible outside this translation unit. + /// True if this symbol is visible outside this translation unit. Note: ELF + /// uses binding instead of this bit. mutable unsigned IsExternal : 1; /// This symbol is private extern. diff --git a/llvm/lib/MC/MCELFStreamer.cpp b/llvm/lib/MC/MCELFStreamer.cpp index 17beca1c355653..db45aef7d50642 100644 --- a/llvm/lib/MC/MCELFStreamer.cpp +++ b/llvm/lib/MC/MCELFStreamer.cpp @@ -221,7 +221,6 @@ bool MCELFStreamer::emitSymbolAttribute(MCSymbol *S, MCSymbolAttr Attribute) { case MCSA_ELF_TypeGnuUniqueObject: Symbol->setType(CombineSymbolTypes(Symbol->getType(), ELF::STT_OBJECT)); Symbol->setBinding(ELF::STB_GNU_UNIQUE); - Symbol->setExternal(true); break; case MCSA_Global: @@ -233,7 +232,6 @@ bool MCELFStreamer::emitSymbolAttribute(MCSymbol *S, MCSymbolAttr Attribute) { Symbol->getName() + " changed binding to STB_GLOBAL"); Symbol->setBinding(ELF::STB_GLOBAL); - Symbol->setExternal(true); break; case MCSA_WeakReference: @@ -244,7 +242,6 @@ bool MCELFStreamer::emitSymbolAttribute(MCSymbol *S, MCSymbolAttr Attribute) { getContext().reportWarning( getStartTokLoc(), Symbol->getName() + " changed binding to STB_WEAK"); Symbol->setBinding(ELF::STB_WEAK); - Symbol->setExternal(true); break; case MCSA_Local: @@ -253,7 +250,6 @@ bool MCELFStreamer::emitSymbolAttribute(MCSymbol *S, MCSymbolAttr Attribute) { Symbol->getName() + " changed binding to STB_LOCAL"); Symbol->setBinding(ELF::STB_LOCAL); - Symbol->setExternal(false); break; case MCSA_ELF_TypeFunction: @@ -308,10 +304,8 @@ void MCELFStreamer::emitCommonSymbol(MCSymbol *S, uint64_t Size, auto *Symbol = cast(S); getAssembler().registerSymbol(*Symbol); - if (!Symbol->isBindingSet()) { + if (!Symbol->isBindingSet()) Symbol->setBinding(ELF::STB_GLOBAL); - Symbol->setExternal(true); - } Symbol->setType(ELF::STT_OBJECT); @@ -352,7 +346,6 @@ void MCELFStreamer::emitLocalCommonSymbol(MCSymbol *S, uint64_t Size, // FIXME: Should this be caught and done earlier? getAssembler().registerSymbol(*Symbol); Symbol->setBinding(ELF::STB_LOCAL); - Symbol->setExternal(false); emitCommonSymbol(Symbol, Size, ByteAlignment); } @@ -499,10 +492,8 @@ void MCELFStreamer::finalizeCGProfileEntry(const MCSymbolRefExpr *&SRE) { // Not a temporary, referece it as a weak undefined. bool Created; getAssembler().registerSymbol(*S, &Created); - if (Created) { + if (Created) cast(S)->setBinding(ELF::STB_WEAK); - cast(S)->setExternal(true); - } } void MCELFStreamer::finalizeCGProfile() { diff --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp b/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp index 876741d6c34386..07ca5c29f0ec99 100644 --- a/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp +++ b/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp @@ -644,7 +644,6 @@ class ARMELFStreamer : public MCELFStreamer { Symbol->setType(ELF::STT_NOTYPE); Symbol->setBinding(ELF::STB_LOCAL); - Symbol->setExternal(false); } void EmitMappingSymbol(StringRef Name, SMLoc Loc, MCFragment *F, @@ -654,7 +653,6 @@ class ARMELFStreamer : public MCELFStreamer { emitLabelAtPos(Symbol, Loc, F, Offset); Symbol->setType(ELF::STT_NOTYPE); Symbol->setBinding(ELF::STB_LOCAL); - Symbol->setExternal(false); } void emitThumbFunc(MCSymbol *Func) override { diff --git a/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.cpp b/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.cpp index 00f319fc37e157..8780c602a26924 100644 --- a/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.cpp +++ b/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.cpp @@ -205,10 +205,8 @@ void SparcMCExpr::fixELFSymbolsInTLSFixups(MCAssembler &Asm) const { MCSymbol *Symbol = Asm.getContext().getOrCreateSymbol("__tls_get_addr"); Asm.registerSymbol(*Symbol); auto ELFSymbol = cast(Symbol); - if (!ELFSymbol->isBindingSet()) { + if (!ELFSymbol->isBindingSet()) ELFSymbol->setBinding(ELF::STB_GLOBAL); - ELFSymbol->setExternal(true); - } LLVM_FALLTHROUGH; } case VK_Sparc_TLS_GD_HI22: