This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: RFA: don't use minsym name when searching block
- From: Daniel Jacobowitz <drow at mvista dot com>
- To: Jim Blandy <jimb at redhat dot com>
- Cc: gdb-patches at sources dot redhat dot com
- Date: Thu, 22 Aug 2002 08:50:30 -0400
- Subject: Re: RFA: don't use minsym name when searching block
- References: <200208220526.g7M5Qp520822@zenia.red-bean.com>
On Thu, Aug 22, 2002 at 12:26:51AM -0500, Jim Blandy wrote:
>
> I'd appreciate it if the C++ folks could check this out. I don't have
> a test case yet, but I'll try to put one together tomorrow.
Could you describe the problem? Also... "the minsym's name might be
mangled" definitely seems like a problem; they should either be
consistently mangled or demangled...
> 2002-08-21 Jim Blandy <jimb@redhat.com>
>
> * symtab.c (lookup_symbol_aux): In the case where we find a
> minimal symbol of an appropriate name and use its address to
> select a symtab to read and search, use `name' (as passed to us)
> as the demangled name when searching the symtab's global and
> static blocks, not the minsym's name. The minsym's name might be
> mangled.
Style nit - a comment like this belongs in the code, not in the
changelog.
>
> Index: gdb/symtab.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/symtab.c,v
> retrieving revision 1.68
> diff -c -r1.68 symtab.c
> *** gdb/symtab.c 1 Aug 2002 17:18:33 -0000 1.68
> --- gdb/symtab.c 22 Aug 2002 04:38:54 -0000
> ***************
> *** 860,874 ****
> /* This is a function which has a symtab for its address. */
> bv = BLOCKVECTOR (s);
> block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
> ! sym = lookup_block_symbol (block, SYMBOL_NAME (msymbol),
> ! mangled_name, namespace);
> /* We kept static functions in minimal symbol table as well as
> in static scope. We want to find them in the symbol table. */
> if (!sym)
> {
> block = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK);
> ! sym = lookup_block_symbol (block, SYMBOL_NAME (msymbol),
> ! mangled_name, namespace);
> }
>
> /* sym == 0 if symbol was found in the minimal symbol table
> --- 860,873 ----
> /* This is a function which has a symtab for its address. */
> bv = BLOCKVECTOR (s);
> block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
> ! sym = lookup_block_symbol (block, name, mangled_name, namespace);
> /* We kept static functions in minimal symbol table as well as
> in static scope. We want to find them in the symbol table. */
> if (!sym)
> {
> block = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK);
> ! sym = lookup_block_symbol (block, name,
> ! mangled_name, namespace);
> }
>
> /* sym == 0 if symbol was found in the minimal symbol table
>
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer