diff options
-rw-r--r-- | include/llvm/MC/MCStreamer.h | 10 | ||||
-rw-r--r-- | lib/MC/MCAsmStreamer.cpp | 9 | ||||
-rw-r--r-- | tools/llvm-mc/AsmParser.cpp | 2 |
3 files changed, 13 insertions, 8 deletions
diff --git a/include/llvm/MC/MCStreamer.h b/include/llvm/MC/MCStreamer.h index b8f1b2659d..7d92a16507 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 691694978d..e1812cee59 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 5a6db1c9c0..4629cfc34b 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; } |