From 9d69cdb1202f307796f6e34a827b02c1d048e213 Mon Sep 17 00:00:00 2001 From: Daniel King Date: Fri, 1 Nov 2024 21:27:00 +0000 Subject: [PATCH] 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. --- 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; -- 2.47.2