@@ -523,6 +523,7 @@ class AsmParser : public MCAsmParser {
523523 DK_CFI_WINDOW_SAVE,
524524 DK_CFI_LABEL,
525525 DK_CFI_B_KEY_FRAME,
526+ DK_CFI_VAL_OFFSET,
526527 DK_MACROS_ON,
527528 DK_MACROS_OFF,
528529 DK_ALTMACRO,
@@ -626,6 +627,7 @@ class AsmParser : public MCAsmParser {
626627 bool parseDirectiveCFISignalFrame (SMLoc DirectiveLoc);
627628 bool parseDirectiveCFIUndefined (SMLoc DirectiveLoc);
628629 bool parseDirectiveCFILabel (SMLoc DirectiveLoc);
630+ bool parseDirectiveCFIValOffset (SMLoc DirectiveLoc);
629631
630632 // macro directives
631633 bool parseDirectivePurgeMacro (SMLoc DirectiveLoc);
@@ -2232,6 +2234,8 @@ bool AsmParser::parseStatement(ParseStatementInfo &Info,
22322234 return parseDirectiveCFIWindowSave (IDLoc);
22332235 case DK_CFI_LABEL:
22342236 return parseDirectiveCFILabel (IDLoc);
2237+ case DK_CFI_VAL_OFFSET:
2238+ return parseDirectiveCFIValOffset (IDLoc);
22352239 case DK_MACROS_ON:
22362240 case DK_MACROS_OFF:
22372241 return parseDirectiveMacrosOnOff (IDVal);
@@ -4531,6 +4535,20 @@ bool AsmParser::parseDirectiveCFILabel(SMLoc Loc) {
45314535 return false ;
45324536}
45334537
4538+ // / parseDirectiveCFIValOffset
4539+ // / ::= .cfi_val_offset register, offset
4540+ bool AsmParser::parseDirectiveCFIValOffset (SMLoc DirectiveLoc) {
4541+ int64_t Register = 0 ;
4542+ int64_t Offset = 0 ;
4543+
4544+ if (parseRegisterOrRegisterNumber (Register, DirectiveLoc) || parseComma () ||
4545+ parseAbsoluteExpression (Offset) || parseEOL ())
4546+ return true ;
4547+
4548+ getStreamer ().emitCFIValOffset (Register, Offset, DirectiveLoc);
4549+ return false ;
4550+ }
4551+
45344552// / parseDirectiveAltmacro
45354553// / ::= .altmacro
45364554// / ::= .noaltmacro
@@ -5603,6 +5621,7 @@ void AsmParser::initializeDirectiveKindMap() {
56035621 DirectiveKindMap[" .cfi_label" ] = DK_CFI_LABEL;
56045622 DirectiveKindMap[" .cfi_b_key_frame" ] = DK_CFI_B_KEY_FRAME;
56055623 DirectiveKindMap[" .cfi_mte_tagged_frame" ] = DK_CFI_MTE_TAGGED_FRAME;
5624+ DirectiveKindMap[" .cfi_val_offset" ] = DK_CFI_VAL_OFFSET;
56065625 DirectiveKindMap[" .macros_on" ] = DK_MACROS_ON;
56075626 DirectiveKindMap[" .macros_off" ] = DK_MACROS_OFF;
56085627 DirectiveKindMap[" .macro" ] = DK_MACRO;
0 commit comments