From b887350fc5f89f8951fbb78fdcab520a37fa37ce Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Wed, 1 Oct 2008 16:41:27 +0000 Subject: [PATCH] * xcoffread.c (RECORD_MINIMAL_SYMBOL): Update. (scan_xcoff_symtab): Update. * mdebugread.c (record_minimal_symbol): Update. (parse_partial_symbols): Update. * elfread.c (record_minimal_symbol): Update. * dbxread.c (record_minimal_symbol): Update. * coffread.c (record_minimal_symbol): Update. * sh64-tdep.c (MSYMBOL_IS_SPECIAL): Redefine. (sh64_elf_make_msymbol_special): Update. * mips-tdep.c (mips_elf_make_msymbol_special): Use MSYMBOL_TARGET_FLAG_1. (mips_elf_make_msymbol_special): Likewise. (msymbol_is_special): Likewise. * minsyms.c (prim_record_minimal_symbol_and_info): Update. (install_minimal_symbols): Likewise. (prim_record_minimal_symbol): Update. (prim_record_minimal_symbol_and_info): Remove 'info' argument. * m68hc11-tdep.c (MSYMBOL_SET_RTC): Redefine. (MSYMBOL_SET_RTI): Redefine. (MSYMBOL_IS_RTC): Redefine. (MSYMBOL_IS_RTI): Redefine. * arm-tdep.c (MSYMBOL_SET_SPECIAL): Redefine. (MSYMBOL_IS_SPECIAL): Redefine. * symtab.h (struct minimal_symbol) : Remove. : New fields. (MSYMBOL_INFO): Remove. (MSYMBOL_TARGET_FLAG_1): New macro. (MSYMBOL_TARGET_FLAG_2): Likewise. (prim_record_minimal_symbol_and_info): Update. --- gdb/ChangeLog | 32 ++++++++++++++++++++++++++++++++ gdb/arm-tdep.c | 5 ++--- gdb/coffread.c | 2 +- gdb/dbxread.c | 2 +- gdb/elfread.c | 2 +- gdb/m68hc11-tdep.c | 10 ++++------ gdb/mdebugread.c | 8 ++++---- gdb/minsyms.c | 11 ++++++----- gdb/mips-tdep.c | 5 ++--- gdb/sh64-tdep.c | 4 ++-- gdb/symtab.h | 24 +++++++----------------- gdb/xcoffread.c | 8 ++++---- 12 files changed, 66 insertions(+), 47 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 7b255cafe11..adb019940cf 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,35 @@ +2008-10-01 Tom Tromey + + * xcoffread.c (RECORD_MINIMAL_SYMBOL): Update. + (scan_xcoff_symtab): Update. + * mdebugread.c (record_minimal_symbol): Update. + (parse_partial_symbols): Update. + * elfread.c (record_minimal_symbol): Update. + * dbxread.c (record_minimal_symbol): Update. + * coffread.c (record_minimal_symbol): Update. + * sh64-tdep.c (MSYMBOL_IS_SPECIAL): Redefine. + (sh64_elf_make_msymbol_special): Update. + * mips-tdep.c (mips_elf_make_msymbol_special): Use + MSYMBOL_TARGET_FLAG_1. + (mips_elf_make_msymbol_special): Likewise. + (msymbol_is_special): Likewise. + * minsyms.c (prim_record_minimal_symbol_and_info): Update. + (install_minimal_symbols): Likewise. + (prim_record_minimal_symbol): Update. + (prim_record_minimal_symbol_and_info): Remove 'info' argument. + * m68hc11-tdep.c (MSYMBOL_SET_RTC): Redefine. + (MSYMBOL_SET_RTI): Redefine. + (MSYMBOL_IS_RTC): Redefine. + (MSYMBOL_IS_RTI): Redefine. + * arm-tdep.c (MSYMBOL_SET_SPECIAL): Redefine. + (MSYMBOL_IS_SPECIAL): Redefine. + * symtab.h (struct minimal_symbol) : Remove. + : New fields. + (MSYMBOL_INFO): Remove. + (MSYMBOL_TARGET_FLAG_1): New macro. + (MSYMBOL_TARGET_FLAG_2): Likewise. + (prim_record_minimal_symbol_and_info): Update. + 2008-09-30 Joel Brobecker * ada-lang.c (is_digits_suffix): Delete unused function. diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c index 7ffc8858867..4e85bed6072 100644 --- a/gdb/arm-tdep.c +++ b/gdb/arm-tdep.c @@ -63,11 +63,10 @@ static int arm_debug; MSYMBOL_IS_SPECIAL Tests the "special" bit in a minimal symbol. */ #define MSYMBOL_SET_SPECIAL(msym) \ - MSYMBOL_INFO (msym) = (char *) (((long) MSYMBOL_INFO (msym)) \ - | 0x80000000) + MSYMBOL_TARGET_FLAG_1 (msym) = 1 #define MSYMBOL_IS_SPECIAL(msym) \ - (((long) MSYMBOL_INFO (msym) & 0x80000000) != 0) + MSYMBOL_TARGET_FLAG_1 (msym) /* Macros for swapping shorts and ints. In the unlikely case that anybody else needs these, move to a general header. (A better solution might be to define memory read routines that diff --git a/gdb/coffread.c b/gdb/coffread.c index de81d47ec48..4d8ef8a0eeb 100644 --- a/gdb/coffread.c +++ b/gdb/coffread.c @@ -421,7 +421,7 @@ record_minimal_symbol (struct coff_symbol *cs, CORE_ADDR address, bfd_section = cs_to_bfd_section (cs, objfile); return prim_record_minimal_symbol_and_info (cs->c_name, address, type, - NULL, section, bfd_section, objfile); + section, bfd_section, objfile); } /* coff_symfile_init () diff --git a/gdb/dbxread.c b/gdb/dbxread.c index 25ec3130660..dde922a6344 100644 --- a/gdb/dbxread.c +++ b/gdb/dbxread.c @@ -514,7 +514,7 @@ record_minimal_symbol (char *name, CORE_ADDR address, int type, lowest_text_address = address; prim_record_minimal_symbol_and_info - (name, address, ms_type, NULL, section, bfd_section, objfile); + (name, address, ms_type, section, bfd_section, objfile); } /* Scan and build partial symbols for a symbol file. diff --git a/gdb/elfread.c b/gdb/elfread.c index 17f86baf903..22f4e5d2c32 100644 --- a/gdb/elfread.c +++ b/gdb/elfread.c @@ -172,7 +172,7 @@ record_minimal_symbol (char *name, CORE_ADDR address, address = gdbarch_smash_text_address (gdbarch, address); return prim_record_minimal_symbol_and_info - (name, address, ms_type, NULL, bfd_section->index, bfd_section, objfile); + (name, address, ms_type, bfd_section->index, bfd_section, objfile); } /* diff --git a/gdb/m68hc11-tdep.c b/gdb/m68hc11-tdep.c index 7bd6e698ff3..1913333a855 100644 --- a/gdb/m68hc11-tdep.c +++ b/gdb/m68hc11-tdep.c @@ -59,18 +59,16 @@ MSYMBOL_IS_RTI Tests the "RTC" bit in a minimal symbol. */ #define MSYMBOL_SET_RTC(msym) \ - MSYMBOL_INFO (msym) = (char *) (((long) MSYMBOL_INFO (msym)) \ - | 0x80000000) + MSYMBOL_TARGET_FLAG_1 (msym) = 1 #define MSYMBOL_SET_RTI(msym) \ - MSYMBOL_INFO (msym) = (char *) (((long) MSYMBOL_INFO (msym)) \ - | 0x40000000) + MSYMBOL_TARGET_FLAG_2 (msym) = 1 #define MSYMBOL_IS_RTC(msym) \ - (((long) MSYMBOL_INFO (msym) & 0x80000000) != 0) + MSYMBOL_TARGET_FLAG_1 (msym) #define MSYMBOL_IS_RTI(msym) \ - (((long) MSYMBOL_INFO (msym) & 0x40000000) != 0) + MSYMBOL_TARGET_FLAG_2 (msym) enum insn_return_kind { RETURN_RTS, diff --git a/gdb/mdebugread.c b/gdb/mdebugread.c index ede6fce235a..280700835bf 100644 --- a/gdb/mdebugread.c +++ b/gdb/mdebugread.c @@ -2211,7 +2211,7 @@ record_minimal_symbol (const char *name, const CORE_ADDR address, bfd_section = NULL; } - prim_record_minimal_symbol_and_info (name, address, ms_type, NULL, + prim_record_minimal_symbol_and_info (name, address, ms_type, section, bfd_section, objfile); } @@ -3340,7 +3340,7 @@ parse_partial_symbols (struct objfile *objfile) case stStaticProc: prim_record_minimal_symbol_and_info (name, sh.value, - mst_file_text, NULL, + mst_file_text, SECT_OFF_TEXT (objfile), NULL, objfile); @@ -3426,13 +3426,13 @@ parse_partial_symbols (struct objfile *objfile) case stStatic: /* Variable */ if (SC_IS_DATA (sh.sc)) prim_record_minimal_symbol_and_info (name, sh.value, - mst_file_data, NULL, + mst_file_data, SECT_OFF_DATA (objfile), NULL, objfile); else prim_record_minimal_symbol_and_info (name, sh.value, - mst_file_bss, NULL, + mst_file_bss, SECT_OFF_BSS (objfile), NULL, objfile); diff --git a/gdb/minsyms.c b/gdb/minsyms.c index 4069e6fb10a..71d56cb5088 100644 --- a/gdb/minsyms.c +++ b/gdb/minsyms.c @@ -725,7 +725,7 @@ prim_record_minimal_symbol (const char *name, CORE_ADDR address, } prim_record_minimal_symbol_and_info (name, address, ms_type, - NULL, section, NULL, objfile); + section, NULL, objfile); } /* Record a minimal symbol in the msym bunches. Returns the symbol @@ -734,7 +734,7 @@ prim_record_minimal_symbol (const char *name, CORE_ADDR address, struct minimal_symbol * prim_record_minimal_symbol_and_info (const char *name, CORE_ADDR address, enum minimal_symbol_type ms_type, - char *info, int section, + int section, asection *bfd_section, struct objfile *objfile) { @@ -788,8 +788,8 @@ prim_record_minimal_symbol_and_info (const char *name, CORE_ADDR address, } MSYMBOL_TYPE (msymbol) = ms_type; - /* FIXME: This info, if it remains, needs its own field. */ - MSYMBOL_INFO (msymbol) = info; /* FIXME! */ + MSYMBOL_TARGET_FLAG_1 (msymbol) = 0; + MSYMBOL_TARGET_FLAG_2 (msymbol) = 0; MSYMBOL_SIZE (msymbol) = 0; /* The hash pointers must be cleared! If they're not, @@ -1061,7 +1061,8 @@ install_minimal_symbols (struct objfile *objfile) SYMBOL_LINKAGE_NAME (&msymbols[mcount]) = NULL; SYMBOL_VALUE_ADDRESS (&msymbols[mcount]) = 0; - MSYMBOL_INFO (&msymbols[mcount]) = NULL; + MSYMBOL_TARGET_FLAG_1 (&msymbols[mcount]) = 0; + MSYMBOL_TARGET_FLAG_2 (&msymbols[mcount]) = 0; MSYMBOL_SIZE (&msymbols[mcount]) = 0; MSYMBOL_TYPE (&msymbols[mcount]) = mst_unknown; SYMBOL_INIT_LANGUAGE_SPECIFIC (&msymbols[mcount], language_unknown); diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c index 2556e0e80ec..3a3a78ace59 100644 --- a/gdb/mips-tdep.c +++ b/gdb/mips-tdep.c @@ -253,8 +253,7 @@ mips_elf_make_msymbol_special (asymbol * sym, struct minimal_symbol *msym) { if (((elf_symbol_type *) (sym))->internal_elf_sym.st_other == STO_MIPS16) { - MSYMBOL_INFO (msym) = (char *) - (((long) MSYMBOL_INFO (msym)) | 0x80000000); + MSYMBOL_TARGET_FLAG_1 (msym) = 1; SYMBOL_VALUE_ADDRESS (msym) |= 1; } } @@ -262,7 +261,7 @@ mips_elf_make_msymbol_special (asymbol * sym, struct minimal_symbol *msym) static int msymbol_is_special (struct minimal_symbol *msym) { - return (((long) MSYMBOL_INFO (msym) & 0x80000000) != 0); + return MSYMBOL_TARGET_FLAG_1 (msym); } /* XFER a value from the big/little/left end of the register. diff --git a/gdb/sh64-tdep.c b/gdb/sh64-tdep.c index 7fd9c94b957..474d49ad838 100644 --- a/gdb/sh64-tdep.c +++ b/gdb/sh64-tdep.c @@ -211,7 +211,7 @@ sh64_register_name (struct gdbarch *gdbarch, int reg_nr) MSYMBOL_IS_SPECIAL tests the "special" bit in a minimal symbol */ #define MSYMBOL_IS_SPECIAL(msym) \ - (((long) MSYMBOL_INFO (msym) & 0x80000000) != 0) + MSYMBOL_TARGET_FLAG_1 (msym) static void sh64_elf_make_msymbol_special (asymbol *sym, struct minimal_symbol *msym) @@ -221,7 +221,7 @@ sh64_elf_make_msymbol_special (asymbol *sym, struct minimal_symbol *msym) if (((elf_symbol_type *)(sym))->internal_elf_sym.st_other == STO_SH5_ISA32) { - MSYMBOL_INFO (msym) = (char *) (((long) MSYMBOL_INFO (msym)) | 0x80000000); + MSYMBOL_TARGET_FLAG_1 (msym) = 1; SYMBOL_VALUE_ADDRESS (msym) |= 1; } } diff --git a/gdb/symtab.h b/gdb/symtab.h index c124242e327..c5ac732df98 100644 --- a/gdb/symtab.h +++ b/gdb/symtab.h @@ -319,21 +319,6 @@ struct minimal_symbol struct general_symbol_info ginfo; - /* The info field is available for caching machine-specific - information so it doesn't have to rederive the info constantly - (over a serial line). It is initialized to zero and stays that - way until target-dependent code sets it. Storage for any data - pointed to by this field should be allocated on the - objfile_obstack for the associated objfile. The type would be - "void *" except for reasons of compatibility with older - compilers. This field is optional. - - Currently, the AMD 29000 tdep.c uses it to remember things it has decoded - from the instructions in the function header, and the MIPS-16 code uses - it to identify 16-bit procedures. */ - - char *info; - /* Size of this symbol. end_psymtab in dbxread.c uses this information to calculate the end of the partial symtab based on the address of the last symbol plus the size of the last symbol. */ @@ -347,6 +332,10 @@ struct minimal_symbol ENUM_BITFIELD(minimal_symbol_type) type : 8; + /* Two flag bits provided for the use of the target. */ + unsigned int target_flag_1 : 1; + unsigned int target_flag_2 : 1; + /* Minimal symbols with the same hash key are kept on a linked list. This is the link. */ @@ -358,7 +347,8 @@ struct minimal_symbol struct minimal_symbol *demangled_hash_next; }; -#define MSYMBOL_INFO(msymbol) (msymbol)->info +#define MSYMBOL_TARGET_FLAG_1(msymbol) (msymbol)->target_flag_1 +#define MSYMBOL_TARGET_FLAG_2(msymbol) (msymbol)->target_flag_2 #define MSYMBOL_SIZE(msymbol) (msymbol)->size #define MSYMBOL_TYPE(msymbol) (msymbol)->type @@ -1100,7 +1090,7 @@ extern void prim_record_minimal_symbol (const char *, CORE_ADDR, extern struct minimal_symbol *prim_record_minimal_symbol_and_info (const char *, CORE_ADDR, enum minimal_symbol_type, - char *info, int section, asection * bfd_section, struct objfile *); + int section, asection * bfd_section, struct objfile *); extern unsigned int msymbol_hash_iw (const char *); diff --git a/gdb/xcoffread.c b/gdb/xcoffread.c index 54e2abaf8ad..e7941acff79 100644 --- a/gdb/xcoffread.c +++ b/gdb/xcoffread.c @@ -834,7 +834,7 @@ enter_line_range (struct subfile *subfile, unsigned beginoffset, unsigned endoff namestr = (NAME); \ if (namestr[0] == '.') ++namestr; \ prim_record_minimal_symbol_and_info (namestr, (ADDR), (TYPE), \ - (char *)NULL, (SECTION), (asection *)NULL, (OBJFILE)); \ + (SECTION), (asection *)NULL, (OBJFILE)); \ misc_func_recorded = 1; \ } @@ -2285,7 +2285,7 @@ scan_xcoff_symtab (struct objfile *objfile) prim_record_minimal_symbol_and_info (namestring, symbol.n_value, sclass == C_HIDEXT ? mst_file_data : mst_data, - NULL, secnum_to_section (symbol.n_scnum, objfile), + secnum_to_section (symbol.n_scnum, objfile), NULL, objfile); break; @@ -2360,7 +2360,7 @@ scan_xcoff_symtab (struct objfile *objfile) prim_record_minimal_symbol_and_info (namestring, symbol.n_value, sclass == C_HIDEXT ? mst_file_data : mst_data, - NULL, secnum_to_section (symbol.n_scnum, objfile), + secnum_to_section (symbol.n_scnum, objfile), NULL, objfile); break; } @@ -2377,7 +2377,7 @@ scan_xcoff_symtab (struct objfile *objfile) prim_record_minimal_symbol_and_info (namestring, symbol.n_value, sclass == C_HIDEXT ? mst_file_bss : mst_bss, - NULL, secnum_to_section (symbol.n_scnum, objfile), + secnum_to_section (symbol.n_scnum, objfile), NULL, objfile); break; } -- 2.30.2