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
This commit is contained in:
Daniel Dunbar 2010-03-13 02:20:57 +00:00
parent 181ab6a854
commit 5e6a7a248b
3 changed files with 12 additions and 9 deletions

View File

@ -64,7 +64,7 @@ public:
const MCAsmInfo &MAI);
~AsmParser();
bool Run();
bool Run(bool NoInitialTextSection);
void AddDirectiveHandler(StringRef Directive,

View File

@ -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();

View File

@ -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;