ada: Preserve capability validity in address arithmetic
1 August 2023 at 13:39
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
- [DBH] gcc/ada/libgnat/s-carsi8.adb
- [DBH] gcc/ada/libgnat/s-carun8.adb
- [DBH] gcc/ada/libgnat/s-casi128.adb
- [DBH] gcc/ada/libgnat/s-casi16.adb
- [DBH] gcc/ada/libgnat/s-casi32.adb
- [DBH] gcc/ada/libgnat/s-casi64.adb
- [DBH] gcc/ada/libgnat/s-caun128.adb
- [DBH] gcc/ada/libgnat/s-caun16.adb
- [DBH] gcc/ada/libgnat/s-caun32.adb
- [DBH] gcc/ada/libgnat/s-caun64.adb
- [DBH] gcc/ada/libgnat/s-geveop.adb