mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-04 06:09:05 +00:00
Add support for parsing .size directives for ELF.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108606 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d1e3b44d6c
commit
f82ccf5a0d
@ -31,6 +31,8 @@ public:
|
||||
&ELFAsmParser::ParseSectionDirectiveData));
|
||||
Parser.AddDirectiveHandler(this, ".text", MCAsmParser::DirectiveHandler(
|
||||
&ELFAsmParser::ParseSectionDirectiveText));
|
||||
Parser.AddDirectiveHandler(this, ".size", MCAsmParser::DirectiveHandler(
|
||||
&ELFAsmParser::ParseSizeDirective));
|
||||
}
|
||||
|
||||
bool ParseSectionDirectiveData(StringRef, SMLoc) {
|
||||
@ -43,6 +45,7 @@ public:
|
||||
MCSectionELF::SHF_EXECINSTR |
|
||||
MCSectionELF::SHF_ALLOC, SectionKind::getText());
|
||||
}
|
||||
bool ParseSizeDirective(StringRef, SMLoc);
|
||||
};
|
||||
|
||||
}
|
||||
@ -59,6 +62,27 @@ bool ELFAsmParser::ParseSectionSwitch(StringRef Section, unsigned Type,
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ELFAsmParser::ParseSizeDirective(StringRef, SMLoc) {
|
||||
StringRef Name;
|
||||
if (getParser().ParseIdentifier(Name))
|
||||
return TokError("expected identifier in directive");
|
||||
MCSymbol *Sym = getContext().GetOrCreateSymbol(Name);;
|
||||
|
||||
if (getLexer().isNot(AsmToken::Comma))
|
||||
return TokError("unexpected token in directive");
|
||||
Lex();
|
||||
|
||||
const MCExpr *Expr;
|
||||
if (getParser().ParseExpression(Expr))
|
||||
return true;
|
||||
|
||||
if (getLexer().isNot(AsmToken::EndOfStatement))
|
||||
return TokError("unexpected token in directive");
|
||||
|
||||
getStreamer().EmitELFSize(Sym, Expr);
|
||||
return false;
|
||||
}
|
||||
|
||||
namespace llvm {
|
||||
|
||||
MCAsmParserExtension *createELFAsmParser() {
|
||||
|
Loading…
Reference in New Issue
Block a user