demangled symbol lookup fixes
authorDaniel Berlin <dberlin@dberlin.org>
Thu, 30 Mar 2000 03:03:23 +0000 (03:03 +0000)
committerDaniel Berlin <dberlin@dberlin.org>
Thu, 30 Mar 2000 03:03:23 +0000 (03:03 +0000)
gdb/ChangeLog
gdb/minsyms.c
gdb/symtab.h

index c461c40132601af52ac8942475111cccef5c0416..6ba6ef39c017f226f65ef74b0bcc191eb6d38e93 100644 (file)
@@ -1,3 +1,13 @@
+2000-03-29  Daniel Berlin  <dan@cgsoftware.com>
+
+       * minsyms.c (add_minsym_to_demangled_hash_table): New function.
+       (install_minimal_symbols): Fix demangled symbol problems caused by
+       using add_minsym_to_hash_table for the demangled names, which is
+       wrong. Now we use add_minsym_to_demangled_hash_table.
+       (lookup_minimal_symbol): Fix problems with demangled symbol lookup
+       caused by weird control flow.
+       * symtab.h: Add add_minsym_to_demangled_hash_table prototype here.
+
 2000-03-29  Jason Merrill  <jason@casey.cygnus.com>
 
        * configure.in: -linux-gnu*, not -linux-gnu.
@@ -7,13 +17,13 @@ Tue Mar 28 18:28:40 2000  Andrew Cagney  <cagney@b1.cygnus.com>
        * remote.c (remote_threads_extra_info): Replace qfThreadExtraInfo
        with qThreadExtraInfo.
 
-2000-03-29  J.T. Conklin  <jtc@redback.com> 
-       * i386nbsd-nat.c (fetch_core_registers): Make static. 
-       * m68knbsd-nat.c (fetch_core_registers): Make static. 
-       (m68knbsd_core_fns, _initialize_m68knbsd_nat): Added. 
+2000-03-29  J.T. Conklin  <jtc@redback.com>
+
+       * i386nbsd-nat.c (fetch_core_registers): Make static.
+
+       * m68knbsd-nat.c (fetch_core_registers): Make static.
+       (m68knbsd_core_fns, _initialize_m68knbsd_nat): Added.
+
 Wed Mar 29 13:40:40 2000  Andrew Cagney  <cagney@b1.cygnus.com>
 
        * TODO: Update GDB 5 status.
@@ -40,8 +50,8 @@ Wed Mar 29 10:16:35 2000  Andrew Cagney  <cagney@b1.cygnus.com>
        * procfs.c (proc_set_watchpoint):  Declare addr parameter as
        CORE_ADDR, to match call from procfs_set_watchpoint.
 
-       * breakpoint.c (insert_breakpoints, do_enable_breakpoint):  
-       Reselect the saved frame silently after frame selection for 
+       * breakpoint.c (insert_breakpoints, do_enable_breakpoint):
+       Reselect the saved frame silently after frame selection for
        watchpoint evaluation.
        (insert_breakpoints):  Add missing space in `Hardware watchpoint
        deleted' message.  Do not reinsert hardware watchpoint if it is
@@ -96,7 +106,7 @@ Tue Mar 28 09:59:00 2000  Andrew Cagney  <cagney@b1.cygnus.com>
 
        * acconfig.h: Fix typo in comment describing HAVE_PTRACE_GETREGS.
        * config.h: Regenerate.
-       
+
 Mon Mar 27 19:53:29 2000  Andrew Cagney  <cagney@b1.cygnus.com>
 
        * TODO: Update.  Add criteria for next release of GDB.
@@ -182,13 +192,13 @@ Sat Mar 25 18:51:50 2000  Andrew Cagney  <cagney@b1.cygnus.com>
        * config/tm-cygwin.h: Eliminate special frame handling.  Just use
        normal i386 handling.
 
-2000-03-24  J.T. Conklin  <jtc@redback.com> 
-       * i386/tm-nbsd.h (USE_STRUCT_CONVENTION): Define. 
-       * i386nbsd-nat.c (i386nbsd_use_struct_convention): New function. 
-       (fetch_core_registers): Read fp registers. 
-       (i386nbsd_core_fns, _initialize_i386nbsd_nat): Added. 
+2000-03-24  J.T. Conklin  <jtc@redback.com>
+
+       * i386/tm-nbsd.h (USE_STRUCT_CONVENTION): Define.
+       * i386nbsd-nat.c (i386nbsd_use_struct_convention): New function.
+       (fetch_core_registers): Read fp registers.
+       (i386nbsd_core_fns, _initialize_i386nbsd_nat): Added.
+
 2000-03-24  Jonathan Larmour  <jlarmour@redhat.co.uk>
 
        * arm-tdep.c (thumb_skip_prologue): Take function end addr argument
@@ -219,14 +229,14 @@ Thu Mar 23 13:18:26 2000  Philippe De Muyter  <phdm@macqel.be>
        `moveml to (fp + displacement)'.
        * m68/tm-delta68.h (IN_SIGTRAMP): New macro.
        (FRAME_SAVED_PC, FRAME_ARGS_ADDRESS): Ditto.
