160 lines
6.9 KiB
HTML
160 lines
6.9 KiB
HTML
<html lang="en">
|
|
<head>
|
|
<title>Omissions from Ada - Debugging with GDB</title>
|
|
<meta http-equiv="Content-Type" content="text/html">
|
|
<meta name="description" content="Debugging with GDB">
|
|
<meta name="generator" content="makeinfo 4.13">
|
|
<link title="Top" rel="start" href="index.html#Top">
|
|
<link rel="up" href="Ada.html#Ada" title="Ada">
|
|
<link rel="prev" href="Ada-Mode-Intro.html#Ada-Mode-Intro" title="Ada Mode Intro">
|
|
<link rel="next" href="Additions-to-Ada.html#Additions-to-Ada" title="Additions to Ada">
|
|
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
|
<!--
|
|
Copyright (C) 1988-2019 Free Software Foundation, Inc.
|
|
|
|
Permission is granted to copy, distribute and/or modify this document
|
|
under the terms of the GNU Free Documentation License, Version 1.3 or
|
|
any later version published by the Free Software Foundation; with the
|
|
Invariant Sections being ``Free Software'' and ``Free Software Needs
|
|
Free Documentation'', with the Front-Cover Texts being ``A GNU Manual,''
|
|
and with the Back-Cover Texts as in (a) below.
|
|
|
|
(a) The FSF's Back-Cover Text is: ``You are free to copy and modify
|
|
this GNU Manual. Buying copies from GNU Press supports the FSF in
|
|
developing GNU and promoting software freedom.''
|
|
-->
|
|
<meta http-equiv="Content-Style-Type" content="text/css">
|
|
<style type="text/css"><!--
|
|
pre.display { font-family:inherit }
|
|
pre.format { font-family:inherit }
|
|
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
|
pre.smallformat { font-family:inherit; font-size:smaller }
|
|
pre.smallexample { font-size:smaller }
|
|
pre.smalllisp { font-size:smaller }
|
|
span.sc { font-variant:small-caps }
|
|
span.roman { font-family:serif; font-weight:normal; }
|
|
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
|
--></style>
|
|
</head>
|
|
<body>
|
|
<div class="node">
|
|
<a name="Omissions-from-Ada"></a>
|
|
<p>
|
|
Next: <a rel="next" accesskey="n" href="Additions-to-Ada.html#Additions-to-Ada">Additions to Ada</a>,
|
|
Previous: <a rel="previous" accesskey="p" href="Ada-Mode-Intro.html#Ada-Mode-Intro">Ada Mode Intro</a>,
|
|
Up: <a rel="up" accesskey="u" href="Ada.html#Ada">Ada</a>
|
|
<hr>
|
|
</div>
|
|
|
|
<h5 class="subsubsection">15.4.10.2 Omissions from Ada</h5>
|
|
|
|
<p><a name="index-Ada_002c-omissions-from-1059"></a>
|
|
Here are the notable omissions from the subset:
|
|
|
|
<ul>
|
|
<li>Only a subset of the attributes are supported:
|
|
|
|
<ul>
|
|
<li><tt>'First</tt>, <tt>'Last</tt>, and <tt>'Length</tt>
|
|
on array objects (not on types and subtypes).
|
|
|
|
<li><tt>'Min</tt> and <tt>'Max</tt>.
|
|
|
|
<li><tt>'Pos</tt> and <tt>'Val</tt>.
|
|
|
|
<li><tt>'Tag</tt>.
|
|
|
|
<li><tt>'Range</tt> on array objects (not subtypes), but only as the right
|
|
operand of the membership (<code>in</code>) operator.
|
|
|
|
<li><tt>'Access</tt>, <tt>'Unchecked_Access</tt>, and
|
|
<tt>'Unrestricted_Access</tt> (a GNAT extension).
|
|
|
|
<li><tt>'Address</tt>.
|
|
</ul>
|
|
|
|
<li>The names in
|
|
<code>Characters.Latin_1</code> are not available and
|
|
concatenation is not implemented. Thus, escape characters in strings are
|
|
not currently available.
|
|
|
|
<li>Equality tests (‘<samp><span class="samp">=</span></samp>’ and ‘<samp><span class="samp">/=</span></samp>’) on arrays test for bitwise
|
|
equality of representations. They will generally work correctly
|
|
for strings and arrays whose elements have integer or enumeration types.
|
|
They may not work correctly for arrays whose element
|
|
types have user-defined equality, for arrays of real values
|
|
(in particular, IEEE-conformant floating point, because of negative
|
|
zeroes and NaNs), and for arrays whose elements contain unused bits with
|
|
indeterminate values.
|
|
|
|
<li>The other component-by-component array operations (<code>and</code>, <code>or</code>,
|
|
<code>xor</code>, <code>not</code>, and relational tests other than equality)
|
|
are not implemented.
|
|
|
|
<li><a name="index-array-aggregates-_0028Ada_0029-1060"></a><a name="index-record-aggregates-_0028Ada_0029-1061"></a><a name="index-aggregates-_0028Ada_0029-1062"></a>There is limited support for array and record aggregates. They are
|
|
permitted only on the right sides of assignments, as in these examples:
|
|
|
|
<pre class="smallexample"> (gdb) set An_Array := (1, 2, 3, 4, 5, 6)
|
|
(gdb) set An_Array := (1, others => 0)
|
|
(gdb) set An_Array := (0|4 => 1, 1..3 => 2, 5 => 6)
|
|
(gdb) set A_2D_Array := ((1, 2, 3), (4, 5, 6), (7, 8, 9))
|
|
(gdb) set A_Record := (1, "Peter", True);
|
|
(gdb) set A_Record := (Name => "Peter", Id => 1, Alive => True)
|
|
</pre>
|
|
<p>Changing a
|
|
discriminant's value by assigning an aggregate has an
|
|
undefined effect if that discriminant is used within the record.
|
|
However, you can first modify discriminants by directly assigning to
|
|
them (which normally would not be allowed in Ada), and then performing an
|
|
aggregate assignment. For example, given a variable <code>A_Rec</code>
|
|
declared to have a type such as:
|
|
|
|
<pre class="smallexample"> type Rec (Len : Small_Integer := 0) is record
|
|
Id : Integer;
|
|
Vals : IntArray (1 .. Len);
|
|
end record;
|
|
</pre>
|
|
<p>you can assign a value with a different size of <code>Vals</code> with two
|
|
assignments:
|
|
|
|
<pre class="smallexample"> (gdb) set A_Rec.Len := 4
|
|
(gdb) set A_Rec := (Id => 42, Vals => (1, 2, 3, 4))
|
|
</pre>
|
|
<p>As this example also illustrates, <span class="sc">gdb</span> is very loose about the usual
|
|
rules concerning aggregates. You may leave out some of the
|
|
components of an array or record aggregate (such as the <code>Len</code>
|
|
component in the assignment to <code>A_Rec</code> above); they will retain their
|
|
original values upon assignment. You may freely use dynamic values as
|
|
indices in component associations. You may even use overlapping or
|
|
redundant component associations, although which component values are
|
|
assigned in such cases is not defined.
|
|
|
|
<li>Calls to dispatching subprograms are not implemented.
|
|
|
|
<li>The overloading algorithm is much more limited (i.e., less selective)
|
|
than that of real Ada. It makes only limited use of the context in
|
|
which a subexpression appears to resolve its meaning, and it is much
|
|
looser in its rules for allowing type matches. As a result, some
|
|
function calls will be ambiguous, and the user will be asked to choose
|
|
the proper resolution.
|
|
|
|
<li>The <code>new</code> operator is not implemented.
|
|
|
|
<li>Entry calls are not implemented.
|
|
|
|
<li>Aside from printing, arithmetic operations on the native VAX floating-point
|
|
formats are not supported.
|
|
|
|
<li>It is not possible to slice a packed array.
|
|
|
|
<li>The names <code>True</code> and <code>False</code>, when not part of a qualified name,
|
|
are interpreted as if implicitly prefixed by <code>Standard</code>, regardless of
|
|
context.
|
|
Should your program
|
|
redefine these names in a package or procedure (at best a dubious practice),
|
|
you will have to use fully qualified names to access their new definitions.
|
|
</ul>
|
|
|
|
</body></html>
|
|
|