From 5e6a7a248b980dd2a98a3613c72b75ba9d01d162 Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Sat, 13 Mar 2010 02:20:57 +0000 Subject: [PATCH] llvm-mc: Support -n, useful for comparing -integrated-as output since the compiler may not lead with the text section. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98418 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/MC/MCParser/AsmParser.h | 2 +- lib/MC/MCParser/AsmParser.cpp | 13 ++++++------- tools/llvm-mc/llvm-mc.cpp | 6 +++++- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/include/llvm/MC/MCParser/AsmParser.h b/include/llvm/MC/MCParser/AsmParser.h index 66b6dac23a5..06e0920950d 100644 --- a/include/llvm/MC/MCParser/AsmParser.h +++ b/include/llvm/MC/MCParser/AsmParser.h @@ -64,7 +64,7 @@ public: const MCAsmInfo &MAI); ~AsmParser(); - bool Run(); + bool Run(bool NoInitialTextSection); void AddDirectiveHandler(StringRef Directive, diff --git a/lib/MC/MCParser/AsmParser.cpp b/lib/MC/MCParser/AsmParser.cpp index 50964aea42b..a241106465a 100644 --- a/lib/MC/MCParser/AsmParser.cpp +++ b/lib/MC/MCParser/AsmParser.cpp @@ -138,15 +138,14 @@ const AsmToken &AsmParser::Lex() { return *tok; } -bool AsmParser::Run() { - // Create the initial section. +bool AsmParser::Run(bool NoInitialTextSection) { + // Create the initial section, if requested. // - // FIXME: Support -n. // FIXME: Target hook & command line option for initial section. - Out.SwitchSection(getMachOSection("__TEXT", "__text", - MCSectionMachO::S_ATTR_PURE_INSTRUCTIONS, - 0, SectionKind::getText())); - + if (!NoInitialTextSection) + Out.SwitchSection(getMachOSection("__TEXT", "__text", + MCSectionMachO::S_ATTR_PURE_INSTRUCTIONS, + 0, SectionKind::getText())); // Prime the lexer. Lex(); diff --git a/tools/llvm-mc/llvm-mc.cpp b/tools/llvm-mc/llvm-mc.cpp index 48e0d3d6b54..666f0babf32 100644 --- a/tools/llvm-mc/llvm-mc.cpp +++ b/tools/llvm-mc/llvm-mc.cpp @@ -84,6 +84,10 @@ static cl::opt TripleName("triple", cl::desc("Target triple to assemble for, " "see -version for available targets")); +static cl::opt +NoInitialTextSection("n", cl::desc( + "Don't assume assembly file starts in the text section")); + enum ActionType { AC_AsLex, AC_Assemble, @@ -303,7 +307,7 @@ static int AssembleInput(const char *ProgName) { Parser.setTargetParser(*TAP.get()); - int Res = Parser.Run(); + int Res = Parser.Run(NoInitialTextSection); if (Out != &fouts()) delete Out; -- 2.34.1