[Lldb-commits] [lldb] [lldb][RISCV] Fix return value reading (PR #163931)

David Spickett via lldb-commits lldb-commits at lists.llvm.org
Thu Oct 23 07:10:37 PDT 2025


DavidSpickett wrote:

I tried your example on AArch64 and we don't get a return value there either. TestReturnValues.py in fact skips checking a type called `return_five_int` for the SysV AArch64 ABI (and now I see where you got the example from).

According to the AArch64 AAPCS (it's ABI):
> B.4	If the argument type is a Composite Type that is larger than 16 bytes, then the argument is copied to memory allocated by the caller and the argument is replaced by a pointer to the copy.

And then https://github.com/ARM-software/abi-aa/blob/main/aapcs64/aapcs64.rst#69result-return which says:
> 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).**

(emphasis mine)

This matches the statement in the RISC-V ABI, so I would be fine with you adding RISC-V to the skip list there.

https://github.com/llvm/llvm-project/pull/163931


More information about the lldb-commits mailing list