[PATCH] D135103: RFC: [AArch64] Add SEH_Nop for PAC/BTI instructions in prologues/epilogues

Martin Storsjö via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 3 22:47:48 PDT 2022


mstorsjo added a comment.

In D135103#3832085 <https://reviews.llvm.org/D135103#3832085>, @efriedma wrote:

> For the following example:
>
>   int f(void g(), int a) { g(); return a; }
>
> If I compile with the following command:
>
>   cl /c a.c /d2guardsignret
>
> llvm-readobj gives me the following:
>
>   File: a.obj
>   Format: COFF-ARM64
>   Arch: aarch64
>   AddressSize: 64bit
>   UnwindInformation [
>     RuntimeFunction {
>       Function: f (0x0)
>       ExceptionRecord: $unwind$f (0x0)
>       ExceptionData {
>         FunctionLength: 40
>         Version: 0
>         ExceptionData: No
>         EpiloguePacked: Yes
>         EpilogueOffset: 0
>         ByteCodeLength: 8
>         Prologue [
>           0xd600              ; stp x19, lr, [sp, #0]
>           0x01                ; sub sp, #16
>           0xfc                ; Bad opcode!
>           0xe4                ; end
>         ]
>       }
>     }
>   ]
>
> So apparently there is, in fact, a way to encode this, using the undocumented opcode 0xfc.  Why this isn't documented, I have no idea.

Oh, interesting. I guess we can try to add that one then, to cover this case.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D135103/new/

https://reviews.llvm.org/D135103



More information about the llvm-commits mailing list