This Appendix defines how the Ada 95 restrictions accessible through the predefined pragma Restrictions are supported. Unsafe features such as run-time dispatching and heap management are not supported in the run-time system, so all the restrictions that are relevant for these features are set to True by default.
Table A-1 gives the default set of restrictions. These correspond to the Ravenscar profile, and support a limited form of tasking with protected types and interrupts.
The Restricted profile supports a similar set of restrictions by with tasking and protected types totally prohibited.
Table A-1. Default Restrictions
| Restriction | Ada 95 Reference Manual Section | Default Value |
|---|---|---|
| Immediate_Reclamation | RM H.4(10) | True |
| No_Abort_Statements | RM D.7(5), H.4(2) | True |
| No_Access_Subprograms | RM H.4(17) | False |
| No_Allocators | RM H.4(7) | True |
| No_Asynchronous_Control | RM D.7(10) | True |
| No_Delay | RM H.4(21) | False |
| No_Dispatch | RM H.4(19) | True |
| No_Dynamic_Priorities | RM D.7(9) | True |
| No_Exceptions | RM H.4(12) | False |
| No_Exception_Handlers | XGC RM H.4(12) | True |
| No_Fixed_Point | RM H.4(15) | False |
| No_Floating_Point | RM H.4(14) | False |
| No_Implementation_Attributes | ERC32 Ada specific | False |
| No_Implementation_Pragmas | ERC32 Ada specific | False |
| No_IO | RM H.4(20) | True |
| No_Implicit_Heap_Allocations | RM D.7(8), H.4(2) | True |
| No_Local_Allocators | RM H.4(8) | True |
| No_Nested_Finalization | RM D.7(4) | True |
| No_Protected_Types | RM H.4(5) | False |
| No_Recursion | RM H.4(22) | True |
| No_Reentrancy | RM H.4(23) | False |
| No_Task_Allocators | RM D.7(7) | True |
| No_Task_Hierarchy | RM D.7(3), H.4(2) | True |
| No_Terminate_Alternatives | RM D.7(6) | True |
| No_Unchecked_Access | RM H.4(18) | True |
| No_Unchecked_Conversion | RM H.4(16) | False |
| No_Unchecked_Deallocation | RM H.4(9) | True |
| Simple_Barrier_Variables | Ravenscar specific | True |
| No_Calendar | Ravenscar specific | True |
| No_Relative_Delay | Ravenscar specific | True |
| No_Protected_Type_Allocators | Ravenscar specific | True |
| No_Local_Protected_Objects | Ravenscar specific | True |
| No_Requeue | Ravenscar specific | True |
| No_Select_Statements | Ravenscar specific | True |
| No_Task_Attributes | Ravenscar specific | True |
| No_Task_Termination | Ravenscar specific | True |
Table A-2 gives the restrictions concerning numerical limits.
Table A-2. Default Restrictions
| Restriction | Ada 95 Reference Manual Section | Default Value |
|---|---|---|
| Max_Asynchronous_Select_Nesting | RM D.7(18), H.4(2) | 0 |
| Max_Protected_Entries | RM D.7(14) | 1 |
| Max_Select_Alternatives | RM D.7(12) | 0 |
| Max_Storage_At_Blocking | RM D.7(17) | 0 |
| Max_Task_Entries | RM D.7(13), H.4(2) | 0 |
| Max_Tasks | RM D.7(19), H.4(2) | Undefined |
| Max_Entry_Queue_Depth | Ravenscar specific | 1 |
Violation of the restriction Max_Entry_Queue_Depth is detected at run time and raises the predefined exception Program_Error.