]> Git Repo - binutils.git/blob - gdb/type-codes.def
Automatic date update in version.in
[binutils.git] / gdb / type-codes.def
1 /* Type codes for GDB.
2
3    Copyright (C) 1992-2022 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 OP (TYPE_CODE_PTR)              /**< Pointer type */
21
22 /* * Array type with lower & upper bounds.
23
24    Regardless of the language, GDB represents multidimensional
25    array types the way C does: as arrays of arrays.  So an
26    instance of a GDB array type T can always be seen as a series
27    of instances of T->target_type () laid out sequentially in
28    memory.
29
30    Row-major languages like C lay out multi-dimensional arrays so
31    that incrementing the rightmost index in a subscripting
32    expression results in the smallest change in the address of the
33    element referred to.  Column-major languages like Fortran lay
34    them out so that incrementing the leftmost index results in the
35    smallest change.
36
37    This means that, in column-major languages, working our way
38    from type to target type corresponds to working through indices
39    from right to left, not left to right.  */
40 OP (TYPE_CODE_ARRAY)
41
42 OP (TYPE_CODE_STRUCT)           /**< C struct or Pascal record */
43 OP (TYPE_CODE_UNION)            /**< C union or Pascal variant part */
44 OP (TYPE_CODE_ENUM)             /**< Enumeration type */
45 OP (TYPE_CODE_FLAGS)            /**< Bit flags type */
46 OP (TYPE_CODE_FUNC)             /**< Function type */
47 OP (TYPE_CODE_INT)              /**< Integer type */
48
49 /* * Floating type.  This is *NOT* a complex type.  */
50 OP (TYPE_CODE_FLT)
51
52 /* * Void type.  The length field specifies the length (probably
53    always one) which is used in pointer arithmetic involving
54    pointers to this type, but actually dereferencing such a
55    pointer is invalid; a void type has no length and no actual
56    representation in memory or registers.  A pointer to a void
57    type is a generic pointer.  */
58 OP (TYPE_CODE_VOID)
59
60 OP (TYPE_CODE_SET)              /**< Pascal sets */
61 OP (TYPE_CODE_RANGE)            /**< Range (integers within spec'd bounds).  */
62
63 /* * A string type which is like an array of character but prints
64    differently.  It does not contain a length field as Pascal
65    strings (for many Pascals, anyway) do; if we want to deal with
66    such strings, we should use a new type code.  */
67 OP (TYPE_CODE_STRING)
68
69 /* * Unknown type.  The length field is valid if we were able to
70    deduce that much about the type, or 0 if we don't even know
71    that.  */
72 OP (TYPE_CODE_ERROR)
73
74 /* C++ */
75 OP (TYPE_CODE_METHOD)           /**< Method type */
76
77 /* * Pointer-to-member-function type.  This describes how to access a
78    particular member function of a class (possibly a virtual
79    member function).  The representation may vary between different
80    C++ ABIs.  */
81 OP (TYPE_CODE_METHODPTR)
82
83 /* * Pointer-to-member type.  This is the offset within a class to
84    some particular data member.  The only currently supported
85    representation uses an unbiased offset, with -1 representing
86    NULL; this is used by the Itanium C++ ABI (used by GCC on all
87    platforms).  */
88 OP (TYPE_CODE_MEMBERPTR)
89
90 OP (TYPE_CODE_REF)              /**< C++ Reference types */
91
92 OP (TYPE_CODE_RVALUE_REF)       /**< C++ rvalue reference types */
93
94 OP (TYPE_CODE_CHAR)             /**< *real* character type */
95
96 /* * Boolean type.  0 is false, 1 is true, and other values are
97    non-boolean (e.g. FORTRAN "logical" used as unsigned int).  */
98 OP (TYPE_CODE_BOOL)
99
100 /* Fortran */
101 OP (TYPE_CODE_COMPLEX)          /**< Complex float */
102
103 OP (TYPE_CODE_TYPEDEF)
104
105 OP (TYPE_CODE_NAMESPACE)        /**< C++ namespace.  */
106
107 OP (TYPE_CODE_DECFLOAT)         /**< Decimal floating point.  */
108
109 OP (TYPE_CODE_MODULE)           /**< Fortran module.  */
110
111 /* * Internal function type.  */
112 OP (TYPE_CODE_INTERNAL_FUNCTION)
113
114 /* * Methods implemented in extension languages.  */
115 OP (TYPE_CODE_XMETHOD)
116
117 /* * Fixed Point type.  */
118 OP (TYPE_CODE_FIXED_POINT)
119
120 /* * Fortran namelist is a group of variables or arrays that can be
121    read or written.
122
123    Namelist syntax: NAMELIST / groupname / namelist_items ...
124    NAMELIST statement assign a group name to a collection of variables
125    called as namelist items. The namelist items can be of any data type
126    and can be variables or arrays.
127
128    Compiler emit DW_TAG_namelist for group name and DW_TAG_namelist_item
129    for each of the namelist items. GDB process these namelist dies
130    and print namelist variables during print and ptype commands.  */
131 OP (TYPE_CODE_NAMELIST)
This page took 0.031105 seconds and 4 git commands to generate.