+ /* Note: This is used by TYPE_CODE_FUNC and TYPE_CODE_METHOD. */
+ TYPE_SPECIFIC_FUNC,
+ TYPE_SPECIFIC_SELF_TYPE
+};
+
+union type_owner
+{
+ struct objfile *objfile;
+ struct gdbarch *gdbarch;
+};
+
+union field_location
+{
+ /* * Position of this field, counting in bits from start of
+ containing structure. For gdbarch_bits_big_endian=1
+ targets, it is the bit offset to the MSB. For
+ gdbarch_bits_big_endian=0 targets, it is the bit offset to
+ the LSB. */
+
+ LONGEST bitpos;
+
+ /* * Enum value. */
+ LONGEST enumval;
+
+ /* * For a static field, if TYPE_FIELD_STATIC_HAS_ADDR then
+ physaddr is the location (in the target) of the static
+ field. Otherwise, physname is the mangled label of the
+ static field. */
+
+ CORE_ADDR physaddr;
+ const char *physname;
+
+ /* * The field location can be computed by evaluating the
+ following DWARF block. Its DATA is allocated on
+ objfile_obstack - no CU load is needed to access it. */
+
+ struct dwarf2_locexpr_baton *dwarf_block;
+};
+
+struct field
+{
+ union field_location loc;
+
+ /* * For a function or member type, this is 1 if the argument is
+ marked artificial. Artificial arguments should not be shown
+ to the user. For TYPE_CODE_RANGE it is set if the specific
+ bound is not defined. */
+
+ unsigned int artificial : 1;
+
+ /* * Discriminant for union field_location. */
+
+ ENUM_BITFIELD(field_loc_kind) loc_kind : 3;
+
+ /* * Size of this field, in bits, or zero if not packed.
+ If non-zero in an array type, indicates the element size in
+ bits (used only in Ada at the moment).
+ For an unpacked field, the field's type's length
+ says how many bytes the field occupies. */
+
+ unsigned int bitsize : 28;
+
+ /* * In a struct or union type, type of this field.
+ - In a function or member type, type of this argument.
+ - In an array type, the domain-type of the array. */
+
+ struct type *type;
+
+ /* * Name of field, value or argument.
+ NULL for range bounds, array domains, and member function
+ arguments. */
+
+ const char *name;