SymbolAttrLast = WeakReference
};
+ enum AssemblerFlag {
+ SubsectionsViaSymbols /// .subsections_via_symbols (Apple)
+ };
+
private:
MCContext &Context;
// 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.
///
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);
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) {
Lexer.Lex();
- Out.SubsectionsViaSymbols();
+ Out.EmitAssemblerFlag(MCStreamer::SubsectionsViaSymbols);
return false;
}