diff options
author | Daniel Dunbar <daniel@zuster.org> | 2010-03-13 02:20:57 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2010-03-13 02:20:57 +0000 |
commit | 5e6a7a248b980dd2a98a3613c72b75ba9d01d162 (patch) | |
tree | fa30e3a3a50b3d83eae37a36c7b0882f9c94eed2 | |
parent | 181ab6a854162da908310e23714b43b0091c9094 (diff) | |
download | llvm-5e6a7a248b980dd2a98a3613c72b75ba9d01d162.tar.gz llvm-5e6a7a248b980dd2a98a3613c72b75ba9d01d162.tar.bz2 llvm-5e6a7a248b980dd2a98a3613c72b75ba9d01d162.tar.xz |
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
-rw-r--r-- | include/llvm/MC/MCParser/AsmParser.h | 2 | ||||
-rw-r--r-- | lib/MC/MCParser/AsmParser.cpp | 13 | ||||
-rw-r--r-- | 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 66b6dac23a..06e0920950 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 50964aea42..a241106465 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 48e0d3d6b5..666f0babf3 100644 --- a/tools/llvm-mc/llvm-mc.cpp +++ b/tools/llvm-mc/llvm-mc.cpp @@ -84,6 +84,10 @@ static cl::opt<std::string> TripleName("triple", cl::desc("Target triple to assemble for, " "see -version for available targets")); +static cl::opt<bool> +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; |