-       
+
 Fri Mar 24 13:44:57 2000  Andrew Cagney  <cagney@b1.cygnus.com>
 
-       * MAINTAINERS: Add Fernando Nasser to testsuite maintainers. 
-       
+       * MAINTAINERS: Add Fernando Nasser to testsuite maintainers.
+
 2000-03-23  Michael Snyder  <msnyder@cleaver.cygnus.com>
 
-       * solib.c (open_symbol_file_object): to sneak an int argument 
+       * solib.c (open_symbol_file_object): to sneak an int argument
        past catch_errors, instead of casting it to a pointer, simply
        pass it by address.
 
@@ -244,12 +254,12 @@ Fri Mar 24 13:44:57 2000  Andrew Cagney  <cagney@b1.cygnus.com>
        deprecated, warns user if appropriate.
        (add_info), (add_info_alias), (add_com) , (add_com_alias): Changed
        return values from void to struct cmd_list_element *.
-       * command.c (lookup_cmd_1): Check aliases before following link 
+       * command.c (lookup_cmd_1): Check aliases before following link
        in case user needs to be warned about a deprecated alias.
        (deprecate_cmd): new exported function for command deprecation,
        sets flags and posibly a replacement string.
        (deprecated_cmd_warning): New exported funciton to warn user about
-       a deprecated command. 
+       a deprecated command.
        (lookup_cmd_composition): New exported function that determines
        alias, prefix_command, and cmd based on a string.  This is useful
        is we want to full name of a command.
@@ -333,17 +343,17 @@ Wed Mar 22 15:09:34 2000  Andrew Cagney  <cagney@b1.cygnus.com>
 
        * configure.in (CONFIG_INITS): Do not append remote-nrom.c
 
-2000-03-21  J.T. Conklin  <jtc@redback.com> 
-        * i386/nbsd.mh (NATDEPFILES): Change i386b-nat.o to i386nbsd-nat.o. 
-        * i386nbsd-nat.c: New file. 
-        * i386/tm-nbsd.h (NUM_REGS): Removed. 
-        (HAVE_I387_REGS): Defined. 
-        * i386/nm-nbsd.h (FLOAT_INFO): Removed. 
-        * tm-nbsd.h (IN_SOLIB_CALL_TRAMPOLINE): Define if not 
-        SVR4_SHARED_LIBS. 
+2000-03-21  J.T. Conklin  <jtc@redback.com>
+
+        * i386/nbsd.mh (NATDEPFILES): Change i386b-nat.o to i386nbsd-nat.o.
+        * i386nbsd-nat.c: New file.
+
+        * i386/tm-nbsd.h (NUM_REGS): Removed.
+        (HAVE_I387_REGS): Defined.
+        * i386/nm-nbsd.h (FLOAT_INFO): Removed.
+
+        * tm-nbsd.h (IN_SOLIB_CALL_TRAMPOLINE): Define if not
+        SVR4_SHARED_LIBS.
 
 Wed Mar 22 11:18:59 2000  Andrew Cagney  <cagney@b1.cygnus.com>
 
