diff --git a/include/llvm/MC/MCStreamer.h b/include/llvm/MC/MCStreamer.h index b8f1b2659d8..7d92a16507e 100644 --- a/include/llvm/MC/MCStreamer.h +++ b/include/llvm/MC/MCStreamer.h @@ -53,6 +53,10 @@ namespace llvm { SymbolAttrLast = WeakReference }; + enum AssemblerFlag { + SubsectionsViaSymbols /// .subsections_via_symbols (Apple) + }; + private: MCContext &Context; @@ -89,10 +93,8 @@ namespace llvm { // symbol section in the constructor and initialize it here? virtual void EmitLabel(MCSymbol *Symbol) = 0; - /// SubsectionsViaSymbols - Note in the output that the conventions used in - /// in the assembly file allows the bytes of a section to be divided up at - /// the boundaries of the symbols by a link editor for processing as atoms. - virtual void SubsectionsViaSymbols(void) = 0; + /// EmitAssemblerFlag - Note in the output the specified @param Flag + virtual void EmitAssemblerFlag(AssemblerFlag Flag) = 0; /// EmitAssignment - Emit an assignment of @param Value to @param Symbol. /// diff --git a/lib/MC/MCAsmStreamer.cpp b/lib/MC/MCAsmStreamer.cpp index 691694978d4..e1812cee59f 100644 --- a/lib/MC/MCAsmStreamer.cpp +++ b/lib/MC/MCAsmStreamer.cpp @@ -38,7 +38,7 @@ namespace { virtual void EmitLabel(MCSymbol *Symbol); - virtual void SubsectionsViaSymbols(void); + virtual void EmitAssemblerFlag(AssemblerFlag Flag); virtual void EmitAssignment(MCSymbol *Symbol, const MCValue &Value, bool MakeAbsolute = false); @@ -129,8 +129,11 @@ void MCAsmStreamer::EmitLabel(MCSymbol *Symbol) { Symbol->setExternal(false); } -void MCAsmStreamer::SubsectionsViaSymbols(void) { - OS << ".subsections_via_symbols\n"; +void MCAsmStreamer::EmitAssemblerFlag(AssemblerFlag Flag) { + switch (Flag) { + case SubsectionsViaSymbols: OS << ".subsections_via_symbols"; break; + } + OS << '\n'; } void MCAsmStreamer::AbortAssembly(const char *AbortReason) { diff --git a/tools/llvm-mc/AsmParser.cpp b/tools/llvm-mc/AsmParser.cpp index 5a6db1c9c02..4629cfc34b9 100644 --- a/tools/llvm-mc/AsmParser.cpp +++ b/tools/llvm-mc/AsmParser.cpp @@ -1107,7 +1107,7 @@ bool AsmParser::ParseDirectiveDarwinSubsectionsViaSymbols() { Lexer.Lex(); - Out.SubsectionsViaSymbols(); + Out.EmitAssemblerFlag(MCStreamer::SubsectionsViaSymbols); return false; }