23 #if !defined (GDBTYPES_H)
52 struct value_print_options;
75 #define B_SET(a,x) ((a)[(x)>>3] |= (1 << ((x)&7)))
76 #define B_CLR(a,x) ((a)[(x)>>3] &= ~(1 << ((x)&7)))
77 #define B_TST(a,x) ((a)[(x)>>3] & (1 << ((x)&7)))
78 #define B_TYPE unsigned char
79 #define B_BYTES(x) ( 1 + ((x)>>3) )
80 #define B_CLRALL(a,x) memset ((a), 0, B_BYTES(x))
233 #define TYPE_UNSIGNED(t) (TYPE_MAIN_TYPE (t)->flag_unsigned)
239 #define TYPE_NOSIGN(t) (TYPE_MAIN_TYPE (t)->flag_nosign)
245 #define TYPE_STUB(t) (TYPE_MAIN_TYPE (t)->flag_stub)
253 #define TYPE_TARGET_STUB(t) (TYPE_MAIN_TYPE (t)->flag_target_stub)
260 #define TYPE_STATIC(t) (TYPE_MAIN_TYPE (t)->flag_static)
267 #define TYPE_PROTOTYPED(t) (TYPE_MAIN_TYPE (t)->flag_prototyped)
277 #define TYPE_INCOMPLETE(t) (TYPE_MAIN_TYPE (t)->flag_incomplete)
282 #define TYPE_VARARGS(t) (TYPE_MAIN_TYPE (t)->flag_varargs)
287 #define TYPE_VECTOR(t) (TYPE_MAIN_TYPE (t)->flag_vector)
299 #define TYPE_FIXED_INSTANCE(t) (TYPE_MAIN_TYPE (t)->flag_fixed_instance)
306 #define TYPE_STUB_SUPPORTED(t) (TYPE_MAIN_TYPE (t)->flag_stub_supported)
311 #define TYPE_NOTTEXT(t) (TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_NOTTEXT)
318 #define TYPE_GNU_IFUNC(t) (TYPE_MAIN_TYPE (t)->flag_gnu_ifunc)
324 #define TYPE_OBJFILE_OWNED(t) (TYPE_MAIN_TYPE (t)->flag_objfile_owned)
325 #define TYPE_OWNER(t) TYPE_MAIN_TYPE(t)->owner
326 #define TYPE_OBJFILE(t) (TYPE_OBJFILE_OWNED(t)? TYPE_OWNER(t).objfile : NULL)
334 #define TYPE_DECLARED_CLASS(t) (TYPE_MAIN_TYPE (t)->flag_declared_class)
340 #define TYPE_FLAG_ENUM(t) (TYPE_MAIN_TYPE (t)->flag_flag_enum)
345 #define TYPE_CONST(t) (TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_CONST)
350 #define TYPE_VOLATILE(t) \
351 (TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_VOLATILE)
356 #define TYPE_RESTRICT(t) \
357 (TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_RESTRICT)
362 #define TYPE_ATOMIC(t) \
363 (TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_ATOMIC)
384 #define TYPE_CODE_SPACE(t) \
385 (TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_CODE_SPACE)
387 #define TYPE_DATA_SPACE(t) \
388 (TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_DATA_SPACE)
397 #define TYPE_ADDRESS_CLASS_1(t) (TYPE_INSTANCE_FLAGS(t) \
398 & TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1)
399 #define TYPE_ADDRESS_CLASS_2(t) (TYPE_INSTANCE_FLAGS(t) \
400 & TYPE_INSTANCE_FLAG_ADDRESS_CLASS_2)
401 #define TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL \
402 (TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1 | TYPE_INSTANCE_FLAG_ADDRESS_CLASS_2)
403 #define TYPE_ADDRESS_CLASS_ALL(t) (TYPE_INSTANCE_FLAGS(t) \
404 & TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
575 int flag_upper_bound_is_count : 1;
580 int flag_bound_evaluated : 1;
629 unsigned int flag_unsigned : 1;
630 unsigned int flag_nosign : 1;
631 unsigned int flag_stub : 1;
632 unsigned int flag_target_stub : 1;
633 unsigned int flag_static : 1;
634 unsigned int flag_prototyped : 1;
635 unsigned int flag_incomplete : 1;
636 unsigned int flag_varargs : 1;
637 unsigned int flag_vector : 1;
638 unsigned int flag_stub_supported : 1;
639 unsigned int flag_gnu_ifunc : 1;
640 unsigned int flag_fixed_instance : 1;
641 unsigned int flag_objfile_owned : 1;
646 unsigned int flag_declared_class : 1;
651 unsigned int flag_flag_enum : 1;
683 const
char *tag_name;
814 #define NULL_TYPE ((struct type *) 0)
865 unsigned int is_const:1;
866 unsigned int is_volatile:1;
867 unsigned int is_private:1;
868 unsigned int is_protected:1;
869 unsigned int is_public:1;
870 unsigned int is_abstract:1;
871 unsigned int is_static:1;
872 unsigned int is_final:1;
873 unsigned int is_synchronized:1;
874 unsigned int is_native:1;
875 unsigned int is_artificial:1;
880 unsigned int is_stub:1;
884 unsigned int is_constructor : 1;
888 unsigned int dummy:3;
893 unsigned int voffset:16;
895 #define VOFFSET_STATIC 1
958 unsigned int is_java : 1;
1067 unsigned calling_convention : 8;
1073 unsigned int is_noreturn : 1;
1143 const gdb_byte *value;
1149 const gdb_byte *data_value;
1150 size_t data_value_size;
1195 #define INIT_CPLUS_SPECIFIC(type) \
1196 (TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_CPLUS_STUFF, \
1197 TYPE_RAW_CPLUS_SPECIFIC (type) = (struct cplus_struct_type*) \
1198 &cplus_struct_default)
1200 #define ALLOCATE_CPLUS_STRUCT_TYPE(type) allocate_cplus_struct_type (type)
1202 #define HAVE_CPLUS_STRUCT(type) \
1203 (TYPE_SPECIFIC_FIELD (type) == TYPE_SPECIFIC_CPLUS_STUFF \
1204 && TYPE_RAW_CPLUS_SPECIFIC (type) != &cplus_struct_default)
1210 #define INIT_GNAT_SPECIFIC(type) \
1211 (TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_GNAT_STUFF, \
1212 TYPE_GNAT_SPECIFIC (type) = (struct gnat_aux_type *) &gnat_aux_default)
1213 #define ALLOCATE_GNAT_AUX_TYPE(type) allocate_gnat_aux_type (type)
1216 #define HAVE_GNAT_AUX_INFO(type) \
1217 (TYPE_SPECIFIC_FIELD (type) == TYPE_SPECIFIC_GNAT_STUFF)
1219 #define INIT_FUNC_SPECIFIC(type) \
1220 (TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_FUNC, \
1221 TYPE_MAIN_TYPE (type)->type_specific.func_stuff \
1222 = TYPE_ZALLOC (type, \
1223 sizeof (*TYPE_MAIN_TYPE (type)->type_specific.func_stuff)))
1225 #define TYPE_INSTANCE_FLAGS(thistype) (thistype)->instance_flags
1226 #define TYPE_MAIN_TYPE(thistype) (thistype)->main_type
1227 #define TYPE_NAME(thistype) TYPE_MAIN_TYPE(thistype)->name
1228 #define TYPE_TAG_NAME(type) TYPE_MAIN_TYPE(type)->tag_name
1229 #define TYPE_TARGET_TYPE(thistype) TYPE_MAIN_TYPE(thistype)->target_type
1230 #define TYPE_POINTER_TYPE(thistype) (thistype)->pointer_type
1231 #define TYPE_REFERENCE_TYPE(thistype) (thistype)->reference_type
1232 #define TYPE_CHAIN(thistype) (thistype)->chain
1237 #define TYPE_LENGTH(thistype) (thistype)->length
1240 #define TYPE_CODE(thistype) TYPE_MAIN_TYPE(thistype)->code
1241 #define TYPE_NFIELDS(thistype) TYPE_MAIN_TYPE(thistype)->nfields
1242 #define TYPE_FIELDS(thistype) TYPE_MAIN_TYPE(thistype)->flds_bnds.fields
1244 #define TYPE_INDEX_TYPE(type) TYPE_FIELD_TYPE (type, 0)
1245 #define TYPE_RANGE_DATA(thistype) TYPE_MAIN_TYPE(thistype)->flds_bnds.bounds
1246 #define TYPE_LOW_BOUND(range_type) \
1247 TYPE_RANGE_DATA(range_type)->low.data.const_val
1248 #define TYPE_HIGH_BOUND(range_type) \
1249 TYPE_RANGE_DATA(range_type)->high.data.const_val
1250 #define TYPE_LOW_BOUND_UNDEFINED(range_type) \
1251 (TYPE_RANGE_DATA(range_type)->low.kind == PROP_UNDEFINED)
1252 #define TYPE_HIGH_BOUND_UNDEFINED(range_type) \
1253 (TYPE_RANGE_DATA(range_type)->high.kind == PROP_UNDEFINED)
1254 #define TYPE_HIGH_BOUND_KIND(range_type) \
1255 TYPE_RANGE_DATA(range_type)->high.kind
1256 #define TYPE_LOW_BOUND_KIND(range_type) \
1257 TYPE_RANGE_DATA(range_type)->low.kind
1260 #define TYPE_DATA_LOCATION(thistype) \
1261 get_dyn_prop (DYN_PROP_DATA_LOCATION, thistype)
1262 #define TYPE_DATA_LOCATION_BATON(thistype) \
1263 TYPE_DATA_LOCATION (thistype)->data.baton
1264 #define TYPE_DATA_LOCATION_ADDR(thistype) \
1265 TYPE_DATA_LOCATION (thistype)->data.const_val
1266 #define TYPE_DATA_LOCATION_KIND(thistype) \
1267 TYPE_DATA_LOCATION (thistype)->kind
1270 #define TYPE_DYN_PROP_LIST(thistype) \
1271 TYPE_MAIN_TYPE(thistype)->dyn_prop_list
1272 #define TYPE_DYN_PROP_BATON(dynprop) \
1274 #define TYPE_DYN_PROP_ADDR(dynprop) \
1275 dynprop->data.const_val
1276 #define TYPE_DYN_PROP_KIND(dynprop) \
1282 #define TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED(arraytype) \
1283 TYPE_HIGH_BOUND_UNDEFINED(TYPE_INDEX_TYPE(arraytype))
1284 #define TYPE_ARRAY_LOWER_BOUND_IS_UNDEFINED(arraytype) \
1285 TYPE_LOW_BOUND_UNDEFINED(TYPE_INDEX_TYPE(arraytype))
1287 #define TYPE_ARRAY_UPPER_BOUND_VALUE(arraytype) \
1288 (TYPE_HIGH_BOUND(TYPE_INDEX_TYPE((arraytype))))
1290 #define TYPE_ARRAY_LOWER_BOUND_VALUE(arraytype) \
1291 (TYPE_LOW_BOUND(TYPE_INDEX_TYPE((arraytype))))
1295 #define TYPE_SELF_TYPE(thistype) internal_type_self_type (thistype)
1304 #define TYPE_VPTR_FIELDNO(thistype) internal_type_vptr_fieldno (thistype)
1305 #define TYPE_VPTR_BASETYPE(thistype) internal_type_vptr_basetype (thistype)
1307 #define TYPE_NFN_FIELDS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->nfn_fields
1308 #define TYPE_SPECIFIC_FIELD(thistype) \
1309 TYPE_MAIN_TYPE(thistype)->type_specific_field
1315 #define TYPE_CPLUS_SPECIFIC(thistype) \
1316 (!HAVE_CPLUS_STRUCT(thistype) \
1317 ? (struct cplus_struct_type*)&cplus_struct_default \
1318 : TYPE_RAW_CPLUS_SPECIFIC(thistype))
1319 #define TYPE_RAW_CPLUS_SPECIFIC(thistype) TYPE_MAIN_TYPE(thistype)->type_specific.cplus_stuff
1320 #define TYPE_FLOATFORMAT(thistype) TYPE_MAIN_TYPE(thistype)->type_specific.floatformat
1321 #define TYPE_GNAT_SPECIFIC(thistype) TYPE_MAIN_TYPE(thistype)->type_specific.gnat_stuff
1322 #define TYPE_DESCRIPTIVE_TYPE(thistype) TYPE_GNAT_SPECIFIC(thistype)->descriptive_type
1323 #define TYPE_CALLING_CONVENTION(thistype) TYPE_MAIN_TYPE(thistype)->type_specific.func_stuff->calling_convention
1324 #define TYPE_NO_RETURN(thistype) TYPE_MAIN_TYPE(thistype)->type_specific.func_stuff->is_noreturn
1325 #define TYPE_TAIL_CALL_LIST(thistype) TYPE_MAIN_TYPE(thistype)->type_specific.func_stuff->tail_call_list
1326 #define TYPE_BASECLASS(thistype,index) TYPE_FIELD_TYPE(thistype, index)
1327 #define TYPE_N_BASECLASSES(thistype) TYPE_CPLUS_SPECIFIC(thistype)->n_baseclasses
1328 #define TYPE_BASECLASS_NAME(thistype,index) TYPE_FIELD_NAME(thistype, index)
1329 #define TYPE_BASECLASS_BITPOS(thistype,index) TYPE_FIELD_BITPOS(thistype,index)
1330 #define BASETYPE_VIA_PUBLIC(thistype, index) \
1331 ((!TYPE_FIELD_PRIVATE(thistype, index)) && (!TYPE_FIELD_PROTECTED(thistype, index)))
1332 #define TYPE_CPLUS_DYNAMIC(thistype) TYPE_CPLUS_SPECIFIC (thistype)->is_dynamic
1333 #define TYPE_CPLUS_REALLY_JAVA(thistype) TYPE_CPLUS_SPECIFIC (thistype)->is_java
1335 #define BASETYPE_VIA_VIRTUAL(thistype, index) \
1336 (TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits == NULL ? 0 \
1337 : B_TST(TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits, (index)))
1339 #define FIELD_TYPE(thisfld) ((thisfld).type)
1340 #define FIELD_NAME(thisfld) ((thisfld).name)
1341 #define FIELD_LOC_KIND(thisfld) ((thisfld).loc_kind)
1342 #define FIELD_BITPOS_LVAL(thisfld) ((thisfld).loc.bitpos)
1343 #define FIELD_BITPOS(thisfld) (FIELD_BITPOS_LVAL (thisfld) + 0)
1344 #define FIELD_ENUMVAL_LVAL(thisfld) ((thisfld).loc.enumval)
1345 #define FIELD_ENUMVAL(thisfld) (FIELD_ENUMVAL_LVAL (thisfld) + 0)
1346 #define FIELD_STATIC_PHYSNAME(thisfld) ((thisfld).loc.physname)
1347 #define FIELD_STATIC_PHYSADDR(thisfld) ((thisfld).loc.physaddr)
1348 #define FIELD_DWARF_BLOCK(thisfld) ((thisfld).loc.dwarf_block)
1349 #define SET_FIELD_BITPOS(thisfld, bitpos) \
1350 (FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_BITPOS, \
1351 FIELD_BITPOS_LVAL (thisfld) = (bitpos))
1352 #define SET_FIELD_ENUMVAL(thisfld, enumval) \
1353 (FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_ENUMVAL, \
1354 FIELD_ENUMVAL_LVAL (thisfld) = (enumval))
1355 #define SET_FIELD_PHYSNAME(thisfld, name) \
1356 (FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_PHYSNAME, \
1357 FIELD_STATIC_PHYSNAME (thisfld) = (name))
1358 #define SET_FIELD_PHYSADDR(thisfld, addr) \
1359 (FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_PHYSADDR, \
1360 FIELD_STATIC_PHYSADDR (thisfld) = (addr))
1361 #define SET_FIELD_DWARF_BLOCK(thisfld, addr) \
1362 (FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_DWARF_BLOCK, \
1363 FIELD_DWARF_BLOCK (thisfld) = (addr))
1364 #define FIELD_ARTIFICIAL(thisfld) ((thisfld).artificial)
1365 #define FIELD_BITSIZE(thisfld) ((thisfld).bitsize)
1367 #define TYPE_FIELD(thistype, n) TYPE_MAIN_TYPE(thistype)->flds_bnds.fields[n]
1368 #define TYPE_FIELD_TYPE(thistype, n) FIELD_TYPE(TYPE_FIELD(thistype, n))
1369 #define TYPE_FIELD_NAME(thistype, n) FIELD_NAME(TYPE_FIELD(thistype, n))
1370 #define TYPE_FIELD_LOC_KIND(thistype, n) FIELD_LOC_KIND (TYPE_FIELD (thistype, n))
1371 #define TYPE_FIELD_BITPOS(thistype, n) FIELD_BITPOS (TYPE_FIELD (thistype, n))
1372 #define TYPE_FIELD_ENUMVAL(thistype, n) FIELD_ENUMVAL (TYPE_FIELD (thistype, n))
1373 #define TYPE_FIELD_STATIC_PHYSNAME(thistype, n) FIELD_STATIC_PHYSNAME (TYPE_FIELD (thistype, n))
1374 #define TYPE_FIELD_STATIC_PHYSADDR(thistype, n) FIELD_STATIC_PHYSADDR (TYPE_FIELD (thistype, n))
1375 #define TYPE_FIELD_DWARF_BLOCK(thistype, n) FIELD_DWARF_BLOCK (TYPE_FIELD (thistype, n))
1376 #define TYPE_FIELD_ARTIFICIAL(thistype, n) FIELD_ARTIFICIAL(TYPE_FIELD(thistype,n))
1377 #define TYPE_FIELD_BITSIZE(thistype, n) FIELD_BITSIZE(TYPE_FIELD(thistype,n))
1378 #define TYPE_FIELD_PACKED(thistype, n) (FIELD_BITSIZE(TYPE_FIELD(thistype,n))!=0)
1380 #define TYPE_FIELD_PRIVATE_BITS(thistype) \
1381 TYPE_CPLUS_SPECIFIC(thistype)->private_field_bits
1382 #define TYPE_FIELD_PROTECTED_BITS(thistype) \
1383 TYPE_CPLUS_SPECIFIC(thistype)->protected_field_bits
1384 #define TYPE_FIELD_IGNORE_BITS(thistype) \
1385 TYPE_CPLUS_SPECIFIC(thistype)->ignore_field_bits
1386 #define TYPE_FIELD_VIRTUAL_BITS(thistype) \
1387 TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits
1388 #define SET_TYPE_FIELD_PRIVATE(thistype, n) \
1389 B_SET (TYPE_CPLUS_SPECIFIC(thistype)->private_field_bits, (n))
1390 #define SET_TYPE_FIELD_PROTECTED(thistype, n) \
1391 B_SET (TYPE_CPLUS_SPECIFIC(thistype)->protected_field_bits, (n))
1392 #define SET_TYPE_FIELD_IGNORE(thistype, n) \
1393 B_SET (TYPE_CPLUS_SPECIFIC(thistype)->ignore_field_bits, (n))
1394 #define SET_TYPE_FIELD_VIRTUAL(thistype, n) \
1395 B_SET (TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits, (n))
1396 #define TYPE_FIELD_PRIVATE(thistype, n) \
1397 (TYPE_CPLUS_SPECIFIC(thistype)->private_field_bits == NULL ? 0 \
1398 : B_TST(TYPE_CPLUS_SPECIFIC(thistype)->private_field_bits, (n)))
1399 #define TYPE_FIELD_PROTECTED(thistype, n) \
1400 (TYPE_CPLUS_SPECIFIC(thistype)->protected_field_bits == NULL ? 0 \
1401 : B_TST(TYPE_CPLUS_SPECIFIC(thistype)->protected_field_bits, (n)))
1402 #define TYPE_FIELD_IGNORE(thistype, n) \
1403 (TYPE_CPLUS_SPECIFIC(thistype)->ignore_field_bits == NULL ? 0 \
1404 : B_TST(TYPE_CPLUS_SPECIFIC(thistype)->ignore_field_bits, (n)))
1405 #define TYPE_FIELD_VIRTUAL(thistype, n) \
1406 (TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits == NULL ? 0 \
1407 : B_TST(TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits, (n)))
1409 #define TYPE_FN_FIELDLISTS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->fn_fieldlists
1410 #define TYPE_FN_FIELDLIST(thistype, n) TYPE_CPLUS_SPECIFIC(thistype)->fn_fieldlists[n]
1411 #define TYPE_FN_FIELDLIST1(thistype, n) TYPE_CPLUS_SPECIFIC(thistype)->fn_fieldlists[n].fn_fields
1412 #define TYPE_FN_FIELDLIST_NAME(thistype, n) TYPE_CPLUS_SPECIFIC(thistype)->fn_fieldlists[n].name
1413 #define TYPE_FN_FIELDLIST_LENGTH(thistype, n) TYPE_CPLUS_SPECIFIC(thistype)->fn_fieldlists[n].length
1415 #define TYPE_N_TEMPLATE_ARGUMENTS(thistype) \
1416 TYPE_CPLUS_SPECIFIC (thistype)->n_template_arguments
1417 #define TYPE_TEMPLATE_ARGUMENTS(thistype) \
1418 TYPE_CPLUS_SPECIFIC (thistype)->template_arguments
1419 #define TYPE_TEMPLATE_ARGUMENT(thistype, n) \
1420 TYPE_CPLUS_SPECIFIC (thistype)->template_arguments[n]
1422 #define TYPE_FN_FIELD(thisfn, n) (thisfn)[n]
1423 #define TYPE_FN_FIELD_PHYSNAME(thisfn, n) (thisfn)[n].physname
1424 #define TYPE_FN_FIELD_TYPE(thisfn, n) (thisfn)[n].type
1425 #define TYPE_FN_FIELD_ARGS(thisfn, n) TYPE_FIELDS ((thisfn)[n].type)
1426 #define TYPE_FN_FIELD_CONST(thisfn, n) ((thisfn)[n].is_const)
1427 #define TYPE_FN_FIELD_VOLATILE(thisfn, n) ((thisfn)[n].is_volatile)
1428 #define TYPE_FN_FIELD_PRIVATE(thisfn, n) ((thisfn)[n].is_private)
1429 #define TYPE_FN_FIELD_PROTECTED(thisfn, n) ((thisfn)[n].is_protected)
1430 #define TYPE_FN_FIELD_PUBLIC(thisfn, n) ((thisfn)[n].is_public)
1431 #define TYPE_FN_FIELD_STATIC(thisfn, n) ((thisfn)[n].is_static)
1432 #define TYPE_FN_FIELD_FINAL(thisfn, n) ((thisfn)[n].is_final)
1433 #define TYPE_FN_FIELD_SYNCHRONIZED(thisfn, n) ((thisfn)[n].is_synchronized)
1434 #define TYPE_FN_FIELD_NATIVE(thisfn, n) ((thisfn)[n].is_native)
1435 #define TYPE_FN_FIELD_ARTIFICIAL(thisfn, n) ((thisfn)[n].is_artificial)
1436 #define TYPE_FN_FIELD_ABSTRACT(thisfn, n) ((thisfn)[n].is_abstract)
1437 #define TYPE_FN_FIELD_STUB(thisfn, n) ((thisfn)[n].is_stub)
1438 #define TYPE_FN_FIELD_CONSTRUCTOR(thisfn, n) ((thisfn)[n].is_constructor)
1439 #define TYPE_FN_FIELD_FCONTEXT(thisfn, n) ((thisfn)[n].fcontext)
1440 #define TYPE_FN_FIELD_VOFFSET(thisfn, n) ((thisfn)[n].voffset-2)
1441 #define TYPE_FN_FIELD_VIRTUAL_P(thisfn, n) ((thisfn)[n].voffset > 1)
1442 #define TYPE_FN_FIELD_STATIC_P(thisfn, n) ((thisfn)[n].voffset == VOFFSET_STATIC)
1444 #define TYPE_TYPEDEF_FIELD_ARRAY(thistype) \
1445 TYPE_CPLUS_SPECIFIC (thistype)->typedef_field
1446 #define TYPE_TYPEDEF_FIELD(thistype, n) \
1447 TYPE_CPLUS_SPECIFIC (thistype)->typedef_field[n]
1448 #define TYPE_TYPEDEF_FIELD_NAME(thistype, n) \
1449 TYPE_TYPEDEF_FIELD (thistype, n).name
1450 #define TYPE_TYPEDEF_FIELD_TYPE(thistype, n) \
1451 TYPE_TYPEDEF_FIELD (thistype, n).type
1452 #define TYPE_TYPEDEF_FIELD_COUNT(thistype) \
1453 TYPE_CPLUS_SPECIFIC (thistype)->typedef_field_count
1455 #define TYPE_IS_OPAQUE(thistype) \
1456 (((TYPE_CODE (thistype) == TYPE_CODE_STRUCT) \
1457 || (TYPE_CODE (thistype) == TYPE_CODE_UNION)) \
1458 && (TYPE_NFIELDS (thistype) == 0) \
1459 && (!HAVE_CPLUS_STRUCT (thistype) \
1460 || TYPE_NFN_FIELDS (thistype) == 0) \
1461 && (TYPE_STUB (thistype) || !TYPE_STUB_SUPPORTED (thistype)))
1466 #define TYPE_SAFE_NAME(type) \
1467 (TYPE_NAME (type) ? TYPE_NAME (type) : _("<unnamed type>"))
1472 #define TYPE_ERROR_NAME(type) \
1473 (TYPE_NAME (type) ? TYPE_NAME (type) : _("<error type>"))
1631 #define TYPE_ALLOC(t,size) \
1632 (TYPE_OBJFILE_OWNED (t) \
1633 ? obstack_alloc (&TYPE_OBJFILE (t) -> objfile_obstack, size) \
1636 #define TYPE_ZALLOC(t,size) \
1637 (TYPE_OBJFILE_OWNED (t) \
1638 ? memset (obstack_alloc (&TYPE_OBJFILE (t)->objfile_obstack, size), \
1673 const struct floatformat **);
1723 int space_identifier);
1730 struct type *to_type,
struct field *args,
1731 int nargs,
int varargs);
1763 (
struct type *,
struct type *,
struct type *,
unsigned int);
1781 struct gdbarch *,
const char *);
1784 struct gdbarch *,
const char *);
1795 const gdb_byte *valaddr,
1813 struct type *
type,
struct objfile *objfile);
1817 #define CHECK_TYPEDEF(TYPE) \
1819 (TYPE) = check_typedef (TYPE); \
1827 struct gdbarch *,
const char *,
1828 const struct block *,
int);
1831 const struct block *);
1838 LONGEST *high_bound);
1852 #define LENGTH_MATCH(bv) ((bv)->rank[0])
1904 struct value **,
int);
1916 const struct value_print_options *,
1917 int,
struct ui_file *);
1933 htab_t copied_types);
const struct floatformat * floatformats_ia64_quad[BFD_ENDIAN_UNKNOWN]
B_TYPE * private_field_bits
const struct floatformat * floatformats_vax_d[BFD_ENDIAN_UNKNOWN]
const struct rank NS_POINTER_CONVERSION_BADNESS
struct rank sum_ranks(struct rank a, struct rank b)
void get_unsigned_type_max(struct type *, ULONGEST *)
struct dwarf2_per_cu_data * per_cu
struct type * builtin_declong
const struct objfile_type * objfile_type(struct objfile *objfile)
union dynamic_prop_data data
struct call_site * tail_call_list
struct type * builtin_func_ptr
struct type * builtin_long_double
struct type * builtin_true_unsigned_char
void maintenance_print_type(char *, int)
const struct floatformat * floatformats_ieee_half[BFD_ENDIAN_UNKNOWN]
struct type * builtin_void
int is_public_ancestor(struct type *, struct type *)
struct fn_field * fn_fields
struct type * builtin_unsigned_int
const struct cplus_struct_type cplus_struct_default
struct badness_vector * rank_function(struct type **, int, struct value **, int)
struct type * builtin_double_complex
const struct rank REFERENCE_CONVERSION_BADNESS
struct typedef_field * typedef_field
struct type * make_cv_type(int, int, struct type *, struct type **)
const struct gnat_aux_type gnat_aux_default
const struct rank BASE_PTR_CONVERSION_BADNESS
const struct builtin_type * builtin_type(struct gdbarch *gdbarch)
struct type * builtin_double
const struct rank INCOMPATIBLE_TYPE_BADNESS
struct type * builtin_long_double
const struct rank LENGTH_MISMATCH_BADNESS
void append_flags_type_flag(struct type *type, int bitpos, char *name)
const struct floatformat * floatformats_vax_f[BFD_ENDIAN_UNKNOWN]
unsigned typedef_field_count
int class_types_same_p(const struct type *, const struct type *)
const char * type_name_no_tag_or_error(struct type *type)
struct rank rank_one_type(struct type *, struct type *, struct value *)
struct type * builtin_func_func
int is_scalar_type_recursive(struct type *)
struct type * arch_boolean_type(struct gdbarch *, int, int, char *)
char * gdb_mangle_name(struct type *, int, int)
struct type * arch_integer_type(struct gdbarch *, int, int, char *)
void append_composite_type_field_aligned(struct type *t, char *name, struct type *field, int alignment)
struct type * builtin_uint8
struct type * builtin_float
struct type * builtin_uint16
struct type * create_array_type(struct type *, struct type *, struct type *)
int discrete_position(struct type *type, LONGEST val, LONGEST *pos)
struct type * lookup_methodptr_type(struct type *)
struct type * allocate_stub_method(struct type *)
const struct floatformat * floatformats_ieee_double_littlebyte_bigword[BFD_ENDIAN_UNKNOWN]
struct type * nodebug_data_symbol
struct type * lookup_reference_type(struct type *)
void replace_type(struct type *, struct type *)
struct type * builtin_short
struct type * copy_type_recursive(struct objfile *objfile, struct type *type, htab_t copied_types)
struct type * builtin_core_addr
struct type * builtin_long_long
struct type * pointer_type
struct type * builtin_complex
int compare_badness(struct badness_vector *, struct badness_vector *)
struct type * builtin_long
const struct rank FLOAT_PROMOTION_BADNESS
struct type * arch_float_type(struct gdbarch *, int, char *, const struct floatformat **)
struct dwarf2_locexpr_baton * dwarf_block
void set_type_self_type(struct type *, struct type *)
struct type * reference_type
struct type * copy_type(const struct type *type)
struct dynamic_prop_list * dyn_prop_list
struct type * builtin_signed_char
struct type * internal_type_vptr_basetype(struct type *)
struct type * builtin_int32
struct type * create_set_type(struct type *, struct type *)
struct type * builtin_short
struct type * builtin_char16
unsigned short n_template_arguments
struct type * make_function_type(struct type *, struct type **)
int get_discrete_bounds(struct type *, LONGEST *, LONGEST *)
struct type * nodebug_text_gnu_ifunc_symbol
struct cplus_struct_type * cplus_stuff
struct type * builtin_int128
const struct rank EXACT_MATCH_BADNESS
struct type * init_type(enum type_code, int, int, const char *, struct objfile *)
enum dynamic_prop_node_kind prop_kind
struct type * builtin_decdouble
struct type * builtin_unsigned_long_long
struct type * builtin_unsigned_long
struct type * builtin_char32
void recursive_dump_type(struct type *, int)
int can_dereference(struct type *)
void add_dyn_prop(enum dynamic_prop_node_kind kind, struct dynamic_prop prop, struct type *type, struct objfile *objfile)
struct gnat_aux_type * gnat_stuff
struct type * lookup_function_type(struct type *)
const struct rank INTEGER_PROMOTION_BADNESS
struct type * builtin_char
const struct rank BASE_CONVERSION_BADNESS
struct type * builtin_int16
struct type * builtin_unsigned_long
struct type * nodebug_tls_symbol
struct type * make_type_with_address_space(struct type *type, int space_identifier)
struct type * create_array_type_with_stride(struct type *, struct type *, struct type *, unsigned int)
htab_t create_copied_types_hash(struct objfile *objfile)
struct type * make_unqualified_type(struct type *)
struct func_type * func_stuff
void smash_to_methodptr_type(struct type *, struct type *)
struct type * resolve_dynamic_type(struct type *type, const gdb_byte *valaddr, CORE_ADDR addr)
struct type * builtin_int0
struct type * make_reference_type(struct type *, struct type **)
__extension__ enum field_loc_kind loc_kind
const struct floatformat * floatformats_ieee_double[BFD_ENDIAN_UNKNOWN]
struct type * builtin_uint32
B_TYPE * ignore_field_bits
struct dynamic_prop * get_dyn_prop(enum dynamic_prop_node_kind kind, const struct type *type)
struct type * alloc_type_arch(struct gdbarch *)
struct type * builtin_decfloat
const struct rank NS_INTEGER_POINTER_CONVERSION_BADNESS
struct type * nodebug_got_plt_symbol
struct type * builtin_long
void append_composite_type_field(struct type *t, char *name, struct type *field)
const struct floatformat ** floatformat
const struct rank BOOL_CONVERSION_BADNESS
struct type * builtin_unsigned_char
struct type * arch_character_type(struct gdbarch *, int, int, char *)
const char * type_name_no_tag(const struct type *)
const struct rank VOID_PTR_CONVERSION_BADNESS
struct type * create_static_range_type(struct type *, struct type *, LONGEST, LONGEST)
const struct floatformat * floatformats_ieee_single[BFD_ENDIAN_UNKNOWN]
struct type * builtin_bool
struct type * builtin_uint128
struct type * builtin_unsigned_long_long
struct type * alloc_type(struct objfile *)
struct type * builtin_signed_char
struct type * builtin_unsigned_short
struct type * create_string_type(struct type *, struct type *, struct type *)
struct type * make_pointer_type(struct type *, struct type **)
int is_ancestor(struct type *, struct type *)
struct type * builtin_string
const struct rank INT_FLOAT_CONVERSION_BADNESS
struct type * builtin_int
struct type * lookup_array_range_type(struct type *, LONGEST, LONGEST)
const struct floatformat * floatformats_i387_ext[BFD_ENDIAN_UNKNOWN]
struct type * builtin_unsigned_short
struct type * init_vector_type(struct type *elt_type, int n)
void print_scalar_formatted(const void *, struct type *, const struct value_print_options *, int, struct ui_file *)
struct type * lookup_typename(const struct language_defn *, struct gdbarch *, const char *, const struct block *, int)
struct type * nodebug_unknown_symbol
int address_space_name_to_int(struct gdbarch *, char *)
const struct rank FLOAT_CONVERSION_BADNESS
struct type * lookup_signed_typename(const struct language_defn *, struct gdbarch *, const char *)
const char * address_space_int_to_name(struct gdbarch *, int)
int get_vptr_fieldno(struct type *, struct type **)
struct type * builtin_char
struct type * make_restrict_type(struct type *)
struct type * get_target_type(struct type *type)
const struct floatformat * floatformats_arm_ext[BFD_ENDIAN_UNKNOWN]
const struct floatformat * floatformats_ia64_spill[BFD_ENDIAN_UNKNOWN]
struct type * builtin_double
int is_integral_type(struct type *)
struct type * internal_fn
struct type * lookup_struct_elt_type(struct type *, const char *, int)
struct type * alloc_type_copy(const struct type *)
struct fn_fieldlist * fn_fieldlists
struct type * lookup_string_range_type(struct type *, LONGEST, LONGEST)
void check_stub_method_group(struct type *, int)
struct type * lookup_memberptr_type(struct type *, struct type *)
struct type * make_atomic_type(struct type *)
const struct rank TOO_FEW_PARAMS_BADNESS
struct type * builtin_true_char
struct type * builtin_data_ptr
struct gdbarch * get_type_arch(const struct type *)
struct symbol ** template_arguments
int compare_ranks(struct rank a, struct rank b)
void allocate_cplus_struct_type(struct type *)
void smash_to_method_type(struct type *type, struct type *self_type, struct type *to_type, struct field *args, int nargs, int varargs)
const struct floatformat * floatformats_m68881_ext[BFD_ENDIAN_UNKNOWN]
int get_array_bounds(struct type *type, LONGEST *low_bound, LONGEST *high_bound)
void smash_to_memberptr_type(struct type *, struct type *, struct type *)
void get_signed_type_minmax(struct type *, LONGEST *, LONGEST *)
struct type * nodebug_text_symbol
struct main_type * main_type
struct type * lookup_unsigned_typename(const struct language_defn *, struct gdbarch *, const char *)
int class_or_union_p(const struct type *)
void set_type_vptr_fieldno(struct type *, int)
enum dynamic_prop_kind kind
struct type * arch_composite_type(struct gdbarch *gdbarch, char *name, enum type_code code)
B_TYPE * protected_field_bits
struct type * builtin_long_long
struct type * lookup_pointer_type(struct type *)
struct type * builtin_unsigned_int
B_TYPE * virtual_field_bits
struct type * builtin_int64
struct call_site * tail_call_next
struct type * check_typedef(struct type *)
struct field * append_composite_type_field_raw(struct type *t, char *name, struct type *field)
struct type * descriptive_type
struct type * arch_type(struct gdbarch *, enum type_code, int, char *)
struct type * lookup_template_type(char *, struct type *, const struct block *)
int is_unique_ancestor(struct type *, struct value *)
int is_dynamic_type(struct type *type)
int types_equal(struct type *, struct type *)
struct type * arch_flags_type(struct gdbarch *gdbarch, char *name, int length)
struct type * builtin_uint64
struct type * vptr_basetype
int field_is_static(struct field *)
struct type * builtin_int8
const struct floatformat * floatformats_ibm_long_double[BFD_ENDIAN_UNKNOWN]
struct type * builtin_void
struct range_bounds * bounds
int types_deeply_equal(struct type *, struct type *)
struct type * create_range_type(struct type *, struct type *, const struct dynamic_prop *, const struct dynamic_prop *)
struct dynamic_prop_list * next
struct type * internal_type_self_type(struct type *)
struct type * builtin_unsigned_char
struct type * builtin_error
struct type * arch_complex_type(struct gdbarch *, char *, struct type *)
struct type * builtin_float
const struct rank NULL_POINTER_CONVERSION
void set_type_vptr_basetype(struct type *, struct type *)
struct type * builtin_int
void allocate_gnat_aux_type(struct type *)
const struct rank INTEGER_CONVERSION_BADNESS
struct type * lookup_function_type_with_arguments(struct type *, int, struct type **)
void make_vector_type(struct type *array_type)
int internal_type_vptr_fieldno(struct type *)