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:
parent
741a7751ad
commit
8719393994
@ -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.
|
||||
|
@ -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;
|
||||
|
86
gdb/symtab.h
86
gdb/symtab.h
@ -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;
|
||||
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user