diff options
Diffstat (limited to 'lib/MC/MCAsmStreamer.cpp')
-rw-r--r-- | lib/MC/MCAsmStreamer.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/MC/MCAsmStreamer.cpp b/lib/MC/MCAsmStreamer.cpp index 6acc90af8a..62735ad3f3 100644 --- a/lib/MC/MCAsmStreamer.cpp +++ b/lib/MC/MCAsmStreamer.cpp @@ -126,6 +126,9 @@ public: virtual void EmitZerofill(const MCSection *Section, MCSymbol *Symbol = 0, unsigned Size = 0, unsigned ByteAlignment = 0); + virtual void EmitTBSSSymbol (MCSymbol *Symbol, uint64_t Size, + unsigned ByteAlignment = 0); + virtual void EmitBytes(StringRef Data, unsigned AddrSpace); virtual void EmitValue(const MCExpr *Value, unsigned Size,unsigned AddrSpace); @@ -360,6 +363,21 @@ void MCAsmStreamer::EmitZerofill(const MCSection *Section, MCSymbol *Symbol, EmitEOL(); } +// .tbss sym$tlv$init, size, align +void MCAsmStreamer::EmitTBSSSymbol(MCSymbol *Symbol, uint64_t Size, + unsigned ByteAlignment) { + assert(Symbol != NULL && "Symbol shouldn't be NULL!"); + OS << ".tbss "; + + // This is a mach-o specific directive and the name requires some mangling. + OS << *Symbol << "$tlv$init, " << Size; + + // Output align if we have it. + if (ByteAlignment != 0) OS << ", " << Log2_32(ByteAlignment); + + EmitEOL(); +} + static inline char toOctal(int X) { return (X&7)+'0'; } static void PrintQuotedString(StringRef Data, raw_ostream &OS) { |