[llvm] [AArch64][PAC] Protect the entire function if pac-ret+leaf is passed (PR #140895)
Anatoly Trosinenko via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 8 06:26:04 PDT 2025
atrosinenko wrote:
@efriedma-quic As a minimal possible test, I tried adding another `RUN:` line to `sign-return-address.ll` to emit dummy **object** file for `aarch64-windows` triple (when printing assembler output in a text form, SEH opcodes don't seem to be validated) and got a bunch of errors even on the `main` branch:
```
$ ./bin/llc -mtriple=aarch64-windows -o /dev/null --filetype=obj < ../llvm/test/CodeGen/AArch64/sign-return-address.ll
<unknown>:0: error: starting epilogue (.seh_startepilogue) before prologue has ended (.seh_endprologue) in leaf_sign_all
<unknown>:0: error: Stray .seh_endepilogue in leaf_sign_all
<unknown>:0: error: Incorrect size for non_leaf_scs epilogue: 12 bytes of instructions in range, but .seh directives corresponding to 8 bytes
<unknown>:0: error: starting epilogue (.seh_startepilogue) before prologue has ended (.seh_endprologue) in leaf_sign_all_v83
<unknown>:0: error: Stray .seh_endepilogue in leaf_sign_all_v83
<unknown>:0: error: starting epilogue (.seh_startepilogue) before prologue has ended (.seh_endprologue) in leaf_sign_all_a_key
<unknown>:0: error: Stray .seh_endepilogue in leaf_sign_all_a_key
<unknown>:0: error: starting epilogue (.seh_startepilogue) before prologue has ended (.seh_endprologue) in leaf_sign_all_b_key
<unknown>:0: error: Stray .seh_endepilogue in leaf_sign_all_b_key
<unknown>:0: error: starting epilogue (.seh_startepilogue) before prologue has ended (.seh_endprologue) in leaf_sign_all_v83_b_key
<unknown>:0: error: Stray .seh_endepilogue in leaf_sign_all_v83_b_key
<unknown>:0: error: starting epilogue (.seh_startepilogue) before prologue has ended (.seh_endprologue) in leaf_sign_all_a_key_bti
<unknown>:0: error: Stray .seh_endepilogue in leaf_sign_all_a_key_bti
<unknown>:0: error: starting epilogue (.seh_startepilogue) before prologue has ended (.seh_endprologue) in leaf_sign_all_b_key_bti
<unknown>:0: error: Stray .seh_endepilogue in leaf_sign_all_b_key_bti
<unknown>:0: error: starting epilogue (.seh_startepilogue) before prologue has ended (.seh_endprologue) in leaf_sign_all_v83_b_key_bti
<unknown>:0: error: Stray .seh_endepilogue in leaf_sign_all_v83_b_key_bti
```
For that reason, I opened a separate PR #147518 which is currently marked as draft: after merging this PR, that one has to be rebased on top of the updated `main` branch with a few conflicts manually rebased.
https://github.com/llvm/llvm-project/pull/140895
More information about the llvm-commits
mailing list