@@ -394,7 +404,7 @@ Wed Mar 22 11:18:59 2000  Andrew Cagney  <cagney@b1.cygnus.com>
        (bpstat_stop_status, can_use_hardware_watchpoint): Don't insert,
        remove, or check status of hardware watchpoints for entire structs
        and arrays unless the user explicitly asked to watch that struct
-       or array.  
+       or array.
        (insert_breakpoints): Try to insert watchpoints for all the values
        on the value chain, even if some of them fail to insert.
 
@@ -407,7 +417,7 @@ Wed Mar 22 11:18:59 2000  Andrew Cagney  <cagney@b1.cygnus.com>
        Implement the extra thread info query for "info threads".
        (remote_threads_info): clean up a bit.
        (use_threadinfo_query, use_threadextra_query): new variables.
-       Control whether GDB will use the new or old protocol for 
+       Control whether GDB will use the new or old protocol for
        thread info queries.
        (remote_open_1): initialize new variables.
        (remote_async_open_1): ditto.
@@ -552,7 +562,7 @@ Fri Mar 17 11:06:59 2000  Philippe De Muyter  <phdm@macqel.be>
        * config/i386/tm-linux.h (I386_LINUX_SIGTRAMP): No need to define
        this any more, since we're not enabling OS-specific code in a
        OS-independent file.
-       
+
 2000-03-16  Eli Zaretskii  <eliz@is.elta.co.il>
 
        * Makefile.in (go32-nat.o): Add prerequisites.
@@ -590,7 +600,7 @@ Fri Mar 17 11:06:59 2000  Philippe De Muyter  <phdm@macqel.be>
 
        * solib.c (special_symbol_handling): Delete argument; it's not
        used.
-       
+
        Changes from Peter Schauer <pes@regent.e-technik.tu-muenchen.de>:
 
        * solib.c (SOLIB_EXTRACT_ADDRESS):  New macro to extract addresses
@@ -628,27 +638,27 @@ Mon Mar 13 21:21:41 2000  Andrew Cagney  <cagney@b1.cygnus.com>
 
 2000-03-13  James Ingham  <jingham@leda.cygnus.com>
 
-       Add support for a variable object that tries to evaluate itself in 
+       Add support for a variable object that tries to evaluate itself in
        the currently selected frame, rather than in a fixed frame.
-       
+
        * wrapper.c,h (gdb_parse_exp_1): Added a wrapper for
        gdb_parse_exp_1.
-       * varobj.h: Added USE_CURRENT_FRAME to varobj_type & changed def'n 
+       * varobj.h: Added USE_CURRENT_FRAME to varobj_type & changed def'n
        of varobj_create.
        * varobj.c (varobj_list): Return type indicates whether the
        variable's type has changed (for current frame variables).
        (varobj_update): Handle the case where the variable's type has
        changed.
-       (delete_variable_1): Allow for deletion of variables that have not 
+       (delete_variable_1): Allow for deletion of variables that have not
        been installed yet.
        (new_root_variable): Initialize use_selected_frame variable.
-       (value_of_root): This is where most of the work to handle "current 
+       (value_of_root): This is where most of the work to handle "current
        frame" variables was added.  Most of the complexity involves
        handling the case where the type of the variable has changed.
        (varobj_create): Add a "type" argument, to tell if the
        variable is one of these "current frame" variables.  Also protect
        call to parse_exp_1 from long jumping.
-       
+
 2000-03-13  Eli Zaretskii  <eliz@is.elta.co.il>
 
        * go32-nat.c (struct env387): Remove declaration.
@@ -697,7 +707,7 @@ Mon Mar 13 18:54:42 2000  Andrew Cagney  <cagney@b1.cygnus.com>
 
        * gdbtypes.c (rank_one_type): Add comment on how to eliminate the
        #ifdef DEBUG_OLOAD.
