Use macros for some enum bit field sizes.
gdb/ChangeLog: * defs.h (LANGUAGE_BITS): Define. * psympriv.h (partial_symbol) <domain>: Use SYMBOL_DOMAIN_BITS. (partial_symbol) <aclass>: Use SYMBOL_ACLASS_BITS. * symtab.h (general_symbol_info> <language>: Usage LANGUAGE_BITS. (minimal_symbol_type): Add nr_minsym_types. (MINSYM_TYPE_BITS): Define. (minimal_symbol) <type>: Use MINSYM_TYPE_BITS. (domain_enum_tag): Add NR_DOMAINS. (SYMBOL_DOMAIN_BITS): Change from 4 to 3. (SYMBOL_ACLASS_BITS): Define from 6 to 5.
This commit is contained in:
parent
95cf586902
commit
51cdc99310
|
@ -1,3 +1,16 @@
|
|||
2015-08-15 Doug Evans <xdje42@gmail.com>
|
||||
|
||||
* defs.h (LANGUAGE_BITS): Define.
|
||||
* psympriv.h (partial_symbol) <domain>: Use SYMBOL_DOMAIN_BITS.
|
||||
(partial_symbol) <aclass>: Use SYMBOL_ACLASS_BITS.
|
||||
* symtab.h (general_symbol_info> <language>: Usage LANGUAGE_BITS.
|
||||
(minimal_symbol_type): Add nr_minsym_types.
|
||||
(MINSYM_TYPE_BITS): Define.
|
||||
(minimal_symbol) <type>: Use MINSYM_TYPE_BITS.
|
||||
(domain_enum_tag): Add NR_DOMAINS.
|
||||
(SYMBOL_DOMAIN_BITS): Change from 4 to 3.
|
||||
(SYMBOL_ACLASS_BITS): Define from 6 to 5.
|
||||
|
||||
2015-08-15 Doug Evans <xdje42@gmail.com>
|
||||
|
||||
* objfiles.h: Whitespace cleanup.
|
||||
|
|
|
@ -186,6 +186,11 @@ enum language
|
|||
nr_languages
|
||||
};
|
||||
|
||||
/* The number of bits needed to represent all languages, with enough
|
||||
padding to allow for reasonable growth. */
|
||||
#define LANGUAGE_BITS 5
|
||||
gdb_static_assert (nr_languages <= (1 << LANGUAGE_BITS));
|
||||
|
||||
enum precision_type
|
||||
{
|
||||
single_precision,
|
||||
|
|
|
@ -42,13 +42,13 @@ struct partial_symbol
|
|||
|
||||
/* Name space code. */
|
||||
|
||||
ENUM_BITFIELD(domain_enum_tag) domain : 6;
|
||||
ENUM_BITFIELD(domain_enum_tag) domain : SYMBOL_DOMAIN_BITS;
|
||||
|
||||
/* Address class (for info_symbols). Note that we don't allow
|
||||
synthetic "aclass" values here at present, simply because there's
|
||||
no need. */
|
||||
|
||||
ENUM_BITFIELD(address_class) aclass : 6;
|
||||
ENUM_BITFIELD(address_class) aclass : SYMBOL_ACLASS_BITS;
|
||||
};
|
||||
|
||||
#define PSYMBOL_DOMAIN(psymbol) (psymbol)->domain
|
||||
|
|
36
gdb/symtab.h
36
gdb/symtab.h
|
@ -149,7 +149,7 @@ struct general_symbol_info
|
|||
This is used to select one of the fields from the language specific
|
||||
union above. */
|
||||
|
||||
ENUM_BITFIELD(language) language : 8;
|
||||
ENUM_BITFIELD(language) language : LANGUAGE_BITS;
|
||||
|
||||
/* This is only used by Ada. If set, then the 'mangled_lang' field
|
||||
of language_specific is valid. Otherwise, the 'obstack' field is
|
||||
|
@ -309,9 +309,15 @@ enum minimal_symbol_type
|
|||
within a given .o file. */
|
||||
mst_file_text, /* Static version of mst_text */
|
||||
mst_file_data, /* Static version of mst_data */
|
||||
mst_file_bss /* Static version of mst_bss */
|
||||
mst_file_bss, /* Static version of mst_bss */
|
||||
nr_minsym_types
|
||||
};
|
||||
|
||||
/* The number of enum minimal_symbol_type values, with some padding for
|
||||
reasonable growth. */
|
||||
#define MINSYM_TYPE_BITS 4
|
||||
gdb_static_assert (nr_minsym_types <= (1 << MINSYM_TYPE_BITS));
|
||||
|
||||
/* Define a simple structure used to hold some very basic information about
|
||||
all defined global symbols (text, data, bss, abs, etc). The only required
|
||||
information is the general_symbol_info.
|
||||
|
@ -345,7 +351,7 @@ struct minimal_symbol
|
|||
|
||||
/* Classification type for this minimal symbol. */
|
||||
|
||||
ENUM_BITFIELD(minimal_symbol_type) type : 8;
|
||||
ENUM_BITFIELD(minimal_symbol_type) type : MINSYM_TYPE_BITS;
|
||||
|
||||
/* Non-zero if this symbol was created by gdb.
|
||||
Such symbols do not appear in the output of "info var|fun". */
|
||||
|
@ -460,12 +466,16 @@ typedef enum domain_enum_tag
|
|||
|
||||
/* Fortran common blocks. Their naming must be separate from VAR_DOMAIN.
|
||||
They also always use LOC_COMMON_BLOCK. */
|
||||
COMMON_BLOCK_DOMAIN
|
||||
COMMON_BLOCK_DOMAIN,
|
||||
|
||||
/* This must remain last. */
|
||||
NR_DOMAINS
|
||||
} domain_enum;
|
||||
|
||||
/* The number of bits in a symbol used to represent the domain. */
|
||||
|
||||
#define SYMBOL_DOMAIN_BITS 4
|
||||
#define SYMBOL_DOMAIN_BITS 3
|
||||
gdb_static_assert (NR_DOMAINS <= (1 << SYMBOL_DOMAIN_BITS));
|
||||
|
||||
extern const char *domain_name (domain_enum);
|
||||
|
||||
|
@ -595,6 +605,15 @@ enum address_class
|
|||
LOC_FINAL_VALUE
|
||||
};
|
||||
|
||||
/* The number of bits needed for values in enum address_class, with some
|
||||
padding for reasonable growth, and room for run-time registered address
|
||||
classes. See symtab.c:MAX_SYMBOL_IMPLS.
|
||||
This is a #define so that we can have a assertion elsewhere to
|
||||
verify that we have reserved enough space for synthetic address
|
||||
classes. */
|
||||
#define SYMBOL_ACLASS_BITS 5
|
||||
gdb_static_assert (LOC_FINAL_VALUE <= (1 << SYMBOL_ACLASS_BITS));
|
||||
|
||||
/* The methods needed to implement LOC_COMPUTED. These methods can
|
||||
use the symbol's .aux_value for additional per-symbol information.
|
||||
|
||||
|
@ -693,13 +712,6 @@ struct symbol_impl
|
|||
const struct symbol_register_ops *ops_register;
|
||||
};
|
||||
|
||||
/* The number of bits we reserve in a symbol for the aclass index.
|
||||
This is a #define so that we can have a assertion elsewhere to
|
||||
verify that we have reserved enough space for synthetic address
|
||||
classes. */
|
||||
|
||||
#define SYMBOL_ACLASS_BITS 6
|
||||
|
||||
/* This structure is space critical. See space comments at the top. */
|
||||
|
||||
struct symbol
|
||||
|
|
Loading…
Reference in New Issue