projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* configure.tgt (powerpc-*-elf, et al): Define targ_extra_libpath.
[deliverable/binutils-gdb.git]
/
gdb
/
gdbtypes.h
diff --git
a/gdb/gdbtypes.h
b/gdb/gdbtypes.h
index 69f6b46f00d589763e9d92155418d00c72d0dd49..991026b92acb56f413897cec3452d32d547ab4ed 100644
(file)
--- a/
gdb/gdbtypes.h
+++ b/
gdb/gdbtypes.h
@@
-1,8
+1,6
@@
/* Internal type definitions for GDB.
/* Internal type definitions for GDB.
- Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
- 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011
- Free Software Foundation, Inc.
+ Copyright (C) 1992-2004, 2006-2012 Free Software Foundation, Inc.
Contributed by Cygnus Support, using pieces from other GDB modules.
Contributed by Cygnus Support, using pieces from other GDB modules.
@@
-32,6
+30,21
@@
struct block;
struct value_print_options;
struct language_defn;
struct value_print_options;
struct language_defn;
+/* These declarations are DWARF-specific as some of the gdbtypes.h data types
+ are already DWARF-specific. */
+
+/* Offset relative to the start of its containing CU (compilation unit). */
+typedef struct
+{
+ unsigned int cu_off;
+} cu_offset;
+
+/* Offset relative to the start of its .debug_info or .debug_types section. */
+typedef struct
+{
+ unsigned int sect_off;
+} sect_offset;
+
/* Some macros for char-based bitfields. */
#define B_SET(a,x) ((a)[(x)>>3] |= (1 << ((x)&7)))
/* Some macros for char-based bitfields. */
#define B_SET(a,x) ((a)[(x)>>3] |= (1 << ((x)&7)))
@@
-45,7
+58,8
@@
struct language_defn;
enum type_code
{
enum type_code
{
- TYPE_CODE_UNDEF, /* Not used; catches errors */
+ TYPE_CODE_BITSTRING = -1, /* Deprecated */
+ TYPE_CODE_UNDEF = 0, /* Not used; catches errors */
TYPE_CODE_PTR, /* Pointer type */
/* Array type with lower & upper bounds.
TYPE_CODE_PTR, /* Pointer type */
/* Array type with lower & upper bounds.
@@
-96,10
+110,6
@@
enum type_code
a new type code. */
TYPE_CODE_STRING,
a new type code. */
TYPE_CODE_STRING,
- /* String of bits; like TYPE_CODE_SET but prints differently (at
- least for (the deleted) CHILL). */
- TYPE_CODE_BITSTRING,
-
/* Unknown type. The length field is valid if we were able to
deduce that much about the type, or 0 if we don't even know that. */
TYPE_CODE_ERROR,
/* Unknown type. The length field is valid if we were able to
deduce that much about the type, or 0 if we don't even know that. */
TYPE_CODE_ERROR,
@@
-292,6
+302,12
@@
enum type_instance_flag_value
#define TYPE_DECLARED_CLASS(t) (TYPE_MAIN_TYPE (t)->flag_declared_class)
#define TYPE_DECLARED_CLASS(t) (TYPE_MAIN_TYPE (t)->flag_declared_class)
+/* True if this type is a "flag" enum. A flag enum is one where all
+ the values are pairwise disjoint when "and"ed together. This
+ affects how enum values are printed. */
+
+#define TYPE_FLAG_ENUM(t) (TYPE_MAIN_TYPE (t)->flag_flag_enum)
+
/* Constant type. If this is set, the corresponding type has a
const modifier. */
/* Constant type. If this is set, the corresponding type has a
const modifier. */
@@
-347,6
+363,7
@@
enum type_instance_flag_value
enum field_loc_kind
{
FIELD_LOC_KIND_BITPOS, /* bitpos */
enum field_loc_kind
{
FIELD_LOC_KIND_BITPOS, /* bitpos */
+ FIELD_LOC_KIND_ENUMVAL, /* enumval */
FIELD_LOC_KIND_PHYSADDR, /* physaddr */
FIELD_LOC_KIND_PHYSNAME, /* physname */
FIELD_LOC_KIND_DWARF_BLOCK /* dwarf_block */
FIELD_LOC_KIND_PHYSADDR, /* physaddr */
FIELD_LOC_KIND_PHYSNAME, /* physname */
FIELD_LOC_KIND_DWARF_BLOCK /* dwarf_block */
@@
-402,6
+419,11
@@
struct main_type
"struct". */
unsigned int flag_declared_class : 1;
"struct". */
unsigned int flag_declared_class : 1;
+ /* True if this is an enum type with disjoint values. This affects
+ how the enum is printed. */
+
+ unsigned int flag_flag_enum : 1;
+
/* A discriminant telling us which field of the type_specific union
is being used for this type, if any. */
ENUM_BITFIELD(type_specific_kind) type_specific_field : 3;
/* A discriminant telling us which field of the type_specific union
is being used for this type, if any. */
ENUM_BITFIELD(type_specific_kind) type_specific_field : 3;
@@
-427,9
+449,11
@@
struct main_type
/* Name of this type, or NULL if none.
This is used for printing only, except by poorly designed C++ code.
/* Name of this type, or NULL if none.
This is used for printing only, except by poorly designed C++ code.
- For looking up a name, look for a symbol in the VAR_DOMAIN. */
+ For looking up a name, look for a symbol in the VAR_DOMAIN.
+ This is generally allocated in the objfile's obstack.
+ However coffread.c uses malloc. */
- char *name;
+ c
onst c
har *name;
/* Tag name for this type, or NULL if none. This means that the
name of the type consists of a keyword followed by the tag name.
/* Tag name for this type, or NULL if none. This means that the
name of the type consists of a keyword followed by the tag name.
@@
-442,7
+466,7
@@
struct main_type
One more legitimate use is that if TYPE_FLAG_STUB is set, this is
the name to use to look for definitions in other files. */
One more legitimate use is that if TYPE_FLAG_STUB is set, this is
the name to use to look for definitions in other files. */
- char *tag_name;
+ c
onst c
har *tag_name;
/* Every type is now associated with a particular objfile, and the
type is allocated on the objfile_obstack for that objfile. One problem
/* Every type is now associated with a particular objfile, and the
type is allocated on the objfile_obstack for that objfile. One problem
@@
-500,11
+524,13
@@
struct main_type
containing structure. For gdbarch_bits_big_endian=1
targets, it is the bit offset to the MSB. For
gdbarch_bits_big_endian=0 targets, it is the bit offset to
containing structure. For gdbarch_bits_big_endian=1
targets, it is the bit offset to the MSB. For
gdbarch_bits_big_endian=0 targets, it is the bit offset to
- the LSB. For a range bound or enum value, this is the
- value itself. */
+ the LSB. */
int bitpos;
int bitpos;
+ /* Enum value. */
+ LONGEST enumval;
+
/* For a static field, if TYPE_FIELD_STATIC_HAS_ADDR then physaddr
is the location (in the target) of the static field.
Otherwise, physname is the mangled label of the static field. */
/* For a static field, if TYPE_FIELD_STATIC_HAS_ADDR then physaddr
is the location (in the target) of the static field.
Otherwise, physname is the mangled label of the static field. */
@@
-527,7
+553,7
@@
struct main_type
unsigned int artificial : 1;
/* Discriminant for union field_location. */
unsigned int artificial : 1;
/* Discriminant for union field_location. */
- ENUM_BITFIELD(field_loc_kind) loc_kind :
2
;
+ ENUM_BITFIELD(field_loc_kind) loc_kind :
3
;
/* Size of this field, in bits, or zero if not packed.
If non-zero in an array type, indicates the element size in
/* Size of this field, in bits, or zero if not packed.
If non-zero in an array type, indicates the element size in
@@
-535,7
+561,7
@@
struct main_type
For an unpacked field, the field's type's length
says how many bytes the field occupies. */
For an unpacked field, the field's type's length
says how many bytes the field occupies. */
- unsigned int bitsize : 2
9
;
+ unsigned int bitsize : 2
8
;
/* In a struct or union type, type of this field.
In a function or member type, type of this argument.
/* In a struct or union type, type of this field.
In a function or member type, type of this argument.
@@
-547,7
+573,7
@@
struct main_type
NULL for range bounds, array domains, and member function
arguments. */
NULL for range bounds, array domains, and member function
arguments. */
- char *name;
+ c
onst c
har *name;
} *fields;
/* Union member used for range types. */
} *fields;
/* Union member used for range types. */
@@
-695,11
+721,6
@@
struct cplus_struct_type
short nfn_fields;
short nfn_fields;
- /* Number of methods described for this type, not including the
- methods that it derives from. */
-
- short nfn_fields_total;
-
/* Number of template arguments. */
unsigned short n_template_arguments;
/* Number of template arguments. */
unsigned short n_template_arguments;
@@
-757,9
+778,11
@@
struct cplus_struct_type
struct fn_fieldlist
{
struct fn_fieldlist
{
- /* The overloaded name. */
+ /* The overloaded name.
+ This is generally allocated in the objfile's obstack.
+ However stabsread.c sometimes uses malloc. */
- char *name;
+ c
onst c
har *name;
/* The number of methods with this name. */
/* The number of methods with this name. */
@@
-858,13
+881,6
@@
struct cplus_struct_type
struct symbol **template_arguments;
};
struct symbol **template_arguments;
};
-/* Struct used in computing virtual base list. */
-struct vbase
- {
- struct type *vbasetype; /* pointer to virtual base */
- struct vbase *next; /* next in chain */
- };
-
/* Struct used to store conversion rankings. */
struct rank
{
/* Struct used to store conversion rankings. */
struct rank
{
@@
-911,6
+927,20
@@
struct func_type
struct call_site *tail_call_list;
};
struct call_site *tail_call_list;
};
+/* 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
+};
+
/* 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. */
/* 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. */
@@
-930,7
+960,7
@@
struct call_site
union field_location loc;
/* Discriminant for union field_location. */
union field_location loc;
/* Discriminant for union field_location. */
- ENUM_BITFIELD(field_loc_kind) loc_kind :
2
;
+ ENUM_BITFIELD(field_loc_kind) loc_kind :
3
;
}
target;
}
target;
@@
-944,15
+974,24
@@
struct call_site
/* Describe DW_TAG_GNU_call_site's DW_TAG_formal_parameter. */
struct call_site_parameter
{
/* Describe DW_TAG_GNU_call_site's DW_TAG_formal_parameter. */
struct call_site_parameter
{
- /* DW_TAG_formal_parameter's DW_AT_location's DW_OP_regX as DWARF
- register number, for register passed parameters. If -1 then use
- fb_offset. */
- int dwarf_reg;
+ ENUM_BITFIELD (call_site_parameter_kind) kind : 2;
- /* Offset from the callee's frame base, for stack passed parameters.
- This equals offset from the caller's stack pointer. Valid only if
- DWARF_REGNUM is -1. */
- CORE_ADDR fb_offset;
+ 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;
+ }
+ u;
/* DW_TAG_formal_parameter's DW_AT_GNU_call_site_value. It is never
NULL. */
/* DW_TAG_formal_parameter's DW_AT_GNU_call_site_value. It is never
NULL. */
@@
-1052,7
+1091,6
@@
extern void allocate_gnat_aux_type (struct type *);
#define TYPE_VPTR_FIELDNO(thistype) TYPE_MAIN_TYPE(thistype)->vptr_fieldno
#define TYPE_FN_FIELDS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->fn_fields
#define TYPE_NFN_FIELDS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->nfn_fields
#define TYPE_VPTR_FIELDNO(thistype) TYPE_MAIN_TYPE(thistype)->vptr_fieldno
#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_SPECIFIC_FIELD(thistype) \
TYPE_MAIN_TYPE(thistype)->type_specific_field
#define TYPE_TYPE_SPECIFIC(thistype) TYPE_MAIN_TYPE(thistype)->type_specific
#define TYPE_SPECIFIC_FIELD(thistype) \
TYPE_MAIN_TYPE(thistype)->type_specific_field
#define TYPE_TYPE_SPECIFIC(thistype) TYPE_MAIN_TYPE(thistype)->type_specific
@@
-1087,13
+1125,19
@@
extern void allocate_gnat_aux_type (struct type *);
#define FIELD_TYPE(thisfld) ((thisfld).type)
#define FIELD_NAME(thisfld) ((thisfld).name)
#define FIELD_LOC_KIND(thisfld) ((thisfld).loc_kind)
#define FIELD_TYPE(thisfld) ((thisfld).type)
#define FIELD_NAME(thisfld) ((thisfld).name)
#define FIELD_LOC_KIND(thisfld) ((thisfld).loc_kind)
-#define FIELD_BITPOS(thisfld) ((thisfld).loc.bitpos)
+#define FIELD_BITPOS_LVAL(thisfld) ((thisfld).loc.bitpos)
+#define FIELD_BITPOS(thisfld) (FIELD_BITPOS_LVAL (thisfld) + 0)
+#define FIELD_ENUMVAL_LVAL(thisfld) ((thisfld).loc.enumval)
+#define FIELD_ENUMVAL(thisfld) (FIELD_ENUMVAL_LVAL (thisfld) + 0)
#define FIELD_STATIC_PHYSNAME(thisfld) ((thisfld).loc.physname)
#define FIELD_STATIC_PHYSADDR(thisfld) ((thisfld).loc.physaddr)
#define FIELD_DWARF_BLOCK(thisfld) ((thisfld).loc.dwarf_block)
#define SET_FIELD_BITPOS(thisfld, bitpos) \
(FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_BITPOS, \
#define FIELD_STATIC_PHYSNAME(thisfld) ((thisfld).loc.physname)
#define FIELD_STATIC_PHYSADDR(thisfld) ((thisfld).loc.physaddr)
#define FIELD_DWARF_BLOCK(thisfld) ((thisfld).loc.dwarf_block)
#define SET_FIELD_BITPOS(thisfld, bitpos) \
(FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_BITPOS, \
- FIELD_BITPOS (thisfld) = (bitpos))
+ FIELD_BITPOS_LVAL (thisfld) = (bitpos))
+#define SET_FIELD_ENUMVAL(thisfld, enumval) \
+ (FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_ENUMVAL, \
+ FIELD_ENUMVAL_LVAL (thisfld) = (enumval))
#define SET_FIELD_PHYSNAME(thisfld, name) \
(FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_PHYSNAME, \
FIELD_STATIC_PHYSNAME (thisfld) = (name))
#define SET_FIELD_PHYSNAME(thisfld, name) \
(FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_PHYSNAME, \
FIELD_STATIC_PHYSNAME (thisfld) = (name))
@@
-1111,6
+1155,7
@@
extern void allocate_gnat_aux_type (struct type *);
#define TYPE_FIELD_NAME(thistype, n) FIELD_NAME(TYPE_FIELD(thistype, n))
#define TYPE_FIELD_LOC_KIND(thistype, n) FIELD_LOC_KIND (TYPE_FIELD (thistype, n))
#define TYPE_FIELD_BITPOS(thistype, n) FIELD_BITPOS (TYPE_FIELD (thistype, n))
#define TYPE_FIELD_NAME(thistype, n) FIELD_NAME(TYPE_FIELD(thistype, n))
#define TYPE_FIELD_LOC_KIND(thistype, n) FIELD_LOC_KIND (TYPE_FIELD (thistype, n))
#define TYPE_FIELD_BITPOS(thistype, n) FIELD_BITPOS (TYPE_FIELD (thistype, n))
+#define TYPE_FIELD_ENUMVAL(thistype, n) FIELD_ENUMVAL (TYPE_FIELD (thistype, n))
#define TYPE_FIELD_STATIC_PHYSNAME(thistype, n) FIELD_STATIC_PHYSNAME (TYPE_FIELD (thistype, n))
#define TYPE_FIELD_STATIC_PHYSADDR(thistype, n) FIELD_STATIC_PHYSADDR (TYPE_FIELD (thistype, n))
#define TYPE_FIELD_DWARF_BLOCK(thistype, n) FIELD_DWARF_BLOCK (TYPE_FIELD (thistype, n))
#define TYPE_FIELD_STATIC_PHYSNAME(thistype, n) FIELD_STATIC_PHYSNAME (TYPE_FIELD (thistype, n))
#define TYPE_FIELD_STATIC_PHYSADDR(thistype, n) FIELD_STATIC_PHYSADDR (TYPE_FIELD (thistype, n))
#define TYPE_FIELD_DWARF_BLOCK(thistype, n) FIELD_DWARF_BLOCK (TYPE_FIELD (thistype, n))
@@
-1458,7
+1503,7
@@
extern void smash_to_methodptr_type (struct type *, struct type *);
extern struct type *allocate_stub_method (struct type *);
extern struct type *allocate_stub_method (struct type *);
-extern char *type_name_no_tag (const struct type *);
+extern c
onst c
har *type_name_no_tag (const struct type *);
extern const char *type_name_no_tag_or_error (struct type *type);
extern const char *type_name_no_tag_or_error (struct type *type);
@@
-1472,6
+1517,10
@@
extern struct type *make_function_type (struct type *, struct type **);
extern struct type *lookup_function_type (struct type *);
extern struct type *lookup_function_type (struct type *);
+extern struct type *lookup_function_type_with_arguments (struct type *,
+ int,
+ struct type **);
+
extern struct type *create_range_type (struct type *, struct type *, LONGEST,
LONGEST);
extern struct type *create_range_type (struct type *, struct type *, LONGEST,
LONGEST);
@@
-1486,10
+1535,10
@@
extern struct type *lookup_string_range_type (struct type *, int, int);
extern struct type *create_set_type (struct type *, struct type *);
extern struct type *lookup_unsigned_typename (const struct language_defn *,
extern struct type *create_set_type (struct type *, struct type *);
extern struct type *lookup_unsigned_typename (const struct language_defn *,
- struct gdbarch *,char *);
+ struct gdbarch *,
const
char *);
extern struct type *lookup_signed_typename (const struct language_defn *,
extern struct type *lookup_signed_typename (const struct language_defn *,
- struct gdbarch *,char *);
+ struct gdbarch *,
const
char *);
extern struct type *check_typedef (struct type *);
extern struct type *check_typedef (struct type *);
@@
-1567,6
+1616,9
@@
extern const struct rank NULL_POINTER_CONVERSION;
/* Converting a pointer to an int is usually OK. */
extern const struct rank NS_POINTER_CONVERSION_BADNESS;
/* Converting a pointer to an int is usually OK. */
extern const struct rank NS_POINTER_CONVERSION_BADNESS;
+/* Badness of converting a (non-zero) integer constant
+ to a pointer. */
+extern const struct rank NS_INTEGER_POINTER_CONVERSION_BADNESS;
extern struct rank sum_ranks (struct rank a, struct rank b);
extern int compare_ranks (struct rank a, struct rank b);
extern struct rank sum_ranks (struct rank a, struct rank b);
extern int compare_ranks (struct rank a, struct rank b);
This page took
0.027656 seconds
and
4
git commands to generate.