demangled symbol lookup fixes
This commit is contained in:
parent
d332c5ac7e
commit
0729fd5008
3 changed files with 139 additions and 112 deletions
138
gdb/ChangeLog
138
gdb/ChangeLog
|
@ -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.
|
||||
|
|
102
gdb/minsyms.c
102
gdb/minsyms.c
|
@ -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;
|
||||
break;
|
||||
|
||||
case mst_solib_trampoline:
|
||||
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;
|
||||
/* 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;
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
11
gdb/symtab.h
11
gdb/symtab.h
|
@ -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
|
|||
|
||||
|
||||
/* 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 *));
|
||||
|
|
Loading…
Reference in a new issue