]> gcc.gnu.org Git - gcc.git/commit
arm: Zero/Sign extends for CMSE security
authorRichard Ball <richard.ball@arm.com>
Thu, 25 Apr 2024 14:30:42 +0000 (15:30 +0100)
committerRichard Ball <richard.ball@arm.com>
Thu, 25 Apr 2024 14:40:06 +0000 (15:40 +0100)
commit5550214b58e95320b54e42ef0e37c6479e04b27b
tree99292dc1e5d4b4f347de14e59657350b374ac8c1
parenta9f174f01f25fa6df989707dc2fec29ef78aad24
arm: Zero/Sign extends for CMSE security

Co-Authored by: Andre Simoes Dias Vieira <Andre.SimoesDiasVieira@arm.com>

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.

(cherry picked from commit ad45086178d833254d66fab518b14234418f002b)
gcc/config/arm/arm.cc
gcc/testsuite/gcc.target/arm/cmse/extend-param.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/cmse/extend-return.c [new file with mode: 0644]
This page took 0.061361 seconds and 6 git commands to generate.