diff options
| author | Rafael Espindola <rafael.espindola@gmail.com> | 2011-04-28 12:50:37 +0000 |
|---|---|---|
| committer | Rafael Espindola <rafael.espindola@gmail.com> | 2011-04-28 12:50:37 +0000 |
| commit | 349c3298da272a1b9d3054a239a220a9da949e90 (patch) | |
| tree | 063ddcc77d86e68653b096f8e97ee387d1666c70 /llvm/lib/MC/MCMachOStreamer.cpp | |
| parent | 07ef11112e01e4527cd88f280cf02a62e657a606 (diff) | |
| download | bcm5719-llvm-349c3298da272a1b9d3054a239a220a9da949e90.tar.gz bcm5719-llvm-349c3298da272a1b9d3054a239a220a9da949e90.zip | |
Mark the EH symbol global or weak if the corresponding function is.
llvm-svn: 130397
Diffstat (limited to 'llvm/lib/MC/MCMachOStreamer.cpp')
| -rw-r--r-- | llvm/lib/MC/MCMachOStreamer.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/llvm/lib/MC/MCMachOStreamer.cpp b/llvm/lib/MC/MCMachOStreamer.cpp index d1f9f5cd568..0982f69c5ff 100644 --- a/llvm/lib/MC/MCMachOStreamer.cpp +++ b/llvm/lib/MC/MCMachOStreamer.cpp @@ -44,6 +44,8 @@ public: virtual void InitSections(); virtual void EmitLabel(MCSymbol *Symbol); + virtual void EmitEHSymAttributes(const MCSymbol *Symbol, + MCSymbol *EHSymbol); virtual void EmitAssemblerFlag(MCAssemblerFlag Flag); virtual void EmitThumbFunc(MCSymbol *Func); virtual void EmitAssignment(MCSymbol *Symbol, const MCExpr *Value); @@ -101,6 +103,16 @@ void MCMachOStreamer::InitSections() { } +void MCMachOStreamer::EmitEHSymAttributes(const MCSymbol *Symbol, + MCSymbol *EHSymbol) { + MCSymbolData &SD = + getAssembler().getOrCreateSymbolData(*Symbol); + if (SD.isExternal()) + EmitSymbolAttribute(EHSymbol, MCSA_Global); + if (SD.getFlags() & SF_WeakDefinition) + EmitSymbolAttribute(EHSymbol, MCSA_WeakDefinition); +} + void MCMachOStreamer::EmitLabel(MCSymbol *Symbol) { assert(Symbol->isUndefined() && "Cannot define a symbol twice!"); |

