binutils-gdb/gdb/type-codes.def
Andrew Burgess 1d506c26d9 Update copyright year range in header of all files managed by GDB
This commit is the result of the following actions:

  - Running gdb/copyright.py to update all of the copyright headers to
    include 2024,

  - Manually updating a few files the copyright.py script told me to
    update, these files had copyright headers embedded within the
    file,

  - Regenerating gdbsupport/Makefile.in to refresh it's copyright
    date,

  - Using grep to find other files that still mentioned 2023.  If
    these files were updated last year from 2022 to 2023 then I've
    updated them this year to 2024.

I'm sure I've probably missed some dates.  Feel free to fix them up as
you spot them.
2024-01-12 15:49:57 +00:00

132 lines
4.7 KiB
Modula-2

/* Type codes for GDB.
Copyright (C) 1992-2024 Free Software Foundation, Inc.
This file is part of GDB.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
OP (TYPE_CODE_PTR) /**< Pointer type */
/* * Array type with lower & upper bounds.
Regardless of the language, GDB represents multidimensional
array types the way C does: as arrays of arrays. So an
instance of a GDB array type T can always be seen as a series
of instances of T->target_type () laid out sequentially in
memory.
Row-major languages like C lay out multi-dimensional arrays so
that incrementing the rightmost index in a subscripting
expression results in the smallest change in the address of the
element referred to. Column-major languages like Fortran lay
them out so that incrementing the leftmost index results in the
smallest change.
This means that, in column-major languages, working our way
from type to target type corresponds to working through indices
from right to left, not left to right. */
OP (TYPE_CODE_ARRAY)
OP (TYPE_CODE_STRUCT) /**< C struct or Pascal record */
OP (TYPE_CODE_UNION) /**< C union or Pascal variant part */
OP (TYPE_CODE_ENUM) /**< Enumeration type */
OP (TYPE_CODE_FLAGS) /**< Bit flags type */
OP (TYPE_CODE_FUNC) /**< Function type */
OP (TYPE_CODE_INT) /**< Integer type */
/* * Floating type. This is *NOT* a complex type. */
OP (TYPE_CODE_FLT)
/* * Void type. The length field specifies the length (probably
always one) which is used in pointer arithmetic involving
pointers to this type, but actually dereferencing such a
pointer is invalid; a void type has no length and no actual
representation in memory or registers. A pointer to a void
type is a generic pointer. */
OP (TYPE_CODE_VOID)
OP (TYPE_CODE_SET) /**< Pascal sets */
OP (TYPE_CODE_RANGE) /**< Range (integers within spec'd bounds). */
/* * A string type which is like an array of character but prints
differently. It does not contain a length field as Pascal
strings (for many Pascals, anyway) do; if we want to deal with
such strings, we should use a new type code. */
OP (TYPE_CODE_STRING)
/* * Unknown type. The length field is valid if we were able to
deduce that much about the type, or 0 if we don't even know
that. */
OP (TYPE_CODE_ERROR)
/* C++ */
OP (TYPE_CODE_METHOD) /**< Method type */
/* * Pointer-to-member-function type. This describes how to access a
particular member function of a class (possibly a virtual
member function). The representation may vary between different
C++ ABIs. */
OP (TYPE_CODE_METHODPTR)
/* * Pointer-to-member type. This is the offset within a class to
some particular data member. The only currently supported
representation uses an unbiased offset, with -1 representing
NULL; this is used by the Itanium C++ ABI (used by GCC on all
platforms). */
OP (TYPE_CODE_MEMBERPTR)
OP (TYPE_CODE_REF) /**< C++ Reference types */
OP (TYPE_CODE_RVALUE_REF) /**< C++ rvalue reference types */
OP (TYPE_CODE_CHAR) /**< *real* character type */
/* * Boolean type. 0 is false, 1 is true, and other values are
non-boolean (e.g. FORTRAN "logical" used as unsigned int). */
OP (TYPE_CODE_BOOL)
/* Fortran */
OP (TYPE_CODE_COMPLEX) /**< Complex float */
OP (TYPE_CODE_TYPEDEF)
OP (TYPE_CODE_NAMESPACE) /**< C++ namespace. */
OP (TYPE_CODE_DECFLOAT) /**< Decimal floating point. */
OP (TYPE_CODE_MODULE) /**< Fortran module. */
/* * Internal function type. */
OP (TYPE_CODE_INTERNAL_FUNCTION)
/* * Methods implemented in extension languages. */
OP (TYPE_CODE_XMETHOD)
/* * Fixed Point type. */
OP (TYPE_CODE_FIXED_POINT)
/* * Fortran namelist is a group of variables or arrays that can be
read or written.
Namelist syntax: NAMELIST / groupname / namelist_items ...
NAMELIST statement assign a group name to a collection of variables
called as namelist items. The namelist items can be of any data type
and can be variables or arrays.
Compiler emit DW_TAG_namelist for group name and DW_TAG_namelist_item
for each of the namelist items. GDB process these namelist dies
and print namelist variables during print and ptype commands. */
OP (TYPE_CODE_NAMELIST)