diff options
| -rw-r--r-- | llvm/tools/llvm-mc/AsmParser.cpp | 15 | ||||
| -rw-r--r-- | llvm/tools/llvm-mc/llvm-mc.cpp | 5 | 
2 files changed, 16 insertions, 4 deletions
diff --git a/llvm/tools/llvm-mc/AsmParser.cpp b/llvm/tools/llvm-mc/AsmParser.cpp index 3cd2b8e7540..8348479240d 100644 --- a/llvm/tools/llvm-mc/AsmParser.cpp +++ b/llvm/tools/llvm-mc/AsmParser.cpp @@ -17,6 +17,7 @@  #include "llvm/ADT/Twine.h"  #include "llvm/MC/MCContext.h"  #include "llvm/MC/MCInst.h" +#include "llvm/MC/MCSection.h"  #include "llvm/MC/MCStreamer.h"  #include "llvm/MC/MCSymbol.h"  #include "llvm/Support/SourceMgr.h" @@ -641,7 +642,12 @@ bool AsmParser::ParseDirectiveDarwinSection() {      return TokError("unexpected token in '.section' directive");    Lexer.Lex(); -  Out.SwitchSection(Ctx.GetSection(Section.c_str())); +  // FIXME: Arch specific. +  MCSection *S = Ctx.GetSection(Section); +  if (S == 0) +    S = MCSection::Create(Section, Ctx); +   +  Out.SwitchSection(S);    return false;  } @@ -657,7 +663,12 @@ bool AsmParser::ParseDirectiveSectionSwitch(const char *Section,      SectionStr += Directives;    } -  Out.SwitchSection(Ctx.GetSection(Section)); +  // FIXME: Arch specific. +  MCSection *S = Ctx.GetSection(Section); +  if (S == 0) +    S = MCSection::Create(Section, Ctx); +   +  Out.SwitchSection(S);    return false;  } diff --git a/llvm/tools/llvm-mc/llvm-mc.cpp b/llvm/tools/llvm-mc/llvm-mc.cpp index 11d8b963d1a..44a8319cd6b 100644 --- a/llvm/tools/llvm-mc/llvm-mc.cpp +++ b/llvm/tools/llvm-mc/llvm-mc.cpp @@ -13,6 +13,7 @@  //===----------------------------------------------------------------------===//  #include "llvm/MC/MCContext.h" +#include "llvm/MC/MCSection.h"  #include "llvm/MC/MCStreamer.h"  #include "llvm/ADT/OwningPtr.h"  #include "llvm/Support/CommandLine.h" @@ -189,8 +190,8 @@ static int AssembleInput(const char *ProgName) {    OwningPtr<MCStreamer> Str(createAsmStreamer(Ctx, outs()));    // FIXME: Target hook & command line option for initial section. -  Str.get()->SwitchSection(Ctx.GetSection("__TEXT,__text," -                                          "regular,pure_instructions")); +  Str.get()->SwitchSection(MCSection::Create("__TEXT,__text," +                                             "regular,pure_instructions", Ctx));    AsmParser Parser(SrcMgr, Ctx, *Str.get());    OwningPtr<TargetAsmParser> TAP(GetTargetAsmParser(ProgName, Parser));  | 

