OLD | NEW |
1 /* Internal type definitions for GDB. | 1 /* Internal type definitions for GDB. |
2 | 2 |
3 Copyright (C) 1992-2004, 2006-2012 Free Software Foundation, Inc. | 3 Copyright (C) 1992-2004, 2006-2012 Free Software Foundation, Inc. |
4 | 4 |
5 Contributed by Cygnus Support, using pieces from other GDB modules. | 5 Contributed by Cygnus Support, using pieces from other GDB modules. |
6 | 6 |
7 This file is part of GDB. | 7 This file is part of GDB. |
8 | 8 |
9 This program is free software; you can redistribute it and/or modify | 9 This program is free software; you can redistribute it and/or modify |
10 it under the terms of the GNU General Public License as published by | 10 it under the terms of the GNU General Public License as published by |
(...skipping 12 matching lines...) Expand all Loading... |
23 #define GDBTYPES_H 1 | 23 #define GDBTYPES_H 1 |
24 | 24 |
25 #include "hashtab.h" | 25 #include "hashtab.h" |
26 | 26 |
27 /* Forward declarations for prototypes. */ | 27 /* Forward declarations for prototypes. */ |
28 struct field; | 28 struct field; |
29 struct block; | 29 struct block; |
30 struct value_print_options; | 30 struct value_print_options; |
31 struct language_defn; | 31 struct language_defn; |
32 | 32 |
| 33 /* These declarations are DWARF-specific as some of the gdbtypes.h data types |
| 34 are already DWARF-specific. */ |
| 35 |
| 36 /* Offset relative to the start of its containing CU (compilation unit). */ |
| 37 typedef struct |
| 38 { |
| 39 unsigned int cu_off; |
| 40 } cu_offset; |
| 41 |
| 42 /* Offset relative to the start of its .debug_info or .debug_types section. */ |
| 43 typedef struct |
| 44 { |
| 45 unsigned int sect_off; |
| 46 } sect_offset; |
| 47 |
33 /* Some macros for char-based bitfields. */ | 48 /* Some macros for char-based bitfields. */ |
34 | 49 |
35 #define B_SET(a,x) ((a)[(x)>>3] |= (1 << ((x)&7))) | 50 #define B_SET(a,x) ((a)[(x)>>3] |= (1 << ((x)&7))) |
36 #define B_CLR(a,x) ((a)[(x)>>3] &= ~(1 << ((x)&7))) | 51 #define B_CLR(a,x) ((a)[(x)>>3] &= ~(1 << ((x)&7))) |
37 #define B_TST(a,x) ((a)[(x)>>3] & (1 << ((x)&7))) | 52 #define B_TST(a,x) ((a)[(x)>>3] & (1 << ((x)&7))) |
38 #define B_TYPE unsigned char | 53 #define B_TYPE unsigned char |
39 #define B_BYTES(x) ( 1 + ((x)>>3) ) | 54 #define B_BYTES(x) ( 1 + ((x)>>3) ) |
40 #define B_CLRALL(a,x) memset ((a), 0, B_BYTES(x)) | 55 #define B_CLRALL(a,x) memset ((a), 0, B_BYTES(x)) |
41 | 56 |
42 /* Different kinds of data types are distinguished by the `code' field. */ | 57 /* Different kinds of data types are distinguished by the `code' field. */ |
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
283 #define TYPE_OBJFILE_OWNED(t) (TYPE_MAIN_TYPE (t)->flag_objfile_owned) | 298 #define TYPE_OBJFILE_OWNED(t) (TYPE_MAIN_TYPE (t)->flag_objfile_owned) |
284 #define TYPE_OWNER(t) TYPE_MAIN_TYPE(t)->owner | 299 #define TYPE_OWNER(t) TYPE_MAIN_TYPE(t)->owner |
285 #define TYPE_OBJFILE(t) (TYPE_OBJFILE_OWNED(t)? TYPE_OWNER(t).objfile : NULL) | 300 #define TYPE_OBJFILE(t) (TYPE_OBJFILE_OWNED(t)? TYPE_OWNER(t).objfile : NULL) |
286 | 301 |
287 /* True if this type was declared using the "class" keyword. This is | 302 /* True if this type was declared using the "class" keyword. This is |
288 only valid for C++ structure types, and only used for displaying | 303 only valid for C++ structure types, and only used for displaying |
289 the type. If false, the structure was declared as a "struct". */ | 304 the type. If false, the structure was declared as a "struct". */ |
290 | 305 |
291 #define TYPE_DECLARED_CLASS(t) (TYPE_MAIN_TYPE (t)->flag_declared_class) | 306 #define TYPE_DECLARED_CLASS(t) (TYPE_MAIN_TYPE (t)->flag_declared_class) |
292 | 307 |
| 308 /* True if this type is a "flag" enum. A flag enum is one where all |
| 309 the values are pairwise disjoint when "and"ed together. This |
| 310 affects how enum values are printed. */ |
| 311 |
| 312 #define TYPE_FLAG_ENUM(t) (TYPE_MAIN_TYPE (t)->flag_flag_enum) |
| 313 |
293 /* Constant type. If this is set, the corresponding type has a | 314 /* Constant type. If this is set, the corresponding type has a |
294 const modifier. */ | 315 const modifier. */ |
295 | 316 |
296 #define TYPE_CONST(t) (TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_CONST) | 317 #define TYPE_CONST(t) (TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_CONST) |
297 | 318 |
298 /* Volatile type. If this is set, the corresponding type has a | 319 /* Volatile type. If this is set, the corresponding type has a |
299 volatile modifier. */ | 320 volatile modifier. */ |
300 | 321 |
301 #define TYPE_VOLATILE(t) \ | 322 #define TYPE_VOLATILE(t) \ |
302 (TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_VOLATILE) | 323 (TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_VOLATILE) |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
338 #define TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL \ | 359 #define TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL \ |
339 (TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1 | TYPE_INSTANCE_FLAG_ADDRESS_CLASS_2) | 360 (TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1 | TYPE_INSTANCE_FLAG_ADDRESS_CLASS_2) |
340 #define TYPE_ADDRESS_CLASS_ALL(t) (TYPE_INSTANCE_FLAGS(t) \ | 361 #define TYPE_ADDRESS_CLASS_ALL(t) (TYPE_INSTANCE_FLAGS(t) \ |
341 & TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL) | 362 & TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL) |
342 | 363 |
343 /* Determine which field of the union main_type.fields[x].loc is used. */ | 364 /* Determine which field of the union main_type.fields[x].loc is used. */ |
344 | 365 |
345 enum field_loc_kind | 366 enum field_loc_kind |
346 { | 367 { |
347 FIELD_LOC_KIND_BITPOS, /* bitpos */ | 368 FIELD_LOC_KIND_BITPOS, /* bitpos */ |
| 369 FIELD_LOC_KIND_ENUMVAL, /* enumval */ |
348 FIELD_LOC_KIND_PHYSADDR, /* physaddr */ | 370 FIELD_LOC_KIND_PHYSADDR, /* physaddr */ |
349 FIELD_LOC_KIND_PHYSNAME, /* physname */ | 371 FIELD_LOC_KIND_PHYSNAME, /* physname */ |
350 FIELD_LOC_KIND_DWARF_BLOCK /* dwarf_block */ | 372 FIELD_LOC_KIND_DWARF_BLOCK /* dwarf_block */ |
351 }; | 373 }; |
352 | 374 |
353 /* A discriminant to determine which field in the main_type.type_specific | 375 /* A discriminant to determine which field in the main_type.type_specific |
354 union is being used, if any. | 376 union is being used, if any. |
355 | 377 |
356 For types such as TYPE_CODE_FLT or TYPE_CODE_FUNC, the use of this | 378 For types such as TYPE_CODE_FLT or TYPE_CODE_FUNC, the use of this |
357 discriminant is really redundant, as we know from the type code | 379 discriminant is really redundant, as we know from the type code |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
393 unsigned int flag_varargs : 1; | 415 unsigned int flag_varargs : 1; |
394 unsigned int flag_vector : 1; | 416 unsigned int flag_vector : 1; |
395 unsigned int flag_stub_supported : 1; | 417 unsigned int flag_stub_supported : 1; |
396 unsigned int flag_gnu_ifunc : 1; | 418 unsigned int flag_gnu_ifunc : 1; |
397 unsigned int flag_fixed_instance : 1; | 419 unsigned int flag_fixed_instance : 1; |
398 unsigned int flag_objfile_owned : 1; | 420 unsigned int flag_objfile_owned : 1; |
399 /* True if this type was declared with "class" rather than | 421 /* True if this type was declared with "class" rather than |
400 "struct". */ | 422 "struct". */ |
401 unsigned int flag_declared_class : 1; | 423 unsigned int flag_declared_class : 1; |
402 | 424 |
| 425 /* True if this is an enum type with disjoint values. This affects |
| 426 how the enum is printed. */ |
| 427 |
| 428 unsigned int flag_flag_enum : 1; |
| 429 |
403 /* A discriminant telling us which field of the type_specific union | 430 /* A discriminant telling us which field of the type_specific union |
404 is being used for this type, if any. */ | 431 is being used for this type, if any. */ |
405 ENUM_BITFIELD(type_specific_kind) type_specific_field : 3; | 432 ENUM_BITFIELD(type_specific_kind) type_specific_field : 3; |
406 | 433 |
407 /* Number of fields described for this type. This field appears at | 434 /* Number of fields described for this type. This field appears at |
408 this location because it packs nicely here. */ | 435 this location because it packs nicely here. */ |
409 | 436 |
410 short nfields; | 437 short nfields; |
411 | 438 |
412 /* Field number of the virtual function table pointer in | 439 /* Field number of the virtual function table pointer in |
413 VPTR_BASETYPE. If -1, we were unable to find the virtual | 440 VPTR_BASETYPE. If -1, we were unable to find the virtual |
414 function table pointer in initial symbol reading, and | 441 function table pointer in initial symbol reading, and |
415 get_vptr_fieldno should be called to find it if possible. | 442 get_vptr_fieldno should be called to find it if possible. |
416 get_vptr_fieldno will update this field if possible. | 443 get_vptr_fieldno will update this field if possible. |
417 Otherwise the value is left at -1. | 444 Otherwise the value is left at -1. |
418 | 445 |
419 Unused if this type does not have virtual functions. | 446 Unused if this type does not have virtual functions. |
420 | 447 |
421 This field appears at this location because it packs nicely here. */ | 448 This field appears at this location because it packs nicely here. */ |
422 | 449 |
423 short vptr_fieldno; | 450 short vptr_fieldno; |
424 | 451 |
425 /* Name of this type, or NULL if none. | 452 /* Name of this type, or NULL if none. |
426 | 453 |
427 This is used for printing only, except by poorly designed C++ code. | 454 This is used for printing only, except by poorly designed C++ code. |
428 For looking up a name, look for a symbol in the VAR_DOMAIN. */ | 455 For looking up a name, look for a symbol in the VAR_DOMAIN. |
| 456 This is generally allocated in the objfile's obstack. |
| 457 However coffread.c uses malloc. */ |
429 | 458 |
430 char *name; | 459 const char *name; |
431 | 460 |
432 /* Tag name for this type, or NULL if none. This means that the | 461 /* Tag name for this type, or NULL if none. This means that the |
433 name of the type consists of a keyword followed by the tag name. | 462 name of the type consists of a keyword followed by the tag name. |
434 Which keyword is determined by the type code ("struct" for | 463 Which keyword is determined by the type code ("struct" for |
435 TYPE_CODE_STRUCT, etc.). As far as I know C/C++ are the only languages | 464 TYPE_CODE_STRUCT, etc.). As far as I know C/C++ are the only languages |
436 with this feature. | 465 with this feature. |
437 | 466 |
438 This is used for printing only, except by poorly designed C++ code. | 467 This is used for printing only, except by poorly designed C++ code. |
439 For looking up a name, look for a symbol in the STRUCT_DOMAIN. | 468 For looking up a name, look for a symbol in the STRUCT_DOMAIN. |
440 One more legitimate use is that if TYPE_FLAG_STUB is set, this is | 469 One more legitimate use is that if TYPE_FLAG_STUB is set, this is |
441 the name to use to look for definitions in other files. */ | 470 the name to use to look for definitions in other files. */ |
442 | 471 |
443 char *tag_name; | 472 const char *tag_name; |
444 | 473 |
445 /* Every type is now associated with a particular objfile, and the | 474 /* Every type is now associated with a particular objfile, and the |
446 type is allocated on the objfile_obstack for that objfile. One problem | 475 type is allocated on the objfile_obstack for that objfile. One problem |
447 however, is that there are times when gdb allocates new types while | 476 however, is that there are times when gdb allocates new types while |
448 it is not in the process of reading symbols from a particular objfile. | 477 it is not in the process of reading symbols from a particular objfile. |
449 Fortunately, these happen when the type being created is a derived | 478 Fortunately, these happen when the type being created is a derived |
450 type of an existing type, such as in lookup_pointer_type(). So | 479 type of an existing type, such as in lookup_pointer_type(). So |
451 we can just allocate the new type using the same objfile as the | 480 we can just allocate the new type using the same objfile as the |
452 existing type, but to do this we need a backpointer to the objfile | 481 existing type, but to do this we need a backpointer to the objfile |
453 from the existing type. Yes this is somewhat ugly, but without | 482 from the existing type. Yes this is somewhat ugly, but without |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
491 union | 520 union |
492 { | 521 { |
493 struct field | 522 struct field |
494 { | 523 { |
495 union field_location | 524 union field_location |
496 { | 525 { |
497 /* Position of this field, counting in bits from start of | 526 /* Position of this field, counting in bits from start of |
498 containing structure. For gdbarch_bits_big_endian=1 | 527 containing structure. For gdbarch_bits_big_endian=1 |
499 targets, it is the bit offset to the MSB. For | 528 targets, it is the bit offset to the MSB. For |
500 gdbarch_bits_big_endian=0 targets, it is the bit offset to | 529 gdbarch_bits_big_endian=0 targets, it is the bit offset to |
501 » the LSB. For a range bound or enum value, this is the | 530 » the LSB. */ |
502 » value itself. */ | |
503 | 531 |
504 int bitpos; | 532 int bitpos; |
505 | 533 |
| 534 /* Enum value. */ |
| 535 LONGEST enumval; |
| 536 |
506 /* For a static field, if TYPE_FIELD_STATIC_HAS_ADDR then physaddr | 537 /* For a static field, if TYPE_FIELD_STATIC_HAS_ADDR then physaddr |
507 is the location (in the target) of the static field. | 538 is the location (in the target) of the static field. |
508 Otherwise, physname is the mangled label of the static field. */ | 539 Otherwise, physname is the mangled label of the static field. */ |
509 | 540 |
510 CORE_ADDR physaddr; | 541 CORE_ADDR physaddr; |
511 const char *physname; | 542 const char *physname; |
512 | 543 |
513 /* The field location can be computed by evaluating the following DWARF | 544 /* The field location can be computed by evaluating the following DWARF |
514 block. Its DATA is allocated on objfile_obstack - no CU load is | 545 block. Its DATA is allocated on objfile_obstack - no CU load is |
515 needed to access it. */ | 546 needed to access it. */ |
516 | 547 |
517 struct dwarf2_locexpr_baton *dwarf_block; | 548 struct dwarf2_locexpr_baton *dwarf_block; |
518 } | 549 } |
519 loc; | 550 loc; |
520 | 551 |
521 /* For a function or member type, this is 1 if the argument is marked | 552 /* For a function or member type, this is 1 if the argument is marked |
522 artificial. Artificial arguments should not be shown to the | 553 artificial. Artificial arguments should not be shown to the |
523 user. For TYPE_CODE_RANGE it is set if the specific bound is not | 554 user. For TYPE_CODE_RANGE it is set if the specific bound is not |
524 defined. */ | 555 defined. */ |
525 unsigned int artificial : 1; | 556 unsigned int artificial : 1; |
526 | 557 |
527 /* Discriminant for union field_location. */ | 558 /* Discriminant for union field_location. */ |
528 ENUM_BITFIELD(field_loc_kind) loc_kind : 2; | 559 ENUM_BITFIELD(field_loc_kind) loc_kind : 3; |
529 | 560 |
530 /* Size of this field, in bits, or zero if not packed. | 561 /* Size of this field, in bits, or zero if not packed. |
531 If non-zero in an array type, indicates the element size in | 562 If non-zero in an array type, indicates the element size in |
532 bits (used only in Ada at the moment). | 563 bits (used only in Ada at the moment). |
533 For an unpacked field, the field's type's length | 564 For an unpacked field, the field's type's length |
534 says how many bytes the field occupies. */ | 565 says how many bytes the field occupies. */ |
535 | 566 |
536 unsigned int bitsize : 29; | 567 unsigned int bitsize : 28; |
537 | 568 |
538 /* In a struct or union type, type of this field. | 569 /* In a struct or union type, type of this field. |
539 In a function or member type, type of this argument. | 570 In a function or member type, type of this argument. |
540 In an array type, the domain-type of the array. */ | 571 In an array type, the domain-type of the array. */ |
541 | 572 |
542 struct type *type; | 573 struct type *type; |
543 | 574 |
544 /* Name of field, value or argument. | 575 /* Name of field, value or argument. |
545 NULL for range bounds, array domains, and member function | 576 NULL for range bounds, array domains, and member function |
546 arguments. */ | 577 arguments. */ |
547 | 578 |
548 char *name; | 579 const char *name; |
549 } *fields; | 580 } *fields; |
550 | 581 |
551 /* Union member used for range types. */ | 582 /* Union member used for range types. */ |
552 | 583 |
553 struct range_bounds | 584 struct range_bounds |
554 { | 585 { |
555 /* Low bound of range. */ | 586 /* Low bound of range. */ |
556 | 587 |
557 LONGEST low; | 588 LONGEST low; |
558 | 589 |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
686 the struct type). I think only the `type' field of such a field has | 717 the struct type). I think only the `type' field of such a field has |
687 any meaning. */ | 718 any meaning. */ |
688 | 719 |
689 short n_baseclasses; | 720 short n_baseclasses; |
690 | 721 |
691 /* Number of methods with unique names. All overloaded methods with | 722 /* Number of methods with unique names. All overloaded methods with |
692 the same name count only once. */ | 723 the same name count only once. */ |
693 | 724 |
694 short nfn_fields; | 725 short nfn_fields; |
695 | 726 |
696 /* Number of methods described for this type, not including the | |
697 methods that it derives from. */ | |
698 | |
699 short nfn_fields_total; | |
700 | |
701 /* Number of template arguments. */ | 727 /* Number of template arguments. */ |
702 unsigned short n_template_arguments; | 728 unsigned short n_template_arguments; |
703 | 729 |
704 /* One if this struct is a dynamic class, as defined by the | 730 /* One if this struct is a dynamic class, as defined by the |
705 Itanium C++ ABI: if it requires a virtual table pointer, | 731 Itanium C++ ABI: if it requires a virtual table pointer, |
706 because it or any of its base classes have one or more virtual | 732 because it or any of its base classes have one or more virtual |
707 member functions or virtual base classes. Minus one if not | 733 member functions or virtual base classes. Minus one if not |
708 dynamic. Zero if not yet computed. */ | 734 dynamic. Zero if not yet computed. */ |
709 int is_dynamic : 2; | 735 int is_dynamic : 2; |
710 | 736 |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
748 /* For classes, structures, and unions, a description of each field, | 774 /* For classes, structures, and unions, a description of each field, |
749 which consists of an overloaded name, followed by the types of | 775 which consists of an overloaded name, followed by the types of |
750 arguments that the method expects, and then the name after it | 776 arguments that the method expects, and then the name after it |
751 has been renamed to make it distinct. | 777 has been renamed to make it distinct. |
752 | 778 |
753 fn_fieldlists points to an array of nfn_fields of these. */ | 779 fn_fieldlists points to an array of nfn_fields of these. */ |
754 | 780 |
755 struct fn_fieldlist | 781 struct fn_fieldlist |
756 { | 782 { |
757 | 783 |
758 » /* The overloaded name. */ | 784 » /* The overloaded name. |
| 785 » This is generally allocated in the objfile's obstack. |
| 786 » However stabsread.c sometimes uses malloc. */ |
759 | 787 |
760 » char *name; | 788 » const char *name; |
761 | 789 |
762 /* The number of methods with this name. */ | 790 /* The number of methods with this name. */ |
763 | 791 |
764 int length; | 792 int length; |
765 | 793 |
766 /* The list of methods. */ | 794 /* The list of methods. */ |
767 | 795 |
768 struct fn_field | 796 struct fn_field |
769 { | 797 { |
770 | 798 |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
849 } | 877 } |
850 *typedef_field; | 878 *typedef_field; |
851 unsigned typedef_field_count; | 879 unsigned typedef_field_count; |
852 | 880 |
853 /* The template arguments. This is an array with | 881 /* The template arguments. This is an array with |
854 N_TEMPLATE_ARGUMENTS elements. This is NULL for non-template | 882 N_TEMPLATE_ARGUMENTS elements. This is NULL for non-template |
855 classes. */ | 883 classes. */ |
856 struct symbol **template_arguments; | 884 struct symbol **template_arguments; |
857 }; | 885 }; |
858 | 886 |
859 /* Struct used in computing virtual base list. */ | |
860 struct vbase | |
861 { | |
862 struct type *vbasetype; /* pointer to virtual base */ | |
863 struct vbase *next; /* next in chain */ | |
864 }; | |
865 | |
866 /* Struct used to store conversion rankings. */ | 887 /* Struct used to store conversion rankings. */ |
867 struct rank | 888 struct rank |
868 { | 889 { |
869 short rank; | 890 short rank; |
870 | 891 |
871 /* When two conversions are of the same type and therefore have the same | 892 /* When two conversions are of the same type and therefore have the same |
872 rank, subrank is used to differentiate the two. | 893 rank, subrank is used to differentiate the two. |
873 Eg: Two derived-class-pointer to base-class-pointer conversions would | 894 Eg: Two derived-class-pointer to base-class-pointer conversions would |
874 both have base pointer conversion rank, but the conversion with the | 895 both have base pointer conversion rank, but the conversion with the |
875 shorter distance to the ancestor is preferable. 'subrank' would be used | 896 shorter distance to the ancestor is preferable. 'subrank' would be used |
(...skipping 26 matching lines...) Expand all Loading... |
902 unsigned calling_convention; | 923 unsigned calling_convention; |
903 | 924 |
904 /* Only those DW_TAG_GNU_call_site's in this function that have | 925 /* Only those DW_TAG_GNU_call_site's in this function that have |
905 DW_AT_GNU_tail_call set are linked in this list. Function without its | 926 DW_AT_GNU_tail_call set are linked in this list. Function without its |
906 tail call list complete (DW_AT_GNU_all_tail_call_sites or its superset | 927 tail call list complete (DW_AT_GNU_all_tail_call_sites or its superset |
907 DW_AT_GNU_all_call_sites) has TAIL_CALL_LIST NULL, even if some | 928 DW_AT_GNU_all_call_sites) has TAIL_CALL_LIST NULL, even if some |
908 DW_TAG_GNU_call_site's exist in such function. */ | 929 DW_TAG_GNU_call_site's exist in such function. */ |
909 struct call_site *tail_call_list; | 930 struct call_site *tail_call_list; |
910 }; | 931 }; |
911 | 932 |
| 933 /* struct call_site_parameter can be referenced in callees by several ways. */ |
| 934 |
| 935 enum call_site_parameter_kind |
| 936 { |
| 937 /* Use field call_site_parameter.u.dwarf_reg. */ |
| 938 CALL_SITE_PARAMETER_DWARF_REG, |
| 939 |
| 940 /* Use field call_site_parameter.u.fb_offset. */ |
| 941 CALL_SITE_PARAMETER_FB_OFFSET, |
| 942 |
| 943 /* Use field call_site_parameter.u.param_offset. */ |
| 944 CALL_SITE_PARAMETER_PARAM_OFFSET |
| 945 }; |
| 946 |
912 /* A place where a function gets called from, represented by | 947 /* A place where a function gets called from, represented by |
913 DW_TAG_GNU_call_site. It can be looked up from symtab->call_site_htab. */ | 948 DW_TAG_GNU_call_site. It can be looked up from symtab->call_site_htab. */ |
914 | 949 |
915 struct call_site | 950 struct call_site |
916 { | 951 { |
917 /* Address of the first instruction after this call. It must be the first | 952 /* Address of the first instruction after this call. It must be the first |
918 field as we overload core_addr_hash and core_addr_eq for it. */ | 953 field as we overload core_addr_hash and core_addr_eq for it. */ |
919 CORE_ADDR pc; | 954 CORE_ADDR pc; |
920 | 955 |
921 /* List successor with head in FUNC_TYPE.TAIL_CALL_LIST. */ | 956 /* List successor with head in FUNC_TYPE.TAIL_CALL_LIST. */ |
922 struct call_site *tail_call_next; | 957 struct call_site *tail_call_next; |
923 | 958 |
924 /* Describe DW_AT_GNU_call_site_target. Missing attribute uses | 959 /* Describe DW_AT_GNU_call_site_target. Missing attribute uses |
925 FIELD_LOC_KIND_DWARF_BLOCK with FIELD_DWARF_BLOCK == NULL. */ | 960 FIELD_LOC_KIND_DWARF_BLOCK with FIELD_DWARF_BLOCK == NULL. */ |
926 struct | 961 struct |
927 { | 962 { |
928 union field_location loc; | 963 union field_location loc; |
929 | 964 |
930 /* Discriminant for union field_location. */ | 965 /* Discriminant for union field_location. */ |
931 » ENUM_BITFIELD(field_loc_kind) loc_kind : 2; | 966 » ENUM_BITFIELD(field_loc_kind) loc_kind : 3; |
932 } | 967 } |
933 target; | 968 target; |
934 | 969 |
935 /* Size of the PARAMETER array. */ | 970 /* Size of the PARAMETER array. */ |
936 unsigned parameter_count; | 971 unsigned parameter_count; |
937 | 972 |
938 /* CU of the function where the call is located. It gets used for DWARF | 973 /* CU of the function where the call is located. It gets used for DWARF |
939 blocks execution in the parameter array below. */ | 974 blocks execution in the parameter array below. */ |
940 struct dwarf2_per_cu_data *per_cu; | 975 struct dwarf2_per_cu_data *per_cu; |
941 | 976 |
942 /* Describe DW_TAG_GNU_call_site's DW_TAG_formal_parameter. */ | 977 /* Describe DW_TAG_GNU_call_site's DW_TAG_formal_parameter. */ |
943 struct call_site_parameter | 978 struct call_site_parameter |
944 { | 979 { |
945 » /* DW_TAG_formal_parameter's DW_AT_location's DW_OP_regX as DWARF | 980 » ENUM_BITFIELD (call_site_parameter_kind) kind : 2; |
946 » register number, for register passed parameters. If -1 then use | |
947 » fb_offset. */ | |
948 » int dwarf_reg; | |
949 | 981 |
950 » /* Offset from the callee's frame base, for stack passed parameters. | 982 » union call_site_parameter_u |
951 » This equals offset from the caller's stack pointer. Valid only if | 983 » { |
952 » DWARF_REGNUM is -1. */ | 984 » /* DW_TAG_formal_parameter's DW_AT_location's DW_OP_regX as DWARF |
953 » CORE_ADDR fb_offset; | 985 » register number, for register passed parameters. */ |
| 986 » int dwarf_reg; |
| 987 |
| 988 » /* Offset from the callee's frame base, for stack passed parameters. |
| 989 » This equals offset from the caller's stack pointer. */ |
| 990 » CORE_ADDR fb_offset; |
| 991 |
| 992 » /* Offset relative to the start of this PER_CU to |
| 993 » DW_TAG_formal_parameter which is referenced by both caller and |
| 994 » the callee. */ |
| 995 » cu_offset param_offset; |
| 996 » } |
| 997 » u; |
954 | 998 |
955 /* DW_TAG_formal_parameter's DW_AT_GNU_call_site_value. It is never | 999 /* DW_TAG_formal_parameter's DW_AT_GNU_call_site_value. It is never |
956 NULL. */ | 1000 NULL. */ |
957 const gdb_byte *value; | 1001 const gdb_byte *value; |
958 size_t value_size; | 1002 size_t value_size; |
959 | 1003 |
960 /* DW_TAG_formal_parameter's DW_AT_GNU_call_site_data_value. It may be | 1004 /* DW_TAG_formal_parameter's DW_AT_GNU_call_site_data_value. It may be |
961 NULL if not provided by DWARF. */ | 1005 NULL if not provided by DWARF. */ |
962 const gdb_byte *data_value; | 1006 const gdb_byte *data_value; |
963 size_t data_value_size; | 1007 size_t data_value_size; |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1043 #define TYPE_ARRAY_LOWER_BOUND_VALUE(arraytype) \ | 1087 #define TYPE_ARRAY_LOWER_BOUND_VALUE(arraytype) \ |
1044 (TYPE_LOW_BOUND(TYPE_INDEX_TYPE((arraytype)))) | 1088 (TYPE_LOW_BOUND(TYPE_INDEX_TYPE((arraytype)))) |
1045 | 1089 |
1046 /* C++ */ | 1090 /* C++ */ |
1047 | 1091 |
1048 #define TYPE_VPTR_BASETYPE(thistype) TYPE_MAIN_TYPE(thistype)->vptr_basetype | 1092 #define TYPE_VPTR_BASETYPE(thistype) TYPE_MAIN_TYPE(thistype)->vptr_basetype |
1049 #define TYPE_DOMAIN_TYPE(thistype) TYPE_MAIN_TYPE(thistype)->vptr_basetype | 1093 #define TYPE_DOMAIN_TYPE(thistype) TYPE_MAIN_TYPE(thistype)->vptr_basetype |
1050 #define TYPE_VPTR_FIELDNO(thistype) TYPE_MAIN_TYPE(thistype)->vptr_fieldno | 1094 #define TYPE_VPTR_FIELDNO(thistype) TYPE_MAIN_TYPE(thistype)->vptr_fieldno |
1051 #define TYPE_FN_FIELDS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->fn_fields | 1095 #define TYPE_FN_FIELDS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->fn_fields |
1052 #define TYPE_NFN_FIELDS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->nfn_fields | 1096 #define TYPE_NFN_FIELDS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->nfn_fields |
1053 #define TYPE_NFN_FIELDS_TOTAL(thistype) TYPE_CPLUS_SPECIFIC(thistype)->nfn_field
s_total | |
1054 #define TYPE_SPECIFIC_FIELD(thistype) \ | 1097 #define TYPE_SPECIFIC_FIELD(thistype) \ |
1055 TYPE_MAIN_TYPE(thistype)->type_specific_field | 1098 TYPE_MAIN_TYPE(thistype)->type_specific_field |
1056 #define TYPE_TYPE_SPECIFIC(thistype) TYPE_MAIN_TYPE(thistype)->type_specific | 1099 #define TYPE_TYPE_SPECIFIC(thistype) TYPE_MAIN_TYPE(thistype)->type_specific |
1057 /* We need this tap-dance with the TYPE_RAW_SPECIFIC because of the case | 1100 /* We need this tap-dance with the TYPE_RAW_SPECIFIC because of the case |
1058 where we're trying to print an Ada array using the C language. | 1101 where we're trying to print an Ada array using the C language. |
1059 In that case, there is no "cplus_stuff", but the C language assumes | 1102 In that case, there is no "cplus_stuff", but the C language assumes |
1060 that there is. What we do, in that case, is pretend that there is | 1103 that there is. What we do, in that case, is pretend that there is |
1061 an implicit one which is the default cplus stuff. */ | 1104 an implicit one which is the default cplus stuff. */ |
1062 #define TYPE_CPLUS_SPECIFIC(thistype) \ | 1105 #define TYPE_CPLUS_SPECIFIC(thistype) \ |
1063 (!HAVE_CPLUS_STRUCT(thistype) \ | 1106 (!HAVE_CPLUS_STRUCT(thistype) \ |
(...skipping 14 matching lines...) Expand all Loading... |
1078 #define TYPE_CPLUS_DYNAMIC(thistype) TYPE_CPLUS_SPECIFIC (thistype)->is_dynamic | 1121 #define TYPE_CPLUS_DYNAMIC(thistype) TYPE_CPLUS_SPECIFIC (thistype)->is_dynamic |
1079 #define TYPE_CPLUS_REALLY_JAVA(thistype) TYPE_CPLUS_SPECIFIC (thistype)->is_java | 1122 #define TYPE_CPLUS_REALLY_JAVA(thistype) TYPE_CPLUS_SPECIFIC (thistype)->is_java |
1080 | 1123 |
1081 #define BASETYPE_VIA_VIRTUAL(thistype, index) \ | 1124 #define BASETYPE_VIA_VIRTUAL(thistype, index) \ |
1082 (TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits == NULL ? 0 \ | 1125 (TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits == NULL ? 0 \ |
1083 : B_TST(TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits, (index))) | 1126 : B_TST(TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits, (index))) |
1084 | 1127 |
1085 #define FIELD_TYPE(thisfld) ((thisfld).type) | 1128 #define FIELD_TYPE(thisfld) ((thisfld).type) |
1086 #define FIELD_NAME(thisfld) ((thisfld).name) | 1129 #define FIELD_NAME(thisfld) ((thisfld).name) |
1087 #define FIELD_LOC_KIND(thisfld) ((thisfld).loc_kind) | 1130 #define FIELD_LOC_KIND(thisfld) ((thisfld).loc_kind) |
1088 #define FIELD_BITPOS(thisfld) ((thisfld).loc.bitpos) | 1131 #define FIELD_BITPOS_LVAL(thisfld) ((thisfld).loc.bitpos) |
| 1132 #define FIELD_BITPOS(thisfld) (FIELD_BITPOS_LVAL (thisfld) + 0) |
| 1133 #define FIELD_ENUMVAL_LVAL(thisfld) ((thisfld).loc.enumval) |
| 1134 #define FIELD_ENUMVAL(thisfld) (FIELD_ENUMVAL_LVAL (thisfld) + 0) |
1089 #define FIELD_STATIC_PHYSNAME(thisfld) ((thisfld).loc.physname) | 1135 #define FIELD_STATIC_PHYSNAME(thisfld) ((thisfld).loc.physname) |
1090 #define FIELD_STATIC_PHYSADDR(thisfld) ((thisfld).loc.physaddr) | 1136 #define FIELD_STATIC_PHYSADDR(thisfld) ((thisfld).loc.physaddr) |
1091 #define FIELD_DWARF_BLOCK(thisfld) ((thisfld).loc.dwarf_block) | 1137 #define FIELD_DWARF_BLOCK(thisfld) ((thisfld).loc.dwarf_block) |
1092 #define SET_FIELD_BITPOS(thisfld, bitpos) \ | 1138 #define SET_FIELD_BITPOS(thisfld, bitpos) \ |
1093 (FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_BITPOS, \ | 1139 (FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_BITPOS, \ |
1094 FIELD_BITPOS (thisfld) = (bitpos)) | 1140 FIELD_BITPOS_LVAL (thisfld) = (bitpos)) |
| 1141 #define SET_FIELD_ENUMVAL(thisfld, enumval)» » » \ |
| 1142 (FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_ENUMVAL,» » \ |
| 1143 FIELD_ENUMVAL_LVAL (thisfld) = (enumval)) |
1095 #define SET_FIELD_PHYSNAME(thisfld, name) \ | 1144 #define SET_FIELD_PHYSNAME(thisfld, name) \ |
1096 (FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_PHYSNAME, \ | 1145 (FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_PHYSNAME, \ |
1097 FIELD_STATIC_PHYSNAME (thisfld) = (name)) | 1146 FIELD_STATIC_PHYSNAME (thisfld) = (name)) |
1098 #define SET_FIELD_PHYSADDR(thisfld, addr) \ | 1147 #define SET_FIELD_PHYSADDR(thisfld, addr) \ |
1099 (FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_PHYSADDR, \ | 1148 (FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_PHYSADDR, \ |
1100 FIELD_STATIC_PHYSADDR (thisfld) = (addr)) | 1149 FIELD_STATIC_PHYSADDR (thisfld) = (addr)) |
1101 #define SET_FIELD_DWARF_BLOCK(thisfld, addr) \ | 1150 #define SET_FIELD_DWARF_BLOCK(thisfld, addr) \ |
1102 (FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_DWARF_BLOCK, \ | 1151 (FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_DWARF_BLOCK, \ |
1103 FIELD_DWARF_BLOCK (thisfld) = (addr)) | 1152 FIELD_DWARF_BLOCK (thisfld) = (addr)) |
1104 #define FIELD_ARTIFICIAL(thisfld) ((thisfld).artificial) | 1153 #define FIELD_ARTIFICIAL(thisfld) ((thisfld).artificial) |
1105 #define FIELD_BITSIZE(thisfld) ((thisfld).bitsize) | 1154 #define FIELD_BITSIZE(thisfld) ((thisfld).bitsize) |
1106 | 1155 |
1107 #define TYPE_FIELD(thistype, n) TYPE_MAIN_TYPE(thistype)->flds_bnds.fields[n] | 1156 #define TYPE_FIELD(thistype, n) TYPE_MAIN_TYPE(thistype)->flds_bnds.fields[n] |
1108 #define TYPE_FIELD_TYPE(thistype, n) FIELD_TYPE(TYPE_FIELD(thistype, n)) | 1157 #define TYPE_FIELD_TYPE(thistype, n) FIELD_TYPE(TYPE_FIELD(thistype, n)) |
1109 #define TYPE_FIELD_NAME(thistype, n) FIELD_NAME(TYPE_FIELD(thistype, n)) | 1158 #define TYPE_FIELD_NAME(thistype, n) FIELD_NAME(TYPE_FIELD(thistype, n)) |
1110 #define TYPE_FIELD_LOC_KIND(thistype, n) FIELD_LOC_KIND (TYPE_FIELD (thistype, n
)) | 1159 #define TYPE_FIELD_LOC_KIND(thistype, n) FIELD_LOC_KIND (TYPE_FIELD (thistype, n
)) |
1111 #define TYPE_FIELD_BITPOS(thistype, n) FIELD_BITPOS (TYPE_FIELD (thistype, n)) | 1160 #define TYPE_FIELD_BITPOS(thistype, n) FIELD_BITPOS (TYPE_FIELD (thistype, n)) |
| 1161 #define TYPE_FIELD_ENUMVAL(thistype, n) FIELD_ENUMVAL (TYPE_FIELD (thistype, n)) |
1112 #define TYPE_FIELD_STATIC_PHYSNAME(thistype, n) FIELD_STATIC_PHYSNAME (TYPE_FIEL
D (thistype, n)) | 1162 #define TYPE_FIELD_STATIC_PHYSNAME(thistype, n) FIELD_STATIC_PHYSNAME (TYPE_FIEL
D (thistype, n)) |
1113 #define TYPE_FIELD_STATIC_PHYSADDR(thistype, n) FIELD_STATIC_PHYSADDR (TYPE_FIEL
D (thistype, n)) | 1163 #define TYPE_FIELD_STATIC_PHYSADDR(thistype, n) FIELD_STATIC_PHYSADDR (TYPE_FIEL
D (thistype, n)) |
1114 #define TYPE_FIELD_DWARF_BLOCK(thistype, n) FIELD_DWARF_BLOCK (TYPE_FIELD (thist
ype, n)) | 1164 #define TYPE_FIELD_DWARF_BLOCK(thistype, n) FIELD_DWARF_BLOCK (TYPE_FIELD (thist
ype, n)) |
1115 #define TYPE_FIELD_ARTIFICIAL(thistype, n) FIELD_ARTIFICIAL(TYPE_FIELD(thistype,
n)) | 1165 #define TYPE_FIELD_ARTIFICIAL(thistype, n) FIELD_ARTIFICIAL(TYPE_FIELD(thistype,
n)) |
1116 #define TYPE_FIELD_BITSIZE(thistype, n) FIELD_BITSIZE(TYPE_FIELD(thistype,n)) | 1166 #define TYPE_FIELD_BITSIZE(thistype, n) FIELD_BITSIZE(TYPE_FIELD(thistype,n)) |
1117 #define TYPE_FIELD_PACKED(thistype, n) (FIELD_BITSIZE(TYPE_FIELD(thistype,n))!=0
) | 1167 #define TYPE_FIELD_PACKED(thistype, n) (FIELD_BITSIZE(TYPE_FIELD(thistype,n))!=0
) |
1118 | 1168 |
1119 #define TYPE_FIELD_PRIVATE_BITS(thistype) \ | 1169 #define TYPE_FIELD_PRIVATE_BITS(thistype) \ |
1120 TYPE_CPLUS_SPECIFIC(thistype)->private_field_bits | 1170 TYPE_CPLUS_SPECIFIC(thistype)->private_field_bits |
1121 #define TYPE_FIELD_PROTECTED_BITS(thistype) \ | 1171 #define TYPE_FIELD_PROTECTED_BITS(thistype) \ |
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1449 struct type *to_type, struct field *args, | 1499 struct type *to_type, struct field *args, |
1450 int nargs, int varargs); | 1500 int nargs, int varargs); |
1451 | 1501 |
1452 extern void smash_to_memberptr_type (struct type *, struct type *, | 1502 extern void smash_to_memberptr_type (struct type *, struct type *, |
1453 struct type *); | 1503 struct type *); |
1454 | 1504 |
1455 extern void smash_to_methodptr_type (struct type *, struct type *); | 1505 extern void smash_to_methodptr_type (struct type *, struct type *); |
1456 | 1506 |
1457 extern struct type *allocate_stub_method (struct type *); | 1507 extern struct type *allocate_stub_method (struct type *); |
1458 | 1508 |
1459 extern char *type_name_no_tag (const struct type *); | 1509 extern const char *type_name_no_tag (const struct type *); |
1460 | 1510 |
1461 extern const char *type_name_no_tag_or_error (struct type *type); | 1511 extern const char *type_name_no_tag_or_error (struct type *type); |
1462 | 1512 |
1463 extern struct type *lookup_struct_elt_type (struct type *, char *, int); | 1513 extern struct type *lookup_struct_elt_type (struct type *, char *, int); |
1464 | 1514 |
1465 extern struct type *make_pointer_type (struct type *, struct type **); | 1515 extern struct type *make_pointer_type (struct type *, struct type **); |
1466 | 1516 |
1467 extern struct type *lookup_pointer_type (struct type *); | 1517 extern struct type *lookup_pointer_type (struct type *); |
1468 | 1518 |
1469 extern struct type *make_function_type (struct type *, struct type **); | 1519 extern struct type *make_function_type (struct type *, struct type **); |
1470 | 1520 |
1471 extern struct type *lookup_function_type (struct type *); | 1521 extern struct type *lookup_function_type (struct type *); |
1472 | 1522 |
| 1523 extern struct type *lookup_function_type_with_arguments (struct type *, |
| 1524 int, |
| 1525 struct type **); |
| 1526 |
1473 extern struct type *create_range_type (struct type *, struct type *, LONGEST, | 1527 extern struct type *create_range_type (struct type *, struct type *, LONGEST, |
1474 LONGEST); | 1528 LONGEST); |
1475 | 1529 |
1476 extern struct type *create_array_type (struct type *, struct type *, | 1530 extern struct type *create_array_type (struct type *, struct type *, |
1477 struct type *); | 1531 struct type *); |
1478 extern struct type *lookup_array_range_type (struct type *, int, int); | 1532 extern struct type *lookup_array_range_type (struct type *, int, int); |
1479 | 1533 |
1480 extern struct type *create_string_type (struct type *, struct type *, | 1534 extern struct type *create_string_type (struct type *, struct type *, |
1481 struct type *); | 1535 struct type *); |
1482 extern struct type *lookup_string_range_type (struct type *, int, int); | 1536 extern struct type *lookup_string_range_type (struct type *, int, int); |
1483 | 1537 |
1484 extern struct type *create_set_type (struct type *, struct type *); | 1538 extern struct type *create_set_type (struct type *, struct type *); |
1485 | 1539 |
1486 extern struct type *lookup_unsigned_typename (const struct language_defn *, | 1540 extern struct type *lookup_unsigned_typename (const struct language_defn *, |
1487 » » » » » struct gdbarch *,char *); | 1541 » » » » » struct gdbarch *, const char *); |
1488 | 1542 |
1489 extern struct type *lookup_signed_typename (const struct language_defn *, | 1543 extern struct type *lookup_signed_typename (const struct language_defn *, |
1490 » » » » » struct gdbarch *,char *); | 1544 » » » » » struct gdbarch *, const char *); |
1491 | 1545 |
1492 extern struct type *check_typedef (struct type *); | 1546 extern struct type *check_typedef (struct type *); |
1493 | 1547 |
1494 #define CHECK_TYPEDEF(TYPE) \ | 1548 #define CHECK_TYPEDEF(TYPE) \ |
1495 do { \ | 1549 do { \ |
1496 (TYPE) = check_typedef (TYPE); \ | 1550 (TYPE) = check_typedef (TYPE); \ |
1497 } while (0) | 1551 } while (0) |
1498 | 1552 |
1499 extern void check_stub_method_group (struct type *, int); | 1553 extern void check_stub_method_group (struct type *, int); |
1500 | 1554 |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1597 | 1651 |
1598 extern htab_t create_copied_types_hash (struct objfile *objfile); | 1652 extern htab_t create_copied_types_hash (struct objfile *objfile); |
1599 | 1653 |
1600 extern struct type *copy_type_recursive (struct objfile *objfile, | 1654 extern struct type *copy_type_recursive (struct objfile *objfile, |
1601 struct type *type, | 1655 struct type *type, |
1602 htab_t copied_types); | 1656 htab_t copied_types); |
1603 | 1657 |
1604 extern struct type *copy_type (const struct type *type); | 1658 extern struct type *copy_type (const struct type *type); |
1605 | 1659 |
1606 #endif /* GDBTYPES_H */ | 1660 #endif /* GDBTYPES_H */ |
OLD | NEW |