@@ -904,6 +904,7 @@ class AArch64Operand : public MCParsedAsmOperand {
904
904
ELFRefKind == AArch64MCExpr::VK_TPREL_LO12_NC ||
905
905
ELFRefKind == AArch64MCExpr::VK_GOTTPREL_LO12_NC ||
906
906
ELFRefKind == AArch64MCExpr::VK_TLSDESC_LO12 ||
907
+ ELFRefKind == AArch64MCExpr::VK_TLSDESC_AUTH_LO12 ||
907
908
ELFRefKind == AArch64MCExpr::VK_SECREL_LO12 ||
908
909
ELFRefKind == AArch64MCExpr::VK_SECREL_HI12 ||
909
910
ELFRefKind == AArch64MCExpr::VK_GOT_PAGE_LO15) {
@@ -1021,6 +1022,7 @@ class AArch64Operand : public MCParsedAsmOperand {
1021
1022
ELFRefKind == AArch64MCExpr::VK_TPREL_LO12 ||
1022
1023
ELFRefKind == AArch64MCExpr::VK_TPREL_LO12_NC ||
1023
1024
ELFRefKind == AArch64MCExpr::VK_TLSDESC_LO12 ||
1025
+ ELFRefKind == AArch64MCExpr::VK_TLSDESC_AUTH_LO12 ||
1024
1026
ELFRefKind == AArch64MCExpr::VK_SECREL_HI12 ||
1025
1027
ELFRefKind == AArch64MCExpr::VK_SECREL_LO12;
1026
1028
}
@@ -3314,7 +3316,8 @@ ParseStatus AArch64AsmParser::tryParseAdrpLabel(OperandVector &Operands) {
3314
3316
ELFRefKind != AArch64MCExpr::VK_GOT_AUTH_PAGE &&
3315
3317
ELFRefKind != AArch64MCExpr::VK_GOT_PAGE_LO15 &&
3316
3318
ELFRefKind != AArch64MCExpr::VK_GOTTPREL_PAGE &&
3317
- ELFRefKind != AArch64MCExpr::VK_TLSDESC_PAGE) {
3319
+ ELFRefKind != AArch64MCExpr::VK_TLSDESC_PAGE &&
3320
+ ELFRefKind != AArch64MCExpr::VK_TLSDESC_AUTH_PAGE) {
3318
3321
// The operand must be an @page or @gotpage qualified symbolref.
3319
3322
return Error (S, " page or gotpage label reference expected" );
3320
3323
}
@@ -4391,56 +4394,59 @@ bool AArch64AsmParser::parseSymbolicImmVal(const MCExpr *&ImmVal) {
4391
4394
return TokError (" expect relocation specifier in operand after ':'" );
4392
4395
4393
4396
std::string LowerCase = getTok ().getIdentifier ().lower ();
4394
- RefKind = StringSwitch<AArch64MCExpr::VariantKind>(LowerCase)
4395
- .Case (" lo12" , AArch64MCExpr::VK_LO12)
4396
- .Case (" abs_g3" , AArch64MCExpr::VK_ABS_G3)
4397
- .Case (" abs_g2" , AArch64MCExpr::VK_ABS_G2)
4398
- .Case (" abs_g2_s" , AArch64MCExpr::VK_ABS_G2_S)
4399
- .Case (" abs_g2_nc" , AArch64MCExpr::VK_ABS_G2_NC)
4400
- .Case (" abs_g1" , AArch64MCExpr::VK_ABS_G1)
4401
- .Case (" abs_g1_s" , AArch64MCExpr::VK_ABS_G1_S)
4402
- .Case (" abs_g1_nc" , AArch64MCExpr::VK_ABS_G1_NC)
4403
- .Case (" abs_g0" , AArch64MCExpr::VK_ABS_G0)
4404
- .Case (" abs_g0_s" , AArch64MCExpr::VK_ABS_G0_S)
4405
- .Case (" abs_g0_nc" , AArch64MCExpr::VK_ABS_G0_NC)
4406
- .Case (" prel_g3" , AArch64MCExpr::VK_PREL_G3)
4407
- .Case (" prel_g2" , AArch64MCExpr::VK_PREL_G2)
4408
- .Case (" prel_g2_nc" , AArch64MCExpr::VK_PREL_G2_NC)
4409
- .Case (" prel_g1" , AArch64MCExpr::VK_PREL_G1)
4410
- .Case (" prel_g1_nc" , AArch64MCExpr::VK_PREL_G1_NC)
4411
- .Case (" prel_g0" , AArch64MCExpr::VK_PREL_G0)
4412
- .Case (" prel_g0_nc" , AArch64MCExpr::VK_PREL_G0_NC)
4413
- .Case (" dtprel_g2" , AArch64MCExpr::VK_DTPREL_G2)
4414
- .Case (" dtprel_g1" , AArch64MCExpr::VK_DTPREL_G1)
4415
- .Case (" dtprel_g1_nc" , AArch64MCExpr::VK_DTPREL_G1_NC)
4416
- .Case (" dtprel_g0" , AArch64MCExpr::VK_DTPREL_G0)
4417
- .Case (" dtprel_g0_nc" , AArch64MCExpr::VK_DTPREL_G0_NC)
4418
- .Case (" dtprel_hi12" , AArch64MCExpr::VK_DTPREL_HI12)
4419
- .Case (" dtprel_lo12" , AArch64MCExpr::VK_DTPREL_LO12)
4420
- .Case (" dtprel_lo12_nc" , AArch64MCExpr::VK_DTPREL_LO12_NC)
4421
- .Case (" pg_hi21_nc" , AArch64MCExpr::VK_ABS_PAGE_NC)
4422
- .Case (" tprel_g2" , AArch64MCExpr::VK_TPREL_G2)
4423
- .Case (" tprel_g1" , AArch64MCExpr::VK_TPREL_G1)
4424
- .Case (" tprel_g1_nc" , AArch64MCExpr::VK_TPREL_G1_NC)
4425
- .Case (" tprel_g0" , AArch64MCExpr::VK_TPREL_G0)
4426
- .Case (" tprel_g0_nc" , AArch64MCExpr::VK_TPREL_G0_NC)
4427
- .Case (" tprel_hi12" , AArch64MCExpr::VK_TPREL_HI12)
4428
- .Case (" tprel_lo12" , AArch64MCExpr::VK_TPREL_LO12)
4429
- .Case (" tprel_lo12_nc" , AArch64MCExpr::VK_TPREL_LO12_NC)
4430
- .Case (" tlsdesc_lo12" , AArch64MCExpr::VK_TLSDESC_LO12)
4431
- .Case (" got" , AArch64MCExpr::VK_GOT_PAGE)
4432
- .Case (" gotpage_lo15" , AArch64MCExpr::VK_GOT_PAGE_LO15)
4433
- .Case (" got_lo12" , AArch64MCExpr::VK_GOT_LO12)
4434
- .Case (" got_auth" , AArch64MCExpr::VK_GOT_AUTH_PAGE)
4435
- .Case (" got_auth_lo12" , AArch64MCExpr::VK_GOT_AUTH_LO12)
4436
- .Case (" gottprel" , AArch64MCExpr::VK_GOTTPREL_PAGE)
4437
- .Case (" gottprel_lo12" , AArch64MCExpr::VK_GOTTPREL_LO12_NC)
4438
- .Case (" gottprel_g1" , AArch64MCExpr::VK_GOTTPREL_G1)
4439
- .Case (" gottprel_g0_nc" , AArch64MCExpr::VK_GOTTPREL_G0_NC)
4440
- .Case (" tlsdesc" , AArch64MCExpr::VK_TLSDESC_PAGE)
4441
- .Case (" secrel_lo12" , AArch64MCExpr::VK_SECREL_LO12)
4442
- .Case (" secrel_hi12" , AArch64MCExpr::VK_SECREL_HI12)
4443
- .Default (AArch64MCExpr::VK_INVALID);
4397
+ RefKind =
4398
+ StringSwitch<AArch64MCExpr::VariantKind>(LowerCase)
4399
+ .Case (" lo12" , AArch64MCExpr::VK_LO12)
4400
+ .Case (" abs_g3" , AArch64MCExpr::VK_ABS_G3)
4401
+ .Case (" abs_g2" , AArch64MCExpr::VK_ABS_G2)
4402
+ .Case (" abs_g2_s" , AArch64MCExpr::VK_ABS_G2_S)
4403
+ .Case (" abs_g2_nc" , AArch64MCExpr::VK_ABS_G2_NC)
4404
+ .Case (" abs_g1" , AArch64MCExpr::VK_ABS_G1)
4405
+ .Case (" abs_g1_s" , AArch64MCExpr::VK_ABS_G1_S)
4406
+ .Case (" abs_g1_nc" , AArch64MCExpr::VK_ABS_G1_NC)
4407
+ .Case (" abs_g0" , AArch64MCExpr::VK_ABS_G0)
4408
+ .Case (" abs_g0_s" , AArch64MCExpr::VK_ABS_G0_S)
4409
+ .Case (" abs_g0_nc" , AArch64MCExpr::VK_ABS_G0_NC)
4410
+ .Case (" prel_g3" , AArch64MCExpr::VK_PREL_G3)
4411
+ .Case (" prel_g2" , AArch64MCExpr::VK_PREL_G2)
4412
+ .Case (" prel_g2_nc" , AArch64MCExpr::VK_PREL_G2_NC)
4413
+ .Case (" prel_g1" , AArch64MCExpr::VK_PREL_G1)
4414
+ .Case (" prel_g1_nc" , AArch64MCExpr::VK_PREL_G1_NC)
4415
+ .Case (" prel_g0" , AArch64MCExpr::VK_PREL_G0)
4416
+ .Case (" prel_g0_nc" , AArch64MCExpr::VK_PREL_G0_NC)
4417
+ .Case (" dtprel_g2" , AArch64MCExpr::VK_DTPREL_G2)
4418
+ .Case (" dtprel_g1" , AArch64MCExpr::VK_DTPREL_G1)
4419
+ .Case (" dtprel_g1_nc" , AArch64MCExpr::VK_DTPREL_G1_NC)
4420
+ .Case (" dtprel_g0" , AArch64MCExpr::VK_DTPREL_G0)
4421
+ .Case (" dtprel_g0_nc" , AArch64MCExpr::VK_DTPREL_G0_NC)
4422
+ .Case (" dtprel_hi12" , AArch64MCExpr::VK_DTPREL_HI12)
4423
+ .Case (" dtprel_lo12" , AArch64MCExpr::VK_DTPREL_LO12)
4424
+ .Case (" dtprel_lo12_nc" , AArch64MCExpr::VK_DTPREL_LO12_NC)
4425
+ .Case (" pg_hi21_nc" , AArch64MCExpr::VK_ABS_PAGE_NC)
4426
+ .Case (" tprel_g2" , AArch64MCExpr::VK_TPREL_G2)
4427
+ .Case (" tprel_g1" , AArch64MCExpr::VK_TPREL_G1)
4428
+ .Case (" tprel_g1_nc" , AArch64MCExpr::VK_TPREL_G1_NC)
4429
+ .Case (" tprel_g0" , AArch64MCExpr::VK_TPREL_G0)
4430
+ .Case (" tprel_g0_nc" , AArch64MCExpr::VK_TPREL_G0_NC)
4431
+ .Case (" tprel_hi12" , AArch64MCExpr::VK_TPREL_HI12)
4432
+ .Case (" tprel_lo12" , AArch64MCExpr::VK_TPREL_LO12)
4433
+ .Case (" tprel_lo12_nc" , AArch64MCExpr::VK_TPREL_LO12_NC)
4434
+ .Case (" tlsdesc_lo12" , AArch64MCExpr::VK_TLSDESC_LO12)
4435
+ .Case (" tlsdesc_auth_lo12" , AArch64MCExpr::VK_TLSDESC_AUTH_LO12)
4436
+ .Case (" got" , AArch64MCExpr::VK_GOT_PAGE)
4437
+ .Case (" gotpage_lo15" , AArch64MCExpr::VK_GOT_PAGE_LO15)
4438
+ .Case (" got_lo12" , AArch64MCExpr::VK_GOT_LO12)
4439
+ .Case (" got_auth" , AArch64MCExpr::VK_GOT_AUTH_PAGE)
4440
+ .Case (" got_auth_lo12" , AArch64MCExpr::VK_GOT_AUTH_LO12)
4441
+ .Case (" gottprel" , AArch64MCExpr::VK_GOTTPREL_PAGE)
4442
+ .Case (" gottprel_lo12" , AArch64MCExpr::VK_GOTTPREL_LO12_NC)
4443
+ .Case (" gottprel_g1" , AArch64MCExpr::VK_GOTTPREL_G1)
4444
+ .Case (" gottprel_g0_nc" , AArch64MCExpr::VK_GOTTPREL_G0_NC)
4445
+ .Case (" tlsdesc" , AArch64MCExpr::VK_TLSDESC_PAGE)
4446
+ .Case (" tlsdesc_auth" , AArch64MCExpr::VK_TLSDESC_AUTH_PAGE)
4447
+ .Case (" secrel_lo12" , AArch64MCExpr::VK_SECREL_LO12)
4448
+ .Case (" secrel_hi12" , AArch64MCExpr::VK_SECREL_HI12)
4449
+ .Default (AArch64MCExpr::VK_INVALID);
4444
4450
4445
4451
if (RefKind == AArch64MCExpr::VK_INVALID)
4446
4452
return TokError (" expect relocation specifier in operand after ':'" );
@@ -5814,6 +5820,7 @@ bool AArch64AsmParser::validateInstruction(MCInst &Inst, SMLoc &IDLoc,
5814
5820
ELFRefKind == AArch64MCExpr::VK_TPREL_LO12 ||
5815
5821
ELFRefKind == AArch64MCExpr::VK_TPREL_LO12_NC ||
5816
5822
ELFRefKind == AArch64MCExpr::VK_TLSDESC_LO12 ||
5823
+ ELFRefKind == AArch64MCExpr::VK_TLSDESC_AUTH_LO12 ||
5817
5824
ELFRefKind == AArch64MCExpr::VK_SECREL_LO12 ||
5818
5825
ELFRefKind == AArch64MCExpr::VK_SECREL_HI12) &&
5819
5826
(Inst.getOpcode () == AArch64::ADDXri ||
0 commit comments