================
@@ -343,18 +362,23 @@ int DwarfInstructions<A, R>::stepWithDwarf(
if (RAState == RASignedWithPC) {
register unsigned long long x15 __asm("x15") =
prolog.ptrAuthDiversifier;
- if (cieInfo.addressesSignedWithBKey) {
- asm("hint 0x27\n\t" // pacm
- "hint 0xe"
- : "+r"(x17)
- : "r"(x16), "r"(x15)); // autib1716
- } else {
- asm("hint 0x27\n\t" // pacm
- "hint 0xc"
- : "+r"(x17)
- : "r"(x16), "r"(x15)); // autia1716
+ if (cieInfo.nonHintPAuthFrame)
+ x17 = nonHintLRAuthentication(prolog.ptrAuthDiversifier, cfa,
+ returnAddress,
+ cieInfo.addressesSignedWithBKey);
+ else {
+ if (cieInfo.addressesSignedWithBKey) {
+ asm("hint 0x27\n\t"); // pacm
+ asm("hint 0xe" : "+r"(x17) : "r"(x16), "r"(x15)); // autib1716
----------------
jroelofs wrote:
I think you need to keep them in the same `asm(` statement. As in, don't
re-write the else side of this block.
https://github.com/llvm/llvm-project/pull/233885
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits