hp merge changes -- too numerous to mention here; see ChangeLog and
ChangeLog-gdbtk for details.
This commit is contained in:
parent
d6fdf61c78
commit
4ef1f46773
68 changed files with 7667 additions and 859 deletions
319
gdb/gdbtypes.h
319
gdb/gdbtypes.h
|
@ -29,9 +29,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
|||
|
||||
#define FT_VOID 0
|
||||
#define FT_BOOLEAN 1
|
||||
#define FT_CHAR 2
|
||||
#define FT_SIGNED_CHAR 3
|
||||
#define FT_UNSIGNED_CHAR 4
|
||||
#define FT_CHAR 2 /* we use this for not-unsigned C/C++ chars */
|
||||
#define FT_SIGNED_CHAR 3 /* we use this for C++ signed chars */
|
||||
#define FT_UNSIGNED_CHAR 4 /* we use this for C/C++ unsigned chars */
|
||||
#define FT_SHORT 5
|
||||
#define FT_SIGNED_SHORT 6
|
||||
#define FT_UNSIGNED_SHORT 7
|
||||
|
@ -55,8 +55,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
|||
#define FT_FLOAT_DECIMAL 25
|
||||
#define FT_BYTE 26
|
||||
#define FT_UNSIGNED_BYTE 27
|
||||
#define FT_TEMPLATE_ARG 28
|
||||
|
||||
#define FT_NUM_MEMBERS 28 /* Highest FT_* above, plus one. */
|
||||
#define FT_NUM_MEMBERS 29 /* Highest FT_* above, plus one. */
|
||||
|
||||
/* Some macros for char-based bitfields. */
|
||||
|
||||
|
@ -122,7 +123,10 @@ enum type_code
|
|||
/* Fortran */
|
||||
TYPE_CODE_COMPLEX, /* Complex float */
|
||||
|
||||
TYPE_CODE_TYPEDEF
|
||||
TYPE_CODE_TYPEDEF,
|
||||
TYPE_CODE_TEMPLATE, /* C++ template */
|
||||
TYPE_CODE_TEMPLATE_ARG /* C++ template arg */
|
||||
|
||||
};
|
||||
|
||||
/* For now allow source to use TYPE_CODE_CLASS for C++ classes, as an
|
||||
|
@ -136,10 +140,16 @@ enum type_code
|
|||
/* Some bits for the type's flags word. */
|
||||
|
||||
/* Unsigned integer type. If this is not set for a TYPE_CODE_INT, the
|
||||
type is signed. */
|
||||
type is signed (unless TYPE_FLAG_NOSIGN (below) is set). */
|
||||
|
||||
#define TYPE_FLAG_UNSIGNED (1 << 0)
|
||||
|
||||
/* No sign for this type. In C++, "char", "signed char", and "unsigned
|
||||
char" are distinct types; so we need an extra flag to indicate the
|
||||
absence ofa sign! */
|
||||
|
||||
#define TYPE_FLAG_NOSIGN (1 << 1)
|
||||
|
||||
/* This appears in a type's flags word if it is a stub type (e.g., if
|
||||
someone referenced a type that wasn't defined in a source file
|
||||
via (struct sir_not_appearing_in_this_film *)). */
|
||||
|
@ -154,11 +164,43 @@ enum type_code
|
|||
|
||||
#define TYPE_FLAG_TARGET_STUB (1 << 3)
|
||||
|
||||
/* Static type. If this is set, the corresponding type had
|
||||
* a static modifier.
|
||||
* Note: This may be unnecessary, since static data members
|
||||
* are indicated by other means (bitpos == -1)
|
||||
*/
|
||||
|
||||
#define TYPE_FLAG_STATIC (1 << 4)
|
||||
|
||||
/* Constant type. If this is set, the corresponding type has a
|
||||
* const modifier.
|
||||
*/
|
||||
|
||||
#define TYPE_FLAG_CONST (1 << 5)
|
||||
|
||||
/* Volatile type. If this is set, the corresponding type has a
|
||||
* volatile modifier.
|
||||
*/
|
||||
|
||||
#define TYPE_FLAG_VOLATILE (1 << 6)
|
||||
|
||||
|
||||
/* This is a function type which appears to have a prototype. We need this
|
||||
for function calls in order to tell us if it's necessary to coerce the args,
|
||||
or to just do the standard conversions. */
|
||||
or to just do the standard conversions. This is used with a short field. */
|
||||
|
||||
#define TYPE_FLAG_PROTOTYPED (1 << 7)
|
||||
|
||||
/* This flag is used to indicate that processing for this type
|
||||
is incomplete.
|
||||
|
||||
(Mostly intended for HP platforms, where class methods, for
|
||||
instance, can be encountered before their classes in the debug
|
||||
info; the incomplete type has to be marked so that the class and
|
||||
the method can be assigned correct types.) */
|
||||
|
||||
#define TYPE_FLAG_INCOMPLETE (1 << 8)
|
||||
|
||||
#define TYPE_FLAG_PROTOTYPED (1 << 4)
|
||||
|
||||
struct type
|
||||
{
|
||||
|
@ -245,9 +287,15 @@ struct type
|
|||
|
||||
struct type *reference_type;
|
||||
|
||||
/* C-v variant chain. This points to a type that
|
||||
differs from this one only in a const or volatile
|
||||
attribute (or both). The various c-v variants
|
||||
are chained together in a ring. */
|
||||
struct type *cv_type;
|
||||
|
||||
/* Flags about this type. */
|
||||
|
||||
short flags;
|
||||
int flags;
|
||||
|
||||
/* Number of fields described for this type */
|
||||
|
||||
|
@ -382,8 +430,22 @@ struct cplus_struct_type
|
|||
/* Number of methods described for this type, not including the
|
||||
methods that it derives from. */
|
||||
|
||||
int nfn_fields_total;
|
||||
short nfn_fields_total;
|
||||
|
||||
/* The "declared_type" field contains a code saying how the
|
||||
user really declared this type, e.g., "class s", "union s",
|
||||
"struct s".
|
||||
The 3 above things come out from the C++ compiler looking like classes,
|
||||
but we keep track of the real declaration so we can give
|
||||
the correct information on "ptype". (Note: TEMPLATE may not
|
||||
belong in this list...) */
|
||||
|
||||
#define DECLARED_TYPE_CLASS 0
|
||||
#define DECLARED_TYPE_UNION 1
|
||||
#define DECLARED_TYPE_STRUCT 2
|
||||
#define DECLARED_TYPE_TEMPLATE 3
|
||||
short declared_type; /* One of the above codes */
|
||||
|
||||
/* For derived classes, the number of base classes is given by n_baseclasses
|
||||
and virtual_field_bits is a bit vector containing one bit per base class.
|
||||
If the base class is virtual, the corresponding bit will be set.
|
||||
|
@ -453,10 +515,21 @@ struct cplus_struct_type
|
|||
|
||||
char *physname;
|
||||
|
||||
/* The type of the method. */
|
||||
/* The function type for the method.
|
||||
(This comment used to say "The return value of the method",
|
||||
but that's wrong. The function type
|
||||
is expected here, i.e. something with TYPE_CODE_FUNC,
|
||||
and *not* the return-value type). */
|
||||
|
||||
struct type *type;
|
||||
|
||||
/* The argument list. Only valid if is_stub is clear. Contains
|
||||
the type of each argument, including `this', and ending with
|
||||
a NULL pointer after the last argument. Should not contain
|
||||
a `this' pointer for static member functions. */
|
||||
|
||||
struct type **args;
|
||||
|
||||
/* For virtual functions.
|
||||
First baseclass that defines this virtual function. */
|
||||
|
||||
|
@ -473,8 +546,11 @@ struct cplus_struct_type
|
|||
to reconstruct the rest of the fields). */
|
||||
unsigned int is_stub : 1;
|
||||
|
||||
/* C++ method that is inlined */
|
||||
unsigned int is_inlined : 1;
|
||||
|
||||
/* Unused. */
|
||||
unsigned int dummy : 3;
|
||||
unsigned int dummy : 2;
|
||||
|
||||
/* Index into that baseclass's virtual function table,
|
||||
minus 2; else if static: VOFFSET_STATIC; else: 0. */
|
||||
|
@ -487,6 +563,72 @@ struct cplus_struct_type
|
|||
|
||||
} *fn_fieldlists;
|
||||
|
||||
/* If this "struct type" describes a template, then it
|
||||
* has arguments. "template_args" points to an array of
|
||||
* template arg descriptors, of length "ntemplate_args".
|
||||
* The only real information in each of these template arg descriptors
|
||||
* is a name. "type" will typically just point to a "struct type" with
|
||||
* the placeholder TYPE_CODE_TEMPLATE_ARG type.
|
||||
*/
|
||||
short ntemplate_args;
|
||||
struct template_arg
|
||||
{
|
||||
char *name;
|
||||
struct type *type;
|
||||
} *template_args;
|
||||
|
||||
/* If this "struct type" describes a template, it has a list
|
||||
* of instantiations. "instantiations" is a pointer to an array
|
||||
* of type's, one representing each instantiation. There
|
||||
* are "ninstantiations" elements in this array.
|
||||
*/
|
||||
short ninstantiations;
|
||||
struct type **instantiations;
|
||||
|
||||
/* The following points to information relevant to the runtime model
|
||||
* of the compiler.
|
||||
* Currently being used only for HP's ANSI C++ compiler.
|
||||
* (This type may have to be changed/enhanced for other compilers.)
|
||||
*
|
||||
* RUNTIME_PTR is NULL if there is no runtime information (currently
|
||||
* this means the type was not compiled by HP aCC).
|
||||
*
|
||||
* Fields in structure pointed to:
|
||||
* ->HAS_VTABLE : 0 => no virtual table, 1 => vtable present
|
||||
*
|
||||
* ->PRIMARY_BASE points to the first non-virtual base class that has
|
||||
* a virtual table.
|
||||
*
|
||||
* ->VIRTUAL_BASE_LIST points to a list of struct type * pointers that
|
||||
* point to the type information for all virtual bases among this type's
|
||||
* ancestors.
|
||||
*/
|
||||
struct runtime_info {
|
||||
short has_vtable;
|
||||
struct type * primary_base;
|
||||
struct type ** virtual_base_list;
|
||||
} * runtime_ptr;
|
||||
|
||||
/* Pointer to information about enclosing scope, if this is a
|
||||
* local type. If it is not a local type, this is NULL
|
||||
*/
|
||||
struct local_type_info {
|
||||
char * file;
|
||||
int line;
|
||||
} * localtype_ptr;
|
||||
};
|
||||
|
||||
/* Struct used in computing virtual base list */
|
||||
struct vbase
|
||||
{
|
||||
struct type * vbasetype; /* pointer to virtual base */
|
||||
struct vbase * next; /* next in chain */
|
||||
};
|
||||
|
||||
/* Struct used for ranking a function for overload resolution */
|
||||
struct badness_vector {
|
||||
int length;
|
||||
int * rank;
|
||||
};
|
||||
|
||||
/* The default value of TYPE_CPLUS_SPECIFIC(T) points to the
|
||||
|
@ -508,6 +650,7 @@ allocate_cplus_struct_type PARAMS ((struct type *));
|
|||
#define TYPE_TARGET_TYPE(thistype) (thistype)->target_type
|
||||
#define TYPE_POINTER_TYPE(thistype) (thistype)->pointer_type
|
||||
#define TYPE_REFERENCE_TYPE(thistype) (thistype)->reference_type
|
||||
#define TYPE_CV_TYPE(thistype) (thistype)->cv_type
|
||||
/* Note that if thistype is a TYPEDEF type, you have to call check_typedef.
|
||||
But check_typedef does set the TYPE_LENGTH of the TYPEDEF type,
|
||||
so you only have to call check_typedef once. Since allocate_value
|
||||
|
@ -516,11 +659,17 @@ allocate_cplus_struct_type PARAMS ((struct type *));
|
|||
#define TYPE_OBJFILE(thistype) (thistype)->objfile
|
||||
#define TYPE_FLAGS(thistype) (thistype)->flags
|
||||
#define TYPE_UNSIGNED(thistype) ((thistype)->flags & TYPE_FLAG_UNSIGNED)
|
||||
#define TYPE_NOSIGN(thistype) ((thistype)->flags & TYPE_FLAG_NOSIGN)
|
||||
#define TYPE_CONST(thistype) ((thistype)->flags & TYPE_FLAG_CONST)
|
||||
#define TYPE_VOLATILE(thistype) ((thistype)->flags & TYPE_FLAG_VOLATILE)
|
||||
#define TYPE_INCOMPLETE(thistype) ((thistype)->flags & TYPE_FLAG_INCOMPLETE)
|
||||
/* Note that TYPE_CODE can be TYPE_CODE_TYPEDEF, so if you wan the real
|
||||
type, you need to do TYPE_CODE (check_type (this_type)). */
|
||||
#define TYPE_CODE(thistype) (thistype)->code
|
||||
#define TYPE_NFIELDS(thistype) (thistype)->nfields
|
||||
#define TYPE_FIELDS(thistype) (thistype)->fields
|
||||
#define TYPE_TEMPLATE_ARGS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->template_args
|
||||
#define TYPE_INSTANTIATIONS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->instantiations
|
||||
|
||||
#define TYPE_INDEX_TYPE(type) TYPE_FIELD_TYPE (type, 0)
|
||||
#define TYPE_LOW_BOUND(range_type) TYPE_FIELD_BITPOS (range_type, 0)
|
||||
|
@ -545,6 +694,9 @@ allocate_cplus_struct_type PARAMS ((struct type *));
|
|||
#define TYPE_FN_FIELDS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->fn_fields
|
||||
#define TYPE_NFN_FIELDS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->nfn_fields
|
||||
#define TYPE_NFN_FIELDS_TOTAL(thistype) TYPE_CPLUS_SPECIFIC(thistype)->nfn_fields_total
|
||||
#define TYPE_NTEMPLATE_ARGS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->ntemplate_args
|
||||
#define TYPE_NINSTANTIATIONS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->ninstantiations
|
||||
#define TYPE_DECLARED_TYPE(thistype) TYPE_CPLUS_SPECIFIC(thistype)->declared_type
|
||||
#define TYPE_TYPE_SPECIFIC(thistype) (thistype)->type_specific
|
||||
#define TYPE_ARG_TYPES(thistype) (thistype)->type_specific.arg_types
|
||||
#define TYPE_CPLUS_SPECIFIC(thistype) (thistype)->type_specific.cplus_stuff
|
||||
|
@ -552,9 +704,12 @@ allocate_cplus_struct_type PARAMS ((struct type *));
|
|||
#define TYPE_N_BASECLASSES(thistype) TYPE_CPLUS_SPECIFIC(thistype)->n_baseclasses
|
||||
#define TYPE_BASECLASS_NAME(thistype,index) (thistype)->fields[index].name
|
||||
#define TYPE_BASECLASS_BITPOS(thistype,index) TYPE_FIELD_BITPOS(thistype,index)
|
||||
#define BASETYPE_VIA_PUBLIC(thistype, index) (!TYPE_FIELD_PRIVATE(thistype, index))
|
||||
#define BASETYPE_VIA_PUBLIC(thistype, index) \
|
||||
((!TYPE_FIELD_PRIVATE(thistype, index)) && (!TYPE_FIELD_PROTECTED(thistype, index)))
|
||||
|
||||
#define BASETYPE_VIA_VIRTUAL(thistype, index) \
|
||||
B_TST(TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits, (index))
|
||||
(TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits == NULL ? 0 \
|
||||
: B_TST(TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits, (index)))
|
||||
|
||||
#define FIELD_TYPE(thisfld) ((thisfld).type)
|
||||
#define FIELD_NAME(thisfld) ((thisfld).name)
|
||||
|
@ -572,6 +727,8 @@ allocate_cplus_struct_type PARAMS ((struct type *));
|
|||
#define TYPE_FIELD_BITPOS(thistype, n) FIELD_BITPOS(TYPE_FIELD(thistype,n))
|
||||
#define TYPE_FIELD_BITSIZE(thistype, n) FIELD_BITSIZE(TYPE_FIELD(thistype,n))
|
||||
#define TYPE_FIELD_PACKED(thistype, n) (FIELD_BITSIZE(TYPE_FIELD(thistype,n))!=0)
|
||||
#define TYPE_TEMPLATE_ARG(thistype, n) TYPE_CPLUS_SPECIFIC(thistype)->template_args[n]
|
||||
#define TYPE_INSTANTIATION(thistype, n) TYPE_CPLUS_SPECIFIC(thistype)->instantiations[n]
|
||||
|
||||
#define TYPE_FIELD_PRIVATE_BITS(thistype) \
|
||||
TYPE_CPLUS_SPECIFIC(thistype)->private_field_bits
|
||||
|
@ -599,7 +756,8 @@ allocate_cplus_struct_type PARAMS ((struct type *));
|
|||
(TYPE_CPLUS_SPECIFIC(thistype)->ignore_field_bits == NULL ? 0 \
|
||||
: B_TST(TYPE_CPLUS_SPECIFIC(thistype)->ignore_field_bits, (n)))
|
||||
#define TYPE_FIELD_VIRTUAL(thistype, n) \
|
||||
B_TST(TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits, (n))
|
||||
(TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits == NULL ? 0 \
|
||||
: B_TST(TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits, (n)))
|
||||
|
||||
#define TYPE_FIELD_STATIC(thistype, n) ((thistype)->fields[n].bitsize < 0)
|
||||
#define TYPE_FIELD_STATIC_HAS_ADDR(thistype, n) ((thistype)->fields[n].bitsize == -2)
|
||||
|
@ -621,11 +779,29 @@ allocate_cplus_struct_type PARAMS ((struct type *));
|
|||
#define TYPE_FN_FIELD_PRIVATE(thisfn, n) ((thisfn)[n].is_private)
|
||||
#define TYPE_FN_FIELD_PROTECTED(thisfn, n) ((thisfn)[n].is_protected)
|
||||
#define TYPE_FN_FIELD_STUB(thisfn, n) ((thisfn)[n].is_stub)
|
||||
#define TYPE_FN_FIELD_INLINED(thisfn, n) ((thisfn)[n].is_inlined)
|
||||
#define TYPE_FN_FIELD_FCONTEXT(thisfn, n) ((thisfn)[n].fcontext)
|
||||
#define TYPE_FN_FIELD_VOFFSET(thisfn, n) ((thisfn)[n].voffset-2)
|
||||
#define TYPE_FN_FIELD_VIRTUAL_P(thisfn, n) ((thisfn)[n].voffset > 1)
|
||||
#define TYPE_FN_FIELD_STATIC_P(thisfn, n) ((thisfn)[n].voffset == VOFFSET_STATIC)
|
||||
|
||||
#define TYPE_RUNTIME_PTR(thistype) (TYPE_CPLUS_SPECIFIC(thistype)->runtime_ptr)
|
||||
#define TYPE_VTABLE(thistype) (TYPE_RUNTIME_PTR(thistype)->has_vtable)
|
||||
#define TYPE_HAS_VTABLE(thistype) (TYPE_RUNTIME_PTR(thistype) && TYPE_VTABLE(thistype))
|
||||
#define TYPE_PRIMARY_BASE(thistype) (TYPE_RUNTIME_PTR(thistype)->primary_base)
|
||||
#define TYPE_VIRTUAL_BASE_LIST(thistype) (TYPE_RUNTIME_PTR(thistype)->virtual_base_list)
|
||||
|
||||
#define TYPE_LOCALTYPE_PTR(thistype) (TYPE_CPLUS_SPECIFIC(thistype)->localtype_ptr)
|
||||
#define TYPE_LOCALTYPE_FILE(thistype) (TYPE_CPLUS_SPECIFIC(thistype)->localtype_ptr->file)
|
||||
#define TYPE_LOCALTYPE_LINE(thistype) (TYPE_CPLUS_SPECIFIC(thistype)->localtype_ptr->line)
|
||||
|
||||
#define TYPE_IS_OPAQUE(thistype) (((TYPE_CODE (thistype) == TYPE_CODE_STRUCT) || \
|
||||
(TYPE_CODE (thistype) == TYPE_CODE_UNION)) && \
|
||||
(TYPE_NFIELDS (thistype) == 0) && \
|
||||
(TYPE_CPLUS_SPECIFIC (thistype) && (TYPE_NFN_FIELDS (thistype) == 0)))
|
||||
|
||||
|
||||
|
||||
/* Implicit sizes */
|
||||
extern struct type *builtin_type_void;
|
||||
extern struct type *builtin_type_char;
|
||||
|
@ -643,6 +819,7 @@ extern struct type *builtin_type_long_double;
|
|||
extern struct type *builtin_type_complex;
|
||||
extern struct type *builtin_type_double_complex;
|
||||
extern struct type *builtin_type_string;
|
||||
extern struct type *builtin_type_bool;
|
||||
|
||||
/* Explicit sizes - see <intypes.h> for naming schema */
|
||||
extern struct type *builtin_type_int8;
|
||||
|
@ -699,6 +876,9 @@ extern struct type *builtin_type_f_complex_s16;
|
|||
extern struct type *builtin_type_f_complex_s32;
|
||||
extern struct type *builtin_type_f_void;
|
||||
|
||||
/* RTTI for C++ */
|
||||
/* extern struct type *builtin_type_cxx_typeinfo; */
|
||||
|
||||
/* Maximum and minimum values of built-in types */
|
||||
|
||||
#define MAX_OF_TYPE(t) \
|
||||
|
@ -735,6 +915,9 @@ lookup_reference_type PARAMS ((struct type *));
|
|||
extern struct type *
|
||||
make_reference_type PARAMS ((struct type *, struct type **));
|
||||
|
||||
extern struct type *
|
||||
make_cv_type PARAMS ((int, int, struct type *, struct type **));
|
||||
|
||||
extern struct type *
|
||||
lookup_member_type PARAMS ((struct type *, struct type *));
|
||||
|
||||
|
@ -818,6 +1001,112 @@ extern int get_destructor_fn_field PARAMS ((struct type *, int *, int *));
|
|||
|
||||
extern int get_discrete_bounds PARAMS ((struct type*, LONGEST*, LONGEST*));
|
||||
|
||||
extern int
|
||||
get_discrete_bounds PARAMS ((struct type*, LONGEST*, LONGEST*));
|
||||
|
||||
extern int
|
||||
is_ancestor PARAMS ((struct type *, struct type *));
|
||||
|
||||
extern int
|
||||
has_vtable PARAMS ((struct type *));
|
||||
|
||||
extern struct type *
|
||||
primary_base_class PARAMS ((struct type *));
|
||||
|
||||
extern struct type **
|
||||
virtual_base_list PARAMS ((struct type *));
|
||||
|
||||
extern int
|
||||
virtual_base_list_length PARAMS ((struct type *));
|
||||
extern int
|
||||
virtual_base_list_length_skip_primaries PARAMS ((struct type *));
|
||||
|
||||
extern int
|
||||
virtual_base_index PARAMS ((struct type *, struct type *));
|
||||
extern int
|
||||
virtual_base_index_skip_primaries PARAMS ((struct type *, struct type *));
|
||||
|
||||
|
||||
extern int
|
||||
class_index_in_primary_list PARAMS ((struct type *));
|
||||
|
||||
extern int
|
||||
count_virtual_fns PARAMS ((struct type*));
|
||||
|
||||
/* Constants for HP/Taligent ANSI C++ runtime model */
|
||||
|
||||
/* Where virtual function entries begin in the
|
||||
* virtual table, in the non-RRBC vtable format.
|
||||
* First 4 are the metavtable pointer, top offset,
|
||||
* typeinfo pointer, and dup base info pointer */
|
||||
#define HP_ACC_VFUNC_START 4
|
||||
|
||||
/* (Negative) Offset where virtual base offset entries begin
|
||||
* in the virtual table. Skips over metavtable pointer and
|
||||
* the self-offset entry.
|
||||
* NOTE: NEGATE THIS BEFORE USING! The virtual base offsets
|
||||
* appear before the address point of the vtable (the slot
|
||||
* pointed to by the object's vtable pointer), i.e. at lower
|
||||
* addresses than the vtable pointer. */
|
||||
#define HP_ACC_VBASE_START 2
|
||||
|
||||
/* (Positive) Offset where the pointer to the typeinfo
|
||||
* object is present in the virtual table */
|
||||
#define HP_ACC_TYPEINFO_OFFSET 2
|
||||
|
||||
/* (Positive) Offset where the ``top offset'' entry of
|
||||
* the virtual table is */
|
||||
#define HP_ACC_TOP_OFFSET_OFFSET 1
|
||||
|
||||
/* Overload resolution */
|
||||
|
||||
#define LENGTH_MATCH(bv) ((bv)->rank[0])
|
||||
|
||||
/* Badness if parameter list length doesn't match arg list length */
|
||||
#define LENGTH_MISMATCH_BADNESS 100
|
||||
/* Dummy badness value for nonexistent parameter positions */
|
||||
#define TOO_FEW_PARAMS_BADNESS 100
|
||||
/* Badness if no conversion among types */
|
||||
#define INCOMPATIBLE_TYPE_BADNESS 100
|
||||
/* Badness of coercing large integer to smaller size */
|
||||
#define INTEGER_COERCION_BADNESS 100
|
||||
/* Badness of coercing large floating type to smaller size */
|
||||
#define FLOAT_COERCION_BADNESS 100
|
||||
|
||||
/* Badness of integral promotion */
|
||||
#define INTEGER_PROMOTION_BADNESS 1
|
||||
/* Badness of floating promotion */
|
||||
#define FLOAT_PROMOTION_BADNESS 1
|
||||
/* Badness of integral conversion */
|
||||
#define INTEGER_CONVERSION_BADNESS 2
|
||||
/* Badness of floating conversion */
|
||||
#define FLOAT_CONVERSION_BADNESS 2
|
||||
/* Badness of integer<->floating conversions */
|
||||
#define INT_FLOAT_CONVERSION_BADNESS 2
|
||||
/* Badness of converting to a boolean */
|
||||
#define BOOLEAN_CONVERSION_BADNESS 2
|
||||
/* Badness of pointer conversion */
|
||||
#define POINTER_CONVERSION_BADNESS 2
|
||||
/* Badness of conversion of pointer to void pointer */
|
||||
#define VOID_PTR_CONVERSION_BADNESS 2
|
||||
/* Badness of convering derived to base class */
|
||||
#define BASE_CONVERSION_BADNESS 2
|
||||
|
||||
/* Non-standard conversions allowed by the debugger */
|
||||
/* Converting a pointer to an int is usually OK */
|
||||
#define NS_POINTER_CONVERSION_BADNESS 10
|
||||
|
||||
|
||||
extern int
|
||||
compare_badness PARAMS ((struct badness_vector *, struct badness_vector *));
|
||||
|
||||
extern struct badness_vector *
|
||||
rank_function PARAMS ((struct type **, int, struct type **, int));
|
||||
|
||||
extern int
|
||||
rank_one_type PARAMS ((struct type *, struct type *));
|
||||
|
||||
|
||||
#if MAINTENANCE_CMDS
|
||||
extern void recursive_dump_type PARAMS ((struct type *, int));
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue