Skip to main content

M.2 Implementation-Defined Characteristics

danger

This Reference Manual output has not been verified, and may contain omissions or errors. Report any problems on the tracking issue

1/5

The Ada language allows for certain machine dependences in a controlled manner. Each Ada implementation is required to document all implementation-defined characteristics:

1.a
ramification

It need not document unspecified characteristics.

1.b

Some of the items in this list require documentation only for implementations that conform to Specialized Needs Annexes.

2/2
  • Whether or not each recommendation given in is followed — see M.3 for a listing. See 1.1.2(37).
  • 3
  • Capacity limitations of the implementation. See 1.1.3(3).
  • 4
  • Variations from the standard that are impractical to avoid given the implementation's execution environment. See 1.1.3(6).
  • 5
  • Which code_statements cause external interactions. See 1.1.3(10).
  • 6
  • The coded representation for the text of an Ada program. See 2.1(4/5).
  • 6.1/5
  • The semantics of an Ada program whose text is not in Normalization Form C. See 2.1(4.1/5).
  • 7/2
  • This paragraph was deleted.
  • 8
  • The representation for an end of line. See 2.2(2/3).
  • 9
  • Maximum supported line length and lexical element length. See 2.2(14).
  • 10
  • Implementation-defined pragmas. See 2.8(14).
  • 11
  • Effect of pragma Optimize. See 2.8(27).
  • 11.1/4
  • The message string associated with the Assertion_Error exception raised by the failure of a predicate check if there is no applicable Predicate_Failure aspect. See 3.2.4(31).
  • 13
  • The predefined integer types declared in Standard. See 3.5.4(25).
  • 14
  • Any nonstandard integer types and the operators defined for them. See 3.5.4(26/5).
  • 15
  • Any nonstandard real types and the operators defined for them. See 3.5.6(8/5).
  • 16
  • What combinations of requested decimal precision and range are supported for floating point types. See 3.5.7(7).
  • 17
  • The predefined floating point types declared in Standard. See 3.5.7(16/5).
  • 18
  • The small of an ordinary fixed point type. See 3.5.9(8/2).
  • 19
  • What combinations of small, range, and digits are supported for fixed point types. See 3.5.9(10).
  • 20/2
  • The result of Tags.Wide_Wide_Expanded_Name for types declared within an unnamed block_statement. See 3.9(10).
  • 20.1/2
  • The sequence of characters of the value returned by Tags.Expanded_Name (respectively, Tags.Wide_Expanded_Name) when some of the graphic characters of Tags.Wide_Wide_Expanded_Name are not defined in Character (respectively, Wide_Character). See 3.9(10.1/2).
  • 21
  • Implementation-defined attributes. See 4.1.4(12/5).
  • 21.1/5
  • The value of the parameter to Empty for some container_aggregates. See 4.3.5(40).
  • 21.2/5
  • The maximum number of chunks for a parallel reduction expression without a chunk_specification. See 4.5.10(21).
  • 21.3/2
  • Rounding of real static expressions which are exactly half-way between two machine numbers. See 4.9(38/2).
  • 21.4/5
  • The maximum number of chunks for a parallel generalized iterator without a chunk_specification. See 5.5.2(10).
  • 21.5/5
  • The number of chunks for an array component iterator. See 5.5.2(11).
  • 21.6/5
  • Any extensions of the Global aspect. See 6.1.2(43).
  • 21.7/5
  • The circumstances in which the implementation passes in the null value for a view conversion of an access type used as an out parameter. See 6.4.1(19/5).
  • 21.8/5
  • Any extensions of the Default_Initial_Condition aspect. See 7.3.3(11).
  • 22
  • Any implementation-defined time types. See 9.6(6/3).
  • 23
  • The time base associated with relative delays. See 9.6(20).
  • 24
  • The time base of the type Calendar.Time. See 9.6(23).
  • 25/2
  • The time zone used for package Calendar operations. See 9.6(24/2).
  • 26
  • Any limit on delay_until_statements of select_statements. See 9.6(29).
  • 26.1/2
  • The result of Calendar.Formatting.Image if its argument represents more than 100 hours. See 9.6.1(86/5).
  • 27/3
  • This paragraph was deleted.
  • 27.1/5
  • Implementation-defined conflict check policies. See 9.10.1(5).
  • 28
  • The representation for a compilation. See 10.1(2).
  • 29
  • Any restrictions on compilations that contain multiple compilation_units. See 10.1(4).
  • 30
  • The mechanisms for creating an environment and for adding and replacing compilation units. See 10.1.4(3/2).
  • 30.1/2
  • The mechanisms for adding a compilation unit mentioned in a limited_with_clause to an environment. See 10.1.4(3).
  • 31
  • The manner of explicitly assigning library units to a partition. See 10.2(2).
  • 32
  • The implementation-defined means, if any, of specifying which compilation units are needed by a given compilation unit. See 10.2(2).
  • 33
  • The manner of designating the main subprogram of a partition. See 10.2(7).
  • 34
  • The order of elaboration of library_items. See 10.2(18).
  • 35
  • Parameter passing and function return for the main subprogram. See 10.2(21).
  • 36
  • The mechanisms for building and running partitions. See 10.2(24/5).
  • 37
  • The details of program execution, including program termination. See 10.2(25).
  • 38
  • The semantics of any nonactive partitions supported by the implementation. See 10.2(28/3).
  • 39
  • The information returned by Exception_Message. See 11.4.1(10.1/4).
  • 40/2
  • The result of Exceptions.Wide_Wide_Exception_Name for exceptions declared within an unnamed block_statement. See 11.4.1(12).
  • 40.1/2
  • The sequence of characters of the value returned by Exceptions.Exception_Name (respectively, Exceptions.Wide_Exception_Name) when some of the graphic characters of Exceptions.Wide_Wide_Exception_Name are not defined in Character (respectively, Wide_Character). See 11.4.1(12.1/2).
  • 41
  • The information returned by Exception_Information. See 11.4.1(13/2).
  • 41.1/3
  • Implementation-defined policy_identifiers and assertion_aspect_marks allowed in a pragma Assertion_Policy. See 11.4.2(9/5).
  • 41.2/2
  • The default assertion policy. See 11.4.2(10).
  • 42
  • Implementation-defined check names. See 11.5(27).
  • 42.1/2
  • Existence and meaning of second parameter of pragma Unsuppress. See 11.5(27.1/2).
  • 42.2/2
  • The cases that cause conflicts between the representation of the ancestors of a type_declaration. See 13.1(13.1/3).
  • 43/3
  • The interpretation of each representation aspect. See 13.1(20).
  • 44/3
  • Any restrictions placed upon the specification of representation aspects. See 13.1(20).
  • 44.1/3
  • Implementation-defined aspects, including the syntax for specifying such aspects and the legality rules for such aspects. See 13.1.1(38).
  • 44.2/2
  • The set of machine scalars. See 13.3(8.1/3).
  • 45
  • The meaning of Size for indefinite subtypes. See 13.3(48).
  • 45.1/5
  • The meaning of Object_Size for indefinite subtypes. See 13.3(58).
  • 46
  • The default external representation for a type tag. See 13.3(75/3).
  • 47
  • What determines whether a compilation unit is the same in two different partitions. See 13.3(76).
  • 48
  • Implementation-defined components. See 13.5.1(15).
  • 49
  • If Word_Size = Storage_Unit, the default bit ordering. See 13.5.3(5).
  • 50/2
  • The contents of the visible part of package System. See 13.7(2).
  • 50.1/2
  • The range of Storage_Elements.Storage_Offset, the modulus of Storage_Elements.Storage_Element, and the declaration of Storage_Elements.Integer_Address. See 13.7.1(11).
  • 51
  • The contents of the visible part of package System.Machine_Code, and the meaning of code_statements. See 13.8(7).
  • 51.1/2
  • The result of unchecked conversion for instances with scalar result types whose result is not defined by the language. See 13.9(11).
  • 52/2
  • The effect of unchecked conversion for instances with nonscalar result types whose effect is not defined by the language. See 13.9(11).
  • 53/2
  • This paragraph was deleted.
  • 54
  • Whether or not the implementation provides user-accessible names for the standard pool type(s). See 13.11(17).
  • 55/2
  • The meaning of Storage_Size when neither the Storage_Size nor the Storage_Pool is specified for an access type. See 13.11(18).
  • 56/2
  • This paragraph was deleted.
  • 56.1/4
  • The effect of specifying aspect Default_Storage_Pool on an instance of a language-defined generic unit. See 13.11.3(5).
  • 57/3
  • This paragraph was deleted.
  • 57.1/3
  • Implementation-defined restrictions allowed in a pragma Restrictions. See 13.12(8.7/3).
  • 58
  • The consequences of violating limitations on Restrictions pragmas. See 13.12(9).
  • 58.1/3
  • Implementation-defined usage profiles allowed in a pragma Profile. See 13.12(15).
  • 59/2
  • The contents of the stream elements read and written by the Read and Write attributes of elementary types. See 13.13.2(9).
  • 60
  • The names and characteristics of the numeric subtypes declared in the visible part of package Standard. See A.1(3).
  • 60.1/2
  • The values returned by Strings.Hash. See A.4.9(3/2).
  • 60.2/5
  • The value returned by a call to a Text_Buffer Get procedure if any character in the returned sequence is not defined in Character. See A.4.12(34).
  • 60.3/5
  • The value returned by a call to a Text_Buffer Wide_Get procedure if any character in the returned sequence is not defined in Wide_Character. See A.4.12(34).
  • 61
  • The accuracy actually achieved by the elementary functions. See A.5.1(1).
  • 62
  • The sign of a zero result from some of the operators or functions in Numerics.Generic_Elementary_Functions, when Float_Type'Signed_Zeros is True. See A.5.1(46).
  • 63
  • The value of Numerics.Float_Random.Max_Image_Width. See A.5.2(27).
  • 64
  • The value of Numerics.Discrete_Random.Max_Image_Width. See A.5.2(27).
  • 65/2
  • This paragraph was deleted.
  • 66
  • The string representation of a random number generator's state. See A.5.2(38).
  • 67/2
  • This paragraph was deleted.
  • 68
  • The values of the Model_Mantissa, Model_Emin, Model_Epsilon, Model, Safe_First, and Safe_Last attributes, if the Numerics Annex is not supported. See A.5.3(72).
  • 69/2
  • This paragraph was deleted.
  • 70
  • The value of Buffer_Size in Storage_IO. See A.9(10).
  • 71/2
  • The external files associated with the standard input, standard output, and standard error files. See A.10(5).
  • 72
  • The accuracy of the value produced by Put. See A.10.9(36).
  • 72.1/1
  • Current size for a stream file for which positioning is not supported. See A.12.1(1.1/1).
  • 73/2
  • The meaning of Argument_Count, Argument, and Command_Name for package Command_Line. The bounds of type Command_Line.Exit_Status. See A.15(1).
  • 73.1/2
  • The interpretation of file names and directory names. See A.16(46/2).
  • 73.2/2
  • The maximum value for a file size in Directories. See A.16(87/2).
  • 73.3/2
  • The result for Directories.Size for a directory or special file. See A.16(93/2).
  • 73.4/2
  • The result for Directories.Modification_Time for a directory or special file. See A.16(95/2).
  • 73.5/2
  • The interpretation of a nonnull search pattern in Directories. See A.16(104/3).
  • 73.6/2
  • The results of a Directories search if the contents of the directory are altered while a search is in progress. See A.16(110/3).
  • 73.7/2
  • The definition and meaning of an environment variable. See A.17(1/2).
  • 73.8/2
  • The circumstances where an environment variable cannot be defined. See A.17(16/2).
  • 73.9/2
  • Environment names for which Set has the effect of Clear. See A.17(17/2).
  • 73.10/2
  • The value of Containers.Hash_Type'Modulus. The value of Containers.Count_Type'Last. See A.18.1(7/2).
  • 74
  • Implementation-defined convention names. See B.1(11/3).
  • 75
  • The meaning of link names. See B.1(36).
  • 76
  • The manner of choosing link names when neither the link name nor the address of an imported or exported entity is specified. See B.1(36).
  • 77
  • The effect of pragma Linker_Options. See B.1(37).
  • 78
  • The contents of the visible part of package Interfaces and its language-defined descendants. See B.2(1).
  • 79/2
  • Implementation-defined children of package Interfaces. See B.2(11).
  • 79.1/2
  • The definitions of certain types and constants in Interfaces.C. See B.3(41).
  • 80/1
  • The types Floating, Long_Floating, Binary, Long_Binary, Decimal_Element, and COBOL_Character; and the initializations of the variables Ada_To_COBOL and COBOL_To_Ada, in Interfaces.COBOL. See B.4(50).
  • 80.1/1
  • The types Fortran_Integer, Real, Double_Precision, and Character_Set in Interfaces.Fortran. See B.5(17).
  • 81/2
  • Implementation-defined intrinsic subprograms. See C.1(1/3).
  • 82/2
  • This paragraph was deleted.
  • 83/2
  • This paragraph was deleted.
  • 83.1/3
  • Any restrictions on a protected procedure or its containing type when an aspect Attach_handler or Interrupt_Handler is specified. See C.3.1(17).
  • 83.2/3
  • Any other forms of interrupt handler supported by the Attach_Handler and Interrupt_Handler aspects. See C.3.1(19).
  • 84/2
  • This paragraph was deleted.
  • 85/4
  • The semantics of some attributes and functions of an entity for which aspect Discard_Names is True. See C.5(7).
  • 85.1/5
  • The modulus and size of Test_and_Set_Flag. See C.6.3(8).
  • 85.2/5
  • The value used to represent the set value for Atomic_Test_and_Set. See C.6.3(10).
  • 86
  • The result of the Task_Identification.Image attribute. See C.7.1(7).
  • 87/2
  • The value of Current_Task when in a protected entry, interrupt handler, or finalization of a task attribute. See C.7.1(17/3).
  • 88/2
  • This paragraph was deleted.
  • 88.1/1
  • Granularity of locking for Task_Attributes. See C.7.2(16/1).
  • 89/2
  • This paragraph was deleted.
  • 90/2
  • This paragraph was deleted.
  • 91
  • The declarations of Any_Priority and Priority. See D.1(11).
  • 92
  • Implementation-defined execution resources. See D.1(15/5).
  • 93
  • Whether, on a multiprocessor, a task that is waiting for access to a protected object keeps its processor busy. See D.2.1(3).
  • 94/2
  • The effect of implementation-defined execution resources on task dispatching. See D.2.1(9/2).
  • 95/2
  • This paragraph was deleted.
  • 96/2
  • This paragraph was deleted.
  • 97/2
  • Implementation defined task dispatching policies. See D.2.2(18).
  • 97.1/2
  • The value of Default_Quantum in Dispatching.Round_Robin. See D.2.5(4).
  • 98
  • Implementation-defined policy_identifiers allowed in a pragma Locking_Policy. See D.3(4).
  • 98.1/2
  • The locking policy if no Locking_Policy pragma applies to any unit of a partition. See D.3(6).
  • 99
  • Default ceiling priorities. See D.3(10/4).
  • 100
  • The ceiling of any protected object used internally by the implementation. See D.3(16).
  • 101
  • Implementation-defined queuing policies. See D.4(1/5).
  • 101.1/5
  • Implementation-defined admission policies. See D.4.1(1).
  • 102/2
  • This paragraph was deleted.
  • 103
  • Any operations that implicitly require heap storage allocation. See D.7(8).
  • 103.1/4
  • When restriction No_Dynamic_CPU_Assignment applies to a partition, the processor on which a task with a CPU value of a Not_A_Specific_CPU will execute. See D.7(10).
  • 103.2/2
  • When restriction No_Task_Termination applies to a partition, what happens when a task terminates. See D.7(15.1/2).
  • 103.3/2
  • The behavior when restriction Max_Storage_At_Blocking is violated. See D.7(17/1).
  • 103.4/2
  • The behavior when restriction Max_Asynchronous_Select_Nesting is violated. See D.7(18/1).
  • 103.5/2
  • The behavior when restriction Max_Tasks is violated. See D.7(19).
  • 104/2
  • Whether the use of pragma Restrictions results in a reduction in program code or data size or execution time. See D.7(20).
  • 105/2
  • This paragraph was deleted.
  • 106/2
  • This paragraph was deleted.
  • 106.1/3
  • The value of Barrier_Limit'Last in Synchronous_Barriers. See D.10.1(4/3).
  • 106.2/3
  • When an aborted task that is waiting on a Synchronous_Barrier is aborted. See D.10.1(13/3).
  • 107/2
  • This paragraph was deleted.
  • 107.1/3
  • The value of Min_Handler_Ceiling in Execution_Time.Group_Budgets. See D.14.2(7/2).
  • 107.2/3
  • The value of CPU_Range'Last in System.Multiprocessors. See D.16(4/3).
  • 107.3/3
  • The processor on which the environment task executes in the absence of a value for the aspect CPU. See D.16(13/3).
  • 108
  • The means for creating and executing distributed programs. See E(5).
  • 109
  • Any events that can result in a partition becoming inaccessible. See E.1(7).
  • 110
  • The scheduling policies, treatment of priorities, and management of shared resources between partitions in certain cases. See E.1(11).
  • 111/1
  • This paragraph was deleted.
  • 112
  • Whether the execution of the remote subprogram is immediately aborted as a result of cancellation. See E.4(13).
  • 112.1/2
  • The range of type System.RPC.Partition_Id. See E.5(14).
  • 113/2
  • This paragraph was deleted.
  • 114
  • Implementation-defined interfaces in the PCS. See E.5(26).
  • 115
  • The values of named numbers in the package Decimal. See F.2(7).
  • 116
  • The value of Max_Picture_Length in the package Text_IO.Editing See F.3.3(16).
  • 117
  • The value of Max_Picture_Length in the package Wide_Text_IO.Editing See F.3.4(5).
  • 117.1/2
  • The value of Max_Picture_Length in the package Wide_Wide_Text_IO.Editing See F.3.5(5).
  • 118
  • The accuracy actually achieved by the complex elementary functions and by other complex arithmetic operations. See G.1(1).
  • 119
  • The sign of a zero result (or a component thereof) from any operator or function in Numerics.Generic_Complex_Types, when Real'Signed_Zeros is True. See G.1.1(53).
  • 120
  • The sign of a zero result (or a component thereof) from any operator or function in Numerics.Generic_Complex_Elementary_Functions, when Complex_Types.Real'Signed_Zeros is True. See G.1.2(45).
  • 121
  • Whether the strict mode or the relaxed mode is the default. See G.2(2).
  • 122
  • The result interval in certain cases of fixed-to-float conversion. See G.2.1(10).
  • 123
  • The result of a floating point arithmetic operation in overflow situations, when the Machine_Overflows attribute of the result type is False. See G.2.1(13).
  • 124
  • The result interval for division (or exponentiation by a negative exponent), when the floating point hardware implements division as multiplication by a reciprocal. See G.2.1(16).
  • 125
  • The definition of close result set, which determines the accuracy of certain fixed point multiplications and divisions. See G.2.3(5).
  • 126
  • Conditions on a universal_real operand of a fixed point multiplication or division for which the result shall be in the perfect result set. See G.2.3(22).
  • 127
  • The result of a fixed point arithmetic operation in overflow situations, when the Machine_Overflows attribute of the result type is False. See G.2.3(27).
  • 128
  • The result of an elementary function reference in overflow situations, when the Machine_Overflows attribute of the result type is False. See G.2.4(4).
  • 129
  • The value of the angle threshold, within which certain elementary functions, complex arithmetic operations, and complex elementary functions yield results conforming to a maximum relative error bound. See G.2.4(10).
  • 130
  • The accuracy of certain elementary functions for parameters beyond the angle threshold. See G.2.4(10).
  • 131
  • The result of a complex arithmetic operation or complex elementary function reference in overflow situations, when the Machine_Overflows attribute of the corresponding real type is False. See G.2.6(5).
  • 132
  • The accuracy of certain complex arithmetic operations and certain complex elementary functions for parameters (or components thereof) beyond the angle threshold. See G.2.6(8).
  • 132.1/2
  • The accuracy requirements for the subprograms Solve, Inverse, Determinant, Eigenvalues and Eigensystem for type Real_Matrix. See G.3.1(81/2).
  • 132.2/2
  • The accuracy requirements for the subprograms Solve, Inverse, Determinant, Eigenvalues and Eigensystem for type Complex_Matrix. See G.3.2(149/2).
  • 133/2
  • This paragraph was deleted.
  • 134/2
  • This paragraph was deleted.
  • 134.1/5
  • The consequences of violating No_Hidden_Indirect_Globals. See H.4(23.9/5).
  • 135/2
  • This paragraph was deleted.
  • 136/2
  • This paragraph was deleted.
  • 136.1/2
  • Implementation-defined policy_identifiers allowed in a pragma Partition_Elaboration_Policy. See H.6(4/2).