From: Daniel King <dmk...@adacore.com> 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. Tested on x86_64-pc-linux-gnu, committed on master. --- 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 88ecb1325c4..2a3acd2e918 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; -- 2.43.0