[libunwind] [PAC][libunwind] Pass ptrauth-qualified values as const references (PR #173765)
Daniil Kovalev via cfe-commits
cfe-commits at lists.llvm.org
Sun Dec 28 22:41:28 PST 2025
================
@@ -202,10 +202,12 @@ class _LIBUNWIND_HIDDEN LocalAddressSpace {
pint_t getEncodedP(pint_t &addr, pint_t end, uint8_t encoding,
pint_t datarelBase = 0, pint_t *resultAddr = nullptr);
- bool findFunctionName(pint_t addr, char *buf, size_t bufLen,
+ template <typename T>
----------------
kovdan01 wrote:
@asl I suppose that the answer is no - the only place where it was somehow explained discussion in the previous libunwind hardening PR by Oliver #143230.
And it's definitely worth making things clearer to prevent accidental silent regression during future changes like refactorings.
At this point, I do not see a better way than just add a comment like the one below for each of the function declarations accepting `link_reg_t` by const l-value reference:
```
Note: `addr` is passed as const l-value reference intentionally to keep signature of `__ptrauth`-qualified values of `link_reg_t` type on AArch64 PAuth-enabled ABI intact. Passing the raw pointer by value would cause authentication on the caller side and make the pointer prone to substitution if spilled to the stack in the callee.
```
I find this way not very nice, but I fail to come up with something less bulky. Could you please tell me if you have some suggestions, and if no, does the comment above sound reasonable for you?
https://github.com/llvm/llvm-project/pull/173765
More information about the cfe-commits
mailing list