--- a/gcc/ada/s-rident.ads 2018-11-18 18:47:39.042412895 +0100 +++ b/gcc/ada/s-rident.ads 2018-11-18 19:02:31.736559044 +0100 @@ -378,15 +378,17 @@ type Profile_Name is (No_Profile, No_Implementation_Extensions, + Restricted_Tasking, + Restricted, Ravenscar, GNAT_Extended_Ravenscar, - Restricted); + GNAT_Ravenscar_EDF); -- Names of recognized profiles. No_Profile is used to indicate that a -- restriction came from pragma Restrictions[_Warning], as opposed to -- pragma Profile[_Warning]. subtype Profile_Name_Actual is Profile_Name - range No_Implementation_Extensions .. Restricted; + range No_Implementation_Extensions .. Profile_Name'Last; -- Actual used profile names type Profile_Data is record @@ -456,6 +458,40 @@ Max_Task_Entries => 0, others => 0)), + -- Restricted_Tasking Profile + + Restricted_Tasking => + + -- Restrictions for Restricted_Tasking profile + + (Set => + (No_Abort_Statements => True, + No_Asynchronous_Control => True, + No_Dynamic_Attachment => True, + No_Dynamic_Priorities => True, + No_Entry_Queue => True, + No_Local_Protected_Objects => True, + No_Protected_Type_Allocators => True, + No_Requeue_Statements => True, + No_Task_Allocators => True, + No_Task_Attributes_Package => True, + No_Task_Hierarchy => True, + No_Terminate_Alternatives => True, + Max_Asynchronous_Select_Nesting => True, + Max_Protected_Entries => True, + Max_Select_Alternatives => True, + Max_Task_Entries => True, + others => False), + + -- Value settings for Restricted profile + + Value => + (Max_Asynchronous_Select_Nesting => 0, + Max_Protected_Entries => 1, + Max_Select_Alternatives => 0, + Max_Task_Entries => 0, + others => 0)), + -- Ravenscar Profile -- Note: the table entries here only represent the @@ -509,6 +545,49 @@ Max_Task_Entries => 0, others => 0)), + GNAT_Ravenscar_EDF => + + -- Restrictions for Ravenscar = Restricted profile .. + + (Set => + (No_Abort_Statements => True, + No_Asynchronous_Control => True, + No_Dynamic_Attachment => True, + No_Dynamic_Priorities => True, + No_Entry_Queue => True, + No_Local_Protected_Objects => True, + No_Protected_Type_Allocators => True, + No_Requeue_Statements => True, + No_Task_Allocators => True, + No_Task_Attributes_Package => True, + No_Task_Hierarchy => True, + No_Terminate_Alternatives => True, + Max_Asynchronous_Select_Nesting => True, + Max_Protected_Entries => True, + Max_Select_Alternatives => True, + Max_Task_Entries => True, + + -- plus these additional restrictions: + + No_Calendar => True, + No_Implicit_Heap_Allocations => True, + No_Local_Timing_Events => True, + No_Relative_Delay => True, + No_Select_Statements => True, + No_Specific_Termination_Handlers => True, + No_Task_Termination => True, + Simple_Barriers => True, + others => False), + + -- Value settings for Ravenscar (same as Restricted) + + Value => + (Max_Asynchronous_Select_Nesting => 0, + Max_Protected_Entries => 1, + Max_Select_Alternatives => 0, + Max_Task_Entries => 0, + others => 0)), + GNAT_Extended_Ravenscar => -- Restrictions for GNAT_Extended_Ravenscar =