https://gcc.gnu.org/g:9d69cdb1202f307796f6e34a827b02c1d048e213
commit r15-6130-g9d69cdb1202f307796f6e34a827b02c1d048e213 Author: Daniel King <dmk...@adacore.com> Date: Fri Nov 1 21:27:00 2024 +0000 ada: Export CHERI exception IDs This allows CHERI exceptions to be raised from C code in the runtime. gcc/ada/ChangeLog: * libgnat/i-cheri-exceptions.ads: Export CHERI exception IDs. Diff: --- gcc/ada/libgnat/i-cheri-exceptions.ads | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/gcc/ada/libgnat/i-cheri-exceptions.ads b/gcc/ada/libgnat/i-cheri-exceptions.ads index 88ecb1325c4d..2a3acd2e9187 100644 --- a/gcc/ada/libgnat/i-cheri-exceptions.ads +++ b/gcc/ada/libgnat/i-cheri-exceptions.ads @@ -28,6 +28,7 @@ -- Extensive contributions were provided by Ada Core Technologies Inc. -- -- -- ------------------------------------------------------------------------------ +with Ada.Exceptions; -- This package defines exception types for CHERI-related errors @@ -47,4 +48,33 @@ is Capability_Tag_Error : exception; -- An invalid capability was dereferenced +private + + -- Expose C names for exception identifiers to allow raising from signal + -- handlers in init.c. + + Capability_Bound_Error_Id : constant Ada.Exceptions.Exception_Id := + Capability_Bound_Error'Identity; + pragma Export (C, + Capability_Bound_Error_Id, + "capability_bound_error_id"); + + Capability_Permission_Error_Id : constant Ada.Exceptions.Exception_Id := + Capability_Permission_Error'Identity; + pragma Export (C, + Capability_Permission_Error_Id, + "capability_permission_error_id"); + + Capability_Sealed_Error_Id : constant Ada.Exceptions.Exception_Id := + Capability_Sealed_Error'Identity; + pragma Export (C, + Capability_Sealed_Error_Id, + "capability_sealed_error_id"); + + Capability_Tag_Error_Id : constant Ada.Exceptions.Exception_Id := + Capability_Tag_Error'Identity; + pragma Export (C, + Capability_Tag_Error_Id, + "capability_tag_error_id"); + end Interfaces.CHERI.Exceptions;