aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/doc
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@adacore.com>2015-10-20 10:41:38 +0000
committerArnaud Charlet <charlet@gcc.gnu.org>2015-10-20 12:41:38 +0200
commite42d2186bdf3c9de8316e718b330f0c3c3701e58 (patch)
tree33142df8132b01f1c359eb149b3925ce532f6730 /gcc/ada/doc
parent2ee31fbf05d78a62c0590744edc8334d4111c1f1 (diff)
downloadgcc-e42d2186bdf3c9de8316e718b330f0c3c3701e58.zip
gcc-e42d2186bdf3c9de8316e718b330f0c3c3701e58.tar.gz
gcc-e42d2186bdf3c9de8316e718b330f0c3c3701e58.tar.bz2
gnat_ugn.texi, [...]: Regenerate.
* gnat_ugn.texi, gnat_rm.texi: Regenerate. * doc/gnat_ugn/gnat_project_manager.rst, doc/gnat_ugn/building_executable_programs_with_gnat.rst, doc/gnat_ugn/the_gnat_compilation_model.rst, doc/gnat_rm/standard_and_implementation_defined_restrictions.rst, doc/gnat_rm/implementation_defined_pragmas.rst, doc/gnat_rm/the_gnat_library.rst, doc/gnat_rm/implementation_defined_characteristics.rst: Update doc. From-SVN: r229046
Diffstat (limited to 'gcc/ada/doc')
-rw-r--r--gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst315
-rw-r--r--gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst65
-rw-r--r--gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst31
-rw-r--r--gcc/ada/doc/gnat_rm/the_gnat_library.rst13
-rw-r--r--gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst21
-rw-r--r--gcc/ada/doc/gnat_ugn/gnat_project_manager.rst158
-rw-r--r--gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst2
7 files changed, 297 insertions, 308 deletions
diff --git a/gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst b/gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst
index f26dd91..68c5039 100644
--- a/gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst
+++ b/gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst
@@ -22,48 +22,48 @@ and other operating systems is an important consideration. The numbers
in each entry below correspond to the paragraph numbers in the Ada
Reference Manual.
-*
+*
"Whether or not each recommendation given in Implementation
Advice is followed. See 1.1.2(37)."
See :ref:`Implementation_Advice`.
-*
+*
"Capacity limitations of the implementation. See 1.1.3(3)."
The complexity of programs that can be processed is limited only by the
total amount of available virtual memory, and disk space for the
generated object files.
-*
+*
"Variations from the standard that are impractical to avoid
given the implementation's execution environment. See 1.1.3(6)."
There are no variations from the standard.
-*
+*
"Which code_statements cause external
interactions. See 1.1.3(10)."
Any `code_statement` can potentially cause external interactions.
-*
+*
"The coded representation for the text of an Ada
program. See 2.1(4)."
See separate section on source representation.
-*
+*
"The control functions allowed in comments. See 2.1(14)."
See separate section on source representation.
-*
+*
"The representation for an end of line. See 2.2(2)."
See separate section on source representation.
-*
+*
"Maximum supported line length and lexical element
length. See 2.2(15)."
@@ -74,19 +74,19 @@ sets the maximum to 79) or *-gnatyMnn* which allows the maximum
line length to be specified to be any value up to 32767. The maximum
length of a lexical element is the same as the maximum line length.
-*
+*
"Implementation defined pragmas. See 2.8(14)."
See :ref:`Implementation_Defined_Pragmas`.
-*
+*
"Effect of pragma `Optimize`. See 2.8(27)."
Pragma `Optimize`, if given with a `Time` or `Space`
parameter, checks that the optimization flag is set, and aborts if it is
not.
-*
+*
"The sequence of characters of the value returned by
``S'Image`` when some of the graphic characters of
``S'Wide_Image`` are not defined in `Character`. See
@@ -96,7 +96,7 @@ The sequence of characters is as defined by the wide character encoding
method used for the source. See section on source representation for
further details.
-*
+*
"The predefined integer types declared in
`Standard`. See 3.5.4(25)."
@@ -106,31 +106,31 @@ Type Representation
*Short_Short_Integer* 8 bit signed
*Short_Integer* (Short) 16 bit signed
*Integer* 32 bit signed
-*Long_Integer* 64 bit signed (on most 64 bit targets,
+*Long_Integer* 64 bit signed (on most 64 bit targets,
depending on the C definition of long).
32 bit signed (all other targets)
*Long_Long_Integer* 64 bit signed
====================== =======================================
-*
+*
"Any nonstandard integer types and the operators defined
for them. See 3.5.4(26)."
There are no nonstandard integer types.
-*
+*
"Any nonstandard real types and the operators defined for
them. See 3.5.6(8)."
There are no nonstandard real types.
-*
+*
"What combinations of requested decimal precision and range
are supported for floating point types. See 3.5.7(7)."
The precision and range is as defined by the IEEE standard.
-*
+*
"The predefined floating point types declared in
`Standard`. See 3.5.7(16)."
@@ -143,12 +143,12 @@ Type Representation
*Long_Long_Float* 64 bit IEEE long (80 bit IEEE long on x86 processors)
====================== ====================================================
-*
+*
"The small of an ordinary fixed point type. See 3.5.9(8)."
`Fine_Delta` is 2**(-63)
-*
+*
"What combinations of small, range, and digits are
supported for fixed point types. See 3.5.9(10)."
@@ -160,37 +160,37 @@ Text_IO is accurate to only 53 bits, rather than the full mantissa. This
is because floating-point conversions are used to convert fixed point.
-*
+*
"The result of `Tags.Expanded_Name` for types declared
within an unnamed `block_statement`. See 3.9(10)."
Block numbers of the form `B`nnn``, where `nnn` is a
decimal integer are allocated.
-*
+*
"Implementation-defined attributes. See 4.1.4(12)."
See :ref:`Implementation_Defined_Attributes`.
-*
+*
"Any implementation-defined time types. See 9.6(6)."
There are no implementation-defined time types.
-*
+*
"The time base associated with relative delays."
See 9.6(20). The time base used is that provided by the C library
function `gettimeofday`.
-*
+*
"The time base of the type `Calendar.Time`. See
9.6(23)."
The time base used is that provided by the C library function
`gettimeofday`.
-*
+*
"The time zone used for package `Calendar`
operations. See 9.6(24)."
@@ -198,13 +198,13 @@ The time zone used by package `Calendar` is the current system time zone
setting for local time, as accessed by the C library function
`localtime`.
-*
+*
"Any limit on `delay_until_statements` of
`select_statements`. See 9.6(29)."
There are no such limits.
-*
+*
"Whether or not two non-overlapping parts of a composite
object are independently addressable, in the case where packing, record
layout, or `Component_Size` is specified for the object. See
@@ -213,13 +213,13 @@ There are no such limits.
Separate components are independently addressable if they do not share
overlapping storage units.
-*
+*
"The representation for a compilation. See 10.1(2)."
A compilation is represented by a sequence of files presented to the
compiler in a single invocation of the *gcc* command.
-*
+*
"Any restrictions on compilations that contain multiple
compilation_units. See 10.1(4)."
@@ -227,13 +227,13 @@ No single file can contain more than one compilation unit, but any
sequence of files can be presented to the compiler as a single
compilation.
-*
+*
"The mechanisms for creating an environment and for adding
and replacing compilation units. See 10.1.4(3)."
See separate section on compilation model.
-*
+*
"The manner of explicitly assigning library units to a
partition. See 10.2(2)."
@@ -256,7 +256,7 @@ be included automatically). For full details on the use of these
options, refer to the `GNAT Make Program gnatmake` in the
:title:`GNAT User's Guide`.
-*
+*
"The implementation-defined means, if any, of specifying
which compilation units are needed by a given compilation unit. See
10.2(2)."
@@ -266,14 +266,14 @@ the Ada Reference Manual section 10.2(2-6). There are no
implementation-defined pragmas or other implementation-defined
means for specifying needed units.
-*
+*
"The manner of designating the main subprogram of a
partition. See 10.2(7)."
The main program is designated by providing the name of the
corresponding :file:`ALI` file as the input parameter to the binder.
-*
+*
"The order of elaboration of `library_items`. See
10.2(18)."
@@ -286,7 +286,7 @@ clauses of a unit to determine the probably best choice, and
third by elaborating in alphabetical order of unit names
where a choice still remains.
-*
+*
"Parameter passing and function return for the main
subprogram. See 10.2(21)."
@@ -295,7 +295,7 @@ returning an integer type. In the latter case, the returned integer
value is the return code of the program (overriding any value that
may have been set by a call to `Ada.Command_Line.Set_Exit_Status`).
-*
+*
"The mechanisms for building and running partitions. See
10.2(24)."
@@ -305,13 +305,13 @@ of the PCS) provides a completely flexible method for building and running
programs consisting of multiple partitions. See the separate GLADE manual
for details.
-*
+*
"The details of program execution, including program
termination. See 10.2(25)."
See separate section on compilation model.
-*
+*
"The semantics of any non-active partitions supported by the
implementation. See 10.2(28)."
@@ -319,21 +319,21 @@ Passive partitions are supported on targets where shared memory is
provided by the operating system. See the GLADE reference manual for
further details.
-*
+*
"The information returned by `Exception_Message`. See
11.4.1(10)."
Exception message returns the null string unless a specific message has
been passed by the program.
-*
+*
"The result of `Exceptions.Exception_Name` for types
declared within an unnamed `block_statement`. See 11.4.1(12)."
Blocks have implementation defined names of the form `B`nnn``
where `nnn` is an integer.
-*
+*
"The information returned by
`Exception_Information`. See 11.4.1(13)."
@@ -350,9 +350,9 @@ where
* `nnnn` is the fully qualified name of the exception in all upper
case letters. This line is always present.
-
+
* `mmmm` is the message (this line present only if message is non-null)
-
+
* `ppp` is the Process Id value as a decimal integer (this line is
present only if the Process Id is nonzero). Currently we are
not making use of this field.
@@ -366,35 +366,28 @@ where
The line terminator sequence at the end of each line, including
the last line is a single `LF` character (`16#0A#`).
-*
+*
"Implementation-defined check names. See 11.5(27)."
-The implementation defined check name Alignment_Check controls checking of
-address clause values for proper alignment (that is, the address supplied
-must be consistent with the alignment of the type).
-
-The implementation defined check name Predicate_Check controls whether
-predicate checks are generated.
-
-The implementation defined check name Validity_Check controls whether
-validity checks are generated.
-
-In addition, a user program can add implementation-defined check names
-by means of the pragma Check_Name.
+The implementation defined check names include Alignment_Check,
+Atomic_Synchronization, Duplicated_Tag_Check, Container_Checks,
+Tampering_Check, Predicate_Check, and Validity_Check. In addition, a user
+program can add implementation-defined check names by means of the pragma
+Check_Name. See the description of pragma `Suppress` for full details.
-*
+*
"The interpretation of each aspect of representation. See
13.1(20)."
See separate section on data representations.
-*
+*
"Any restrictions placed upon representation items. See
13.1(20)."
See separate section on data representations.
-*
+*
"The meaning of `Size` for indefinite subtypes. See
13.3(48)."
@@ -402,27 +395,27 @@ Size for an indefinite subtype is the maximum possible size, except that
for the case of a subprogram parameter, the size of the parameter object
is the actual size.
-*
+*
"The default external representation for a type tag. See
13.3(75)."
The default external representation for a type tag is the fully expanded
name of the type in upper case letters.
-*
+*
"What determines whether a compilation unit is the same in
two different partitions. See 13.3(76)."
A compilation unit is the same in two different partitions if and only
if it derives from the same source file.
-*
+*
"Implementation-defined components. See 13.5.1(15)."
The only implementation defined component is the tag for a tagged type,
which contains a pointer to the dispatching table.
-*
+*
"If `Word_Size` = `Storage_Unit`, the default bit
ordering. See 13.5.3(5)."
@@ -430,7 +423,7 @@ which contains a pointer to the dispatching table.
implementation, so no non-default bit ordering is supported. The default
bit ordering corresponds to the natural endianness of the target architecture.
-*
+*
"The contents of the visible part of package `System`
and its language-defined children. See 13.7(2)."
@@ -443,14 +436,14 @@ System.
Max_Priority : constant Positive := Priority'Last;
Max_Interrupt_Priority : constant Positive := Interrupt_Priority'Last;
-*
+*
"The contents of the visible part of package
`System.Machine_Code`, and the meaning of
`code_statements`. See 13.8(7)."
See the definition and documentation in file :file:`s-maccod.ads`.
-*
+*
"The effect of unchecked conversion. See 13.9(11)."
Unchecked conversion between types of the same size
@@ -467,7 +460,7 @@ unconstrained array are not permitted. If the target alignment is
greater than the source alignment, then a copy of the result is
made with appropriate alignment
-*
+*
"The semantics of operations on invalid representations.
See 13.9.2(10-11)."
@@ -492,7 +485,7 @@ result in erroneous behavior. For example executing:
As indicated, an exception is raised on the array assignment, but not
on the simple assignment of the invalid negative value from Y to Z.
-*
+*
"The manner of choosing a storage pool for an access type
when `Storage_Pool` is not specified for the type. See 13.11(17)."
@@ -505,7 +498,7 @@ library units `System.Pool_Global`, `System.Pool_Size` and
:file:`s-pooglo.ads` and :file:`s-pooloc.ads` for full details on the
default pools used.
-*
+*
"Whether or not the implementation provides user-accessible
names for the standard pool type(s). See 13.11(17)."
@@ -513,14 +506,14 @@ See documentation in the sources of the run time mentioned in the previous
paragraph. All these pools are accessible by means of `with`'ing
these units.
-*
+*
"The meaning of `Storage_Size`. See 13.11(18)."
`Storage_Size` is measured in storage units, and refers to the
total space available for an access type collection, or to the primary
stack space for a task.
-*
+*
"Implementation-defined aspects of storage pools. See
13.11(22)."
@@ -528,13 +521,13 @@ See documentation in the sources of the run time mentioned in the
paragraph about standard storage pools above
for details on GNAT-defined aspects of storage pools.
-*
+*
"The set of restrictions allowed in a pragma
`Restrictions`. See 13.12(7)."
See :ref:`Standard_and_Implementation_Defined_Restrictions`.
-*
+*
"The consequences of violating limitations on
`Restrictions` pragmas. See 13.12(9)."
@@ -542,7 +535,7 @@ Restrictions that can be checked at compile time result in illegalities
if violated. Currently there are no other consequences of violating
restrictions.
-*
+*
"The representation used by the `Read` and
`Write` attributes of elementary types in terms of stream
elements. See 13.13.2(9)."
@@ -551,13 +544,13 @@ The representation is the in-memory representation of the base type of
the type, using the number of bits corresponding to the
``type'Size`` value, and the natural ordering of the machine.
-*
+*
"The names and characteristics of the numeric subtypes
declared in the visible part of package `Standard`. See A.1(3)."
See items describing the integer and floating-point types supported.
-*
+*
"The string returned by `Character_Set_Version`.
See A.3.5(3)."
@@ -565,14 +558,14 @@ See items describing the integer and floating-point types supported.
the string "Unicode 4.0", referring to version 4.0 of the
Unicode specification.
-*
+*
"The accuracy actually achieved by the elementary
functions. See A.5.1(1)."
The elementary functions correspond to the functions available in the C
library. Only fast math mode is implemented.
-*
+*
"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)."
@@ -580,19 +573,19 @@ library. Only fast math mode is implemented.
The sign of zeroes follows the requirements of the IEEE 754 standard on
floating-point.
-*
+*
"The value of
`Numerics.Float_Random.Max_Image_Width`. See A.5.2(27)."
Maximum image width is 6864, see library file :file:`s-rannum.ads`.
-*
+*
"The value of
`Numerics.Discrete_Random.Max_Image_Width`. See A.5.2(27)."
Maximum image width is 6864, see library file :file:`s-rannum.ads`.
-*
+*
"The algorithms for random number generation. See
A.5.2(32)."
@@ -600,7 +593,7 @@ The algorithm is the Mersenne Twister, as documented in the source file
:file:`s-rannum.adb`. This version of the algorithm has a period of
2**19937-1.
-*
+*
"The string representation of a random number generator's
state. See A.5.2(38)."
@@ -608,7 +601,7 @@ The value returned by the Image function is the concatenation of
the fixed-width decimal representations of the 624 32-bit integers
of the state vector.
-*
+*
"The minimum time interval between calls to the
time-dependent Reset procedure that are guaranteed to initiate different
random number sequences. See A.5.2(45)."
@@ -616,7 +609,7 @@ of the state vector.
The minimum period between reset calls to guarantee distinct series of
random numbers is one microsecond.
-*
+*
"The values of the `Model_Mantissa`,
`Model_Emin`, `Model_Epsilon`, `Model`,
`Safe_First`, and `Safe_Last` attributes, if the Numerics
@@ -625,14 +618,14 @@ random numbers is one microsecond.
Run the compiler with *-gnatS* to produce a listing of package
`Standard`, has the values of all numeric attributes.
-*
+*
"Any implementation-defined characteristics of the
input-output packages. See A.7(14)."
There are no special implementation defined characteristics for these
packages.
-*
+*
"The value of `Buffer_Size` in `Storage_IO`. See
A.9(10)."
@@ -640,14 +633,14 @@ All type representations are contiguous, and the `Buffer_Size` is
the value of ``type'Size`` rounded up to the next storage unit
boundary.
-*
+*
"External files for standard input, standard output, and
standard error See A.10(5)."
These files are mapped onto the files provided by the C streams
libraries. See source file :file:`i-cstrea.ads` for further details.
-*
+*
"The accuracy of the value produced by `Put`. See
A.10.9(36)."
@@ -655,26 +648,26 @@ If more digits are requested in the output than are represented by the
precision of the value, zeroes are output in the corresponding least
significant digit positions.
-*
+*
"The meaning of `Argument_Count`, `Argument`, and
`Command_Name`. See A.15(1)."
These are mapped onto the `argv` and `argc` parameters of the
main program in the natural manner.
-*
+*
"The interpretation of the `Form` parameter in procedure
`Create_Directory`. See A.16(56)."
The `Form` parameter is not used.
-*
+*
"The interpretation of the `Form` parameter in procedure
`Create_Path`. See A.16(60)."
The `Form` parameter is not used.
-*
+*
"The interpretation of the `Form` parameter in procedure
`Copy_File`. See A.16(68)."
@@ -693,7 +686,7 @@ The only possible values for preserve= are:
================== ===================================================================
Value Meaning
================== ===================================================================
-*no_attributes* Do not try to preserve any file attributes. This is the
+*no_attributes* Do not try to preserve any file attributes. This is the
default if no preserve= is found in Form.
*all_attributes* Try to preserve all file attributes (timestamps, access rights).
*timestamps* Preserve the timestamp of the copied file, but not the other
@@ -705,11 +698,11 @@ The only possible values for mode= are:
============== ===============================================================================
Value Meaning
============== ===============================================================================
-*copy* Only do the copy if the destination file does not already exist.
+*copy* Only do the copy if the destination file does not already exist.
If it already exists, Copy_File fails.
*overwrite* Copy the file in all cases. Overwrite an already existing destination file.
-*append* Append the original file to the destination file. If the destination file
- does not exist, the destination file is a copy of the source file.
+*append* Append the original file to the destination file. If the destination file
+ does not exist, the destination file is a copy of the source file.
When mode=append, the field preserve=, if it exists, is not taken into account.
============== ===============================================================================
@@ -727,7 +720,7 @@ Examples of incorrect Forms::
Form => "preserve=junk"
Form => "mode=internal, preserve=timestamps"
-*
+*
"The interpretation of the `Pattern` parameter, when not the null string,
in the `Start_Search` and `Search` procedures.
See A.16(104) and A.16(112)."
@@ -738,7 +731,7 @@ according to the syntax of regular expressions as defined in the
See :ref:`GNAT.Regexp_(g-regexp.ads)`.
-*
+*
"Implementation-defined convention names. See B.1(11)."
The following convention names are supported
@@ -784,12 +777,12 @@ Convention Name Interpretation
implementations, these names are accepted silently.
======================= ==============================================================================
-*
+*
"The meaning of link names. See B.1(36)."
Link names are the actual names used by the linker.
-*
+*
"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)."
@@ -798,7 +791,7 @@ The default linker name is that which would be assigned by the relevant
external language, interpreting the Ada name as being in all lower case
letters.
-*
+*
"The effect of pragma `Linker_Options`. See B.1(37)."
The string passed to `Linker_Options` is presented uninterpreted as
@@ -815,20 +808,20 @@ list of options passed to the linker is in reverse order of the elaboration
order. For example, linker options for a body always appear before the options
from the corresponding package spec.
-*
+*
"The contents of the visible part of package
`Interfaces` and its language-defined descendants. See B.2(1)."
See files with prefix :file:`i-` in the distributed library.
-*
+*
"Implementation-defined children of package
`Interfaces`. The contents of the visible part of package
`Interfaces`. See B.2(11)."
See files with prefix :file:`i-` in the distributed library.
-*
+*
"The types `Floating`, `Long_Floating`,
`Binary`, `Long_Binary`, `Decimal_ Element`, and
`COBOL_Character`; and the initialization of the variables
@@ -848,18 +841,18 @@ COBOL Ada
For initialization, see the file :file:`i-cobol.ads` in the distributed library.
-*
+*
"Support for access to machine instructions. See C.1(1)."
See documentation in file :file:`s-maccod.ads` in the distributed library.
-*
+*
"Implementation-defined aspects of access to machine
operations. See C.1(9)."
See documentation in file :file:`s-maccod.ads` in the distributed library.
-*
+*
"Implementation-defined aspects of interrupts. See C.3(2)."
Interrupts are mapped to signals or conditions as appropriate. See
@@ -867,14 +860,14 @@ definition of unit
`Ada.Interrupt_Names` in source file :file:`a-intnam.ads` for details
on the interrupts supported on a particular target.
-*
+*
"Implementation-defined aspects of pre-elaboration. See
C.4(13)."
GNAT does not permit a partition to be restarted without reloading,
except under control of the debugger.
-*
+*
"The semantics of pragma `Discard_Names`. See C.5(7)."
Pragma `Discard_Names` causes names of enumeration literals to
@@ -882,7 +875,7 @@ be suppressed. In the presence of this pragma, the Image attribute
provides the image of the Pos of the literal, and Value accepts
Pos values.
-*
+*
"The result of the `Task_Identification.Image`
attribute. See C.7.1(7)."
@@ -910,14 +903,14 @@ No_Implicit_Heap_Allocation is in effect, the image reduces to
the numeric suffix, that is to say the hexadecimal representation of the
virtual address of the control block of the task.
-*
+*
"The value of `Current_Task` when in a protected entry
or interrupt handler. See C.7.1(17)."
Protected entries or interrupt handlers can be executed by any
convenient thread, so the value of `Current_Task` is undefined.
-*
+*
"The effect of calling `Current_Task` from an entry
body or interrupt handler. See C.7.1(19)."
@@ -925,13 +918,13 @@ The effect of calling `Current_Task` from an entry body or
interrupt handler is to return the identification of the task currently
executing the code.
-*
+*
"Implementation-defined aspects of
`Task_Attributes`. See C.7.2(19)."
There are no implementation-defined aspects of `Task_Attributes`.
-*
+*
"Values of all `Metrics`. See D(2)."
The metrics information for GNAT depends on the performance of the
@@ -943,25 +936,25 @@ information on the performance of the underlying operating system,
on the exact target in use, this information can be used to determine
the required metrics.
-*
+*
"The declarations of `Any_Priority` and
`Priority`. See D.1(11)."
See declarations in file :file:`system.ads`.
-*
+*
"Implementation-defined execution resources. See D.1(15)."
There are no implementation-defined execution resources.
-*
+*
"Whether, on a multiprocessor, a task that is waiting for
access to a protected object keeps its processor busy. See D.2.1(3)."
On a multi-processor, a task that is waiting for access to a protected
object does not keep its processor busy.
-*
+*
"The affect of implementation defined execution resources
on task dispatching. See D.2.1(9)."
@@ -969,26 +962,26 @@ Tasks map to threads in the threads package used by GNAT. Where possible
and appropriate, these threads correspond to native threads of the
underlying operating system.
-*
+*
"Implementation-defined `policy_identifiers` allowed
in a pragma `Task_Dispatching_Policy`. See D.2.2(3)."
There are no implementation-defined policy-identifiers allowed in this
pragma.
-*
+*
"Implementation-defined aspects of priority inversion. See
D.2.2(16)."
Execution of a task cannot be preempted by the implementation processing
of delay expirations for lower priority tasks.
-*
+*
"Implementation-defined task dispatching. See D.2.2(18)."
The policy is the same as that of the underlying threads implementation.
-*
+*
"Implementation-defined `policy_identifiers` allowed
in a pragma `Locking_Policy`. See D.3(4)."
@@ -1002,26 +995,26 @@ requesting the lock. On targets that support the
read/write lock allowing multiple propected object functions to enter
concurrently.
-*
+*
"Default ceiling priorities. See D.3(10)."
The ceiling priority of protected objects of the type
`System.Interrupt_Priority'Last` as described in the Ada
Reference Manual D.3(10),
-*
+*
"The ceiling of any protected object used internally by
the implementation. See D.3(16)."
The ceiling priority of internal protected objects is
`System.Priority'Last`.
-*
+*
"Implementation-defined queuing policies. See D.4(1)."
There are no implementation-defined queuing policies.
-*
+*
"On a multiprocessor, any conditions that cause the
completion of an aborted construct to be delayed later than what is
specified for a single processor. See D.6(3)."
@@ -1029,59 +1022,59 @@ There are no implementation-defined queuing policies.
The semantics for abort on a multi-processor is the same as on a single
processor, there are no further delays.
-*
+*
"Any operations that implicitly require heap storage
allocation. See D.7(8)."
The only operation that implicitly requires heap storage allocation is
task creation.
-*
+*
"What happens when a task terminates in the presence of
pragma `No_Task_Termination`. See D.7(15)."
Execution is erroneous in that case.
-*
+*
"Implementation-defined aspects of pragma
`Restrictions`. See D.7(20)."
There are no such implementation-defined aspects.
-*
+*
"Implementation-defined aspects of package
`Real_Time`. See D.8(17)."
There are no implementation defined aspects of package `Real_Time`.
-*
+*
"Implementation-defined aspects of
`delay_statements`. See D.9(8)."
Any difference greater than one microsecond will cause the task to be
delayed (see D.9(7)).
-*
+*
"The upper bound on the duration of interrupt blocking
caused by the implementation. See D.12(5)."
The upper bound is determined by the underlying operating system. In
no cases is it more than 10 milliseconds.
-*
+*
"The means for creating and executing distributed
programs. See E(5)."
The GLADE package provides a utility GNATDIST for creating and executing
distributed programs. See the GLADE reference manual for further details.
-*
+*
"Any events that can result in a partition becoming
inaccessible. See E.1(7)."
See the GLADE reference manual for full details on such events.
-*
+*
"The scheduling policies, treatment of priorities, and
management of shared resources between partitions in certain cases. See
E.1(11)."
@@ -1089,7 +1082,7 @@ See the GLADE reference manual for full details on such events.
See the GLADE reference manual for full details on these aspects of
multi-partition execution.
-*
+*
"Events that cause the version of a compilation unit to
change. See E.3(5)."
@@ -1099,27 +1092,27 @@ to change. No other actions cause the version number to change. All changes
are significant except those which affect only layout, capitalization or
comments.
-*
+*
"Whether the execution of the remote subprogram is
immediately aborted as a result of cancellation. See E.4(13)."
See the GLADE reference manual for details on the effect of abort in
a distributed application.
-*
+*
"Implementation-defined aspects of the PCS. See E.5(25)."
See the GLADE reference manual for a full description of all implementation
defined aspects of the PCS.
-*
+*
"Implementation-defined interfaces in the PCS. See
E.5(26)."
See the GLADE reference manual for a full description of all
implementation defined interfaces.
-*
+*
"The values of named numbers in the package
`Decimal`. See F.2(7)."
@@ -1133,26 +1126,26 @@ Named Number Value
*Max_Decimal_Digits* 18
==================== ==========
-*
+*
"The value of `Max_Picture_Length` in the package
`Text_IO.Editing`. See F.3.3(16)."
64
-*
+*
"The value of `Max_Picture_Length` in the package
`Wide_Text_IO.Editing`. See F.3.4(5)."
64
-*
+*
"The accuracy actually achieved by the complex elementary
functions and by other complex arithmetic operations. See G.1(1)."
Standard library functions are used for the complex arithmetic
operations. Only fast math mode is currently supported.
-*
+*
"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)."
@@ -1160,7 +1153,7 @@ operations. Only fast math mode is currently supported.
The signs of zero values are as recommended by the relevant
implementation advice.
-*
+*
"The sign of a zero result (or a component thereof) from
any operator or function in
`Numerics.Generic_Complex_Elementary_Functions`, when
@@ -1169,14 +1162,14 @@ implementation advice.
The signs of zero values are as recommended by the relevant
implementation advice.
-*
+*
"Whether the strict mode or the relaxed mode is the
default. See G.2(2)."
The strict mode is the default. There is no separate relaxed mode. GNAT
provides a highly efficient implementation of strict mode.
-*
+*
"The result interval in certain cases of fixed-to-float
conversion. See G.2.1(10)."
@@ -1184,7 +1177,7 @@ For cases where the result interval is implementation dependent, the
accuracy is that provided by performing all operations in 64-bit IEEE
floating-point format.
-*
+*
"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)."
@@ -1197,14 +1190,14 @@ must be used for achieving IEEE conforming behavior (although at the cost
of a significant performance penalty), so infinite and NaN values are
properly generated.
-*
+*
"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)."
Not relevant, division is IEEE exact.
-*
+*
"The definition of close result set, which determines the
accuracy of certain fixed point multiplications and divisions. See
G.2.3(5)."
@@ -1214,7 +1207,7 @@ floating-point arithmetic. The input operands are converted to
floating-point, the operation is done in floating-point, and the result
is converted to the target type.
-*
+*
"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)."
@@ -1223,7 +1216,7 @@ The result is only defined to be in the perfect result set if the result
can be computed by a single scaling operation involving a scale factor
representable in 64-bits.
-*
+*
"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)."
@@ -1231,14 +1224,14 @@ representable in 64-bits.
Not relevant, `Machine_Overflows` is `True` for fixed-point
types.
-*
+*
"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)."
IEEE infinite and Nan values are produced as appropriate.
-*
+*
"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
@@ -1246,13 +1239,13 @@ IEEE infinite and Nan values are produced as appropriate.
Information on this subject is not yet available.
-*
+*
"The accuracy of certain elementary functions for
parameters beyond the angle threshold. See G.2.4(10)."
Information on this subject is not yet available.
-*
+*
"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
@@ -1260,27 +1253,27 @@ Information on this subject is not yet available.
IEEE infinite and Nan values are produced as appropriate.
-*
+*
"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)."
Information on those subjects is not yet available.
-*
+*
"Information regarding bounded errors and erroneous
execution. See H.2(1)."
Information on this subject is not yet available.
-*
+*
"Implementation-defined aspects of pragma
`Inspection_Point`. See H.3.2(8)."
Pragma `Inspection_Point` ensures that the variable is live and can
be examined by the debugger at the inspection point.
-*
+*
"Implementation-defined aspects of pragma
`Restrictions`. See H.4(25)."
@@ -1288,7 +1281,7 @@ There are no implementation-defined aspects of pragma `Restrictions`. The
use of pragma `Restrictions [No_Exceptions]` has no effect on the
generated code. Checks must suppressed by use of pragma `Suppress`.
-*
+*
"Any restrictions on pragma `Restrictions`. See
H.4(27)."
diff --git a/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst b/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst
index 058db24..5f8491b 100644
--- a/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst
+++ b/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst
@@ -803,24 +803,6 @@ compatibility with the standard `Assertion_Policy` pragma. The check
policy setting `DISABLE` causes the second argument of a corresponding
`Check` pragma to be completely ignored and not analyzed.
-Pragma CIL_Constructor
-======================
-
-Syntax:
-
-
-::
-
- pragma CIL_Constructor ([Entity =>] function_LOCAL_NAME);
-
-
-This pragma is used to assert that the specified Ada function should be
-mapped to the .NET constructor for some Ada tagged record type.
-
-See section 4.1 of the
-`GNAT User's Guide: Supplement for the .NET Platform.`
-for related information.
-
Pragma Comment
==============
@@ -2864,42 +2846,6 @@ invariant pragma for the same entity.
For further details on the use of this pragma, see the Ada 2012 documentation
of the Type_Invariant aspect.
-Pragma Java_Constructor
-=======================
-
-Syntax:
-
-
-::
-
- pragma Java_Constructor ([Entity =>] function_LOCAL_NAME);
-
-
-This pragma is used to assert that the specified Ada function should be
-mapped to the Java constructor for some Ada tagged record type.
-
-See section 7.3.2 of the
-`GNAT User's Guide: Supplement for the JVM Platform.`
-for related information.
-
-Pragma Java_Interface
-=====================
-
-Syntax:
-
-
-::
-
- pragma Java_Interface ([Entity =>] abstract_tagged_type_LOCAL_NAME);
-
-
-This pragma is used to assert that the specified Ada abstract tagged type
-is to be mapped to a Java interface name.
-
-See sections 7.1 and 7.2 of the
-`GNAT User's Guide: Supplement for the JVM Platform.`
-for related information.
-
Pragma Keep_Names
=================
@@ -5770,6 +5716,13 @@ names that are implementation defined (as permitted by the RM):
for a duplicated tag value when a tagged type is declared.
*
+ `Container_Checks` Can be used to suppress all checks within Ada.Containers
+ and instances of its children, including Tampering_Check.
+
+*
+ `Tampering_Check` Can be used to suppress tampering check in the containers.
+
+*
`Predicate_Check` can be used to control whether predicate checks are
active. It is applicable only to predicates for which the policy is
`Check`. Unlike `Assertion_Policy`, which determines if a given
@@ -6479,8 +6432,8 @@ configuration pragma will ensure this test is not suppressed:
This pragma is standard in Ada 2005. It is available in all earlier versions
of Ada as an implementation-defined pragma.
-Note that in addition to the checks defined in the Ada RM, GNAT recogizes
-a number of implementation-defined check names. See description of pragma
+Note that in addition to the checks defined in the Ada RM, GNAT recogizes a
+number of implementation-defined check names. See the description of pragma
`Suppress` for full details.
Pragma Use_VADS_Size
diff --git a/gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst b/gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst
index c5cabb9..1a88222 100644
--- a/gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst
+++ b/gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst
@@ -137,12 +137,19 @@ No_Anonymous_Allocators
[RM H.4] This restriction ensures at compile time that there are no
occurrences of an allocator of anonymous access type.
+No_Asynchronous_Control
+-----------------------
+.. index:: No_Asynchronous_Control
+
+[RM J.13] This restriction ensures at compile time that there are no semantic
+dependences on the predefined package Asynchronous_Task_Control.
+
No_Calendar
-----------
.. index:: No_Calendar
-[GNAT] This restriction ensures at compile time that there is no implicit or
-explicit dependence on the package `Ada.Calendar`.
+[GNAT] This restriction ensures at compile time that there are no semantic
+dependences on package Calendar.
No_Coextensions
---------------
@@ -170,14 +177,14 @@ No_Delay
.. index:: No_Delay
[RM H.4] This restriction ensures at compile time that there are no
-delay statements and no dependences on package Calendar.
+delay statements and no semantic dependences on package Calendar.
No_Dependence
-------------
.. index:: No_Dependence
-[RM 13.12.1] This restriction checks at compile time that there are no
-dependence on a library unit.
+[RM 13.12.1] This restriction ensures at compile time that there are no
+dependences on a library unit.
No_Direct_Boolean_Operators
---------------------------
@@ -709,6 +716,20 @@ No_Unchecked_Access
[RM H.4] This restriction ensures at compile time that there are no
occurrences of the Unchecked_Access attribute.
+No_Unchecked_Conversion
+-----------------------
+.. index:: No_Unchecked_Conversion
+
+[RM J.13] This restriction ensures at compile time that there are no semantic
+dependences on the predefined generic function Unchecked_Conversion.
+
+No_Unchecked_Deallocation
+-------------------------
+.. index:: No_Unchecked_Deallocation
+
+[RM J.13] This restriction ensures at compile time that there are no semantic
+dependences on the predefined generic procedure Unchecked_Deallocation.
+
No_Use_Of_Entity
----------------
.. index:: No_Use_Of_Entity
diff --git a/gcc/ada/doc/gnat_rm/the_gnat_library.rst b/gcc/ada/doc/gnat_rm/the_gnat_library.rst
index a5f0aa2..6220bc2 100644
--- a/gcc/ada/doc/gnat_rm/the_gnat_library.rst
+++ b/gcc/ada/doc/gnat_rm/the_gnat_library.rst
@@ -641,6 +641,19 @@ Provides AWK-like parsing functions, with an easy interface for parsing one
or more files containing formatted data. The file is viewed as a database
where each record is a line and a field is a data element in this line.
+.. _`GNAT.Bind_Environment_(g-binenv.ads)`:
+
+`GNAT.Bind_Environment` (:file:`g-binenv.ads`)
+==============================================
+
+.. index:: GNAT.Bind_Environment (g-binenv.ads)
+
+.. index:: Bind environment
+
+Provides access to key=value associations captured at bind time.
+These associations can be specified using the `-V` binder command
+line switch.
+
.. _`GNAT.Bounded_Buffers_(g-boubuf.ads)`:
`GNAT.Bounded_Buffers` (:file:`g-boubuf.ads`)
diff --git a/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst b/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
index 4c6e137..de04d2c 100644
--- a/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
+++ b/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
@@ -4911,13 +4911,12 @@ following *gcc* switches refine this default behavior.
the condition being checked is true, which can result in erroneous
execution if that assumption is wrong.
- The checks subject to suppression include all the checks defined by
- the Ada standard, the additional implementation defined checks
- `Alignment_Check`,
- `Duplicated_Tag_Check`, `Predicate_Check`, and
- `Validity_Check`, as well as any checks introduced using
- `pragma Check_Name`. Note that `Atomic_Synchronization`
- is not automatically suppressed by use of this option.
+ The checks subject to suppression include all the checks defined by the Ada
+ standard, the additional implementation defined checks `Alignment_Check`,
+ `Duplicated_Tag_Check`, `Predicate_Check`, Container_Checks, Tampering_Check,
+ and `Validity_Check`, as well as any checks introduced using `pragma
+ Check_Name`. Note that `Atomic_Synchronization` is not automatically
+ suppressed by use of this option.
If the code depends on certain checks being active, you can use
pragma `Unsuppress` either as a configuration pragma or as
@@ -6326,6 +6325,14 @@ be presented in subsequent sections.
:file:`stdout`.
+ .. index:: -V (gnatbind)
+
+:samp:`-V{key}={value}`
+ Store the given association of `key` to `value` in the bind environment.
+ Values stored this way can be retrieved at run time using
+ `GNAT.Bind_Environment`.
+
+
.. index:: -w (gnatbind)
:samp:`-w{x}`
diff --git a/gcc/ada/doc/gnat_ugn/gnat_project_manager.rst b/gcc/ada/doc/gnat_ugn/gnat_project_manager.rst
index 79569b0..b2c0ec2 100644
--- a/gcc/ada/doc/gnat_ugn/gnat_project_manager.rst
+++ b/gcc/ada/doc/gnat_ugn/gnat_project_manager.rst
@@ -175,7 +175,7 @@ the directory :file:`obj/`.
proc.adb
common/obj/
proc.ali, proc.o pack.ali, pack.o
-
+
Our project is to be called *Build*. The name of the
file is the name of the project (case-insensitive) with the
@@ -187,10 +187,10 @@ file is enough for it. We will thus create a new file, that for now
should contain the following code:
.. code-block:: gpr
-
+
project Build is
end Build;
-
+
.. _Source_Files_and_Directories:
@@ -263,7 +263,7 @@ There are several ways of defining source directories:
for Source_Dirs use ("./**");
for Ignore_Source_Sub_Dirs use (".svn");
-
+
When applied to the simple example, and because we generally prefer to have
the project file at the toplevel directory rather than mixed with the sources,
@@ -276,7 +276,7 @@ we will create the following file
project Build is
for Source_Dirs use ("common"); -- <<<<
end Build;
-
+
Once source directories have been specified, one may need to indicate
source files of interest. By default, all source files present in the source
@@ -426,7 +426,7 @@ For our example, we can specify the object dir in this way:
for Source_Dirs use ("common");
for Object_Dir use "obj"; -- <<<<
end Build;
-
+
As mentioned earlier, there is a single object directory per project. As a
result, if you have an existing system where the object files are spread across
several directories, you can either move all of them into the same directory if
@@ -459,7 +459,7 @@ the project file is now
for Object_Dir use "obj";
for Exec_Dir use "."; -- <<<<
end Build;
-
+
.. _Main_Subprograms:
@@ -497,7 +497,7 @@ corresponding executables.
for Exec_Dir use ".";
for Main use ("proc.adb"); -- <<<<
end Build;
-
+
If this attribute is defined in the project, then spawning the builder
with a command such as
@@ -505,7 +505,7 @@ with a command such as
.. code-block:: sh
gprbuild -Pbuild
-
+
automatically builds all the executables corresponding to the files
listed in the *Main* attribute. It is possible to specify one
@@ -564,7 +564,7 @@ packages would be involved in the build process.
for Object_Dir use "obj";
for Exec_Dir use ".";
for Main use ("proc.adb");
-
+
package Builder is --<<< for gprbuild
end Builder;
@@ -630,7 +630,7 @@ Several attributes can be used to specify the switches:
for Switches ("proc.adb")
use ("-O0");
end Compiler;
-
+
`Switches` may take a pattern as an index, such as in:
@@ -642,7 +642,7 @@ Several attributes can be used to specify the switches:
for Switches ("pkg*")
use ("-O0");
end Compiler;
-
+
Sources :file:`pkg.adb` and :file:`pkg-child.adb` would be compiled with -O0,
not -O2.
@@ -679,7 +679,7 @@ Here is the command we would use from the command line:
.. code-block:: sh
gprbuild -Pbuild
-
+
This will automatically build the executables specified through the
*Main* attribute: for each, it will compile or recompile the
sources for which the object file does not exist or is not up-to-date; it
@@ -693,7 +693,7 @@ set the attribute *Languages* to `"(Ada, C)"`, and re-run
.. code-block:: sh
gprbuild -Pbuild
-
+
Gprbuild knows how to recompile the C files and will
recompile them only if one of their dependencies has changed. No direct
indication on how to build the various elements is given in the
@@ -752,7 +752,7 @@ on Windows), we could configure our project file to build "proc1"
for Executable ("proc.adb") use "proc1";
end Builder
end Build;
-
+
.. index:: Executable_Suffix (GNAT Project Manager)
Attribute **Executable_Suffix**, when specified, may change the suffix
@@ -790,7 +790,7 @@ project using similar sources and a main program in C:
for Switches ("main.c") use C_Switches & ("-g");
end Compiler;
end C_Main;
-
+
This project has many similarities with the previous one.
As expected, its `Main` attribute now refers to a C source.
The attribute *Exec_Dir* is now omitted, thus the resulting
@@ -810,7 +810,7 @@ replaced by a reference to the `Default_Switches` attribute:
.. code-block:: gpr
for Switches ("c_main.c") use Compiler'Default_Switches ("C") & ("-g");
-
+
Note the tick (*'*) used to refer to attributes defined in a package.
Here is the output of the GPRbuild command using this project:
@@ -825,7 +825,7 @@ Here is the output of the GPRbuild command using this project:
gprbind main.bexch
...
gcc main.o -o main
-
+
The default switches for Ada sources,
the default switches for C sources (in the compilation of :file:`lib.c`),
and the specific switches for :file:`main.c` have all been taken into
@@ -986,7 +986,7 @@ The following attributes can be defined in package `Naming`:
for Spec ("MyPack.MyChild") use "mypack.mychild.spec";
for Spec ("top") use "foo.a" at 1;
for Spec ("foo") use "foo.a" at 2;
-
+
.. index:: Body (GNAT Project Manager)
@@ -1018,7 +1018,7 @@ For example, the following package models the Apex file naming rules:
for Spec_Suffix ("Ada") use ".1.ada";
for Body_Suffix ("Ada") use ".2.ada";
end Naming;
-
+
.. _Installation:
@@ -1048,7 +1048,9 @@ The following attributes can be defined in package `Install`:
An array attribute to declare a set of files not part of the sources
to be installed. The array discriminant is the directory where the
file is to be installed. If a relative directory then Prefix (see
- below) is prepended.
+ below) is prepended. Note also that if the same file name occurs
+ multiple time in the attribute list, the last one will be the one
+ installed.
.. index:: Prefix (GNAT Project Manager)
@@ -1155,7 +1157,7 @@ project:
project Build is
... -- as before
end Build;
-
+
.. index:: Externally_Built (GNAT Project Manager)
@@ -1296,7 +1298,7 @@ its variables cannot be referred to.
project D is
for Exec_Dir use A'Exec_Dir; -- not ok
end D;
-
+
.. _Sharing_Between_Projects:
@@ -1341,7 +1343,7 @@ There are two main approaches to avoiding this duplication:
for Switches ("Ada") use Logging.Binder'Switches ("Ada");
end Binder;
end Build;
-
+
The solution used for `Compiler` gets the same value for all
attributes of the package, but you cannot modify anything from the
package (adding extra switches or some exceptions). The second
@@ -1383,7 +1385,7 @@ There are two main approaches to avoiding this duplication:
project Build is
package Compiler renames Shared.Compiler;
end Build;
-
+
As for the first example, we could have chosen to set the attributes
one by one rather than to rename a package. The reason we explicitly
indicate that `Shared` has no sources is so that it can be created
@@ -1482,7 +1484,7 @@ order of priority):
.. code-block:: sh
gprbuild -Pbuild.gpr -Xmode=release
-
+
**Environment variables**:
When the external value does not come from the command line, it can come from
@@ -1507,7 +1509,7 @@ either :file:`obj/debug` or :file:`obj/release` by changing our project to
for Object_Dir use "obj/" & external ("mode", "debug");
... -- as before
end Build;
-
+
The second parameter to `external` is optional, and is the default
value to use if "mode" is not set from the command line or the environment.
@@ -1539,7 +1541,7 @@ sections in the project. The following example shows how this can be done:
end case;
end Compiler;
end Build;
-
+
The project has suddenly grown in size, but has become much more flexible.
`Mode_Type` defines the only valid values for the `mode` variable. If
any other value is read from the environment, an error is reported and the
@@ -1636,7 +1638,7 @@ Here is the new version of :file:`logging.gpr` that makes it a library:
for Object_Dir use "obj";
for Library_Dir use "lib"; -- different from object_dir
end Logging;
-
+
Once the above two attributes are defined, the library project is valid and
is enough for building a library with default characteristics.
Other library-related attributes can be used to change the defaults:
@@ -1696,7 +1698,7 @@ Other library-related attributes can be used to change the defaults:
for Library_Kind use "dynamic";
for Library_Version use "liblogging.so." & Version;
end Logging;
-
+
After the compilation, the directory :file:`lib` will contain both a
:file:`libdummy.so.1` library and a symbolic link to it called
@@ -1781,7 +1783,7 @@ the following two commands need to be used:
gprbuild -Plogging.gpr
gprbuild -Pbuild.gpr
-
+
All :file:`ALI` files will also be copied from the object directory to the
library directory. To build executables, *gprbuild* will use the
library rather than the individual object files.
@@ -1801,7 +1803,7 @@ of the library sources are not available. Such library projects need to use the
for Library_Name use "l2";
for Externally_Built use "true"; -- <<<<
end Extern_Lib;
-
+
In the case of externally built libraries, the `Object_Dir`
attribute does not need to be specified because it will never be
used.
@@ -2089,7 +2091,7 @@ the project `Build` from previous examples:
project Work extends "../bld/build.gpr" is
end Work;
-
+
The project after **extends** is the one being extended. As usual, it can be
specified using an absolute path, or a path relative to any of the directories
in the project path (see :ref:`Project_Dependencies`). This project does not
@@ -2100,7 +2102,7 @@ attributes will be used that is to say the current directory (where project
.. code-block:: sh
gprbuild -Pwork
-
+
If no sources have been placed in the current directory, this command
won't do anything, since this project does not change the
sources it inherited from `Build`, therefore all the object files
@@ -2154,7 +2156,7 @@ line.
-- New spec of Pkg does not need a completion
for Excluded_Source_Files use ("pack.adb");
end Work;
-
+
All packages that are not declared in the extending project are inherited from
the project being extended, with their attributes, with the exception of
@@ -2182,7 +2184,7 @@ For example, consider the following hierarchy of projects.
a.gpr contains package A1
b.gpr, imports a.gpr and contains B1, which depends on A1
c.gpr, imports b.gpr and contains C1, which depends on B1
-
+
If we want to locally extend the packages `A1` and `C1`, we need to
create several extending projects:
@@ -2191,7 +2193,7 @@ create several extending projects:
a_ext.gpr which extends a.gpr, and overrides A1
b_ext.gpr which extends b.gpr and imports a_ext.gpr
c_ext.gpr which extends c.gpr, imports b_ext.gpr and overrides C1
-
+
.. code-block:: gpr
project A_Ext extends "a.gpr" is
@@ -2252,7 +2254,7 @@ Thus, in our example we could create the following projects instead:
project C_Ext extends all "c.gpr" is
for Source_Files use ("c1.adb");
end C_Ext;
-
+
When building project :file:`c_ext.gpr`, the entire modified project space is
considered for recompilation, including the sources of :file:`b.gpr` that are
@@ -2289,7 +2291,7 @@ However, if you build your project through *gprbuild*, using a syntax similar to
::
gprbuild -PA.gpr
-
+
this will only rebuild the main programs of project A, not those of the
imported projects B and C. Therefore you have to spawn several
*gprbuild* commands, one per project, to build all executables.
@@ -2341,7 +2343,7 @@ Using only *gprbuild*, you could do
gprbuild -PA.gpr
gprbuild -PB.gpr
-
+
to build both. But again, *gprbuild* has to do some duplicate work for
those files that are shared between the two, and cannot truly build
things in parallel efficiently.
@@ -2401,7 +2403,7 @@ reference external variables in |with| declarations, as in
project MyProject is
...
end MyProject;
-
+
For various reasons, this is not allowed. But using aggregate projects provide
an elegant solution. For instance, you could use a project file like:
@@ -2416,7 +2418,7 @@ an elegant solution. For instance, you could use a project file like:
project MyProject is
...
end MyProject;
-
+
.. _Performance_improvements_in_builder:
@@ -2527,7 +2529,7 @@ The following three attributes can be used only in an aggregate project:
for Project_Files use ("/.gpr");
-- all projects recursively
-
+
.. index:: Project_Path (GNAT Project Manager)
@@ -2601,7 +2603,7 @@ The following three attributes can be used only in an aggregate project:
.. code-block:: gpr
for Project_Path use ("/usr/local/gpr", "gpr/");
-
+
.. index:: External (GNAT Project Manager)
**External**:
@@ -2665,7 +2667,7 @@ are valid:
.. code-block:: gpr
for Switches (others) use ("-v", "-k", "-j8");
-
+
These switches are only read from the main aggregate project (the
one passed on the command line), and ignored in all other aggregate
projects or projects.
@@ -2740,7 +2742,7 @@ are valid:
use ("-O0", "-g");
end Compiler;
end C;
-
+
then the following switches are used:
@@ -2816,13 +2818,13 @@ and C:
for Library_Name use ("agg");
for Library_Dir use ("lagg");
end Agg;
-
+
Then, when you build with:
.. code-block:: sh
gprbuild agg.gpr
-
+
This will build all units from projects A, B and C and will create a
static library named :file:`libagg.a` in the :file:`lagg`
directory. An aggregate library project has the same set of
@@ -2929,7 +2931,7 @@ are always case-insensitive ("Name" is the same as "name").
simple_name ::= identifier
name ::= simple_name { . simple_name }
-
+
**Strings** are used for values of attributes or as indexes for these
attributes. They are in general case sensitive, except when noted
otherwise (in particular, strings representing file names will be case
@@ -2939,7 +2941,7 @@ represent the same file).
**Reserved words** are the same as for standard Ada 95, and cannot
be used for identifiers. In particular, the following words are currently
used in project files, but others could be added later on. In bold are the
-extra reserved words in project files:
+extra reserved words in project files:
``all``, ``at``, ``case``, ``end``, ``for``, ``is``, ``limited``,
``null``, ``others``, ``package``, ``renames``, ``type``, ``use``, ``when``,
``with``, **extends**, **external**, **project**.
@@ -2980,7 +2982,7 @@ in the cycle is a **limited with**.
with "other_project.gpr";
project My_Project extends "extended.gpr" is
end My_Project;
-
+
These dependencies form a **directed graph**, potentially cyclic when using
**limited with**. The subgraph reflecting the **extends** relations is a tree.
@@ -3010,7 +3012,7 @@ in the child project.
project <project_>name is
{declarative_item}
end <project_>simple_name;
-
+
.. _Qualified_Projects:
@@ -3021,7 +3023,7 @@ Before the reserved `project`, there may be one or two **qualifiers**, that
is identifiers or reserved words, to qualify the project.
The current list of qualifiers is:
-**abstract**:
+**abstract**:
Qualifies a project with no sources.
Such a project must either have no declaration of attributes `Source_Dirs`,
`Source_Files`, `Languages` or `Source_List_File`, or one of
@@ -3029,11 +3031,11 @@ The current list of qualifiers is:
as empty. If it extends another project, the project it extends must also be a
qualified abstract project.
-**standard**:
+**standard**:
A standard project is a non library project with sources.
This is the default (implicit) qualifier.
-**aggregate**:
+**aggregate**:
A project whose sources are aggregated from other project files.
**aggregate library**:
@@ -3071,7 +3073,7 @@ declaration. Others can appear within a project or within a package.
| empty_declaration
empty_declaration ::= *null* ;
-
+
An empty declaration is allowed anywhere a declaration is allowed. It has
no effect.
@@ -3177,9 +3179,9 @@ The following packages are currently supported in project files
used to automatically find all source files in the source directories,
or given a file name to find out its language for proper processing.
See :ref:`Naming_Schemes`.
-
+
.. only: PRO or GPL
-
+
*Pretty_Printer*
This package specifies the options used when calling the formatting tool
*gnatpp* via the *gnat* driver. Its attributes
@@ -3208,7 +3210,7 @@ In its simplest form, a package may be empty:
package Builder is
end Builder;
end Simple;
-
+
A package may contain **attribute declarations**,
**variable declarations** and **case constructions**, as will be
described below.
@@ -3306,7 +3308,7 @@ following Ada declarations show the existing operators:
function "&" (X : String; Y : String) return String;
function "&" (X : String_List; Y : String) return String_List;
function "&" (X : String_List; Y : String_List) return String_List;
-
+
Here are some specific examples:
@@ -3316,7 +3318,7 @@ Here are some specific examples:
List2 := List & (File_Name & ".orig"); -- Two strings
Big_List := List & Lists2; -- Three strings
Illegal := "gnat.adc" & List2; -- Illegal, must start with list
-
+
.. _External_Values:
@@ -3333,7 +3335,7 @@ one that returns a string list.
The syntax of a single string external value is::
external_value ::= *external* ( string_literal [, string_literal] )
-
+
The first string_literal is the string to be used on the command line or
in the environment to specify the external value. The second string_literal,
@@ -3363,7 +3365,7 @@ attributes in various scenarios. Thus such variables are often called
The syntax for a string list external value is::
external_value ::= *external_as_list* ( string_literal , string_literal )
-
+
The first string_literal is the string to be used on the command line or
in the environment to specify the external value. The second string_literal is
@@ -3382,7 +3384,7 @@ last separator and the end are components of the string list.
::
*external_as_list* ("SWITCHES", ",")
-
+
If the external value is "-O2,-g",
the result is ("-O2", "-g").
@@ -3412,7 +3414,7 @@ level, not inside a package.
typed_string_declaration ::=
*type* *<typed_string_>*_simple_name *is* ( string_literal {, string_literal} );
-
+
The string literals in the list are case sensitive and must all be different.
They may include any graphic characters allowed in Ada, including spaces.
Here is an example of a string type declaration:
@@ -3420,7 +3422,7 @@ Here is an example of a string type declaration:
.. code-block:: ada
type OS is ("NT", "nt", "Unix", "GNU/Linux", "other OS");
-
+
Variables of a string type are called **typed variables**; all other
variables are called **untyped variables**. Typed variables are
particularly useful in `case` constructions, to support conditional
@@ -3465,9 +3467,9 @@ A variable may be declared at the project file level, or within a package.
typed_variable_declaration ::=
*<typed_variable_>*simple_name : *<typed_string_>*name := string_expression;
-
+
variable_declaration ::= *<variable_>*simple_name := expression;
-
+
Here are some examples of variable declarations:
.. code-block:: gpr
@@ -3482,7 +3484,7 @@ Here are some examples of variable declarations:
List_With_One_Element := ("-gnaty");
List_With_Two_Elements := List_With_One_Element & "-gnatg";
Long_List := ("main.ada", "pack1_.ada", "pack1.ada", "pack2_.ada");
-
+
A **variable reference** may take several forms:
* The simple variable name, for a variable in the current package (if any)
@@ -3543,7 +3545,7 @@ variables that have already been declared before the case construction.
| empty_declaration}
discrete_choice_list ::= string_literal {| string_literal} | *others*
-
+
Here is a typical example, with a typed string variable:
.. code-block:: gpr
@@ -3565,7 +3567,7 @@ Here is a typical example, with a typed string variable:
end case;
end Compiler;
end MyProj;
-
+
.. _Attributes:
@@ -3589,7 +3591,7 @@ others have values that are string lists.
attribute_designator ::=
*<simple_attribute_>*simple_name
| *<indexed_attribute_>*simple_name ( string_literal )
-
+
There are two categories of attributes: **simple attributes**
and **indexed attributes**.
Each simple attribute has a default value: the empty string (for string
@@ -3624,7 +3626,7 @@ Here are some examples of attribute declarations:
-- The package name must always be specified, even if it is the current
-- package.
for Default_Switches use Default.Builder'Default_Switches;
-
+
Attributes references may appear anywhere in expressions, and are used
to retrieve the value previously assigned to the attribute. If an attribute
has not been set in a given package or project, its value defaults to the
@@ -3638,7 +3640,7 @@ empty string or the empty list, with some exceptions.
| *<project_>*simple_name
| package_identifier
| *<project_>*simple_name . package_identifier
-
+
Examples are::
<project>'Object_Dir
@@ -3646,7 +3648,7 @@ Examples are::
Imported_Project'Source_Dirs
Imported_Project.Naming'Casing
Builder'Default_Switches ("Ada")
-
+
The exceptions to the empty defaults are:
* Object_Dir: default is "."
@@ -4596,7 +4598,9 @@ Package Install Attributes
An array attribute to declare a set of files not part of the sources
to be installed. The array discriminant is the directory where the
file is to be installed. If a relative directory then Prefix (see
- below) is prepended.
+ below) is prepended. Note also that if the same file name occurs
+ multiple time in the attribute list, the last one will be the one
+ installed.
* **Prefix**: single
@@ -4873,5 +4877,3 @@ Package Synchronize Attributes
Index is a source file name. Value is the list of switches to be used when
invoking `gnatsync` for the source.
-
-
diff --git a/gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst b/gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst
index 30eb860..80634d0 100644
--- a/gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst
+++ b/gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst
@@ -4465,7 +4465,7 @@ If you want to generate a single Ada file and not the transitive closure, you
can use instead the *-fdump-ada-spec-slim* switch.
You can optionally specify a parent unit, of which all generated units will
-be children, using `-fada-spec-parent=``unit`.
+be children, using `-fada-spec-parent=<unit>`.
Note that we recommend when possible to use the *g++* driver to
generate bindings, even for most C headers, since this will in general