* xcoffread.c (RECORD_MINIMAL_SYMBOL): Update.
authorTom Tromey <tromey@redhat.com>
Wed, 1 Oct 2008 16:41:27 +0000 (16:41 +0000)
committerTom Tromey <tromey@redhat.com>
Wed, 1 Oct 2008 16:41:27 +0000 (16:41 +0000)
(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) <info>: Remove.
<target_flag_1, target_flag_2>: New fields.
(MSYMBOL_INFO): Remove.
(MSYMBOL_TARGET_FLAG_1): New macro.
(MSYMBOL_TARGET_FLAG_2): Likewise.
(prim_record_minimal_symbol_and_info): Update.

12 files changed:
gdb/ChangeLog
gdb/arm-tdep.c
gdb/coffread.c
gdb/dbxread.c
gdb/elfread.c
gdb/m68hc11-tdep.c
gdb/mdebugread.c
gdb/minsyms.c
gdb/mips-tdep.c
gdb/sh64-tdep.c
gdb/symtab.h
gdb/xcoffread.c

index 7b255cafe1144caf7b94bae93788d94da27a6d14..adb019940cf3397be44ea216ee2e40dd528d58c0 100644 (file)
@@ -1,3 +1,35 @@
+2008-10-01  Tom Tromey  <tromey@redhat.com>
+
+       * 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) <info>: Remove.
+       <target_flag_1, target_flag_2>: 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  <brobecker@adacore.com>
 
        * ada-lang.c (is_digits_suffix): Delete unused function.
index 7ffc885886750de107c35de7a3c814b824fb08ac..4e85bed6072cdd89c91c4aa1e94bf94530d11312 100644 (file)
@@ -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
index de81d47ec48c4a0ff9bfa7ec287e134cf257cfe7..4d8ef8a0eebdaa3833bc53e5651cb4178fdbc7fa 100644 (file)
@@ -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);
 }
 \f
 /* coff_symfile_init ()
index 25ec313066016fd5fe0fc78741b7d396570c2dac..dde922a6344bfd1ef256d42123c624e543645d14 100644 (file)
@@ -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);
 }
 \f
 /* Scan and build partial symbols for a symbol file.
index 17f86baf903c56b5a6cc08a7d278eec50a6c7cc9..22f4e5d2c322a562c288d3783d66a16db8678a35 100644 (file)
@@ -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);
 }
 
 /*
index 7bd6e698ff3616793192485e9740146d229a0f47..1913333a8553c49a0dc09e003b49e4133e7a080b 100644 (file)
    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,
index ede6fce235ac4f049475dbb4cd3b933143c7baa7..280700835bffee99c1175f5db083147915f7fd2d 100644 (file)
@@ -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);
index 4069e6fb10a9202d7ae3d5a745c9b4b7edc49b71..71d56cb5088bd55988df13e32d105fb41542d874 100644 (file)
@@ -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);
index 2556e0e80ec9eddc0fbb69dc05bfd0b52c440386..3a3a78ace597b8e2e259fc22fe96a16931be958e 100644 (file)
@@ -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.
index 7fd9c94b95713d0a62d39e809f892dbe4bad84df..474d49ad838b4a04baf0d06b620db6a1eb100df5 100644 (file)
@@ -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;
     }
 }
index c124242e3278971ed68e1f4bdae0db307fcf7af5..c5ac732df9851c75783799518662c2434562fc4f 100644 (file)
@@ -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 *);
 
index 54e2abaf8ad40e05e1ec84970cb466a3f0184d5d..e7941acff792df86ca0b4e1c73d8a90f396cdc70 100644 (file)
@@ -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;
                  }