Hi Torbjorn, Thanks very much for the comments. I think given that the code that handles this, is within a FOREACH_FUNCTION_ARGS loop. It seems a fairly safe assumption that if the code works for one that it will work for all. To go back and add extra tests to me seems a little overkill.
Kind Regards, Richard Ball ________________________________ From: Torbjorn SVENSSON <torbjorn.svens...@foss.st.com> Sent: 25 April 2024 12:47 To: Richard Ball <richard.b...@arm.com>; gcc-patches@gcc.gnu.org <gcc-patches@gcc.gnu.org>; Richard Earnshaw <richard.earns...@arm.com>; Richard Sandiford <richard.sandif...@arm.com>; Marcus Shawcroft <marcus.shawcr...@arm.com>; Kyrylo Tkachov <kyrylo.tkac...@arm.com> Subject: Re: [PATCH] arm: Zero/Sign extends for CMSE security Hi, On 2024-04-24 17:55, Richard Ball wrote: > This patch makes the following changes: > > 1) When calling a secure function from non-secure code then any arguments > smaller than 32-bits that are passed in registers are zero- or > sign-extended. > 2) After a non-secure function returns into secure code then any return value > smaller than 32-bits that is passed in a register is zero- or > sign-extended. > > This patch addresses the following CVE-2024-0151. > > gcc/ChangeLog: > PR target/114837 > * config/arm/arm.cc (cmse_nonsecure_call_inline_register_clear): > Add zero/sign extend. > (arm_expand_prologue): Add zero/sign extend. > > gcc/testsuite/ChangeLog: > > * gcc.target/arm/cmse/extend-param.c: New test. > * gcc.target/arm/cmse/extend-return.c: New test. I think it would make sense that there is at least one test case that takes 2 or more arguments to ensure that not only the first argument is extended. WDYT? Kind regards, Torbjörn