mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-08 19:25:47 +00:00
MC/AsmParser: Move .desc parsing to Darwin specific parser.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108179 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -137,7 +137,6 @@ private:
|
|||||||
/// accepts a single symbol (which should be a label or an external).
|
/// accepts a single symbol (which should be a label or an external).
|
||||||
bool ParseDirectiveSymbolAttribute(MCSymbolAttr Attr);
|
bool ParseDirectiveSymbolAttribute(MCSymbolAttr Attr);
|
||||||
bool ParseDirectiveELFType(); // ELF specific ".type"
|
bool ParseDirectiveELFType(); // ELF specific ".type"
|
||||||
bool ParseDirectiveDarwinSymbolDesc(); // Darwin specific ".desc"
|
|
||||||
|
|
||||||
bool ParseDirectiveComm(bool IsLocal); // ".comm" and ".lcomm"
|
bool ParseDirectiveComm(bool IsLocal); // ".comm" and ".lcomm"
|
||||||
bool ParseDirectiveDarwinZerofill(); // Darwin specific ".zerofill"
|
bool ParseDirectiveDarwinZerofill(); // Darwin specific ".zerofill"
|
||||||
|
@@ -66,6 +66,8 @@ public:
|
|||||||
// Call the base implementation.
|
// Call the base implementation.
|
||||||
this->MCAsmParserExtension::Initialize(Parser);
|
this->MCAsmParserExtension::Initialize(Parser);
|
||||||
|
|
||||||
|
Parser.AddDirectiveHandler(this, ".desc", MCAsmParser::DirectiveHandler(
|
||||||
|
&DarwinAsmParser::ParseDirectiveDesc));
|
||||||
Parser.AddDirectiveHandler(this, ".lsym", MCAsmParser::DirectiveHandler(
|
Parser.AddDirectiveHandler(this, ".lsym", MCAsmParser::DirectiveHandler(
|
||||||
&DarwinAsmParser::ParseDirectiveLsym));
|
&DarwinAsmParser::ParseDirectiveLsym));
|
||||||
Parser.AddDirectiveHandler(this, ".subsections_via_symbols",
|
Parser.AddDirectiveHandler(this, ".subsections_via_symbols",
|
||||||
@@ -83,6 +85,7 @@ public:
|
|||||||
&DarwinAsmParser::ParseDirectiveSecureLogReset));
|
&DarwinAsmParser::ParseDirectiveSecureLogReset));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ParseDirectiveDesc(StringRef, SMLoc);
|
||||||
bool ParseDirectiveDumpOrLoad(StringRef, SMLoc);
|
bool ParseDirectiveDumpOrLoad(StringRef, SMLoc);
|
||||||
bool ParseDirectiveLsym(StringRef, SMLoc);
|
bool ParseDirectiveLsym(StringRef, SMLoc);
|
||||||
bool ParseDirectiveSecureLogReset(StringRef, SMLoc);
|
bool ParseDirectiveSecureLogReset(StringRef, SMLoc);
|
||||||
@@ -837,8 +840,6 @@ bool AsmParser::ParseStatement() {
|
|||||||
return ParseDirectiveComm(/*IsLocal=*/true);
|
return ParseDirectiveComm(/*IsLocal=*/true);
|
||||||
if (IDVal == ".zerofill")
|
if (IDVal == ".zerofill")
|
||||||
return ParseDirectiveDarwinZerofill();
|
return ParseDirectiveDarwinZerofill();
|
||||||
if (IDVal == ".desc")
|
|
||||||
return ParseDirectiveDarwinSymbolDesc();
|
|
||||||
if (IDVal == ".tbss")
|
if (IDVal == ".tbss")
|
||||||
return ParseDirectiveDarwinTBSS();
|
return ParseDirectiveDarwinTBSS();
|
||||||
|
|
||||||
@@ -1431,22 +1432,22 @@ bool AsmParser::ParseDirectiveELFType() {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// ParseDirectiveDarwinSymbolDesc
|
/// ParseDirectiveDesc
|
||||||
/// ::= .desc identifier , expression
|
/// ::= .desc identifier , expression
|
||||||
bool AsmParser::ParseDirectiveDarwinSymbolDesc() {
|
bool DarwinAsmParser::ParseDirectiveDesc(StringRef, SMLoc) {
|
||||||
StringRef Name;
|
StringRef Name;
|
||||||
if (ParseIdentifier(Name))
|
if (getParser().ParseIdentifier(Name))
|
||||||
return TokError("expected identifier in directive");
|
return TokError("expected identifier in directive");
|
||||||
|
|
||||||
// Handle the identifier as the key symbol.
|
// Handle the identifier as the key symbol.
|
||||||
MCSymbol *Sym = CreateSymbol(Name);
|
MCSymbol *Sym = getContext().GetOrCreateSymbol(Name);
|
||||||
|
|
||||||
if (getLexer().isNot(AsmToken::Comma))
|
if (getLexer().isNot(AsmToken::Comma))
|
||||||
return TokError("unexpected token in '.desc' directive");
|
return TokError("unexpected token in '.desc' directive");
|
||||||
Lex();
|
Lex();
|
||||||
|
|
||||||
int64_t DescValue;
|
int64_t DescValue;
|
||||||
if (ParseAbsoluteExpression(DescValue))
|
if (getParser().ParseAbsoluteExpression(DescValue))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (getLexer().isNot(AsmToken::EndOfStatement))
|
if (getLexer().isNot(AsmToken::EndOfStatement))
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
# RUN: llvm-mc -triple i386-unknown-unknown %s | FileCheck %s
|
# RUN: llvm-mc -triple i386-apple-darwin9 %s | FileCheck %s
|
||||||
|
|
||||||
# CHECK: TEST0:
|
# CHECK: TEST0:
|
||||||
# CHECK: .desc foo,16
|
# CHECK: .desc foo,16
|
||||||
|
Reference in New Issue
Block a user