diff options
Diffstat (limited to 'contrib/llvm-project/llvm/lib/MC/MCWinCOFFStreamer.cpp')
-rw-r--r-- | contrib/llvm-project/llvm/lib/MC/MCWinCOFFStreamer.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/contrib/llvm-project/llvm/lib/MC/MCWinCOFFStreamer.cpp b/contrib/llvm-project/llvm/lib/MC/MCWinCOFFStreamer.cpp index d8fde4004d44..97cceac74ac2 100644 --- a/contrib/llvm-project/llvm/lib/MC/MCWinCOFFStreamer.cpp +++ b/contrib/llvm-project/llvm/lib/MC/MCWinCOFFStreamer.cpp @@ -308,6 +308,16 @@ void MCWinCOFFStreamer::emitLocalCommonSymbol(MCSymbol *S, uint64_t Size, PopSection(); } +void MCWinCOFFStreamer::emitWeakReference(MCSymbol *AliasS, + const MCSymbol *Symbol) { + auto *Alias = cast<MCSymbolCOFF>(AliasS); + emitSymbolAttribute(Alias, MCSA_Weak); + + getAssembler().registerSymbol(*Symbol); + Alias->setVariableValue(MCSymbolRefExpr::create( + Symbol, MCSymbolRefExpr::VK_WEAKREF, getContext())); +} + void MCWinCOFFStreamer::emitZerofill(MCSection *Section, MCSymbol *Symbol, uint64_t Size, unsigned ByteAlignment, SMLoc Loc) { @@ -340,10 +350,8 @@ void MCWinCOFFStreamer::finalizeCGProfileEntry(const MCSymbolRefExpr *&SRE) { const MCSymbol *S = &SRE->getSymbol(); bool Created; getAssembler().registerSymbol(*S, &Created); - if (Created) { - cast<MCSymbolCOFF>(S)->setIsWeakExternal(); + if (Created) cast<MCSymbolCOFF>(S)->setExternal(true); - } } void MCWinCOFFStreamer::finalizeCGProfile() { |