Removed the SubsectionsViaSymbols MCStreamer API and replaced it with a generic

EmitAssemblerFlag API which takes a value from the added AssemblerFlag
enumerated constants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76087 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Kevin Enderby 2009-07-16 17:56:39 +00:00
parent 214d319403
commit f96db468fc
3 changed files with 13 additions and 8 deletions

View File

@ -53,6 +53,10 @@ namespace llvm {
SymbolAttrLast = WeakReference SymbolAttrLast = WeakReference
}; };
enum AssemblerFlag {
SubsectionsViaSymbols /// .subsections_via_symbols (Apple)
};
private: private:
MCContext &Context; MCContext &Context;
@ -89,10 +93,8 @@ namespace llvm {
// symbol section in the constructor and initialize it here? // symbol section in the constructor and initialize it here?
virtual void EmitLabel(MCSymbol *Symbol) = 0; virtual void EmitLabel(MCSymbol *Symbol) = 0;
/// SubsectionsViaSymbols - Note in the output that the conventions used in /// EmitAssemblerFlag - Note in the output the specified @param Flag
/// in the assembly file allows the bytes of a section to be divided up at virtual void EmitAssemblerFlag(AssemblerFlag Flag) = 0;
/// the boundaries of the symbols by a link editor for processing as atoms.
virtual void SubsectionsViaSymbols(void) = 0;
/// EmitAssignment - Emit an assignment of @param Value to @param Symbol. /// EmitAssignment - Emit an assignment of @param Value to @param Symbol.
/// ///

View File

@ -38,7 +38,7 @@ namespace {
virtual void EmitLabel(MCSymbol *Symbol); virtual void EmitLabel(MCSymbol *Symbol);
virtual void SubsectionsViaSymbols(void); virtual void EmitAssemblerFlag(AssemblerFlag Flag);
virtual void EmitAssignment(MCSymbol *Symbol, const MCValue &Value, virtual void EmitAssignment(MCSymbol *Symbol, const MCValue &Value,
bool MakeAbsolute = false); bool MakeAbsolute = false);
@ -129,8 +129,11 @@ void MCAsmStreamer::EmitLabel(MCSymbol *Symbol) {
Symbol->setExternal(false); Symbol->setExternal(false);
} }
void MCAsmStreamer::SubsectionsViaSymbols(void) { void MCAsmStreamer::EmitAssemblerFlag(AssemblerFlag Flag) {
OS << ".subsections_via_symbols\n"; switch (Flag) {
case SubsectionsViaSymbols: OS << ".subsections_via_symbols"; break;
}
OS << '\n';
} }
void MCAsmStreamer::AbortAssembly(const char *AbortReason) { void MCAsmStreamer::AbortAssembly(const char *AbortReason) {

View File

@ -1107,7 +1107,7 @@ bool AsmParser::ParseDirectiveDarwinSubsectionsViaSymbols() {
Lexer.Lex(); Lexer.Lex();
Out.SubsectionsViaSymbols(); Out.EmitAssemblerFlag(MCStreamer::SubsectionsViaSymbols);
return false; return false;
} }