Fixes an ABI violation in the trampoline code for AArch64 that causes the indirect result register to get overwritten if the XRay handler function is complex enough to use it.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
Comment Actions
I'm not well versed in AArch64 assembler here, so I'll defer to @MaskRay who has more knowledge in this area.
Comment Actions
I am also trying to make myself more familiar with AArch64.... I think this is correct. From Procedure Call Standard for the Arm 64-bit Architecture, Result Return
Otherwise, the caller shall reserve a block of memory of sufficient size and alignment to hold the result. The address of the memory block shall be passed as an additional argument to the function in x8. The callee may modify the result memory block at any point during the execution of the subroutine (there is no requirement for the callee to preserve the value stored in x8).