OpenVMS debugger support for GNAT ADA on HP Integrity servers This document describes the debugger support for GNAT ADA on HP Integrity servers. This document identifies the features of ADA that are tested in the OpenVMS debugger test suite. The debugger behavior is undefined for other GNAT ADA features. The features are tested on +----------------------------------------------------------------------+ | Hardware | HP Integrity servers | +----------------------------------------------------------------------+ | OS version | OpenVMS 8.4 | +----------------------------------------------------------------------+ | Debugger Version | OpenVMS I64 Debug64 Version V8.4-001 | +----------------------------------------------------------------------+ | ADA compiler version | GNAT Pro 7.1.0W | +----------------------------------------------------------------------+ All features mentioned are qualified using switch “gdwarf-2-gstrict-dwarf” ADA operators ------------- Supported ADA operators in language expressions are: +----------------------------------------------------------------------+ |Kind |Symbol |Function | |-------------+-----------------+--------------------------------------| |Prefix |+ |Unary plus (identity) | |-------------+-----------------+--------------------------------------| |Prefix |- |Unary minus (negation) | |-------------+-----------------+--------------------------------------| |Infix |+ |Addition | |-------------+-----------------+--------------------------------------| |Infix |- |Subtraction | |-------------+-----------------+--------------------------------------| |Infix |* |Multiplication | |-------------+-----------------+--------------------------------------| |Infix |/ |Division | |-------------+-----------------+--------------------------------------| |Infix |MOD |Modulus | |-------------+-----------------+--------------------------------------| |Infix |REM |Remainder | |-------------+-----------------+--------------------------------------| |Prefix |ABS |Absolute value | |-------------+-----------------+--------------------------------------| |Infix |** |Exponentiation | |-------------+-----------------+--------------------------------------| |Prefix |NOT |Logical NOT | |-------------+-----------------+--------------------------------------| |Infix |AND |Logical AND (not for bit arrays) | |-------------+-----------------+--------------------------------------| |Infix |OR |Logical OR (not for bit arrays) | |-------------+-----------------+--------------------------------------| |Infix |XOR |Logical exclusive OR (not for bit | | | |arrays) | |----------------------------------------------------------------------| |Infix & Concatenation (only string types) | |----------------------------------------------------------------------| |Infix |= |Equality (only scalar and string | | | |types) | |-------------+-----------------+--------------------------------------| |Infix |/= |Inequality (only scalar and string | | | |types) | |-------------+-----------------+--------------------------------------| |Infix |> |Greater than (only scalar and string | | | |types) | |-------------+-----------------+--------------------------------------| |Infix |>= | Greater than or equal (only scalar | | | |and string types) | |-------------+-----------------+--------------------------------------| |Infix |< |Less than (only scalar and string | | | |types) | |-------------+-----------------+--------------------------------------| |Infix |<= |Less than or equal (only scalar and | | | |string types) | +----------------------------------------------------------------------+ The debugger does not support the following items: - Operations on entire arrays or records - The short-circuit control forms: and then, or else - The membership tests: in, not in - User-defined operators Predefined Attributes --------------------- Supported ADA predefined attributes follow. Note that the debugger SHOW SYMBOL/TYPE command provides the same information that is provided by the P'FIRST, P'LAST, P'LENGTH, P'SIZE, and P'CONSTRAINED attributes. +-------------------------------------------------------------------------------------------+ |Attribute |Debugger Support | |----------------------+--------------------------------------------------------------------| |P?CONSTRAINED |For a prefix P that denotes a record object with | | |discriminants. The value of P?CONSTRAINED reflects the | | |current state of P(constrained or unconstrained). | |----------------------+--------------------------------------------------------------------| |P?FIRST |For a prefix P that denotes an enumeration type or a | | |subtype of an enumeration type. Yields the lower bound of | | |P. | |----------------------+--------------------------------------------------------------------| |P?FIRST(N) |For a prefix P that is appropriate for an array type, or | | |that denotes a constrained array subtype. Yields the lower | | |bound of the Nth index range. | |----------------------+--------------------------------------------------------------------| |P?LAST |For a prefix P that denotes an enumeration type, or a | | |subtype of an enumeration type. Yields the upper bound of | | |P. | |----------------------+--------------------------------------------------------------------| |P?LAST |For a prefix P that is appropriate for an array type, or | | |that denotes a constrained array subtype. Yields the upper | | |bound of the first index range. | |----------------------+--------------------------------------------------------------------| |P?LAST(N) |For a prefix P that is appropriate for an array type, or | | |that denotes a constrained array subtype. Yields the upper | | |bound of the Nth index range. | |----------------------+--------------------------------------------------------------------| |P?LENGTH |For a prefix P that is appropriate for an array type, or | | |that denotes a constrained array subtype. Yields the number | | |of values of the first index range (zero for a null range). | |----------------------+--------------------------------------------------------------------| |P?LENGTH(N) |For a prefix P that is appropriate for an array type, or | | |that denotes a constrained array subtype. Yields the number | | |of values of the Nth index range (zero for a null range). | |----------------------+--------------------------------------------------------------------| |P?POS(X) |For a prefix P that denotes an enumeration type or a | | |subtype of an enumeration type. Yields the position number | | |of the value X. | | | | | |The first position is 0. | |----------------------+--------------------------------------------------------------------| |P?PRED(X) |P'PRED(X) For a prefix P that denotes an enumeration type | | |or a subtype of an enumeration type. Yields the value of | | |type P which has a position number one less than that of X. | |----------------------+--------------------------------------------------------------------| |P?SIZE |P'SIZE For a prefix P that denotes an object. Yields the | | |number of bits allocated to hold the object. | |----------------------+--------------------------------------------------------------------| |P?SUCC(X) |P'SUCC(X) For a prefix P that denotes an enumeration type | | |or a subtype of an enumeration type. Yields the value of | | |type P which has a position number one more than that of X. | |----------------------+--------------------------------------------------------------------| |P?VAL(N) |P'VAL(N) For a prefix P that denotes an enumeration type or | | |a subtype of an enumeration type. Yields the value of type | | |P which has the position number N. The first position is 0. | +-------------------------------------------------------------------------------------------+ The following debugger features are tested for ADA data types: +-------------------------------------------------------------------------------------------+ |Debugger feature |What tested | |---------------------------------------------+---------------------------------------------| |Examine, Evaluate, Deposit |Works for: | | | | | |1. /instruction | | | | | |2. ADA arrays of > 32767 elements | | | | | |3. Simple data types | | | | | |4. Simple arrays, ADA bit arrays | | | | | |5. Array elements | | | | | |6. ADA overloaded symbols | | | | | |7. Records | | | | | |Does not work for | | | | | |1. String descriptor types (Example: Ascii | | |character ?A? displayed instead with Ascii | | |value 65) | | | | | |2. Floating point precision not being | | |considered. Floats displayed as integer | | |values. | | | | | |3. Examine of enumerated data types in a | | |structure does not display enumerated data | | |type values. | | | | | |4. Examine of dynamic arrays not working. | | | | | |5. Examine of constants not working, or array| | |elements using constant subscripts not | | |working. | | | | | |6. Examine of empty arrays embedded in | | |records not working. | |---------------------------------------------+---------------------------------------------| |Watchpoints |set watch works on | |- Set watch |simple data types | |- Cancel watch |Array elements | |- Show watch |Entire array | |---------------------------------------------+---------------------------------------------| |Breakpoint and running a program |Following work with respect to break points | | | | |- Set break |- Set break %line | |- Go |- Set break (including | | | overloaded functions & procedures) | |- Step | | | |- Setting and cancelling predefined | |- Debug/keep, run, rerun |breakpoints | | | | |- set scope, show scope |- Breaking on breakpoints set in thunk | | | | | |All other commands listed on the left hand | | |side also work. | | | | | |Following does not work: | | | | | |- Set break/exception | |---------------------------------------------+---------------------------------------------| |TASKING support |Following are tested: | | | | | |- set event_facility | | |- show event_facility | | |- set task | | |- show task/all | | |- examine/task | | |- show process - in multitasking programs | |---------------------------------------------+---------------------------------------------| |Set module |All these are working. | |Cancel module | | |Set module/calls | | |---------------------------------------------+---------------------------------------------| |Show symbol/use_clause |This does not work as the compiler is not | | |emitting the information required by / | | |USE_CLAUSE | +-------------------------------------------------------------------------------------------+ The following GNAT ADA Suffix are supported +---------------------------------+---------------------------------------------------------+ |Type Name | Suffix Support | |---------------------------------+---------------------------------------------------------| |Encapsulated Types | ___PAD | |---------------------------------+---------------------------------------------------------| |Biased Types | ___XB | |---------------------------------+---------------------------------------------------------| |Variant Record Encoding | ___XVN | |---------------------------------+---------------------------------------------------------| Note: Variant Record Encoding (__XVN) is made available in next update release of OpenVMS I64 Debug64 V8.4-002 (VMS84I_DEBUG-V0200).