mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-02-17 13:10:12 +08:00
Approved by Jim Blandy:
2001-12-09 Fred Fish <fnf@redhat.com> * gdbtypes.h (TYPE_UNSIGNED, TYPE_NOSIGN, TYPE_CONST, TYPE_VOLATILE, TYPE_INCOMPLETE): Move macros that test the bits to location in file where the bits are defined. (TYPE_STUB, TYPE_TARGET_STUB, TYPE_STATIC, TYPE_PROTOTYPED, TYPE_CODE_SPACE, TYPE_DATA_SPACE): New test macros.
This commit is contained in:
parent
7e956337e5
commit
aa468c6030
@ -1,3 +1,11 @@
|
|||||||
|
2001-12-09 Fred Fish <fnf@redhat.com>
|
||||||
|
|
||||||
|
* gdbtypes.h (TYPE_UNSIGNED, TYPE_NOSIGN, TYPE_CONST,
|
||||||
|
TYPE_VOLATILE, TYPE_INCOMPLETE): Move macros that test the
|
||||||
|
bits to location in file where the bits are defined.
|
||||||
|
(TYPE_STUB, TYPE_TARGET_STUB, TYPE_STATIC, TYPE_PROTOTYPED,
|
||||||
|
TYPE_CODE_SPACE, TYPE_DATA_SPACE): New test macros.
|
||||||
|
|
||||||
2001-12-09 Fred Fish <fnf@redhat.com>
|
2001-12-09 Fred Fish <fnf@redhat.com>
|
||||||
|
|
||||||
* gdbtypes.c (allocate_stub_method): Replace hand crafted type
|
* gdbtypes.c (allocate_stub_method): Replace hand crafted type
|
||||||
|
@ -142,24 +142,27 @@ enum type_code
|
|||||||
|
|
||||||
#define TYPE_CODE_CLASS TYPE_CODE_STRUCT
|
#define TYPE_CODE_CLASS TYPE_CODE_STRUCT
|
||||||
|
|
||||||
/* Some bits for the type's flags word. */
|
/* Some bits for the type's flags word, and macros to test them. */
|
||||||
|
|
||||||
/* Unsigned integer type. If this is not set for a TYPE_CODE_INT, the
|
/* Unsigned integer type. If this is not set for a TYPE_CODE_INT, the
|
||||||
type is signed (unless TYPE_FLAG_NOSIGN (below) is set). */
|
type is signed (unless TYPE_FLAG_NOSIGN (below) is set). */
|
||||||
|
|
||||||
#define TYPE_FLAG_UNSIGNED (1 << 0)
|
#define TYPE_FLAG_UNSIGNED (1 << 0)
|
||||||
|
#define TYPE_UNSIGNED(t) ((t)->flags & TYPE_FLAG_UNSIGNED)
|
||||||
|
|
||||||
/* No sign for this type. In C++, "char", "signed char", and "unsigned
|
/* 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
|
char" are distinct types; so we need an extra flag to indicate the
|
||||||
absence of a sign! */
|
absence of a sign! */
|
||||||
|
|
||||||
#define TYPE_FLAG_NOSIGN (1 << 1)
|
#define TYPE_FLAG_NOSIGN (1 << 1)
|
||||||
|
#define TYPE_NOSIGN(t) ((t)->flags & TYPE_FLAG_NOSIGN)
|
||||||
|
|
||||||
/* This appears in a type's flags word if it is a stub type (e.g., if
|
/* 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
|
someone referenced a type that wasn't defined in a source file
|
||||||
via (struct sir_not_appearing_in_this_film *)). */
|
via (struct sir_not_appearing_in_this_film *)). */
|
||||||
|
|
||||||
#define TYPE_FLAG_STUB (1 << 2)
|
#define TYPE_FLAG_STUB (1 << 2)
|
||||||
|
#define TYPE_STUB(t) ((t)->flags & TYPE_FLAG_STUB)
|
||||||
|
|
||||||
/* The target type of this type is a stub type, and this type needs to
|
/* The target type of this type is a stub type, and this type needs to
|
||||||
be updated if it gets un-stubbed in check_typedef.
|
be updated if it gets un-stubbed in check_typedef.
|
||||||
@ -167,7 +170,8 @@ enum type_code
|
|||||||
gets set based on the TYPE_LENGTH of the target type.
|
gets set based on the TYPE_LENGTH of the target type.
|
||||||
Also, set for TYPE_CODE_TYPEDEF. */
|
Also, set for TYPE_CODE_TYPEDEF. */
|
||||||
|
|
||||||
#define TYPE_FLAG_TARGET_STUB (1 << 3)
|
#define TYPE_FLAG_TARGET_STUB (1 << 3)
|
||||||
|
#define TYPE_TARGET_STUB(t) ((t)->flags & TYPE_FLAG_TARGET_STUB)
|
||||||
|
|
||||||
/* Static type. If this is set, the corresponding type had
|
/* Static type. If this is set, the corresponding type had
|
||||||
* a static modifier.
|
* a static modifier.
|
||||||
@ -175,26 +179,30 @@ enum type_code
|
|||||||
* are indicated by other means (bitpos == -1)
|
* are indicated by other means (bitpos == -1)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define TYPE_FLAG_STATIC (1 << 4)
|
#define TYPE_FLAG_STATIC (1 << 4)
|
||||||
|
#define TYPE_STATIC(t) ((t)->flags & TYPE_FLAG_STATIC)
|
||||||
|
|
||||||
/* Constant type. If this is set, the corresponding type has a
|
/* Constant type. If this is set, the corresponding type has a
|
||||||
* const modifier.
|
* const modifier.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define TYPE_FLAG_CONST (1 << 5)
|
#define TYPE_FLAG_CONST (1 << 5)
|
||||||
|
#define TYPE_CONST(t) ((t)->flags & TYPE_FLAG_CONST)
|
||||||
|
|
||||||
/* Volatile type. If this is set, the corresponding type has a
|
/* Volatile type. If this is set, the corresponding type has a
|
||||||
* volatile modifier.
|
* volatile modifier.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define TYPE_FLAG_VOLATILE (1 << 6)
|
#define TYPE_FLAG_VOLATILE (1 << 6)
|
||||||
|
#define TYPE_VOLATILE(t) ((t)->flags & TYPE_FLAG_VOLATILE)
|
||||||
|
|
||||||
|
|
||||||
/* This is a function type which appears to have a prototype. We need this
|
/* 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,
|
for function calls in order to tell us if it's necessary to coerce the args,
|
||||||
or to just do the standard conversions. This is used with a short field. */
|
or to just do the standard conversions. This is used with a short field. */
|
||||||
|
|
||||||
#define TYPE_FLAG_PROTOTYPED (1 << 7)
|
#define TYPE_FLAG_PROTOTYPED (1 << 7)
|
||||||
|
#define TYPE_PROTOTYPED(t) ((t)->flags & TYPE_FLAG_PROTOTYPED)
|
||||||
|
|
||||||
/* This flag is used to indicate that processing for this type
|
/* This flag is used to indicate that processing for this type
|
||||||
is incomplete.
|
is incomplete.
|
||||||
@ -204,7 +212,8 @@ enum type_code
|
|||||||
info; the incomplete type has to be marked so that the class and
|
info; the incomplete type has to be marked so that the class and
|
||||||
the method can be assigned correct types.) */
|
the method can be assigned correct types.) */
|
||||||
|
|
||||||
#define TYPE_FLAG_INCOMPLETE (1 << 8)
|
#define TYPE_FLAG_INCOMPLETE (1 << 8)
|
||||||
|
#define TYPE_INCOMPLETE(t) ((t)->flags & TYPE_FLAG_INCOMPLETE)
|
||||||
|
|
||||||
/* Instruction-space delimited type. This is for Harvard architectures
|
/* Instruction-space delimited type. This is for Harvard architectures
|
||||||
which have separate instruction and data address spaces (and perhaps
|
which have separate instruction and data address spaces (and perhaps
|
||||||
@ -225,15 +234,19 @@ enum type_code
|
|||||||
If neither flag is set, the default space for functions / methods
|
If neither flag is set, the default space for functions / methods
|
||||||
is instruction space, and for data objects is data memory. */
|
is instruction space, and for data objects is data memory. */
|
||||||
|
|
||||||
#define TYPE_FLAG_CODE_SPACE (1 << 9)
|
#define TYPE_FLAG_CODE_SPACE (1 << 9)
|
||||||
#define TYPE_FLAG_DATA_SPACE (1 << 10)
|
#define TYPE_CODE_SPACE(t) ((t)->flags & TYPE_FLAG_CODE_SPACE)
|
||||||
|
|
||||||
|
#define TYPE_FLAG_DATA_SPACE (1 << 10)
|
||||||
|
#define TYPE_DATA_SPACE(t) ((t)->flags & TYPE_FLAG_DATA_SPACE)
|
||||||
|
|
||||||
/* FIXME: Kludge to mark a varargs function type for C++ member
|
/* FIXME: Kludge to mark a varargs function type for C++ member
|
||||||
function argument processing. Currently only used in dwarf2read.c,
|
function argument processing. Currently only used in dwarf2read.c,
|
||||||
but put it here so we won't accidentally overload the bit with
|
but put it here so we won't accidentally overload the bit with
|
||||||
another flag. */
|
another flag. */
|
||||||
|
|
||||||
#define TYPE_FLAG_VARARGS (1 << 11)
|
#define TYPE_FLAG_VARARGS (1 << 11)
|
||||||
|
#define TYPE_VARARGS(t) ((t)->flags & TYPE_FLAG_VARARGS)
|
||||||
|
|
||||||
struct type
|
struct type
|
||||||
{
|
{
|
||||||
@ -731,12 +744,7 @@ extern void allocate_cplus_struct_type (struct type *);
|
|||||||
#define TYPE_LENGTH(thistype) (thistype)->length
|
#define TYPE_LENGTH(thistype) (thistype)->length
|
||||||
#define TYPE_OBJFILE(thistype) (thistype)->objfile
|
#define TYPE_OBJFILE(thistype) (thistype)->objfile
|
||||||
#define TYPE_FLAGS(thistype) (thistype)->flags
|
#define TYPE_FLAGS(thistype) (thistype)->flags
|
||||||
#define TYPE_UNSIGNED(thistype) ((thistype)->flags & TYPE_FLAG_UNSIGNED)
|
/* Note that TYPE_CODE can be TYPE_CODE_TYPEDEF, so if you want the real
|
||||||
#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)). */
|
type, you need to do TYPE_CODE (check_type (this_type)). */
|
||||||
#define TYPE_CODE(thistype) (thistype)->code
|
#define TYPE_CODE(thistype) (thistype)->code
|
||||||
#define TYPE_NFIELDS(thistype) (thistype)->nfields
|
#define TYPE_NFIELDS(thistype) (thistype)->nfields
|
||||||
|
Loading…
Reference in New Issue
Block a user