mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-24 08:24:33 +00:00
Parsing and plumbing for .cfi_sections.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131117 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -243,6 +243,8 @@ public:
|
||||
AddDirectiveHandler<&GenericAsmParser::ParseDirectiveStabs>(".stabs");
|
||||
|
||||
// CFI directives.
|
||||
AddDirectiveHandler<&GenericAsmParser::ParseDirectiveCFISections>(
|
||||
".cfi_sections");
|
||||
AddDirectiveHandler<&GenericAsmParser::ParseDirectiveCFIStartProc>(
|
||||
".cfi_startproc");
|
||||
AddDirectiveHandler<&GenericAsmParser::ParseDirectiveCFIEndProc>(
|
||||
@ -289,6 +291,7 @@ public:
|
||||
bool ParseDirectiveLine(StringRef, SMLoc DirectiveLoc);
|
||||
bool ParseDirectiveLoc(StringRef, SMLoc DirectiveLoc);
|
||||
bool ParseDirectiveStabs(StringRef, SMLoc DirectiveLoc);
|
||||
bool ParseDirectiveCFISections(StringRef, SMLoc DirectiveLoc);
|
||||
bool ParseDirectiveCFIStartProc(StringRef, SMLoc DirectiveLoc);
|
||||
bool ParseDirectiveCFIEndProc(StringRef, SMLoc DirectiveLoc);
|
||||
bool ParseDirectiveCFIDefCfa(StringRef, SMLoc DirectiveLoc);
|
||||
@ -2265,6 +2268,39 @@ bool GenericAsmParser::ParseDirectiveStabs(StringRef Directive,
|
||||
return TokError("unsupported directive '" + Directive + "'");
|
||||
}
|
||||
|
||||
/// ParseDirectiveCFISections
|
||||
/// ::= .cfi_sections section [, section]
|
||||
bool GenericAsmParser::ParseDirectiveCFISections(StringRef,
|
||||
SMLoc DirectiveLoc) {
|
||||
StringRef Name;
|
||||
bool EH = false;
|
||||
bool Debug = false;
|
||||
|
||||
if (getParser().ParseIdentifier(Name))
|
||||
return TokError("Expected an identifier");
|
||||
|
||||
if (Name == ".eh_frame")
|
||||
EH = true;
|
||||
else if (Name == ".debug_frame")
|
||||
Debug = true;
|
||||
|
||||
if (getLexer().is(AsmToken::Comma)) {
|
||||
Lex();
|
||||
|
||||
if (getParser().ParseIdentifier(Name))
|
||||
return TokError("Expected an identifier");
|
||||
|
||||
if (Name == ".eh_frame")
|
||||
EH = true;
|
||||
else if (Name == ".debug_frame")
|
||||
Debug = true;
|
||||
}
|
||||
|
||||
getStreamer().EmitCFISections(EH, Debug);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/// ParseDirectiveCFIStartProc
|
||||
/// ::= .cfi_startproc
|
||||
bool GenericAsmParser::ParseDirectiveCFIStartProc(StringRef,
|
||||
|
Reference in New Issue
Block a user