-       
+
 2000-03-11  Mark Kettenis  <kettenis@gnu.org>
 
        * gnu-nat.c: Fix the formatting where indent misinterpreted `&' as
@@ -899,7 +909,7 @@ Sat Mar  4 10:57:25 2000  Andrew Cagney  <cagney@b1.cygnus.com>
        other function typedefs.  Document as not be used out side of
        make_cleanup code. Use in make_cleanup declarations.
        (null_cleanup): Replace PTR with void*.
-       
+
        * utils.c (make_cleanup, make_final_cleanup, make_run_cleanup,
        make_exec_cleanup, make_exec_error_cleanup, make_my_cleanup,
        null_cleanup): Change K&R definition to ISO-C using void* and
@@ -924,7 +934,7 @@ Fri Mar  3 15:39:34 2000  Andrew Cagney  <cagney@b1.cygnus.com>
        (all-gdbtk, clean-gdbtk): New targets.
        (all): Add CONFIG_ALL as dependency.
        (clean): Add CONFIG_CLEAN as dependency.
-       
+
        * configure.in (CONFIG_ALL, CONFIG_CLEAN): Define.
        (LN_S): Define.  Delete GDBtk's link code.
 
@@ -964,7 +974,7 @@ Fri Mar  3 13:12:34 2000  Andrew Cagney  <cagney@b1.cygnus.com>
 
 Thu Mar  2 09:04:46 2000  Andrew Cagney  <cagney@b1.cygnus.com>
 
-       * MAINTAINERS: Daniel Berlin is C++ maintainer.         
+       * MAINTAINERS: Daniel Berlin is C++ maintainer.
 
 Thu Mar  2 08:55:35 2000  Andrew Cagney  <cagney@b1.cygnus.com>
 
@@ -974,10 +984,10 @@ Thu Mar  2 08:55:35 2000  Andrew Cagney  <cagney@b1.cygnus.com>
        Solaris/x86.
 
 Wed Mar  1 22:12:35 2000  Andrew Cagney  <cagney@b1.cygnus.com>
-       
+
        From Wed 23 Feb 2000 Fernando Nasser <fnasser@redhat.com>:
        * remote-sim.c (gdbsim_close): Call generic_mourn_inferior.
-       * remote-rdi.c (arm_rdi_close): Ditto. 
+       * remote-rdi.c (arm_rdi_close): Ditto.
 
 Wed Mar  1 19:31:32 2000  Andrew Cagney  <cagney@b1.cygnus.com>
 
@@ -1073,10 +1083,10 @@ Tue Feb 29 15:14:56 2000  Andrew Cagney  <cagney@b1.cygnus.com>
        as in the Linux kernel.  Modified prototype to get rid of
        unused parameters.
        (store_nw_fpe_*): Renamed to store_nwfpe_* to use the same
-       naming convention as in the Linux kernel.  Fixed calls to 
+       naming convention as in the Linux kernel.  Fixed calls to
        fetch_nwfpe_*.
        (store_fpregs): Fixed calls to store_nwfpe_*.  Removed
-       unused variable. 
+       unused variable.
 
 Mon Feb 28 18:24:32 2000  Andrew Cagney  <cagney@b1.cygnus.com>
 
@@ -1188,7 +1198,7 @@ Thu Feb 24 18:42:15 2000  Andrew Cagney  <cagney@b1.cygnus.com>
        * configure.in (CONFIG_INSTALL, CONFIG_UNINSTALL): Set to
        $(SUBDIR_*_INSTALL) when so configured.
        * configure: Regenerate.
-       
+
        * Makefile.in (CONFIG_INSTALL, CONFIG_UNINSTALL): Define using
        configure.
        (install-only): Add dependency on $(CONFIG_INSTALL).  Delete code
@@ -1202,7 +1212,7 @@ Thu Feb 24 18:19:52 2000  Andrew Cagney  <cagney@b1.cygnus.com>
 
        * configure.in (SUBDIR_MI_CFLAGS): Fix typo, wrong brace.
        * configure: Regenerate.
-       
+
 2000-02-24  Christopher Faylor  <cgf@cygnus.com>
 
        * configure.tgt: Add arm, mips, sh wince targets.
@@ -1256,7 +1266,7 @@ Mon Feb 21 13:57:27 2000  Andrew Cagney  <cagney@b1.cygnus.com>
        interface.
 
        * configure: Regenerate.
-       
+
        * Makefile.in (SUBDIR_MI_OBS, SUBDIR_MI_SRCS, SUBDIR_MI_DEPS,
        SUBDIR_MI_INITS, SUBDIR_MI_LDFLAGS, SUBDIR_MI_CFLAGS): New macros.
        (CONFIG_OBS, CONFIG_SRCS, CONFIG_DEPS, CONFIG_INITS,
@@ -1377,7 +1387,7 @@ Mon Feb 21 11:03:01 2000  Andrew Cagney  <cagney@b1.cygnus.com>
        Andrew Cagney, Elena Zannoni and Fernando Nasser; Web pages - Jim
        Kingdon.
        * MAINTAINERS: Add Nick Clifton to write after approval list.
-       
+
 Mon Feb 21 10:30:39 2000  Andrew Cagney  <cagney@b1.cygnus.com>
 
        * MAINTAINERS: Add note on multiple maintainers.
@@ -1474,7 +1484,7 @@ Wed Feb 16 19:00:02 2000  Andrew Cagney  <cagney@b1.cygnus.com>
        code to also handle the PowerOpen ABI.
        (ppc_push_return_address): Enable for all ports.
        * config/powerpc/tm-ppc-aix.h (USE_GENERIC_DUMMY_FRAMES,
-       PUSH_DUMMY_FRAME, PUSH_RETURN_ADDRESS, GET_SAVED_REGISTER, 
+       PUSH_DUMMY_FRAME, PUSH_RETURN_ADDRESS, GET_SAVED_REGISTER,
        CALL_DUMMY_BREAKPOINT_OFFSET, CALL_DUMMY_LOCATION,
        CALL_DUMMY_ADDRESS, CALL_DUMMY_START_OFFSET): Override defaults
        provided by generic RS6000 definitions so that call dummies
@@ -1497,7 +1507,7 @@ Wed Feb 16 19:00:02 2000  Andrew Cagney  <cagney@b1.cygnus.com>
 2000-02-15  Jesper Skov  <jskov@cygnus.co.uk>
 
        Patch applied by Kevin Buettner <kevinb@redhat.com>
-       
+
        * rs6000-tdep.c (skip_prologue): skip copying of argument
        registers to local variable registers.
 
@@ -1538,7 +1548,7 @@ Mon Feb 14 15:20:26 2000  Andrew Cagney  <cagney@b1.cygnus.com>
        * configure.tgt (i[3456]86-*-netbsd*): add gdbserver to
        configdirs.
        * gdbserver/low-nbsd.c: New file.
-       
+
        * gdbserver/Makefile.in: convert to autoconf.
        * gdbserver/configure.in: likewise.
        * gdbserver/configure: generate.
@@ -1744,7 +1754,7 @@ Tue Feb  1 00:17:12 2000  Andrew Cagney  <cagney@b1.cygnus.com>
        * ui-file.c, ui-file.h: Rename gdb-file.h, gdb-file.c.  Rename
        ``struct gdb_file'' to ``struct ui_file''.  Delete typedef
        GDB_FILE.
-       
+
        * Makefile.in: Update.
 
        * ax-gdb.c, ax-general.c, ax.h, buildsym.c, c-lang.c, c-lang.h,
@@ -1805,7 +1815,7 @@ Mon Jan 31 17:14:52 2000  Andrew Cagney  <cagney@b1.cygnus.com>
        tui_file_get_strbuf, tui_file_adjust_strbuf, tui_file_flush,
        fputs_unfiltered_hook):
        Moved to tui/tui-file.c and tui/tui-file.h.
-       
+
        * Makefile.in (COMMON_OBS): Add gdb-file.o, tui-file.o.
        (tui-file.o, gdb-file.o): Add dependencies.
        (corefile.o, main.o, utils.o, simmisc.o): Update dependencies.
@@ -1954,11 +1964,11 @@ Mon Jan 31 17:14:52 2000  Andrew Cagney  <cagney@b1.cygnus.com>
        * infrun.c (normal_stop): Use enum values rather than integers for the
        source_flag to be passed to show_and_print_stack_frame().
         Update copyright.
-       
+
        * frame.h (print_what): New enum for 'source' argument to
        print_frame_info_base(). Use this instead of obscure numbers.
        Update copyright.
-       
+
 Sun Jan 16 17:58:00 2000  David Taylor  <taylor@texas.cygnus.com>
 
        * event-top.c (stdin_event_handler): call quit_command rather than
@@ -2072,7 +2082,7 @@ Thu Jan 13 23:34:17 EST 2000  Nicholas Duffek <nsd@cygnus.com>
        (proc_flags): combine flags that UnixWare splits into two locations.
        (proc_modify_flag): add support for PR_KLC (kill on last close).
        (proc_[un]set_kill_on_last_close): new functions.
-       
+
 2000-01-07  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>
 
        * infrun.c (normal_stop): Print out thread id when we stop.
index b5cafee0f2ea223c8fc14d8f785a2d54133d619b..23e798816a99fcd1689c80d1ccd74288c34c46c5 100644 (file)
@@ -123,6 +123,20 @@ add_minsym_to_hash_table (struct minimal_symbol *sym,
     }
 }
 
+/* Add the minimal symbol SYM to an objfile's minsym demangled hash table,
+   TABLE.  */
+static void
+add_minsym_to_demangled_hash_table (struct minimal_symbol *sym,
+                                  struct minimal_symbol **table)
+{
+  if (sym->demangled_hash_next == NULL)
+    {
+      unsigned int hash = msymbol_hash_iw (SYMBOL_DEMANGLED_NAME (sym));
+      sym->demangled_hash_next = table[hash];
+      table[hash] = sym;
+    }
+}
+
 
 /* Look through all the current minimal symbol tables and find the
    first minimal symbol that matches NAME.  If OBJF is non-NULL, limit
@@ -167,60 +181,60 @@ lookup_minimal_symbol (name, sfile, objf)
        {
          /* Do two passes: the first over the ordinary hash table,
             and the second over the demangled hash table.  */
-         int pass = 1;
+        int pass;
 
-         msymbol = objfile->msymbol_hash[hash];
-         
-         while (msymbol != NULL && found_symbol == NULL)
+        for (pass = 1; pass <= 2 && found_symbol == NULL; pass++)
            {
-             if (SYMBOL_MATCHES_NAME (msymbol, name))
+            /* Select hash list according to pass.  */
+            if (pass == 1)
+              msymbol = objfile->msymbol_hash[hash];
+            else
+              msymbol = objfile->msymbol_demangled_hash[dem_hash];
+
+            while (msymbol != NULL && found_symbol == NULL)
                {
-                 switch (MSYMBOL_TYPE (msymbol))
+                if (SYMBOL_MATCHES_NAME (msymbol, name))
                    {
-                   case mst_file_text:
-                   case mst_file_data:
-                   case mst_file_bss:
+                    switch (MSYMBOL_TYPE (msymbol))
+                      {
+                      case mst_file_text:
+                      case mst_file_data:
+                      case mst_file_bss:
 #ifdef SOFUN_ADDRESS_MAYBE_MISSING
-                     if (sfile == NULL || STREQ (msymbol->filename, sfile))
-                       found_file_symbol = msymbol;
+                        if (sfile == NULL || STREQ (msymbol->filename, sfile))
+                          found_file_symbol = msymbol;
 #else
-                     /* We have neither the ability nor the need to
-                        deal with the SFILE parameter.  If we find
-                        more than one symbol, just return the latest
-                        one (the user can't expect useful behavior in
-                        that case).  */
-                     found_file_symbol = msymbol;
+                        /* We have neither the ability nor the need to
+                           deal with the SFILE parameter.  If we find
+                           more than one symbol, just return the latest
+                           one (the user can't expect useful behavior in
+                           that case).  */
+                        found_file_symbol = msymbol;
 #endif
-                     break;
-
-                   case mst_solib_trampoline:
-
-                     /* If a trampoline symbol is found, we prefer to
-                        keep looking for the *real* symbol. If the
-                        actual symbol is not found, then we'll use the
-                        trampoline entry. */
-                     if (trampoline_symbol == NULL)
-                       trampoline_symbol = msymbol;
-                     break;
-
-                   case mst_unknown:
-                   default:
-                     found_symbol = msymbol;
-                     break;
+                        break;
+
+                      case mst_solib_trampoline:
+
+                        /* If a trampoline symbol is found, we prefer to
+                           keep looking for the *real* symbol. If the
+                           actual symbol is not found, then we'll use the
+                           trampoline entry. */
+                        if (trampoline_symbol == NULL)
+                          trampoline_symbol = msymbol;
+                        break;
+
+                      case mst_unknown:
+                      default:
+                        found_symbol = msymbol;
+                        break;
+                      }
                    }
-               }
 
-             /* Find the next symbol on the hash chain.  At the end
-                of the first pass, try the demangled hash list.  */
-             if (pass == 1)
-               msymbol = msymbol->hash_next;
-             else
-               msymbol = msymbol->demangled_hash_next;
-             if (msymbol == NULL)
-               {
-                 ++pass;
-                 if (pass == 2)
-                   msymbol = objfile->msymbol_demangled_hash[dem_hash];
+                /* Find the next symbol on the hash chain.  */
+                if (pass == 1)
+                  msymbol = msymbol->hash_next;
+                else
+                  msymbol = msymbol->demangled_hash_next;
                }
            }
        }
@@ -934,8 +948,8 @@ install_minimal_symbols (objfile)
        {
          SYMBOL_INIT_DEMANGLED_NAME (msymbols, &objfile->symbol_obstack);
          if (SYMBOL_DEMANGLED_NAME (msymbols) != NULL)
-           add_minsym_to_hash_table (msymbols,
-                                     objfile->msymbol_demangled_hash);
+          add_minsym_to_demangled_hash_table (msymbols,
+                                              objfile->msymbol_demangled_hash);
        }
     }
 }
index dffb26ae068b0344ed3f54d94f705033ae66d972..7aff532d88e39395ed120c97e0370dbfa3151037 100644 (file)
@@ -311,7 +311,7 @@ struct minimal_symbol
        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 allo-
-       cated on the symbol_obstack for the associated objfile.  
+       cated on the symbol_obstack for the associated objfile.
        The type would be "void *" except for reasons of compatibility with older
        compilers.  This field is optional.
 
@@ -738,7 +738,7 @@ struct symbol
    symbols whose types we have not parsed yet.  For functions, it also
    contains their memory address, so we can find them from a PC value.
    Each partial_symbol sits in a partial_symtab, all of which are chained
-   on a  partial symtab list and which points to the corresponding 
+   on a  partial symtab list and which points to the corresponding
    normal symtab once the partial_symtab has been referenced.  */
 
 struct partial_symbol
@@ -837,7 +837,7 @@ struct section_offsets
   (sizeof (struct section_offsets) \
    + sizeof (((struct section_offsets *) 0)->offsets) * (SECT_OFF_MAX-1))
 
-/* Each source file or header is represented by a struct symtab. 
+/* Each source file or header is represented by a struct symtab.
    These objects are chained through the `next' field.  */
 
 struct symtab
@@ -1032,7 +1032,7 @@ struct partial_symtab
 \f
 
 /* The virtual function table is now an array of structures which have the
-   form { int16 offset, delta; void *pfn; }. 
+   form { int16 offset, delta; void *pfn; }.
 
    In normal virtual function tables, OFFSET is unused.
    DELTA is the amount which is added to the apparent object's base
@@ -1240,6 +1240,9 @@ extern unsigned int msymbol_hash PARAMS ((const char *));
 extern void
 add_minsym_to_hash_table (struct minimal_symbol *sym,
                          struct minimal_symbol **table);
+extern void
+add_minsym_to_demangled_hash_table (struct minimal_symbol *sym,
+                                   struct minimal_symbol **table);
 
 extern struct minimal_symbol *
   lookup_minimal_symbol PARAMS ((const char *, const char *, struct objfile *));