+/* * For TYPE_CODE_FUNC and TYPE_CODE_METHOD types. */
+
+struct func_type
+ {
+ /* * The calling convention for targets supporting multiple ABIs.
+ Right now this is only fetched from the Dwarf-2
+ DW_AT_calling_convention attribute. The value is one of the
+ DW_CC enum dwarf_calling_convention constants. */
+
+ unsigned calling_convention : 8;
+
+ /* * Whether this function normally returns to its caller. It is
+ set from the DW_AT_noreturn attribute if set on the
+ DW_TAG_subprogram. */
+
+ unsigned int is_noreturn : 1;
+
+ /* * Only those DW_TAG_GNU_call_site's in this function that have
+ DW_AT_GNU_tail_call set are linked in this list. Function
+ without its tail call list complete
+ (DW_AT_GNU_all_tail_call_sites or its superset
+ DW_AT_GNU_all_call_sites) has TAIL_CALL_LIST NULL, even if some
+ DW_TAG_GNU_call_site's exist in such function. */
+
+ struct call_site *tail_call_list;
+
+ /* * For method types (TYPE_CODE_METHOD), the aggregate type that
+ contains the method. */
+
+ struct type *self_type;
+ };
+
+/* struct call_site_parameter can be referenced in callees by several ways. */
+
+enum call_site_parameter_kind
+{
+ /* * Use field call_site_parameter.u.dwarf_reg. */
+ CALL_SITE_PARAMETER_DWARF_REG,
+
+ /* * Use field call_site_parameter.u.fb_offset. */
+ CALL_SITE_PARAMETER_FB_OFFSET,
+
+ /* * Use field call_site_parameter.u.param_offset. */
+ CALL_SITE_PARAMETER_PARAM_OFFSET
+};
+
+struct call_site_target
+{
+ union field_location loc;
+
+ /* * Discriminant for union field_location. */
+
+ ENUM_BITFIELD(field_loc_kind) loc_kind : 3;
+};
+
+union call_site_parameter_u
+{
+ /* * DW_TAG_formal_parameter's DW_AT_location's DW_OP_regX
+ as DWARF register number, for register passed
+ parameters. */
+
+ int dwarf_reg;
+
+ /* * Offset from the callee's frame base, for stack passed
+ parameters. This equals offset from the caller's stack
+ pointer. */
+
+ CORE_ADDR fb_offset;
+
+ /* * Offset relative to the start of this PER_CU to
+ DW_TAG_formal_parameter which is referenced by both
+ caller and the callee. */
+
+ cu_offset param_offset;
+};
+
+struct call_site_parameter
+{
+ ENUM_BITFIELD (call_site_parameter_kind) kind : 2;
+
+ union call_site_parameter_u u;
+
+ /* * DW_TAG_formal_parameter's DW_AT_GNU_call_site_value. It
+ is never NULL. */
+
+ const gdb_byte *value;
+ size_t value_size;
+
+ /* * DW_TAG_formal_parameter's DW_AT_GNU_call_site_data_value.
+ It may be NULL if not provided by DWARF. */
+
+ const gdb_byte *data_value;
+ size_t data_value_size;
+};
+
+/* * A place where a function gets called from, represented by
+ DW_TAG_GNU_call_site. It can be looked up from
+ symtab->call_site_htab. */
+
+struct call_site
+ {
+ /* * Address of the first instruction after this call. It must be
+ the first field as we overload core_addr_hash and core_addr_eq
+ for it. */
+
+ CORE_ADDR pc;
+
+ /* * List successor with head in FUNC_TYPE.TAIL_CALL_LIST. */
+
+ struct call_site *tail_call_next;
+
+ /* * Describe DW_AT_GNU_call_site_target. Missing attribute uses
+ FIELD_LOC_KIND_DWARF_BLOCK with FIELD_DWARF_BLOCK == NULL. */
+
+ struct call_site_target target;
+
+ /* * Size of the PARAMETER array. */
+
+ unsigned parameter_count;
+
+ /* * CU of the function where the call is located. It gets used
+ for DWARF blocks execution in the parameter array below. */
+
+ struct dwarf2_per_cu_data *per_cu;
+
+ /* * Describe DW_TAG_GNU_call_site's DW_TAG_formal_parameter. */
+
+ struct call_site_parameter parameter[1];
+ };
+
+/* * The default value of TYPE_CPLUS_SPECIFIC(T) points to this shared
+ static structure. */