gnat_ugn.texi: Remove extended inline assembly example...

2005-03-08  Geert Bosch  <bosch@adacore.com>
	    Arnaud Charlet  <charlet@adacore.com>
	    Robert Dewar  <dewar@adacore.com>
	    Cyrille Comar  <comar@adacore.com>
	    Sergey Rybin  <rybin@adacore.com>

	* gnat_ugn.texi: Remove extended inline assembly example, as it was far
	too specific and long-winded to be appropriate for the GNAT User's
	Guide.
	Warn about use of GCC switches not documented in the GNAT User's Guide,
	as these may cause generated code to not conform to Ada semantics.
	Remove mention of -gdwarf-2 for sparc64, since this is now the default.
	Add documentation for -gnat95 and -gnat05 switches
	Remove paragraph documenting obsolete way to refer to third party
	libraries.
	Add a few references to Ada_05 that were missing.
	Update documentation on -gnatZ/-gnatL.
	Document limitation when using -m64 under Solaris.
	Change the "Name Casing" subsection of the pretty-printer section
	according to the changes in the dictionary processing.

	* gnat_rm.texi: Document the Ada_05 pragma.
	Section on record representation clauses describes the new more
	relaxed rules about placement of large packed bit array components.
	Add documentation of GNAT.UTF_32

From-SVN: r96513
This commit is contained in:
Geert Bosch 2005-03-15 17:20:14 +01:00 committed by Arnaud Charlet
parent 1a49cf99b7
commit 0f1b0456bf
2 changed files with 194 additions and 1032 deletions

View File

@ -102,6 +102,7 @@ Implementation Defined Pragmas
* Pragma Abort_Defer::
* Pragma Ada_83::
* Pragma Ada_95::
* Pragma Ada_05::
* Pragma Annotate::
* Pragma Assert::
* Pragma Ast_Entry::
@ -629,6 +630,7 @@ consideration, the use of these pragmas should be minimized.
* Pragma Abort_Defer::
* Pragma Ada_83::
* Pragma Ada_95::
* Pragma Ada_05::
* Pragma Annotate::
* Pragma Assert::
* Pragma Ast_Entry::
@ -781,6 +783,24 @@ contexts. This pragma is useful when writing a reusable component that
itself uses Ada 95 features, but which is intended to be usable from
either Ada 83 or Ada 95 programs.
@node Pragma Ada_05
@unnumberedsec Pragma Ada_05
@findex Ada_05
@noindent
Syntax:
@smallexample @c ada
pragma Ada_05;
@end smallexample
@noindent
A configuration pragma that establishes Ada 2005 mode for the unit to which
it applies, regardless of the mode set by the command line switches.
This mode is set automatically for the @code{Ada} and @code{System}
packages and their children, so you need not specify it in these
contexts. This pragma is useful when writing a reusable component that
itself uses Ada 2005 features, but which is intended to be usable from
either Ada 83 or Ada 95 programs.
@node Pragma Annotate
@unnumberedsec Pragma Annotate
@findex Annotate
@ -9553,15 +9573,34 @@ thus the same lack of restriction applies. For example, if you declare:
then a component clause for a component of type R may start on any
specified bit boundary, and may specify a value of 49 bits or greater.
Packed bit arrays that are longer than 64 bits must always be placed
on a storage unit (byte) boundary. Any component clause that does not
For packed bit arrays that are longer than 64 bits, there are two
cases. If the component size is a power of 2 (1,2,4,8,16,32 bits),
including the important case of single bits or boolean values, then
there are no limitations on placement of such components, and they
may start and end at arbitrary bit boundaries.
If the component size is not a power of 2 (e.g. 3 or 5), then
an array of this type longer than 64 bits must always be placed on
on a storage unit (byte) boundary and occupy an integral number
of storage units (bytes). Any component clause that does not
meet this requirement will be rejected.
The rules for other types are different for GNAT 3 and GNAT 5 versions
(based on GCC 2 and GCC 3 respectively). In GNAT 5, larger components
(other than packed arrays)
may also be placed on arbitrary boundaries, so for example, the following
is permitted:
Any aliased component, or component of an aliased type, must
have its normal alignment and size. A component clause that
does not meet this requirement will be rejected.
The tag field of a tagged type always occupies an address sized field at
the start of the record. No component clause may attempt to overlay this
tag. When a tagged type appears as a component, the tag field must have
proper alignment
In the case of a record extension T1, of a type T, no component clause applied
to the type T1 can specify a storage location that would overlap the first
T'Size bytes of the record.
For all other component types, including non-bit-packed arrays,
the component can be placed at an arbitrary bit boundary,
so for example, the following is permitted:
@smallexample @c ada
type R is array (1 .. 10) of Boolean;
@ -9581,23 +9620,13 @@ is permitted:
@end smallexample
@noindent
Note: the above rules apply to recent releases of GNAT 5.
In GNAT 3, there are more severe restrictions on larger components.
For non-primitive types, including packed arrays with a size greater than
64 bits, component clauses must respect the alignment requirement of the
type, in particular, always starting on a byte boundary, and the length
must be a multiple of the storage unit.
The following rules regarding tagged types are enforced in both GNAT 3 and
GNAT 5:
The tag field of a tagged type always occupies an address sized field at
the start of the record. No component clause may attempt to overlay this
tag.
In the case of a record extension T1, of a type T, no component clause applied
to the type T1 can specify a storage location that would overlap the first
T'Size bytes of the record.
@node Enumeration Clauses
@section Enumeration Clauses
@ -11810,6 +11839,7 @@ of GNAT, and will generate a warning message.
* GNAT.Spitbol.Table_VString (g-sptavs.ads)::
* GNAT.Strings (g-string.ads)::
* GNAT.String_Split (g-strspl.ads)::
* GNAT.UTF_32 (g-utf_32.ads)::
* GNAT.Table (g-table.ads)::
* GNAT.Task_Lock (g-tasloc.ads)::
* GNAT.Threads (g-thread.ads)::
@ -12670,6 +12700,22 @@ a string wherever the separators appear, and provide direct access
to the resulting slices. This package is instantiated from
@code{GNAT.Array_Split}.
@node GNAT.UTF_32 (g-utf_32.ads)
@section @code{GNAT.UTF_32} (@file{g-table.ads})
@cindex @code{GNAT.UTF_32} (@file{g-table.ads})
@cindex Wide character codes
@noindent
This is a package intended to be used in conjunction with the
@code{Wide_Character} type in Ada 95 and the
@code{Wide_Wide_Character} type in Ada 2005 (available
in @code{GNAT} in Ada 2005 mode). This package contains
Unicode categorization routines, as well as lexical
categorization routines corresponding to the Ada 2005
lexical rules for identifiers and strings, and also a
lower case to upper case fold routine corresponding to
the Ada 2005 rules for identifier equivalence.
@node GNAT.Table (g-table.ads)
@section @code{GNAT.Table} (@file{g-table.ads})
@cindex @code{GNAT.Table} (@file{g-table.ads})
@ -12709,7 +12755,7 @@ Provides facilities for creating and destroying threads with explicit calls.
These threads are known to the GNAT run-time system. These subprograms are
exported C-convention procedures intended to be called from foreign code.
By using these primitives rather than directly calling operating systems
routines, compatibility with the Ada tasking runt-time is provided.
routines, compatibility with the Ada tasking run-time is provided.
@node GNAT.Traceback (g-traceb.ads)
@section @code{GNAT.Traceback} (@file{g-traceb.ads})

File diff suppressed because it is too large Load Diff