diff --git a/llvm/include/llvm/Support/Win64EH.h b/llvm/include/llvm/Support/Win64EH.h --- a/llvm/include/llvm/Support/Win64EH.h +++ b/llvm/include/llvm/Support/Win64EH.h @@ -61,7 +61,7 @@ UOP_TrapFrame, UOP_Context, UOP_ClearUnwoundToCall, - UOP_PACSignReturnAddress, + UOP_PACSignLR, // The following set of unwind opcodes is for ARM. They are documented at // https://docs.microsoft.com/en-us/cpp/build/arm-exception-handling diff --git a/llvm/lib/MC/MCWin64EH.cpp b/llvm/lib/MC/MCWin64EH.cpp --- a/llvm/lib/MC/MCWin64EH.cpp +++ b/llvm/lib/MC/MCWin64EH.cpp @@ -377,7 +377,7 @@ case Win64EH::UOP_ClearUnwoundToCall: Count += 1; break; - case Win64EH::UOP_PACSignReturnAddress: + case Win64EH::UOP_PACSignLR: Count += 1; break; } @@ -546,7 +546,7 @@ b = 0xEC; streamer.emitInt8(b); break; - case Win64EH::UOP_PACSignReturnAddress: + case Win64EH::UOP_PACSignLR: b = 0xFC; streamer.emitInt8(b); break; @@ -759,7 +759,7 @@ return false; Location = Start2; break; - case Win64EH::UOP_PACSignReturnAddress: + case Win64EH::UOP_PACSignLR: if (Location != Start2) return false; PAC = true; diff --git a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp --- a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp +++ b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp @@ -218,7 +218,7 @@ bool parseDirectiveSEHMachineFrame(SMLoc L); bool parseDirectiveSEHContext(SMLoc L); bool parseDirectiveSEHClearUnwoundToCall(SMLoc L); - bool parseDirectiveSEHPACSignReturnAddress(SMLoc L); + bool parseDirectiveSEHPACSignLR(SMLoc L); bool validateInstruction(MCInst &Inst, SMLoc &IDLoc, SmallVectorImpl &Loc); @@ -6100,8 +6100,8 @@ parseDirectiveSEHContext(Loc); else if (IDVal == ".seh_clear_unwound_to_call") parseDirectiveSEHClearUnwoundToCall(Loc); - else if (IDVal == ".seh_pac_sign_return_address") - parseDirectiveSEHPACSignReturnAddress(Loc); + else if (IDVal == ".seh_pac_sign_lr") + parseDirectiveSEHPACSignLR(Loc); else return true; } else @@ -6778,10 +6778,10 @@ return false; } -/// parseDirectiveSEHPACSignReturnAddress -/// ::= .seh_pac_sign_return_address -bool AArch64AsmParser::parseDirectiveSEHPACSignReturnAddress(SMLoc L) { - getTargetStreamer().emitARM64WinCFIPACSignReturnAddress(); +/// parseDirectiveSEHPACSignLR +/// ::= .seh_pac_sign_lr +bool AArch64AsmParser::parseDirectiveSEHPACSignLR(SMLoc L) { + getTargetStreamer().emitARM64WinCFIPACSignLR(); return false; } diff --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp --- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp +++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp @@ -107,8 +107,8 @@ void emitARM64WinCFIClearUnwoundToCall() override { OS << "\t.seh_clear_unwound_to_call\n"; } - void emitARM64WinCFIPACSignReturnAddress() override { - OS << "\t.seh_pac_sign_return_address\n"; + void emitARM64WinCFIPACSignLR() override { + OS << "\t.seh_pac_sign_lr\n"; } public: diff --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64TargetStreamer.h b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64TargetStreamer.h --- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64TargetStreamer.h +++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64TargetStreamer.h @@ -67,7 +67,7 @@ virtual void emitARM64WinCFIMachineFrame() {} virtual void emitARM64WinCFIContext() {} virtual void emitARM64WinCFIClearUnwoundToCall() {} - virtual void emitARM64WinCFIPACSignReturnAddress() {} + virtual void emitARM64WinCFIPACSignLR() {} private: std::unique_ptr ConstantPools; @@ -121,7 +121,7 @@ void emitARM64WinCFIMachineFrame() override; void emitARM64WinCFIContext() override; void emitARM64WinCFIClearUnwoundToCall() override; - void emitARM64WinCFIPACSignReturnAddress() override; + void emitARM64WinCFIPACSignLR() override; private: void emitARM64WinUnwindCode(unsigned UnwindCode, int Reg, int Offset); diff --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64WinCOFFStreamer.cpp b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64WinCOFFStreamer.cpp --- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64WinCOFFStreamer.cpp +++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64WinCOFFStreamer.cpp @@ -221,8 +221,8 @@ emitARM64WinUnwindCode(Win64EH::UOP_ClearUnwoundToCall, -1, 0); } -void AArch64TargetWinCOFFStreamer::emitARM64WinCFIPACSignReturnAddress() { - emitARM64WinUnwindCode(Win64EH::UOP_PACSignReturnAddress, -1, 0); +void AArch64TargetWinCOFFStreamer::emitARM64WinCFIPACSignLR() { + emitARM64WinUnwindCode(Win64EH::UOP_PACSignLR, -1, 0); } MCWinCOFFStreamer *llvm::createAArch64WinCOFFStreamer( diff --git a/llvm/test/MC/AArch64/seh-packed-unwind.s b/llvm/test/MC/AArch64/seh-packed-unwind.s --- a/llvm/test/MC/AArch64/seh-packed-unwind.s +++ b/llvm/test/MC/AArch64/seh-packed-unwind.s @@ -729,7 +729,7 @@ func16: .seh_proc func16 pacibsp - .seh_pac_sign_return_address + .seh_pac_sign_lr stp x29, lr, [sp, #-32]! .seh_save_fplr_x 32 mov x29, sp @@ -740,7 +740,7 @@ ldp x29, lr, [sp], #32 .seh_save_fplr_x 32 autibsp - .seh_pac_sign_return_address + .seh_pac_sign_lr .seh_endepilogue ret .seh_endproc @@ -748,7 +748,7 @@ func17: .seh_proc func17 pacibsp - .seh_pac_sign_return_address + .seh_pac_sign_lr stp x19, x20, [sp, #-16]! .seh_save_r19r20_x 16 stp x29, lr, [sp, #-32]! @@ -765,7 +765,7 @@ ldp x19, x20, [sp], #16 .seh_save_r19r20_x 16 autibsp - .seh_pac_sign_return_address + .seh_pac_sign_lr .seh_endepilogue ret .seh_endproc @@ -773,7 +773,7 @@ func18: .seh_proc func18 pacibsp - .seh_pac_sign_return_address + .seh_pac_sign_lr stp x19, x20, [sp, #-16]! .seh_save_r19r20_x 16 sub sp, sp, #4080 @@ -798,7 +798,7 @@ ldp x19, x20, [sp], #16 .seh_save_r19r20_x 16 autibsp - .seh_pac_sign_return_address + .seh_pac_sign_lr .seh_endepilogue ret .seh_endproc @@ -1075,7 +1075,7 @@ // Can't be packed; a signed return address can only be expressed if // we save both x29 and lr on the stack. pacibsp - .seh_pac_sign_return_address + .seh_pac_sign_lr str lr, [sp, #-32]! .seh_save_reg_x lr, 32 .seh_endprologue @@ -1084,7 +1084,7 @@ ldr lr, [sp], #32 .seh_save_reg_x lr, 32 autibsp - .seh_pac_sign_return_address + .seh_pac_sign_lr .seh_endepilogue ret .seh_endproc @@ -1094,7 +1094,7 @@ // Can't be packed; a signed return address can only be expressed if // we save both x29 and lr on the stack. pacibsp - .seh_pac_sign_return_address + .seh_pac_sign_lr stp x19, x20, [sp, #-32]! .seh_save_r19r20_x 32 stp x21, lr, [sp, #16] @@ -1111,7 +1111,7 @@ ldp x19, x20, [sp], #32 .seh_save_r19r20_x 32 autibsp - .seh_pac_sign_return_address + .seh_pac_sign_lr .seh_endepilogue ret .seh_endproc diff --git a/llvm/test/MC/AArch64/seh.s b/llvm/test/MC/AArch64/seh.s --- a/llvm/test/MC/AArch64/seh.s +++ b/llvm/test/MC/AArch64/seh.s @@ -153,7 +153,7 @@ nop .seh_clear_unwound_to_call pacibsp - .seh_pac_sign_return_address + .seh_pac_sign_lr .seh_endprologue nop .seh_startepilogue diff --git a/llvm/tools/llvm-readobj/ARMWinEHPrinter.h b/llvm/tools/llvm-readobj/ARMWinEHPrinter.h --- a/llvm/tools/llvm-readobj/ARMWinEHPrinter.h +++ b/llvm/tools/llvm-readobj/ARMWinEHPrinter.h @@ -131,8 +131,8 @@ bool Prologue); bool opcode_clear_unwound_to_call(const uint8_t *Opcodes, unsigned &Offset, unsigned Length, bool Prologue); - bool opcode_pac_sign_return_address(const uint8_t *Opcodes, unsigned &Offset, - unsigned Length, bool Prologue); + bool opcode_pac_sign_lr(const uint8_t *Opcodes, unsigned &Offset, + unsigned Length, bool Prologue); void decodeOpcodes(ArrayRef Opcodes, unsigned Offset, bool Prologue); diff --git a/llvm/tools/llvm-readobj/ARMWinEHPrinter.cpp b/llvm/tools/llvm-readobj/ARMWinEHPrinter.cpp --- a/llvm/tools/llvm-readobj/ARMWinEHPrinter.cpp +++ b/llvm/tools/llvm-readobj/ARMWinEHPrinter.cpp @@ -172,7 +172,7 @@ {0xff, 0xe9, 1, &Decoder::opcode_machine_frame}, {0xff, 0xea, 1, &Decoder::opcode_context}, {0xff, 0xec, 1, &Decoder::opcode_clear_unwound_to_call}, - {0xff, 0xfc, 1, &Decoder::opcode_pac_sign_return_address}, + {0xff, 0xfc, 1, &Decoder::opcode_pac_sign_lr}, }; static void printRange(raw_ostream &OS, ListSeparator &LS, unsigned First, @@ -977,9 +977,8 @@ return false; } -bool Decoder::opcode_pac_sign_return_address(const uint8_t *OC, - unsigned &Offset, unsigned Length, - bool Prologue) { +bool Decoder::opcode_pac_sign_lr(const uint8_t *OC, unsigned &Offset, + unsigned Length, bool Prologue) { if (Prologue) SW.startLine() << format("0x%02x ; pacibsp\n", OC[Offset]); else