summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2010-03-13 02:20:57 +0000
committerDaniel Dunbar <daniel@zuster.org>2010-03-13 02:20:57 +0000
commit5e6a7a248b980dd2a98a3613c72b75ba9d01d162 (patch)
treefa30e3a3a50b3d83eae37a36c7b0882f9c94eed2
parent181ab6a854162da908310e23714b43b0091c9094 (diff)
downloadllvm-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.h2
-rw-r--r--lib/MC/MCParser/AsmParser.cpp13
-rw-r--r--tools/llvm-mc/llvm-mc.cpp6
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;