GDB (API)
|
00001 /* Internal type definitions for GDB. 00002 00003 Copyright (C) 1992-2013 Free Software Foundation, Inc. 00004 00005 Contributed by Cygnus Support, using pieces from other GDB modules. 00006 00007 This file is part of GDB. 00008 00009 This program is free software; you can redistribute it and/or modify 00010 it under the terms of the GNU General Public License as published by 00011 the Free Software Foundation; either version 3 of the License, or 00012 (at your option) any later version. 00013 00014 This program is distributed in the hope that it will be useful, 00015 but WITHOUT ANY WARRANTY; without even the implied warranty of 00016 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00017 GNU General Public License for more details. 00018 00019 You should have received a copy of the GNU General Public License 00020 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 00021 00022 #if !defined (GDBTYPES_H) 00023 #define GDBTYPES_H 1 00024 00025 #include "hashtab.h" 00026 00027 /* Forward declarations for prototypes. */ 00028 struct field; 00029 struct block; 00030 struct value_print_options; 00031 struct language_defn; 00032 00033 /* These declarations are DWARF-specific as some of the gdbtypes.h data types 00034 are already DWARF-specific. */ 00035 00036 /* Offset relative to the start of its containing CU (compilation unit). */ 00037 typedef struct 00038 { 00039 unsigned int cu_off; 00040 } cu_offset; 00041 00042 /* Offset relative to the start of its .debug_info or .debug_types section. */ 00043 typedef struct 00044 { 00045 unsigned int sect_off; 00046 } sect_offset; 00047 00048 /* Some macros for char-based bitfields. */ 00049 00050 #define B_SET(a,x) ((a)[(x)>>3] |= (1 << ((x)&7))) 00051 #define B_CLR(a,x) ((a)[(x)>>3] &= ~(1 << ((x)&7))) 00052 #define B_TST(a,x) ((a)[(x)>>3] & (1 << ((x)&7))) 00053 #define B_TYPE unsigned char 00054 #define B_BYTES(x) ( 1 + ((x)>>3) ) 00055 #define B_CLRALL(a,x) memset ((a), 0, B_BYTES(x)) 00056 00057 /* Different kinds of data types are distinguished by the `code' field. */ 00058 00059 enum type_code 00060 { 00061 TYPE_CODE_BITSTRING = -1, /* Deprecated */ 00062 TYPE_CODE_UNDEF = 0, /* Not used; catches errors */ 00063 TYPE_CODE_PTR, /* Pointer type */ 00064 00065 /* Array type with lower & upper bounds. 00066 00067 Regardless of the language, GDB represents multidimensional 00068 array types the way C does: as arrays of arrays. So an 00069 instance of a GDB array type T can always be seen as a series 00070 of instances of TYPE_TARGET_TYPE (T) laid out sequentially in 00071 memory. 00072 00073 Row-major languages like C lay out multi-dimensional arrays so 00074 that incrementing the rightmost index in a subscripting 00075 expression results in the smallest change in the address of the 00076 element referred to. Column-major languages like Fortran lay 00077 them out so that incrementing the leftmost index results in the 00078 smallest change. 00079 00080 This means that, in column-major languages, working our way 00081 from type to target type corresponds to working through indices 00082 from right to left, not left to right. */ 00083 TYPE_CODE_ARRAY, 00084 00085 TYPE_CODE_STRUCT, /* C struct or Pascal record */ 00086 TYPE_CODE_UNION, /* C union or Pascal variant part */ 00087 TYPE_CODE_ENUM, /* Enumeration type */ 00088 TYPE_CODE_FLAGS, /* Bit flags type */ 00089 TYPE_CODE_FUNC, /* Function type */ 00090 TYPE_CODE_INT, /* Integer type */ 00091 00092 /* Floating type. This is *NOT* a complex type. Beware, there are parts 00093 of GDB which bogusly assume that TYPE_CODE_FLT can mean complex. */ 00094 TYPE_CODE_FLT, 00095 00096 /* Void type. The length field specifies the length (probably always 00097 one) which is used in pointer arithmetic involving pointers to 00098 this type, but actually dereferencing such a pointer is invalid; 00099 a void type has no length and no actual representation in memory 00100 or registers. A pointer to a void type is a generic pointer. */ 00101 TYPE_CODE_VOID, 00102 00103 TYPE_CODE_SET, /* Pascal sets */ 00104 TYPE_CODE_RANGE, /* Range (integers within spec'd bounds). */ 00105 00106 /* A string type which is like an array of character but prints 00107 differently (at least for (the deleted) CHILL). It does not 00108 contain a length field as Pascal strings (for many Pascals, 00109 anyway) do; if we want to deal with such strings, we should use 00110 a new type code. */ 00111 TYPE_CODE_STRING, 00112 00113 /* Unknown type. The length field is valid if we were able to 00114 deduce that much about the type, or 0 if we don't even know that. */ 00115 TYPE_CODE_ERROR, 00116 00117 /* C++ */ 00118 TYPE_CODE_METHOD, /* Method type */ 00119 00120 /* Pointer-to-member-function type. This describes how to access a 00121 particular member function of a class (possibly a virtual 00122 member function). The representation may vary between different 00123 C++ ABIs. */ 00124 TYPE_CODE_METHODPTR, 00125 00126 /* Pointer-to-member type. This is the offset within a class to some 00127 particular data member. The only currently supported representation 00128 uses an unbiased offset, with -1 representing NULL; this is used 00129 by the Itanium C++ ABI (used by GCC on all platforms). */ 00130 TYPE_CODE_MEMBERPTR, 00131 00132 TYPE_CODE_REF, /* C++ Reference types */ 00133 00134 TYPE_CODE_CHAR, /* *real* character type */ 00135 00136 /* Boolean type. 0 is false, 1 is true, and other values are non-boolean 00137 (e.g. FORTRAN "logical" used as unsigned int). */ 00138 TYPE_CODE_BOOL, 00139 00140 /* Fortran */ 00141 TYPE_CODE_COMPLEX, /* Complex float */ 00142 00143 TYPE_CODE_TYPEDEF, 00144 00145 TYPE_CODE_NAMESPACE, /* C++ namespace. */ 00146 00147 TYPE_CODE_DECFLOAT, /* Decimal floating point. */ 00148 00149 TYPE_CODE_MODULE, /* Fortran module. */ 00150 00151 /* Internal function type. */ 00152 TYPE_CODE_INTERNAL_FUNCTION 00153 }; 00154 00155 /* For now allow source to use TYPE_CODE_CLASS for C++ classes, as an 00156 alias for TYPE_CODE_STRUCT. This is for DWARF, which has a distinct 00157 "class" attribute. Perhaps we should actually have a separate TYPE_CODE 00158 so that we can print "class" or "struct" depending on what the debug 00159 info said. It's not clear we should bother. */ 00160 00161 #define TYPE_CODE_CLASS TYPE_CODE_STRUCT 00162 00163 /* Some constants representing each bit field in the main_type. See 00164 the bit-field-specific macros, below, for documentation of each 00165 constant in this enum. These enum values are only used with 00166 init_type. Note that the values are chosen not to conflict with 00167 type_instance_flag_value; this lets init_type error-check its 00168 input. */ 00169 00170 enum type_flag_value 00171 { 00172 TYPE_FLAG_UNSIGNED = (1 << 8), 00173 TYPE_FLAG_NOSIGN = (1 << 9), 00174 TYPE_FLAG_STUB = (1 << 10), 00175 TYPE_FLAG_TARGET_STUB = (1 << 11), 00176 TYPE_FLAG_STATIC = (1 << 12), 00177 TYPE_FLAG_PROTOTYPED = (1 << 13), 00178 TYPE_FLAG_INCOMPLETE = (1 << 14), 00179 TYPE_FLAG_VARARGS = (1 << 15), 00180 TYPE_FLAG_VECTOR = (1 << 16), 00181 TYPE_FLAG_FIXED_INSTANCE = (1 << 17), 00182 TYPE_FLAG_STUB_SUPPORTED = (1 << 18), 00183 TYPE_FLAG_GNU_IFUNC = (1 << 19), 00184 00185 /* Used for error-checking. */ 00186 TYPE_FLAG_MIN = TYPE_FLAG_UNSIGNED 00187 }; 00188 00189 /* Some bits for the type's instance_flags word. See the macros below 00190 for documentation on each bit. Note that if you add a value here, 00191 you must update the enum type_flag_value as well. */ 00192 enum type_instance_flag_value 00193 { 00194 TYPE_INSTANCE_FLAG_CONST = (1 << 0), 00195 TYPE_INSTANCE_FLAG_VOLATILE = (1 << 1), 00196 TYPE_INSTANCE_FLAG_CODE_SPACE = (1 << 2), 00197 TYPE_INSTANCE_FLAG_DATA_SPACE = (1 << 3), 00198 TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1 = (1 << 4), 00199 TYPE_INSTANCE_FLAG_ADDRESS_CLASS_2 = (1 << 5), 00200 TYPE_INSTANCE_FLAG_NOTTEXT = (1 << 6), 00201 TYPE_INSTANCE_FLAG_RESTRICT = (1 << 7) 00202 }; 00203 00204 /* Unsigned integer type. If this is not set for a TYPE_CODE_INT, the 00205 type is signed (unless TYPE_FLAG_NOSIGN (below) is set). */ 00206 00207 #define TYPE_UNSIGNED(t) (TYPE_MAIN_TYPE (t)->flag_unsigned) 00208 00209 /* No sign for this type. In C++, "char", "signed char", and "unsigned 00210 char" are distinct types; so we need an extra flag to indicate the 00211 absence of a sign! */ 00212 00213 #define TYPE_NOSIGN(t) (TYPE_MAIN_TYPE (t)->flag_nosign) 00214 00215 /* This appears in a type's flags word if it is a stub type (e.g., if 00216 someone referenced a type that wasn't defined in a source file 00217 via (struct sir_not_appearing_in_this_film *)). */ 00218 00219 #define TYPE_STUB(t) (TYPE_MAIN_TYPE (t)->flag_stub) 00220 00221 /* The target type of this type is a stub type, and this type needs to 00222 be updated if it gets un-stubbed in check_typedef. 00223 Used for arrays and ranges, in which TYPE_LENGTH of the array/range 00224 gets set based on the TYPE_LENGTH of the target type. 00225 Also, set for TYPE_CODE_TYPEDEF. */ 00226 00227 #define TYPE_TARGET_STUB(t) (TYPE_MAIN_TYPE (t)->flag_target_stub) 00228 00229 /* Static type. If this is set, the corresponding type had 00230 a static modifier. 00231 Note: This may be unnecessary, since static data members 00232 are indicated by other means (bitpos == -1). */ 00233 00234 #define TYPE_STATIC(t) (TYPE_MAIN_TYPE (t)->flag_static) 00235 00236 /* This is a function type which appears to have a prototype. We need 00237 this for function calls in order to tell us if it's necessary to 00238 coerce the args, or to just do the standard conversions. This is 00239 used with a short field. */ 00240 00241 #define TYPE_PROTOTYPED(t) (TYPE_MAIN_TYPE (t)->flag_prototyped) 00242 00243 /* This flag is used to indicate that processing for this type 00244 is incomplete. 00245 00246 (Mostly intended for HP platforms, where class methods, for 00247 instance, can be encountered before their classes in the debug 00248 info; the incomplete type has to be marked so that the class and 00249 the method can be assigned correct types.) */ 00250 00251 #define TYPE_INCOMPLETE(t) (TYPE_MAIN_TYPE (t)->flag_incomplete) 00252 00253 /* FIXME drow/2002-06-03: Only used for methods, but applies as well 00254 to functions. */ 00255 00256 #define TYPE_VARARGS(t) (TYPE_MAIN_TYPE (t)->flag_varargs) 00257 00258 /* Identify a vector type. Gcc is handling this by adding an extra 00259 attribute to the array type. We slurp that in as a new flag of a 00260 type. This is used only in dwarf2read.c. */ 00261 #define TYPE_VECTOR(t) (TYPE_MAIN_TYPE (t)->flag_vector) 00262 00263 /* The debugging formats (especially STABS) do not contain enough information 00264 to represent all Ada types---especially those whose size depends on 00265 dynamic quantities. Therefore, the GNAT Ada compiler includes 00266 extra information in the form of additional type definitions 00267 connected by naming conventions. This flag indicates that the 00268 type is an ordinary (unencoded) GDB type that has been created from 00269 the necessary run-time information, and does not need further 00270 interpretation. Optionally marks ordinary, fixed-size GDB type. */ 00271 00272 #define TYPE_FIXED_INSTANCE(t) (TYPE_MAIN_TYPE (t)->flag_fixed_instance) 00273 00274 /* This debug target supports TYPE_STUB(t). In the unsupported case we have to 00275 rely on NFIELDS to be zero etc., see TYPE_IS_OPAQUE (). 00276 TYPE_STUB(t) with !TYPE_STUB_SUPPORTED(t) may exist if we only guessed 00277 the TYPE_STUB(t) value (see dwarfread.c). */ 00278 00279 #define TYPE_STUB_SUPPORTED(t) (TYPE_MAIN_TYPE (t)->flag_stub_supported) 00280 00281 /* Not textual. By default, GDB treats all single byte integers as 00282 characters (or elements of strings) unless this flag is set. */ 00283 00284 #define TYPE_NOTTEXT(t) (TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_NOTTEXT) 00285 00286 /* Used only for TYPE_CODE_FUNC where it specifies the real function 00287 address is returned by this function call. TYPE_TARGET_TYPE determines the 00288 final returned function type to be presented to user. */ 00289 00290 #define TYPE_GNU_IFUNC(t) (TYPE_MAIN_TYPE (t)->flag_gnu_ifunc) 00291 00292 /* Type owner. If TYPE_OBJFILE_OWNED is true, the type is owned by 00293 the objfile retrieved as TYPE_OBJFILE. Otherweise, the type is 00294 owned by an architecture; TYPE_OBJFILE is NULL in this case. */ 00295 00296 #define TYPE_OBJFILE_OWNED(t) (TYPE_MAIN_TYPE (t)->flag_objfile_owned) 00297 #define TYPE_OWNER(t) TYPE_MAIN_TYPE(t)->owner 00298 #define TYPE_OBJFILE(t) (TYPE_OBJFILE_OWNED(t)? TYPE_OWNER(t).objfile : NULL) 00299 00300 /* True if this type was declared using the "class" keyword. This is 00301 only valid for C++ structure types, and only used for displaying 00302 the type. If false, the structure was declared as a "struct". */ 00303 00304 #define TYPE_DECLARED_CLASS(t) (TYPE_MAIN_TYPE (t)->flag_declared_class) 00305 00306 /* True if this type is a "flag" enum. A flag enum is one where all 00307 the values are pairwise disjoint when "and"ed together. This 00308 affects how enum values are printed. */ 00309 00310 #define TYPE_FLAG_ENUM(t) (TYPE_MAIN_TYPE (t)->flag_flag_enum) 00311 00312 /* Constant type. If this is set, the corresponding type has a 00313 const modifier. */ 00314 00315 #define TYPE_CONST(t) (TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_CONST) 00316 00317 /* Volatile type. If this is set, the corresponding type has a 00318 volatile modifier. */ 00319 00320 #define TYPE_VOLATILE(t) \ 00321 (TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_VOLATILE) 00322 00323 /* Restrict type. If this is set, the corresponding type has a 00324 restrict modifier. */ 00325 00326 #define TYPE_RESTRICT(t) \ 00327 (TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_RESTRICT) 00328 00329 /* Instruction-space delimited type. This is for Harvard architectures 00330 which have separate instruction and data address spaces (and perhaps 00331 others). 00332 00333 GDB usually defines a flat address space that is a superset of the 00334 architecture's two (or more) address spaces, but this is an extension 00335 of the architecture's model. 00336 00337 If TYPE_FLAG_INST is set, an object of the corresponding type 00338 resides in instruction memory, even if its address (in the extended 00339 flat address space) does not reflect this. 00340 00341 Similarly, if TYPE_FLAG_DATA is set, then an object of the 00342 corresponding type resides in the data memory space, even if 00343 this is not indicated by its (flat address space) address. 00344 00345 If neither flag is set, the default space for functions / methods 00346 is instruction space, and for data objects is data memory. */ 00347 00348 #define TYPE_CODE_SPACE(t) \ 00349 (TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_CODE_SPACE) 00350 00351 #define TYPE_DATA_SPACE(t) \ 00352 (TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_DATA_SPACE) 00353 00354 /* Address class flags. Some environments provide for pointers whose 00355 size is different from that of a normal pointer or address types 00356 where the bits are interpreted differently than normal addresses. The 00357 TYPE_FLAG_ADDRESS_CLASS_n flags may be used in target specific 00358 ways to represent these different types of address classes. */ 00359 #define TYPE_ADDRESS_CLASS_1(t) (TYPE_INSTANCE_FLAGS(t) \ 00360 & TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1) 00361 #define TYPE_ADDRESS_CLASS_2(t) (TYPE_INSTANCE_FLAGS(t) \ 00362 & TYPE_INSTANCE_FLAG_ADDRESS_CLASS_2) 00363 #define TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL \ 00364 (TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1 | TYPE_INSTANCE_FLAG_ADDRESS_CLASS_2) 00365 #define TYPE_ADDRESS_CLASS_ALL(t) (TYPE_INSTANCE_FLAGS(t) \ 00366 & TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL) 00367 00368 /* Determine which field of the union main_type.fields[x].loc is used. */ 00369 00370 enum field_loc_kind 00371 { 00372 FIELD_LOC_KIND_BITPOS, /* bitpos */ 00373 FIELD_LOC_KIND_ENUMVAL, /* enumval */ 00374 FIELD_LOC_KIND_PHYSADDR, /* physaddr */ 00375 FIELD_LOC_KIND_PHYSNAME, /* physname */ 00376 FIELD_LOC_KIND_DWARF_BLOCK /* dwarf_block */ 00377 }; 00378 00379 /* A discriminant to determine which field in the main_type.type_specific 00380 union is being used, if any. 00381 00382 For types such as TYPE_CODE_FLT or TYPE_CODE_FUNC, the use of this 00383 discriminant is really redundant, as we know from the type code 00384 which field is going to be used. As such, it would be possible to 00385 reduce the size of this enum in order to save a bit or two for 00386 other fields of struct main_type. But, since we still have extra 00387 room , and for the sake of clarity and consistency, we treat all fields 00388 of the union the same way. */ 00389 00390 enum type_specific_kind 00391 { 00392 TYPE_SPECIFIC_NONE, 00393 TYPE_SPECIFIC_CPLUS_STUFF, 00394 TYPE_SPECIFIC_GNAT_STUFF, 00395 TYPE_SPECIFIC_FLOATFORMAT, 00396 TYPE_SPECIFIC_FUNC 00397 }; 00398 00399 /* This structure is space-critical. 00400 Its layout has been tweaked to reduce the space used. */ 00401 00402 struct main_type 00403 { 00404 /* Code for kind of type. */ 00405 00406 ENUM_BITFIELD(type_code) code : 8; 00407 00408 /* Flags about this type. These fields appear at this location 00409 because they packs nicely here. See the TYPE_* macros for 00410 documentation about these fields. */ 00411 00412 unsigned int flag_unsigned : 1; 00413 unsigned int flag_nosign : 1; 00414 unsigned int flag_stub : 1; 00415 unsigned int flag_target_stub : 1; 00416 unsigned int flag_static : 1; 00417 unsigned int flag_prototyped : 1; 00418 unsigned int flag_incomplete : 1; 00419 unsigned int flag_varargs : 1; 00420 unsigned int flag_vector : 1; 00421 unsigned int flag_stub_supported : 1; 00422 unsigned int flag_gnu_ifunc : 1; 00423 unsigned int flag_fixed_instance : 1; 00424 unsigned int flag_objfile_owned : 1; 00425 /* True if this type was declared with "class" rather than 00426 "struct". */ 00427 unsigned int flag_declared_class : 1; 00428 00429 /* True if this is an enum type with disjoint values. This affects 00430 how the enum is printed. */ 00431 00432 unsigned int flag_flag_enum : 1; 00433 00434 /* A discriminant telling us which field of the type_specific union 00435 is being used for this type, if any. */ 00436 ENUM_BITFIELD(type_specific_kind) type_specific_field : 3; 00437 00438 /* Number of fields described for this type. This field appears at 00439 this location because it packs nicely here. */ 00440 00441 short nfields; 00442 00443 /* Field number of the virtual function table pointer in 00444 VPTR_BASETYPE. If -1, we were unable to find the virtual 00445 function table pointer in initial symbol reading, and 00446 get_vptr_fieldno should be called to find it if possible. 00447 get_vptr_fieldno will update this field if possible. 00448 Otherwise the value is left at -1. 00449 00450 Unused if this type does not have virtual functions. 00451 00452 This field appears at this location because it packs nicely here. */ 00453 00454 short vptr_fieldno; 00455 00456 /* Name of this type, or NULL if none. 00457 00458 This is used for printing only, except by poorly designed C++ code. 00459 For looking up a name, look for a symbol in the VAR_DOMAIN. 00460 This is generally allocated in the objfile's obstack. 00461 However coffread.c uses malloc. */ 00462 00463 const char *name; 00464 00465 /* Tag name for this type, or NULL if none. This means that the 00466 name of the type consists of a keyword followed by the tag name. 00467 Which keyword is determined by the type code ("struct" for 00468 TYPE_CODE_STRUCT, etc.). As far as I know C/C++ are the only languages 00469 with this feature. 00470 00471 This is used for printing only, except by poorly designed C++ code. 00472 For looking up a name, look for a symbol in the STRUCT_DOMAIN. 00473 One more legitimate use is that if TYPE_FLAG_STUB is set, this is 00474 the name to use to look for definitions in other files. */ 00475 00476 const char *tag_name; 00477 00478 /* Every type is now associated with a particular objfile, and the 00479 type is allocated on the objfile_obstack for that objfile. One problem 00480 however, is that there are times when gdb allocates new types while 00481 it is not in the process of reading symbols from a particular objfile. 00482 Fortunately, these happen when the type being created is a derived 00483 type of an existing type, such as in lookup_pointer_type(). So 00484 we can just allocate the new type using the same objfile as the 00485 existing type, but to do this we need a backpointer to the objfile 00486 from the existing type. Yes this is somewhat ugly, but without 00487 major overhaul of the internal type system, it can't be avoided 00488 for now. */ 00489 00490 union type_owner 00491 { 00492 struct objfile *objfile; 00493 struct gdbarch *gdbarch; 00494 } owner; 00495 00496 /* For a pointer type, describes the type of object pointed to. 00497 For an array type, describes the type of the elements. 00498 For a function or method type, describes the type of the return value. 00499 For a range type, describes the type of the full range. 00500 For a complex type, describes the type of each coordinate. 00501 For a special record or union type encoding a dynamic-sized type 00502 in GNAT, a memoized pointer to a corresponding static version of 00503 the type. 00504 Unused otherwise. */ 00505 00506 struct type *target_type; 00507 00508 /* For structure and union types, a description of each field. 00509 For set and pascal array types, there is one "field", 00510 whose type is the domain type of the set or array. 00511 For range types, there are two "fields", 00512 the minimum and maximum values (both inclusive). 00513 For enum types, each possible value is described by one "field". 00514 For a function or method type, a "field" for each parameter. 00515 For C++ classes, there is one field for each base class (if it is 00516 a derived class) plus one field for each class data member. Member 00517 functions are recorded elsewhere. 00518 00519 Using a pointer to a separate array of fields 00520 allows all types to have the same size, which is useful 00521 because we can allocate the space for a type before 00522 we know what to put in it. */ 00523 00524 union 00525 { 00526 struct field 00527 { 00528 union field_location 00529 { 00530 /* Position of this field, counting in bits from start of 00531 containing structure. For gdbarch_bits_big_endian=1 00532 targets, it is the bit offset to the MSB. For 00533 gdbarch_bits_big_endian=0 targets, it is the bit offset to 00534 the LSB. */ 00535 00536 int bitpos; 00537 00538 /* Enum value. */ 00539 LONGEST enumval; 00540 00541 /* For a static field, if TYPE_FIELD_STATIC_HAS_ADDR then physaddr 00542 is the location (in the target) of the static field. 00543 Otherwise, physname is the mangled label of the static field. */ 00544 00545 CORE_ADDR physaddr; 00546 const char *physname; 00547 00548 /* The field location can be computed by evaluating the following DWARF 00549 block. Its DATA is allocated on objfile_obstack - no CU load is 00550 needed to access it. */ 00551 00552 struct dwarf2_locexpr_baton *dwarf_block; 00553 } 00554 loc; 00555 00556 /* For a function or member type, this is 1 if the argument is marked 00557 artificial. Artificial arguments should not be shown to the 00558 user. For TYPE_CODE_RANGE it is set if the specific bound is not 00559 defined. */ 00560 unsigned int artificial : 1; 00561 00562 /* Discriminant for union field_location. */ 00563 ENUM_BITFIELD(field_loc_kind) loc_kind : 3; 00564 00565 /* Size of this field, in bits, or zero if not packed. 00566 If non-zero in an array type, indicates the element size in 00567 bits (used only in Ada at the moment). 00568 For an unpacked field, the field's type's length 00569 says how many bytes the field occupies. */ 00570 00571 unsigned int bitsize : 28; 00572 00573 /* In a struct or union type, type of this field. 00574 In a function or member type, type of this argument. 00575 In an array type, the domain-type of the array. */ 00576 00577 struct type *type; 00578 00579 /* Name of field, value or argument. 00580 NULL for range bounds, array domains, and member function 00581 arguments. */ 00582 00583 const char *name; 00584 } *fields; 00585 00586 /* Union member used for range types. */ 00587 00588 struct range_bounds 00589 { 00590 /* Low bound of range. */ 00591 00592 LONGEST low; 00593 00594 /* High bound of range. */ 00595 00596 LONGEST high; 00597 00598 /* Flags indicating whether the values of low and high are 00599 valid. When true, the respective range value is 00600 undefined. Currently used only for FORTRAN arrays. */ 00601 00602 char low_undefined; 00603 char high_undefined; 00604 00605 } *bounds; 00606 00607 } flds_bnds; 00608 00609 /* For types with virtual functions (TYPE_CODE_STRUCT), VPTR_BASETYPE 00610 is the base class which defined the virtual function table pointer. 00611 00612 For types that are pointer to member types (TYPE_CODE_METHODPTR, 00613 TYPE_CODE_MEMBERPTR), VPTR_BASETYPE is the type that this pointer 00614 is a member of. 00615 00616 For method types (TYPE_CODE_METHOD), VPTR_BASETYPE is the aggregate 00617 type that contains the method. 00618 00619 Unused otherwise. */ 00620 00621 struct type *vptr_basetype; 00622 00623 /* Slot to point to additional language-specific fields of this type. */ 00624 00625 union type_specific 00626 { 00627 /* CPLUS_STUFF is for TYPE_CODE_STRUCT. It is initialized to point to 00628 cplus_struct_default, a default static instance of a struct 00629 cplus_struct_type. */ 00630 00631 struct cplus_struct_type *cplus_stuff; 00632 00633 /* GNAT_STUFF is for types for which the GNAT Ada compiler 00634 provides additional information. */ 00635 struct gnat_aux_type *gnat_stuff; 00636 00637 /* FLOATFORMAT is for TYPE_CODE_FLT. It is a pointer to two 00638 floatformat objects that describe the floating-point value 00639 that resides within the type. The first is for big endian 00640 targets and the second is for little endian targets. */ 00641 00642 const struct floatformat **floatformat; 00643 00644 /* For TYPE_CODE_FUNC types, */ 00645 struct func_type *func_stuff; 00646 } type_specific; 00647 }; 00648 00649 /* A ``struct type'' describes a particular instance of a type, with 00650 some particular qualification. */ 00651 struct type 00652 { 00653 /* Type that is a pointer to this type. 00654 NULL if no such pointer-to type is known yet. 00655 The debugger may add the address of such a type 00656 if it has to construct one later. */ 00657 00658 struct type *pointer_type; 00659 00660 /* C++: also need a reference type. */ 00661 00662 struct type *reference_type; 00663 00664 /* Variant chain. This points to a type that differs from this one only 00665 in qualifiers and length. Currently, the possible qualifiers are 00666 const, volatile, code-space, data-space, and address class. The 00667 length may differ only when one of the address class flags are set. 00668 The variants are linked in a circular ring and share MAIN_TYPE. */ 00669 struct type *chain; 00670 00671 /* Flags specific to this instance of the type, indicating where 00672 on the ring we are. 00673 00674 For TYPE_CODE_TYPEDEF the flags of the typedef type should be binary 00675 or-ed with the target type, with a special case for address class and 00676 space class. For example if this typedef does not specify any new 00677 qualifiers, TYPE_INSTANCE_FLAGS is 0 and the instance flags are 00678 completely inherited from the target type. No qualifiers can be cleared 00679 by the typedef. See also check_typedef. */ 00680 int instance_flags; 00681 00682 /* Length of storage for a value of this type. This is what 00683 sizeof(type) would return; use it for address arithmetic, 00684 memory reads and writes, etc. This size includes padding. For 00685 example, an i386 extended-precision floating point value really 00686 only occupies ten bytes, but most ABI's declare its size to be 00687 12 bytes, to preserve alignment. A `struct type' representing 00688 such a floating-point type would have a `length' value of 12, 00689 even though the last two bytes are unused. 00690 00691 There's a bit of a host/target mess here, if you're concerned 00692 about machines whose bytes aren't eight bits long, or who don't 00693 have byte-addressed memory. Various places pass this to memcpy 00694 and such, meaning it must be in units of host bytes. Various 00695 other places expect they can calculate addresses by adding it 00696 and such, meaning it must be in units of target bytes. For 00697 some DSP targets, in which HOST_CHAR_BIT will (presumably) be 8 00698 and TARGET_CHAR_BIT will be (say) 32, this is a problem. 00699 00700 One fix would be to make this field in bits (requiring that it 00701 always be a multiple of HOST_CHAR_BIT and TARGET_CHAR_BIT) --- 00702 the other choice would be to make it consistently in units of 00703 HOST_CHAR_BIT. However, this would still fail to address 00704 machines based on a ternary or decimal representation. */ 00705 00706 unsigned length; 00707 00708 /* Core type, shared by a group of qualified types. */ 00709 struct main_type *main_type; 00710 }; 00711 00712 #define NULL_TYPE ((struct type *) 0) 00713 00714 /* C++ language-specific information for TYPE_CODE_STRUCT and TYPE_CODE_UNION 00715 nodes. */ 00716 00717 struct cplus_struct_type 00718 { 00719 /* Number of base classes this type derives from. The baseclasses are 00720 stored in the first N_BASECLASSES fields (i.e. the `fields' field of 00721 the struct type). I think only the `type' field of such a field has 00722 any meaning. */ 00723 00724 short n_baseclasses; 00725 00726 /* Number of methods with unique names. All overloaded methods with 00727 the same name count only once. */ 00728 00729 short nfn_fields; 00730 00731 /* Number of template arguments. */ 00732 unsigned short n_template_arguments; 00733 00734 /* One if this struct is a dynamic class, as defined by the 00735 Itanium C++ ABI: if it requires a virtual table pointer, 00736 because it or any of its base classes have one or more virtual 00737 member functions or virtual base classes. Minus one if not 00738 dynamic. Zero if not yet computed. */ 00739 int is_dynamic : 2; 00740 00741 /* Non-zero if this type came from a Java CU. */ 00742 unsigned int is_java : 1; 00743 00744 /* For derived classes, the number of base classes is given by 00745 n_baseclasses and virtual_field_bits is a bit vector containing 00746 one bit per base class. If the base class is virtual, the 00747 corresponding bit will be set. 00748 I.E, given: 00749 00750 class A{}; 00751 class B{}; 00752 class C : public B, public virtual A {}; 00753 00754 B is a baseclass of C; A is a virtual baseclass for C. 00755 This is a C++ 2.0 language feature. */ 00756 00757 B_TYPE *virtual_field_bits; 00758 00759 /* For classes with private fields, the number of fields is given by 00760 nfields and private_field_bits is a bit vector containing one bit 00761 per field. 00762 If the field is private, the corresponding bit will be set. */ 00763 00764 B_TYPE *private_field_bits; 00765 00766 /* For classes with protected fields, the number of fields is given by 00767 nfields and protected_field_bits is a bit vector containing one bit 00768 per field. 00769 If the field is private, the corresponding bit will be set. */ 00770 00771 B_TYPE *protected_field_bits; 00772 00773 /* For classes with fields to be ignored, either this is optimized out 00774 or this field has length 0. */ 00775 00776 B_TYPE *ignore_field_bits; 00777 00778 /* For classes, structures, and unions, a description of each field, 00779 which consists of an overloaded name, followed by the types of 00780 arguments that the method expects, and then the name after it 00781 has been renamed to make it distinct. 00782 00783 fn_fieldlists points to an array of nfn_fields of these. */ 00784 00785 struct fn_fieldlist 00786 { 00787 00788 /* The overloaded name. 00789 This is generally allocated in the objfile's obstack. 00790 However stabsread.c sometimes uses malloc. */ 00791 00792 const char *name; 00793 00794 /* The number of methods with this name. */ 00795 00796 int length; 00797 00798 /* The list of methods. */ 00799 00800 struct fn_field 00801 { 00802 00803 /* If is_stub is clear, this is the mangled name which we can 00804 look up to find the address of the method (FIXME: it would 00805 be cleaner to have a pointer to the struct symbol here 00806 instead). */ 00807 00808 /* If is_stub is set, this is the portion of the mangled 00809 name which specifies the arguments. For example, "ii", 00810 if there are two int arguments, or "" if there are no 00811 arguments. See gdb_mangle_name for the conversion from this 00812 format to the one used if is_stub is clear. */ 00813 00814 const char *physname; 00815 00816 /* The function type for the method. 00817 (This comment used to say "The return value of the method", 00818 but that's wrong. The function type 00819 is expected here, i.e. something with TYPE_CODE_FUNC, 00820 and *not* the return-value type). */ 00821 00822 struct type *type; 00823 00824 /* For virtual functions. 00825 First baseclass that defines this virtual function. */ 00826 00827 struct type *fcontext; 00828 00829 /* Attributes. */ 00830 00831 unsigned int is_const:1; 00832 unsigned int is_volatile:1; 00833 unsigned int is_private:1; 00834 unsigned int is_protected:1; 00835 unsigned int is_public:1; 00836 unsigned int is_abstract:1; 00837 unsigned int is_static:1; 00838 unsigned int is_final:1; 00839 unsigned int is_synchronized:1; 00840 unsigned int is_native:1; 00841 unsigned int is_artificial:1; 00842 00843 /* A stub method only has some fields valid (but they are enough 00844 to reconstruct the rest of the fields). */ 00845 unsigned int is_stub:1; 00846 00847 /* True if this function is a constructor, false 00848 otherwise. */ 00849 unsigned int is_constructor : 1; 00850 00851 /* Unused. */ 00852 unsigned int dummy:3; 00853 00854 /* Index into that baseclass's virtual function table, 00855 minus 2; else if static: VOFFSET_STATIC; else: 0. */ 00856 00857 unsigned int voffset:16; 00858 00859 #define VOFFSET_STATIC 1 00860 00861 } 00862 *fn_fields; 00863 00864 } 00865 *fn_fieldlists; 00866 00867 /* typedefs defined inside this class. TYPEDEF_FIELD points to an array of 00868 TYPEDEF_FIELD_COUNT elements. */ 00869 struct typedef_field 00870 { 00871 /* Unqualified name to be prefixed by owning class qualified name. */ 00872 const char *name; 00873 00874 /* Type this typedef named NAME represents. */ 00875 struct type *type; 00876 } 00877 *typedef_field; 00878 unsigned typedef_field_count; 00879 00880 /* The template arguments. This is an array with 00881 N_TEMPLATE_ARGUMENTS elements. This is NULL for non-template 00882 classes. */ 00883 struct symbol **template_arguments; 00884 }; 00885 00886 /* Struct used to store conversion rankings. */ 00887 struct rank 00888 { 00889 short rank; 00890 00891 /* When two conversions are of the same type and therefore have the same 00892 rank, subrank is used to differentiate the two. 00893 Eg: Two derived-class-pointer to base-class-pointer conversions would 00894 both have base pointer conversion rank, but the conversion with the 00895 shorter distance to the ancestor is preferable. 'subrank' would be used 00896 to reflect that. */ 00897 short subrank; 00898 }; 00899 00900 /* Struct used for ranking a function for overload resolution. */ 00901 struct badness_vector 00902 { 00903 int length; 00904 struct rank *rank; 00905 }; 00906 00907 /* GNAT Ada-specific information for various Ada types. */ 00908 struct gnat_aux_type 00909 { 00910 /* Parallel type used to encode information about dynamic types 00911 used in Ada (such as variant records, variable-size array, 00912 etc). */ 00913 struct type* descriptive_type; 00914 }; 00915 00916 /* For TYPE_CODE_FUNC types, */ 00917 struct func_type 00918 { 00919 /* The calling convention for targets supporting multiple ABIs. Right now 00920 this is only fetched from the Dwarf-2 DW_AT_calling_convention 00921 attribute. */ 00922 unsigned calling_convention; 00923 00924 /* Only those DW_TAG_GNU_call_site's in this function that have 00925 DW_AT_GNU_tail_call set are linked in this list. Function without its 00926 tail call list complete (DW_AT_GNU_all_tail_call_sites or its superset 00927 DW_AT_GNU_all_call_sites) has TAIL_CALL_LIST NULL, even if some 00928 DW_TAG_GNU_call_site's exist in such function. */ 00929 struct call_site *tail_call_list; 00930 }; 00931 00932 /* struct call_site_parameter can be referenced in callees by several ways. */ 00933 00934 enum call_site_parameter_kind 00935 { 00936 /* Use field call_site_parameter.u.dwarf_reg. */ 00937 CALL_SITE_PARAMETER_DWARF_REG, 00938 00939 /* Use field call_site_parameter.u.fb_offset. */ 00940 CALL_SITE_PARAMETER_FB_OFFSET, 00941 00942 /* Use field call_site_parameter.u.param_offset. */ 00943 CALL_SITE_PARAMETER_PARAM_OFFSET 00944 }; 00945 00946 /* A place where a function gets called from, represented by 00947 DW_TAG_GNU_call_site. It can be looked up from symtab->call_site_htab. */ 00948 00949 struct call_site 00950 { 00951 /* Address of the first instruction after this call. It must be the first 00952 field as we overload core_addr_hash and core_addr_eq for it. */ 00953 CORE_ADDR pc; 00954 00955 /* List successor with head in FUNC_TYPE.TAIL_CALL_LIST. */ 00956 struct call_site *tail_call_next; 00957 00958 /* Describe DW_AT_GNU_call_site_target. Missing attribute uses 00959 FIELD_LOC_KIND_DWARF_BLOCK with FIELD_DWARF_BLOCK == NULL. */ 00960 struct 00961 { 00962 union field_location loc; 00963 00964 /* Discriminant for union field_location. */ 00965 ENUM_BITFIELD(field_loc_kind) loc_kind : 3; 00966 } 00967 target; 00968 00969 /* Size of the PARAMETER array. */ 00970 unsigned parameter_count; 00971 00972 /* CU of the function where the call is located. It gets used for DWARF 00973 blocks execution in the parameter array below. */ 00974 struct dwarf2_per_cu_data *per_cu; 00975 00976 /* Describe DW_TAG_GNU_call_site's DW_TAG_formal_parameter. */ 00977 struct call_site_parameter 00978 { 00979 ENUM_BITFIELD (call_site_parameter_kind) kind : 2; 00980 00981 union call_site_parameter_u 00982 { 00983 /* DW_TAG_formal_parameter's DW_AT_location's DW_OP_regX as DWARF 00984 register number, for register passed parameters. */ 00985 int dwarf_reg; 00986 00987 /* Offset from the callee's frame base, for stack passed parameters. 00988 This equals offset from the caller's stack pointer. */ 00989 CORE_ADDR fb_offset; 00990 00991 /* Offset relative to the start of this PER_CU to 00992 DW_TAG_formal_parameter which is referenced by both caller and 00993 the callee. */ 00994 cu_offset param_offset; 00995 } 00996 u; 00997 00998 /* DW_TAG_formal_parameter's DW_AT_GNU_call_site_value. It is never 00999 NULL. */ 01000 const gdb_byte *value; 01001 size_t value_size; 01002 01003 /* DW_TAG_formal_parameter's DW_AT_GNU_call_site_data_value. It may be 01004 NULL if not provided by DWARF. */ 01005 const gdb_byte *data_value; 01006 size_t data_value_size; 01007 } 01008 parameter[1]; 01009 }; 01010 01011 /* The default value of TYPE_CPLUS_SPECIFIC(T) points to the 01012 this shared static structure. */ 01013 01014 extern const struct cplus_struct_type cplus_struct_default; 01015 01016 extern void allocate_cplus_struct_type (struct type *); 01017 01018 #define INIT_CPLUS_SPECIFIC(type) \ 01019 (TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_CPLUS_STUFF, \ 01020 TYPE_RAW_CPLUS_SPECIFIC (type) = (struct cplus_struct_type*) \ 01021 &cplus_struct_default) 01022 01023 #define ALLOCATE_CPLUS_STRUCT_TYPE(type) allocate_cplus_struct_type (type) 01024 01025 #define HAVE_CPLUS_STRUCT(type) \ 01026 (TYPE_SPECIFIC_FIELD (type) == TYPE_SPECIFIC_CPLUS_STUFF \ 01027 && TYPE_RAW_CPLUS_SPECIFIC (type) != &cplus_struct_default) 01028 01029 extern const struct gnat_aux_type gnat_aux_default; 01030 01031 extern void allocate_gnat_aux_type (struct type *); 01032 01033 #define INIT_GNAT_SPECIFIC(type) \ 01034 (TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_GNAT_STUFF, \ 01035 TYPE_GNAT_SPECIFIC (type) = (struct gnat_aux_type *) &gnat_aux_default) 01036 #define ALLOCATE_GNAT_AUX_TYPE(type) allocate_gnat_aux_type (type) 01037 /* A macro that returns non-zero if the type-specific data should be 01038 read as "gnat-stuff". */ 01039 #define HAVE_GNAT_AUX_INFO(type) \ 01040 (TYPE_SPECIFIC_FIELD (type) == TYPE_SPECIFIC_GNAT_STUFF) 01041 01042 #define INIT_FUNC_SPECIFIC(type) \ 01043 (TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_FUNC, \ 01044 TYPE_MAIN_TYPE (type)->type_specific.func_stuff \ 01045 = TYPE_ZALLOC (type, \ 01046 sizeof (*TYPE_MAIN_TYPE (type)->type_specific.func_stuff))) 01047 01048 #define TYPE_INSTANCE_FLAGS(thistype) (thistype)->instance_flags 01049 #define TYPE_MAIN_TYPE(thistype) (thistype)->main_type 01050 #define TYPE_NAME(thistype) TYPE_MAIN_TYPE(thistype)->name 01051 #define TYPE_TAG_NAME(type) TYPE_MAIN_TYPE(type)->tag_name 01052 #define TYPE_TARGET_TYPE(thistype) TYPE_MAIN_TYPE(thistype)->target_type 01053 #define TYPE_POINTER_TYPE(thistype) (thistype)->pointer_type 01054 #define TYPE_REFERENCE_TYPE(thistype) (thistype)->reference_type 01055 #define TYPE_CHAIN(thistype) (thistype)->chain 01056 /* Note that if thistype is a TYPEDEF type, you have to call check_typedef. 01057 But check_typedef does set the TYPE_LENGTH of the TYPEDEF type, 01058 so you only have to call check_typedef once. Since allocate_value 01059 calls check_typedef, TYPE_LENGTH (VALUE_TYPE (X)) is safe. */ 01060 #define TYPE_LENGTH(thistype) (thistype)->length 01061 /* Note that TYPE_CODE can be TYPE_CODE_TYPEDEF, so if you want the real 01062 type, you need to do TYPE_CODE (check_type (this_type)). */ 01063 #define TYPE_CODE(thistype) TYPE_MAIN_TYPE(thistype)->code 01064 #define TYPE_NFIELDS(thistype) TYPE_MAIN_TYPE(thistype)->nfields 01065 #define TYPE_FIELDS(thistype) TYPE_MAIN_TYPE(thistype)->flds_bnds.fields 01066 01067 #define TYPE_INDEX_TYPE(type) TYPE_FIELD_TYPE (type, 0) 01068 #define TYPE_RANGE_DATA(thistype) TYPE_MAIN_TYPE(thistype)->flds_bnds.bounds 01069 #define TYPE_LOW_BOUND(range_type) TYPE_RANGE_DATA(range_type)->low 01070 #define TYPE_HIGH_BOUND(range_type) TYPE_RANGE_DATA(range_type)->high 01071 #define TYPE_LOW_BOUND_UNDEFINED(range_type) \ 01072 TYPE_RANGE_DATA(range_type)->low_undefined 01073 #define TYPE_HIGH_BOUND_UNDEFINED(range_type) \ 01074 TYPE_RANGE_DATA(range_type)->high_undefined 01075 01076 /* Moto-specific stuff for FORTRAN arrays. */ 01077 01078 #define TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED(arraytype) \ 01079 TYPE_HIGH_BOUND_UNDEFINED(TYPE_INDEX_TYPE(arraytype)) 01080 #define TYPE_ARRAY_LOWER_BOUND_IS_UNDEFINED(arraytype) \ 01081 TYPE_LOW_BOUND_UNDEFINED(TYPE_INDEX_TYPE(arraytype)) 01082 01083 #define TYPE_ARRAY_UPPER_BOUND_VALUE(arraytype) \ 01084 (TYPE_HIGH_BOUND(TYPE_INDEX_TYPE((arraytype)))) 01085 01086 #define TYPE_ARRAY_LOWER_BOUND_VALUE(arraytype) \ 01087 (TYPE_LOW_BOUND(TYPE_INDEX_TYPE((arraytype)))) 01088 01089 /* C++ */ 01090 01091 #define TYPE_VPTR_BASETYPE(thistype) TYPE_MAIN_TYPE(thistype)->vptr_basetype 01092 #define TYPE_DOMAIN_TYPE(thistype) TYPE_MAIN_TYPE(thistype)->vptr_basetype 01093 #define TYPE_VPTR_FIELDNO(thistype) TYPE_MAIN_TYPE(thistype)->vptr_fieldno 01094 #define TYPE_FN_FIELDS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->fn_fields 01095 #define TYPE_NFN_FIELDS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->nfn_fields 01096 #define TYPE_SPECIFIC_FIELD(thistype) \ 01097 TYPE_MAIN_TYPE(thistype)->type_specific_field 01098 #define TYPE_TYPE_SPECIFIC(thistype) TYPE_MAIN_TYPE(thistype)->type_specific 01099 /* We need this tap-dance with the TYPE_RAW_SPECIFIC because of the case 01100 where we're trying to print an Ada array using the C language. 01101 In that case, there is no "cplus_stuff", but the C language assumes 01102 that there is. What we do, in that case, is pretend that there is 01103 an implicit one which is the default cplus stuff. */ 01104 #define TYPE_CPLUS_SPECIFIC(thistype) \ 01105 (!HAVE_CPLUS_STRUCT(thistype) \ 01106 ? (struct cplus_struct_type*)&cplus_struct_default \ 01107 : TYPE_RAW_CPLUS_SPECIFIC(thistype)) 01108 #define TYPE_RAW_CPLUS_SPECIFIC(thistype) TYPE_MAIN_TYPE(thistype)->type_specific.cplus_stuff 01109 #define TYPE_FLOATFORMAT(thistype) TYPE_MAIN_TYPE(thistype)->type_specific.floatformat 01110 #define TYPE_GNAT_SPECIFIC(thistype) TYPE_MAIN_TYPE(thistype)->type_specific.gnat_stuff 01111 #define TYPE_DESCRIPTIVE_TYPE(thistype) TYPE_GNAT_SPECIFIC(thistype)->descriptive_type 01112 #define TYPE_CALLING_CONVENTION(thistype) TYPE_MAIN_TYPE(thistype)->type_specific.func_stuff->calling_convention 01113 #define TYPE_TAIL_CALL_LIST(thistype) TYPE_MAIN_TYPE(thistype)->type_specific.func_stuff->tail_call_list 01114 #define TYPE_BASECLASS(thistype,index) TYPE_FIELD_TYPE(thistype, index) 01115 #define TYPE_N_BASECLASSES(thistype) TYPE_CPLUS_SPECIFIC(thistype)->n_baseclasses 01116 #define TYPE_BASECLASS_NAME(thistype,index) TYPE_FIELD_NAME(thistype, index) 01117 #define TYPE_BASECLASS_BITPOS(thistype,index) TYPE_FIELD_BITPOS(thistype,index) 01118 #define BASETYPE_VIA_PUBLIC(thistype, index) \ 01119 ((!TYPE_FIELD_PRIVATE(thistype, index)) && (!TYPE_FIELD_PROTECTED(thistype, index))) 01120 #define TYPE_CPLUS_DYNAMIC(thistype) TYPE_CPLUS_SPECIFIC (thistype)->is_dynamic 01121 #define TYPE_CPLUS_REALLY_JAVA(thistype) TYPE_CPLUS_SPECIFIC (thistype)->is_java 01122 01123 #define BASETYPE_VIA_VIRTUAL(thistype, index) \ 01124 (TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits == NULL ? 0 \ 01125 : B_TST(TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits, (index))) 01126 01127 #define FIELD_TYPE(thisfld) ((thisfld).type) 01128 #define FIELD_NAME(thisfld) ((thisfld).name) 01129 #define FIELD_LOC_KIND(thisfld) ((thisfld).loc_kind) 01130 #define FIELD_BITPOS_LVAL(thisfld) ((thisfld).loc.bitpos) 01131 #define FIELD_BITPOS(thisfld) (FIELD_BITPOS_LVAL (thisfld) + 0) 01132 #define FIELD_ENUMVAL_LVAL(thisfld) ((thisfld).loc.enumval) 01133 #define FIELD_ENUMVAL(thisfld) (FIELD_ENUMVAL_LVAL (thisfld) + 0) 01134 #define FIELD_STATIC_PHYSNAME(thisfld) ((thisfld).loc.physname) 01135 #define FIELD_STATIC_PHYSADDR(thisfld) ((thisfld).loc.physaddr) 01136 #define FIELD_DWARF_BLOCK(thisfld) ((thisfld).loc.dwarf_block) 01137 #define SET_FIELD_BITPOS(thisfld, bitpos) \ 01138 (FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_BITPOS, \ 01139 FIELD_BITPOS_LVAL (thisfld) = (bitpos)) 01140 #define SET_FIELD_ENUMVAL(thisfld, enumval) \ 01141 (FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_ENUMVAL, \ 01142 FIELD_ENUMVAL_LVAL (thisfld) = (enumval)) 01143 #define SET_FIELD_PHYSNAME(thisfld, name) \ 01144 (FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_PHYSNAME, \ 01145 FIELD_STATIC_PHYSNAME (thisfld) = (name)) 01146 #define SET_FIELD_PHYSADDR(thisfld, addr) \ 01147 (FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_PHYSADDR, \ 01148 FIELD_STATIC_PHYSADDR (thisfld) = (addr)) 01149 #define SET_FIELD_DWARF_BLOCK(thisfld, addr) \ 01150 (FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_DWARF_BLOCK, \ 01151 FIELD_DWARF_BLOCK (thisfld) = (addr)) 01152 #define FIELD_ARTIFICIAL(thisfld) ((thisfld).artificial) 01153 #define FIELD_BITSIZE(thisfld) ((thisfld).bitsize) 01154 01155 #define TYPE_FIELD(thistype, n) TYPE_MAIN_TYPE(thistype)->flds_bnds.fields[n] 01156 #define TYPE_FIELD_TYPE(thistype, n) FIELD_TYPE(TYPE_FIELD(thistype, n)) 01157 #define TYPE_FIELD_NAME(thistype, n) FIELD_NAME(TYPE_FIELD(thistype, n)) 01158 #define TYPE_FIELD_LOC_KIND(thistype, n) FIELD_LOC_KIND (TYPE_FIELD (thistype, n)) 01159 #define TYPE_FIELD_BITPOS(thistype, n) FIELD_BITPOS (TYPE_FIELD (thistype, n)) 01160 #define TYPE_FIELD_ENUMVAL(thistype, n) FIELD_ENUMVAL (TYPE_FIELD (thistype, n)) 01161 #define TYPE_FIELD_STATIC_PHYSNAME(thistype, n) FIELD_STATIC_PHYSNAME (TYPE_FIELD (thistype, n)) 01162 #define TYPE_FIELD_STATIC_PHYSADDR(thistype, n) FIELD_STATIC_PHYSADDR (TYPE_FIELD (thistype, n)) 01163 #define TYPE_FIELD_DWARF_BLOCK(thistype, n) FIELD_DWARF_BLOCK (TYPE_FIELD (thistype, n)) 01164 #define TYPE_FIELD_ARTIFICIAL(thistype, n) FIELD_ARTIFICIAL(TYPE_FIELD(thistype,n)) 01165 #define TYPE_FIELD_BITSIZE(thistype, n) FIELD_BITSIZE(TYPE_FIELD(thistype,n)) 01166 #define TYPE_FIELD_PACKED(thistype, n) (FIELD_BITSIZE(TYPE_FIELD(thistype,n))!=0) 01167 01168 #define TYPE_FIELD_PRIVATE_BITS(thistype) \ 01169 TYPE_CPLUS_SPECIFIC(thistype)->private_field_bits 01170 #define TYPE_FIELD_PROTECTED_BITS(thistype) \ 01171 TYPE_CPLUS_SPECIFIC(thistype)->protected_field_bits 01172 #define TYPE_FIELD_IGNORE_BITS(thistype) \ 01173 TYPE_CPLUS_SPECIFIC(thistype)->ignore_field_bits 01174 #define TYPE_FIELD_VIRTUAL_BITS(thistype) \ 01175 TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits 01176 #define SET_TYPE_FIELD_PRIVATE(thistype, n) \ 01177 B_SET (TYPE_CPLUS_SPECIFIC(thistype)->private_field_bits, (n)) 01178 #define SET_TYPE_FIELD_PROTECTED(thistype, n) \ 01179 B_SET (TYPE_CPLUS_SPECIFIC(thistype)->protected_field_bits, (n)) 01180 #define SET_TYPE_FIELD_IGNORE(thistype, n) \ 01181 B_SET (TYPE_CPLUS_SPECIFIC(thistype)->ignore_field_bits, (n)) 01182 #define SET_TYPE_FIELD_VIRTUAL(thistype, n) \ 01183 B_SET (TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits, (n)) 01184 #define TYPE_FIELD_PRIVATE(thistype, n) \ 01185 (TYPE_CPLUS_SPECIFIC(thistype)->private_field_bits == NULL ? 0 \ 01186 : B_TST(TYPE_CPLUS_SPECIFIC(thistype)->private_field_bits, (n))) 01187 #define TYPE_FIELD_PROTECTED(thistype, n) \ 01188 (TYPE_CPLUS_SPECIFIC(thistype)->protected_field_bits == NULL ? 0 \ 01189 : B_TST(TYPE_CPLUS_SPECIFIC(thistype)->protected_field_bits, (n))) 01190 #define TYPE_FIELD_IGNORE(thistype, n) \ 01191 (TYPE_CPLUS_SPECIFIC(thistype)->ignore_field_bits == NULL ? 0 \ 01192 : B_TST(TYPE_CPLUS_SPECIFIC(thistype)->ignore_field_bits, (n))) 01193 #define TYPE_FIELD_VIRTUAL(thistype, n) \ 01194 (TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits == NULL ? 0 \ 01195 : B_TST(TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits, (n))) 01196 01197 #define TYPE_FN_FIELDLISTS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->fn_fieldlists 01198 #define TYPE_FN_FIELDLIST(thistype, n) TYPE_CPLUS_SPECIFIC(thistype)->fn_fieldlists[n] 01199 #define TYPE_FN_FIELDLIST1(thistype, n) TYPE_CPLUS_SPECIFIC(thistype)->fn_fieldlists[n].fn_fields 01200 #define TYPE_FN_FIELDLIST_NAME(thistype, n) TYPE_CPLUS_SPECIFIC(thistype)->fn_fieldlists[n].name 01201 #define TYPE_FN_FIELDLIST_LENGTH(thistype, n) TYPE_CPLUS_SPECIFIC(thistype)->fn_fieldlists[n].length 01202 01203 #define TYPE_N_TEMPLATE_ARGUMENTS(thistype) \ 01204 TYPE_CPLUS_SPECIFIC (thistype)->n_template_arguments 01205 #define TYPE_TEMPLATE_ARGUMENTS(thistype) \ 01206 TYPE_CPLUS_SPECIFIC (thistype)->template_arguments 01207 #define TYPE_TEMPLATE_ARGUMENT(thistype, n) \ 01208 TYPE_CPLUS_SPECIFIC (thistype)->template_arguments[n] 01209 01210 #define TYPE_FN_FIELD(thisfn, n) (thisfn)[n] 01211 #define TYPE_FN_FIELD_PHYSNAME(thisfn, n) (thisfn)[n].physname 01212 #define TYPE_FN_FIELD_TYPE(thisfn, n) (thisfn)[n].type 01213 #define TYPE_FN_FIELD_ARGS(thisfn, n) TYPE_FIELDS ((thisfn)[n].type) 01214 #define TYPE_FN_FIELD_CONST(thisfn, n) ((thisfn)[n].is_const) 01215 #define TYPE_FN_FIELD_VOLATILE(thisfn, n) ((thisfn)[n].is_volatile) 01216 #define TYPE_FN_FIELD_PRIVATE(thisfn, n) ((thisfn)[n].is_private) 01217 #define TYPE_FN_FIELD_PROTECTED(thisfn, n) ((thisfn)[n].is_protected) 01218 #define TYPE_FN_FIELD_PUBLIC(thisfn, n) ((thisfn)[n].is_public) 01219 #define TYPE_FN_FIELD_STATIC(thisfn, n) ((thisfn)[n].is_static) 01220 #define TYPE_FN_FIELD_FINAL(thisfn, n) ((thisfn)[n].is_final) 01221 #define TYPE_FN_FIELD_SYNCHRONIZED(thisfn, n) ((thisfn)[n].is_synchronized) 01222 #define TYPE_FN_FIELD_NATIVE(thisfn, n) ((thisfn)[n].is_native) 01223 #define TYPE_FN_FIELD_ARTIFICIAL(thisfn, n) ((thisfn)[n].is_artificial) 01224 #define TYPE_FN_FIELD_ABSTRACT(thisfn, n) ((thisfn)[n].is_abstract) 01225 #define TYPE_FN_FIELD_STUB(thisfn, n) ((thisfn)[n].is_stub) 01226 #define TYPE_FN_FIELD_CONSTRUCTOR(thisfn, n) ((thisfn)[n].is_constructor) 01227 #define TYPE_FN_FIELD_FCONTEXT(thisfn, n) ((thisfn)[n].fcontext) 01228 #define TYPE_FN_FIELD_VOFFSET(thisfn, n) ((thisfn)[n].voffset-2) 01229 #define TYPE_FN_FIELD_VIRTUAL_P(thisfn, n) ((thisfn)[n].voffset > 1) 01230 #define TYPE_FN_FIELD_STATIC_P(thisfn, n) ((thisfn)[n].voffset == VOFFSET_STATIC) 01231 01232 #define TYPE_TYPEDEF_FIELD_ARRAY(thistype) \ 01233 TYPE_CPLUS_SPECIFIC (thistype)->typedef_field 01234 #define TYPE_TYPEDEF_FIELD(thistype, n) \ 01235 TYPE_CPLUS_SPECIFIC (thistype)->typedef_field[n] 01236 #define TYPE_TYPEDEF_FIELD_NAME(thistype, n) \ 01237 TYPE_TYPEDEF_FIELD (thistype, n).name 01238 #define TYPE_TYPEDEF_FIELD_TYPE(thistype, n) \ 01239 TYPE_TYPEDEF_FIELD (thistype, n).type 01240 #define TYPE_TYPEDEF_FIELD_COUNT(thistype) \ 01241 TYPE_CPLUS_SPECIFIC (thistype)->typedef_field_count 01242 01243 #define TYPE_IS_OPAQUE(thistype) \ 01244 (((TYPE_CODE (thistype) == TYPE_CODE_STRUCT) \ 01245 || (TYPE_CODE (thistype) == TYPE_CODE_UNION)) \ 01246 && (TYPE_NFIELDS (thistype) == 0) \ 01247 && (!HAVE_CPLUS_STRUCT (thistype) \ 01248 || TYPE_NFN_FIELDS (thistype) == 0) \ 01249 && (TYPE_STUB (thistype) || !TYPE_STUB_SUPPORTED (thistype))) 01250 01251 /* A helper macro that returns the name of a type or "unnamed type" if the type 01252 has no name. */ 01253 #define TYPE_SAFE_NAME(type) \ 01254 (TYPE_NAME (type) ? TYPE_NAME (type) : _("<unnamed type>")) 01255 01256 /* A helper macro that returns the name of an error type. If the type 01257 has a name, it is used; otherwise, a default is used. */ 01258 #define TYPE_ERROR_NAME(type) \ 01259 (TYPE_NAME (type) ? TYPE_NAME (type) : _("<error type>")) 01260 01261 struct builtin_type 01262 { 01263 /* Integral types. */ 01264 01265 /* Implicit size/sign (based on the architecture's ABI). */ 01266 struct type *builtin_void; 01267 struct type *builtin_char; 01268 struct type *builtin_short; 01269 struct type *builtin_int; 01270 struct type *builtin_long; 01271 struct type *builtin_signed_char; 01272 struct type *builtin_unsigned_char; 01273 struct type *builtin_unsigned_short; 01274 struct type *builtin_unsigned_int; 01275 struct type *builtin_unsigned_long; 01276 struct type *builtin_float; 01277 struct type *builtin_double; 01278 struct type *builtin_long_double; 01279 struct type *builtin_complex; 01280 struct type *builtin_double_complex; 01281 struct type *builtin_string; 01282 struct type *builtin_bool; 01283 struct type *builtin_long_long; 01284 struct type *builtin_unsigned_long_long; 01285 struct type *builtin_decfloat; 01286 struct type *builtin_decdouble; 01287 struct type *builtin_declong; 01288 01289 /* "True" character types. 01290 We use these for the '/c' print format, because c_char is just a 01291 one-byte integral type, which languages less laid back than C 01292 will print as ... well, a one-byte integral type. */ 01293 struct type *builtin_true_char; 01294 struct type *builtin_true_unsigned_char; 01295 01296 /* Explicit sizes - see C9X <intypes.h> for naming scheme. The "int0" 01297 is for when an architecture needs to describe a register that has 01298 no size. */ 01299 struct type *builtin_int0; 01300 struct type *builtin_int8; 01301 struct type *builtin_uint8; 01302 struct type *builtin_int16; 01303 struct type *builtin_uint16; 01304 struct type *builtin_int32; 01305 struct type *builtin_uint32; 01306 struct type *builtin_int64; 01307 struct type *builtin_uint64; 01308 struct type *builtin_int128; 01309 struct type *builtin_uint128; 01310 01311 /* Wide character types. */ 01312 struct type *builtin_char16; 01313 struct type *builtin_char32; 01314 01315 /* Pointer types. */ 01316 01317 /* `pointer to data' type. Some target platforms use an implicitly 01318 {sign,zero} -extended 32-bit ABI pointer on a 64-bit ISA. */ 01319 struct type *builtin_data_ptr; 01320 01321 /* `pointer to function (returning void)' type. Harvard 01322 architectures mean that ABI function and code pointers are not 01323 interconvertible. Similarly, since ANSI, C standards have 01324 explicitly said that pointers to functions and pointers to data 01325 are not interconvertible --- that is, you can't cast a function 01326 pointer to void * and back, and expect to get the same value. 01327 However, all function pointer types are interconvertible, so void 01328 (*) () can server as a generic function pointer. */ 01329 struct type *builtin_func_ptr; 01330 01331 /* `function returning pointer to function (returning void)' type. 01332 The final void return type is not significant for it. */ 01333 struct type *builtin_func_func; 01334 01335 01336 /* Special-purpose types. */ 01337 01338 /* This type is used to represent a GDB internal function. */ 01339 struct type *internal_fn; 01340 }; 01341 01342 /* Return the type table for the specified architecture. */ 01343 extern const struct builtin_type *builtin_type (struct gdbarch *gdbarch); 01344 01345 01346 /* Per-objfile types used by symbol readers. */ 01347 01348 struct objfile_type 01349 { 01350 /* Basic types based on the objfile architecture. */ 01351 struct type *builtin_void; 01352 struct type *builtin_char; 01353 struct type *builtin_short; 01354 struct type *builtin_int; 01355 struct type *builtin_long; 01356 struct type *builtin_long_long; 01357 struct type *builtin_signed_char; 01358 struct type *builtin_unsigned_char; 01359 struct type *builtin_unsigned_short; 01360 struct type *builtin_unsigned_int; 01361 struct type *builtin_unsigned_long; 01362 struct type *builtin_unsigned_long_long; 01363 struct type *builtin_float; 01364 struct type *builtin_double; 01365 struct type *builtin_long_double; 01366 01367 /* This type is used to represent symbol addresses. */ 01368 struct type *builtin_core_addr; 01369 01370 /* This type represents a type that was unrecognized in symbol read-in. */ 01371 struct type *builtin_error; 01372 01373 /* Types used for symbols with no debug information. */ 01374 struct type *nodebug_text_symbol; 01375 struct type *nodebug_text_gnu_ifunc_symbol; 01376 struct type *nodebug_got_plt_symbol; 01377 struct type *nodebug_data_symbol; 01378 struct type *nodebug_unknown_symbol; 01379 struct type *nodebug_tls_symbol; 01380 }; 01381 01382 /* Return the type table for the specified objfile. */ 01383 extern const struct objfile_type *objfile_type (struct objfile *objfile); 01384 01385 01386 /* Explicit floating-point formats. See "floatformat.h". */ 01387 extern const struct floatformat *floatformats_ieee_half[BFD_ENDIAN_UNKNOWN]; 01388 extern const struct floatformat *floatformats_ieee_single[BFD_ENDIAN_UNKNOWN]; 01389 extern const struct floatformat *floatformats_ieee_double[BFD_ENDIAN_UNKNOWN]; 01390 extern const struct floatformat *floatformats_ieee_double_littlebyte_bigword[BFD_ENDIAN_UNKNOWN]; 01391 extern const struct floatformat *floatformats_i387_ext[BFD_ENDIAN_UNKNOWN]; 01392 extern const struct floatformat *floatformats_m68881_ext[BFD_ENDIAN_UNKNOWN]; 01393 extern const struct floatformat *floatformats_arm_ext[BFD_ENDIAN_UNKNOWN]; 01394 extern const struct floatformat *floatformats_ia64_spill[BFD_ENDIAN_UNKNOWN]; 01395 extern const struct floatformat *floatformats_ia64_quad[BFD_ENDIAN_UNKNOWN]; 01396 extern const struct floatformat *floatformats_vax_f[BFD_ENDIAN_UNKNOWN]; 01397 extern const struct floatformat *floatformats_vax_d[BFD_ENDIAN_UNKNOWN]; 01398 extern const struct floatformat *floatformats_ibm_long_double[BFD_ENDIAN_UNKNOWN]; 01399 01400 01401 /* Allocate space for storing data associated with a particular type. 01402 We ensure that the space is allocated using the same mechanism that 01403 was used to allocate the space for the type structure itself. I.e. 01404 if the type is on an objfile's objfile_obstack, then the space for data 01405 associated with that type will also be allocated on the objfile_obstack. 01406 If the type is not associated with any particular objfile (such as 01407 builtin types), then the data space will be allocated with xmalloc, 01408 the same as for the type structure. */ 01409 01410 #define TYPE_ALLOC(t,size) \ 01411 (TYPE_OBJFILE_OWNED (t) \ 01412 ? obstack_alloc (&TYPE_OBJFILE (t) -> objfile_obstack, size) \ 01413 : xmalloc (size)) 01414 01415 #define TYPE_ZALLOC(t,size) \ 01416 (TYPE_OBJFILE_OWNED (t) \ 01417 ? memset (obstack_alloc (&TYPE_OBJFILE (t)->objfile_obstack, size), \ 01418 0, size) \ 01419 : xzalloc (size)) 01420 01421 /* Use alloc_type to allocate a type owned by an objfile. 01422 Use alloc_type_arch to allocate a type owned by an architecture. 01423 Use alloc_type_copy to allocate a type with the same owner as a 01424 pre-existing template type, no matter whether objfile or gdbarch. */ 01425 extern struct type *alloc_type (struct objfile *); 01426 extern struct type *alloc_type_arch (struct gdbarch *); 01427 extern struct type *alloc_type_copy (const struct type *); 01428 01429 /* Return the type's architecture. For types owned by an architecture, 01430 that architecture is returned. For types owned by an objfile, that 01431 objfile's architecture is returned. */ 01432 extern struct gdbarch *get_type_arch (const struct type *); 01433 01434 /* Helper function to construct objfile-owned types. */ 01435 extern struct type *init_type (enum type_code, int, int, const char *, 01436 struct objfile *); 01437 01438 /* Helper functions to construct architecture-owned types. */ 01439 extern struct type *arch_type (struct gdbarch *, enum type_code, int, char *); 01440 extern struct type *arch_integer_type (struct gdbarch *, int, int, char *); 01441 extern struct type *arch_character_type (struct gdbarch *, int, int, char *); 01442 extern struct type *arch_boolean_type (struct gdbarch *, int, int, char *); 01443 extern struct type *arch_float_type (struct gdbarch *, int, char *, 01444 const struct floatformat **); 01445 extern struct type *arch_complex_type (struct gdbarch *, char *, 01446 struct type *); 01447 01448 /* Helper functions to construct a struct or record type. An 01449 initially empty type is created using arch_composite_type(). 01450 Fields are then added using append_composite_type_field*(). A union 01451 type has its size set to the largest field. A struct type has each 01452 field packed against the previous. */ 01453 01454 extern struct type *arch_composite_type (struct gdbarch *gdbarch, 01455 char *name, enum type_code code); 01456 extern void append_composite_type_field (struct type *t, char *name, 01457 struct type *field); 01458 extern void append_composite_type_field_aligned (struct type *t, 01459 char *name, 01460 struct type *field, 01461 int alignment); 01462 struct field *append_composite_type_field_raw (struct type *t, char *name, 01463 struct type *field); 01464 01465 /* Helper functions to construct a bit flags type. An initially empty 01466 type is created using arch_flag_type(). Flags are then added using 01467 append_flag_type_flag(). */ 01468 extern struct type *arch_flags_type (struct gdbarch *gdbarch, 01469 char *name, int length); 01470 extern void append_flags_type_flag (struct type *type, int bitpos, char *name); 01471 01472 extern void make_vector_type (struct type *array_type); 01473 extern struct type *init_vector_type (struct type *elt_type, int n); 01474 01475 extern struct type *lookup_reference_type (struct type *); 01476 01477 extern struct type *make_reference_type (struct type *, struct type **); 01478 01479 extern struct type *make_cv_type (int, int, struct type *, struct type **); 01480 01481 extern struct type *make_restrict_type (struct type *); 01482 01483 extern void replace_type (struct type *, struct type *); 01484 01485 extern int address_space_name_to_int (struct gdbarch *, char *); 01486 01487 extern const char *address_space_int_to_name (struct gdbarch *, int); 01488 01489 extern struct type *make_type_with_address_space (struct type *type, 01490 int space_identifier); 01491 01492 extern struct type *lookup_memberptr_type (struct type *, struct type *); 01493 01494 extern struct type *lookup_methodptr_type (struct type *); 01495 01496 extern void smash_to_method_type (struct type *type, struct type *domain, 01497 struct type *to_type, struct field *args, 01498 int nargs, int varargs); 01499 01500 extern void smash_to_memberptr_type (struct type *, struct type *, 01501 struct type *); 01502 01503 extern void smash_to_methodptr_type (struct type *, struct type *); 01504 01505 extern struct type *allocate_stub_method (struct type *); 01506 01507 extern const char *type_name_no_tag (const struct type *); 01508 01509 extern const char *type_name_no_tag_or_error (struct type *type); 01510 01511 extern struct type *lookup_struct_elt_type (struct type *, const char *, int); 01512 01513 extern struct type *make_pointer_type (struct type *, struct type **); 01514 01515 extern struct type *lookup_pointer_type (struct type *); 01516 01517 extern struct type *make_function_type (struct type *, struct type **); 01518 01519 extern struct type *lookup_function_type (struct type *); 01520 01521 extern struct type *lookup_function_type_with_arguments (struct type *, 01522 int, 01523 struct type **); 01524 01525 extern struct type *create_range_type (struct type *, struct type *, LONGEST, 01526 LONGEST); 01527 01528 extern struct type *create_array_type (struct type *, struct type *, 01529 struct type *); 01530 extern struct type *lookup_array_range_type (struct type *, LONGEST, LONGEST); 01531 01532 extern struct type *create_string_type (struct type *, struct type *, 01533 struct type *); 01534 extern struct type *lookup_string_range_type (struct type *, LONGEST, LONGEST); 01535 01536 extern struct type *create_set_type (struct type *, struct type *); 01537 01538 extern struct type *lookup_unsigned_typename (const struct language_defn *, 01539 struct gdbarch *, const char *); 01540 01541 extern struct type *lookup_signed_typename (const struct language_defn *, 01542 struct gdbarch *, const char *); 01543 01544 extern struct type *check_typedef (struct type *); 01545 01546 #define CHECK_TYPEDEF(TYPE) \ 01547 do { \ 01548 (TYPE) = check_typedef (TYPE); \ 01549 } while (0) 01550 01551 extern void check_stub_method_group (struct type *, int); 01552 01553 extern char *gdb_mangle_name (struct type *, int, int); 01554 01555 extern struct type *lookup_typename (const struct language_defn *, 01556 struct gdbarch *, const char *, 01557 const struct block *, int); 01558 01559 extern struct type *lookup_template_type (char *, struct type *, 01560 const struct block *); 01561 01562 extern int get_vptr_fieldno (struct type *, struct type **); 01563 01564 extern int get_discrete_bounds (struct type *, LONGEST *, LONGEST *); 01565 01566 extern int get_array_bounds (struct type *type, LONGEST *low_bound, 01567 LONGEST *high_bound); 01568 01569 extern int class_types_same_p (const struct type *, const struct type *); 01570 01571 extern int is_ancestor (struct type *, struct type *); 01572 01573 extern int is_public_ancestor (struct type *, struct type *); 01574 01575 extern int is_unique_ancestor (struct type *, struct value *); 01576 01577 /* Overload resolution */ 01578 01579 #define LENGTH_MATCH(bv) ((bv)->rank[0]) 01580 01581 /* Badness if parameter list length doesn't match arg list length. */ 01582 extern const struct rank LENGTH_MISMATCH_BADNESS; 01583 01584 /* Dummy badness value for nonexistent parameter positions. */ 01585 extern const struct rank TOO_FEW_PARAMS_BADNESS; 01586 /* Badness if no conversion among types. */ 01587 extern const struct rank INCOMPATIBLE_TYPE_BADNESS; 01588 01589 /* Badness of an exact match. */ 01590 extern const struct rank EXACT_MATCH_BADNESS; 01591 01592 /* Badness of integral promotion. */ 01593 extern const struct rank INTEGER_PROMOTION_BADNESS; 01594 /* Badness of floating promotion. */ 01595 extern const struct rank FLOAT_PROMOTION_BADNESS; 01596 /* Badness of converting a derived class pointer 01597 to a base class pointer. */ 01598 extern const struct rank BASE_PTR_CONVERSION_BADNESS; 01599 /* Badness of integral conversion. */ 01600 extern const struct rank INTEGER_CONVERSION_BADNESS; 01601 /* Badness of floating conversion. */ 01602 extern const struct rank FLOAT_CONVERSION_BADNESS; 01603 /* Badness of integer<->floating conversions. */ 01604 extern const struct rank INT_FLOAT_CONVERSION_BADNESS; 01605 /* Badness of conversion of pointer to void pointer. */ 01606 extern const struct rank VOID_PTR_CONVERSION_BADNESS; 01607 /* Badness of conversion to boolean. */ 01608 extern const struct rank BOOL_CONVERSION_BADNESS; 01609 /* Badness of converting derived to base class. */ 01610 extern const struct rank BASE_CONVERSION_BADNESS; 01611 /* Badness of converting from non-reference to reference. */ 01612 extern const struct rank REFERENCE_CONVERSION_BADNESS; 01613 /* Badness of converting integer 0 to NULL pointer. */ 01614 extern const struct rank NULL_POINTER_CONVERSION; 01615 01616 /* Non-standard conversions allowed by the debugger */ 01617 /* Converting a pointer to an int is usually OK. */ 01618 extern const struct rank NS_POINTER_CONVERSION_BADNESS; 01619 01620 /* Badness of converting a (non-zero) integer constant 01621 to a pointer. */ 01622 extern const struct rank NS_INTEGER_POINTER_CONVERSION_BADNESS; 01623 01624 extern struct rank sum_ranks (struct rank a, struct rank b); 01625 extern int compare_ranks (struct rank a, struct rank b); 01626 01627 extern int compare_badness (struct badness_vector *, struct badness_vector *); 01628 01629 extern struct badness_vector *rank_function (struct type **, int, 01630 struct value **, int); 01631 01632 extern struct rank rank_one_type (struct type *, struct type *, 01633 struct value *); 01634 01635 extern void recursive_dump_type (struct type *, int); 01636 01637 extern int field_is_static (struct field *); 01638 01639 /* printcmd.c */ 01640 01641 extern void print_scalar_formatted (const void *, struct type *, 01642 const struct value_print_options *, 01643 int, struct ui_file *); 01644 01645 extern int can_dereference (struct type *); 01646 01647 extern int is_integral_type (struct type *); 01648 01649 extern int is_scalar_type_recursive (struct type *); 01650 01651 extern void maintenance_print_type (char *, int); 01652 01653 extern htab_t create_copied_types_hash (struct objfile *objfile); 01654 01655 extern struct type *copy_type_recursive (struct objfile *objfile, 01656 struct type *type, 01657 htab_t copied_types); 01658 01659 extern struct type *copy_type (const struct type *type); 01660 01661 extern int types_equal (struct type *, struct type *); 01662 01663 #endif /* GDBTYPES_H */