2003-08-20 Michael Chastain <mec@shout.net>

* defs.h (ENUM_BITFIELD): New macro.
	* symtab.h (ENUM_BITFIELD): Use it.
	(BYTE_BITFIELD): Remove old macro, which was already disabled.
This commit is contained in:
Michael Chastain 2003-08-20 17:39:18 +00:00
parent 741a7751ad
commit 8719393994
3 changed files with 54 additions and 47 deletions

View File

@ -1,3 +1,9 @@
2003-08-20 Michael Chastain <mec@shout.net>
* defs.h (ENUM_BITFIELD): New macro.
* symtab.h (ENUM_BITFIELD): Use it.
(BYTE_BITFIELD): Remove old macro, which was already disabled.
2003-08-19 Shrinivas Atre <shrinivasa@kpitcummins.com>
* MAINTAINERS (write after approval): Add myself.

View File

@ -285,6 +285,15 @@ struct cleanup
#endif
#endif
/* Be conservative and use enum bitfields only with GCC.
This is copied from gcc 3.3.1, system.h. */
#if defined(__GNUC__) && (__GNUC__ >= 2)
#define ENUM_BITFIELD(TYPE) enum TYPE
#else
#define ENUM_BITFIELD(TYPE) unsigned int
#endif
/* Needed for various prototypes */
struct symtab;

View File

@ -35,17 +35,6 @@ struct blockvector;
struct axs_value;
struct agent_expr;
/* Don't do this; it means that if some .o's are compiled with GNU C
and some are not (easy to do accidentally the way we configure
things; also it is a pain to have to "make clean" every time you
want to switch compilers), then GDB dies a horrible death. */
/* GNU C supports enums that are bitfields. Some compilers don't. */
#if 0 && defined(__GNUC__) && !defined(BYTE_BITFIELD)
#define BYTE_BITFIELD :8;
#else
#define BYTE_BITFIELD /*nothing */
#endif
/* Define a structure for the information that is common to all symbol types,
including minimal symbols, partial symbols, and full symbols. In a
multilanguage environment, some language specific information may need to
@ -107,7 +96,7 @@ struct general_symbol_info
This is used to select one of the fields from the language specific
union above. */
enum language language BYTE_BITFIELD;
ENUM_BITFIELD(language) language : 8;
/* Which section is this symbol in? This is an index into
section_offsets for this objfile. Negative means that the symbol
@ -227,6 +216,37 @@ extern char *symbol_demangled_name (struct general_symbol_info *symbol);
#define SYMBOL_MATCHES_NATURAL_NAME(symbol, name) \
(strcmp_iw (SYMBOL_NATURAL_NAME (symbol), (name)) == 0)
/* Classification types for a minimal symbol. These should be taken as
"advisory only", since if gdb can't easily figure out a
classification it simply selects mst_unknown. It may also have to
guess when it can't figure out which is a better match between two
types (mst_data versus mst_bss) for example. Since the minimal
symbol info is sometimes derived from the BFD library's view of a
file, we need to live with what information bfd supplies. */
enum minimal_symbol_type
{
mst_unknown = 0, /* Unknown type, the default */
mst_text, /* Generally executable instructions */
mst_data, /* Generally initialized data */
mst_bss, /* Generally uninitialized data */
mst_abs, /* Generally absolute (nonrelocatable) */
/* GDB uses mst_solib_trampoline for the start address of a shared
library trampoline entry. Breakpoints for shared library functions
are put there if the shared library is not yet loaded.
After the shared library is loaded, lookup_minimal_symbol will
prefer the minimal symbol from the shared library (usually
a mst_text symbol) over the mst_solib_trampoline symbol, and the
breakpoints will be moved to their true address in the shared
library via breakpoint_re_set. */
mst_solib_trampoline, /* Shared library trampoline code */
/* For the mst_file* types, the names are only guaranteed to be unique
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 */
};
/* 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.
@ -268,37 +288,9 @@ struct minimal_symbol
char *filename;
#endif
/* Classification types for this symbol. These should be taken as "advisory
only", since if gdb can't easily figure out a classification it simply
selects mst_unknown. It may also have to guess when it can't figure out
which is a better match between two types (mst_data versus mst_bss) for
example. Since the minimal symbol info is sometimes derived from the
BFD library's view of a file, we need to live with what information bfd
supplies. */
/* Classification type for this minimal symbol. */
enum minimal_symbol_type
{
mst_unknown = 0, /* Unknown type, the default */
mst_text, /* Generally executable instructions */
mst_data, /* Generally initialized data */
mst_bss, /* Generally uninitialized data */
mst_abs, /* Generally absolute (nonrelocatable) */
/* GDB uses mst_solib_trampoline for the start address of a shared
library trampoline entry. Breakpoints for shared library functions
are put there if the shared library is not yet loaded.
After the shared library is loaded, lookup_minimal_symbol will
prefer the minimal symbol from the shared library (usually
a mst_text symbol) over the mst_solib_trampoline symbol, and the
breakpoints will be moved to their true address in the shared
library via breakpoint_re_set. */
mst_solib_trampoline, /* Shared library trampoline code */
/* For the mst_file* types, the names are only guaranteed to be unique
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 */
}
type BYTE_BITFIELD;
ENUM_BITFIELD(minimal_symbol_type) type : 8;
/* Minimal symbols with the same hash key are kept on a linked
list. This is the link. */
@ -321,7 +313,7 @@ struct minimal_symbol
/* Different name domains for symbols. Looking up a symbol specifies a
domain and ignores symbol definitions in other name domains. */
typedef enum
typedef enum domain_enum_tag
{
/* UNDEF_DOMAIN is used when a domain has not been discovered or
none of the following apply. This usually indicates an error either
@ -578,11 +570,11 @@ struct symbol
/* Domain code. */
domain_enum domain BYTE_BITFIELD;
ENUM_BITFIELD(domain_enum_tag) domain : 6;
/* Address class */
enum address_class aclass BYTE_BITFIELD;
ENUM_BITFIELD(address_class) aclass : 6;
/* Line number of definition. FIXME: Should we really make the assumption
that nobody will try to debug files longer than 64K lines? What about
@ -655,11 +647,11 @@ struct partial_symbol
/* Name space code. */
domain_enum domain BYTE_BITFIELD;
ENUM_BITFIELD(domain_enum_tag) domain : 6;
/* Address class (for info_symbols) */
enum address_class aclass BYTE_BITFIELD;
ENUM_BITFIELD(address_class) aclass : 6;
};