]> git.ipfire.org Git - thirdparty/gcc.git/commit
ada: Preserve capability validity in address arithmetic
authorDaniel King <dmking@adacore.com>
Tue, 1 Aug 2023 13:39:39 +0000 (14:39 +0100)
committerMarc Poulhiès <poulhies@adacore.com>
Tue, 5 Sep 2023 11:05:12 +0000 (13:05 +0200)
commitc416d2f768b73daa28d2fcd0c80656956ae9242c
treeefcdee05d34e631f9f9a7342c3f6753a37c5511e
parent518f93c17983623107ff2091728c93b02fc0eeb2
ada: Preserve capability validity in address arithmetic

On CHERI targets where System.Address is a capability, arithmetic on
addresses should avoid converting to integers and instead use the
operations defined in System.Storage_Elements to perform the arithmetic
directly on the System.Address object. This preserves the capability's
validity throughout the calculation, ensuring that the resulting capability
can be dereferenced.

gcc/ada/

* libgnat/s-carsi8.adb: Use operations from
System.Storage_Elements for address arithmetic.
* libgnat/s-carun8.adb: Likewise
* libgnat/s-casi128.adb: Likewise
* libgnat/s-casi16.adb: Likewise
* libgnat/s-casi32.adb: Likewise
* libgnat/s-casi64.adb: Likewise
* libgnat/s-caun128.adb: Likewise
* libgnat/s-caun16.adb: Likewise
* libgnat/s-caun32.adb: Likewise
* libgnat/s-caun64.adb: Likewise
* libgnat/s-geveop.adb: Likewise
gcc/ada/libgnat/s-carsi8.adb
gcc/ada/libgnat/s-carun8.adb
gcc/ada/libgnat/s-casi128.adb
gcc/ada/libgnat/s-casi16.adb
gcc/ada/libgnat/s-casi32.adb
gcc/ada/libgnat/s-casi64.adb
gcc/ada/libgnat/s-caun128.adb
gcc/ada/libgnat/s-caun16.adb
gcc/ada/libgnat/s-caun32.adb
gcc/ada/libgnat/s-caun64.adb
gcc/ada/libgnat/s-geveop.adb