[PATCH v15 04/10] arm64: Kprobes with single stepping support

Daniel Thompson daniel.thompson at linaro.org
Wed Jul 27 04:42:53 PDT 2016


On 27/07/16 12:38, Dave Martin wrote:
> On Wed, Jul 27, 2016 at 12:19:59PM +0100, Daniel Thompson wrote:
>
> [...]
>
>> It is interesting to note that you force large_func() to stack its arguments
>> (by providing 8 dummy int arguments first) then the implicit
>> pass-by-reference behavior is still preserved even for a stacked argument;
>> large_func() ends up as:
>>
>> ~~~
>> large_func:
>> 	ldr	x0, [sp]
>> 	ldr	x0, [x0]
>> 	ret
>> ~~~
>>
>> Only thing is... I *still* haven't found anything in the AArch64 PCS which
>> describes this behavior.
>>
>> I'm coming to believe that this is a mistake and this information (and the
>> threshold at which implicit pass-by-reference kicks in) should be documented
>> in section 7.
>
> Is that answered by this?
>
>     B.3. 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.
>
> Experimenting with gcc's behaviour seems to back this up.

Absolutely answered by that. Thanks (and sorry for the noise)!


Daniel.




More information about the linux-arm-kernel mailing list