@@ -70,6 +70,8 @@ class COFFAsmParser : public MCAsmParserExtension {
7070 addDirectiveHandler<&COFFAsmParser::parseDirectiveSymbolAttribute>(
7171 " .weak_anti_dep" );
7272 addDirectiveHandler<&COFFAsmParser::parseDirectiveCGProfile>(" .cg_profile" );
73+ addDirectiveHandler<&COFFAsmParser::parseDirectiveSecNum>(" .secnum" );
74+ addDirectiveHandler<&COFFAsmParser::parseDirectiveSecOffset>(" .secoffset" );
7375
7476 // Win64 EH directives.
7577 addDirectiveHandler<&COFFAsmParser::parseSEHDirectiveStartProc>(
@@ -126,6 +128,8 @@ class COFFAsmParser : public MCAsmParserExtension {
126128 bool parseDirectiveLinkOnce (StringRef, SMLoc);
127129 bool parseDirectiveRVA (StringRef, SMLoc);
128130 bool parseDirectiveCGProfile (StringRef, SMLoc);
131+ bool parseDirectiveSecNum (StringRef, SMLoc);
132+ bool parseDirectiveSecOffset (StringRef, SMLoc);
129133
130134 // Win64 EH directives.
131135 bool parseSEHDirectiveStartProc (StringRef, SMLoc);
@@ -577,6 +581,36 @@ bool COFFAsmParser::parseDirectiveSymIdx(StringRef, SMLoc) {
577581 return false ;
578582}
579583
584+ bool COFFAsmParser::parseDirectiveSecNum (StringRef, SMLoc) {
585+ StringRef SymbolID;
586+ if (getParser ().parseIdentifier (SymbolID))
587+ return TokError (" expected identifier in directive" );
588+
589+ if (getLexer ().isNot (AsmToken::EndOfStatement))
590+ return TokError (" unexpected token in directive" );
591+
592+ MCSymbol *Symbol = getContext ().getOrCreateSymbol (SymbolID);
593+
594+ Lex ();
595+ getStreamer ().emitCOFFSecNumber (Symbol);
596+ return false ;
597+ }
598+
599+ bool COFFAsmParser::parseDirectiveSecOffset (StringRef, SMLoc) {
600+ StringRef SymbolID;
601+ if (getParser ().parseIdentifier (SymbolID))
602+ return TokError (" expected identifier in directive" );
603+
604+ if (getLexer ().isNot (AsmToken::EndOfStatement))
605+ return TokError (" unexpected token in directive" );
606+
607+ MCSymbol *Symbol = getContext ().getOrCreateSymbol (SymbolID);
608+
609+ Lex ();
610+ getStreamer ().emitCOFFSecOffset (Symbol);
611+ return false ;
612+ }
613+
580614// / ::= [ identifier ]
581615bool COFFAsmParser::parseCOMDATType (COFF::COMDATType &Type) {
582616 StringRef TypeId = getTok ().getIdentifier ();
0 commit comments