aboutsummaryrefslogtreecommitdiff
path: root/lib/MC/MCMachOStreamer.cpp
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2009-08-28 07:08:35 +0000
committerDaniel Dunbar <daniel@zuster.org>2009-08-28 07:08:35 +0000
commit8f4d146c340c9423271ebd7bb3fd32b880000bc9 (patch)
tree30e828d8e7786804767d1d4b326d6525068b0edf /lib/MC/MCMachOStreamer.cpp
parentd17479e8458d17575e2532d9e8a61057b057a33d (diff)
llvm-mc: Support .comm emission.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80351 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/MC/MCMachOStreamer.cpp')
-rw-r--r--lib/MC/MCMachOStreamer.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/MC/MCMachOStreamer.cpp b/lib/MC/MCMachOStreamer.cpp
index b53a82e958..e9722251c6 100644
--- a/lib/MC/MCMachOStreamer.cpp
+++ b/lib/MC/MCMachOStreamer.cpp
@@ -224,7 +224,7 @@ void MCMachOStreamer::EmitSymbolAttribute(MCSymbol *Symbol,
break;
case MCStreamer::Global:
- getSymbolData(*Symbol).setExternal(true);
+ SD.setExternal(true);
break;
case MCStreamer::LazyReference:
@@ -273,7 +273,12 @@ void MCMachOStreamer::EmitLocalSymbol(MCSymbol *Symbol, const MCValue &Value) {
void MCMachOStreamer::EmitCommonSymbol(MCSymbol *Symbol, unsigned Size,
unsigned Pow2Alignment) {
- llvm_unreachable("FIXME: Not yet implemented!");
+ // FIXME: Darwin 'as' does appear to allow redef of a .comm by itself.
+ assert(Symbol->isUndefined() && "Cannot define a symbol twice!");
+
+ MCSymbolData &SD = getSymbolData(*Symbol);
+ SD.setExternal(true);
+ SD.setCommon(Size, 1 << Pow2Alignment);
}
void MCMachOStreamer::EmitZerofill(const MCSection *Section, MCSymbol *Symbol,