This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [patch] delete find_addr_symbol
- From: Elena Zannoni <ezannoni at redhat dot com>
- To: David Carlton <carlton at math dot stanford dot edu>
- Cc: gdb-patches at sources dot redhat dot com, Elena Zannoni <ezannoni at redhat dot com>, Jim Blandy <jimb at redhat dot com>
- Date: Fri, 25 Oct 2002 21:02:32 -0400
- Subject: Re: [patch] delete find_addr_symbol
- References: <ro1k7k6umdb.fsf@jackfruit.Stanford.EDU>
David Carlton writes:
> In my eternal quest to tame symtab.c, I just started looking at the
> commented-out definition of find_addr_symbol. Looking through
> ChangeLogs, it turns out that this function was in existence for 2
> months in 1994, has been commented out for the following 8 years, and
> has a big honking bug in the middle of it, though to be fair the bug
> is at least commented:
>
> /* FIXME -- we should pull in all the psymtabs, too! */
>
> So the time has come to bid that code adieu, I think. This patch
> seems obvious: speak up if you have any sentimental attachment to the
> code. Otherwise, I'll delete it soon after a compile/check has
> finished to make sure I'm not doing anything stupid somehow.
>
Sniff, sniff. Yes kill it.
Thanks!
Elena
> David Carlton
> carlton@math.stanford.edu
>
> 2002-10-25 David Carlton <carlton@math.stanford.edu>
>
> * symtab.c (find_addr_symbol): Delete. (It was already commented
> out.)
> * symtab.h: Delete prototype for find_addr_symbol.
>
> Index: symtab.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/symtab.c,v
> retrieving revision 1.74
> diff -u -p -r1.74 symtab.c
> --- symtab.c 24 Oct 2002 21:02:53 -0000 1.74
> +++ symtab.c 25 Oct 2002 23:21:53 -0000
> @@ -1692,94 +1692,6 @@ find_pc_symtab (CORE_ADDR pc)
> }
>
>
> -#if 0
> -
> -/* Find the closest symbol value (of any sort -- function or variable)
> - for a given address value. Slow but complete. (currently unused,
> - mainly because it is too slow. We could fix it if each symtab and
> - psymtab had contained in it the addresses ranges of each of its
> - sections, which also would be required to make things like "info
> - line *0x2345" cause psymtabs to be converted to symtabs). */
> -
> -struct symbol *
> -find_addr_symbol (CORE_ADDR addr, struct symtab **symtabp, CORE_ADDR *symaddrp)
> -{
> - struct symtab *symtab, *best_symtab;
> - struct objfile *objfile;
> - register int bot, top;
> - register struct symbol *sym;
> - register CORE_ADDR sym_addr;
> - struct block *block;
> - int blocknum;
> -
> - /* Info on best symbol seen so far */
> -
> - register CORE_ADDR best_sym_addr = 0;
> - struct symbol *best_sym = 0;
> -
> - /* FIXME -- we should pull in all the psymtabs, too! */
> - ALL_SYMTABS (objfile, symtab)
> - {
> - /* Search the global and static blocks in this symtab for
> - the closest symbol-address to the desired address. */
> -
> - for (blocknum = GLOBAL_BLOCK; blocknum <= STATIC_BLOCK; blocknum++)
> - {
> - QUIT;
> - block = BLOCKVECTOR_BLOCK (BLOCKVECTOR (symtab), blocknum);
> - ALL_BLOCK_SYMBOLS (block, bot, sym)
> - {
> - switch (SYMBOL_CLASS (sym))
> - {
> - case LOC_STATIC:
> - case LOC_LABEL:
> - sym_addr = SYMBOL_VALUE_ADDRESS (sym);
> - break;
> -
> - case LOC_INDIRECT:
> - sym_addr = SYMBOL_VALUE_ADDRESS (sym);
> - /* An indirect symbol really lives at *sym_addr,
> - * so an indirection needs to be done.
> - * However, I am leaving this commented out because it's
> - * expensive, and it's possible that symbolization
> - * could be done without an active process (in
> - * case this read_memory will fail). RT
> - sym_addr = read_memory_unsigned_integer
> - (sym_addr, TARGET_PTR_BIT / TARGET_CHAR_BIT);
> - */
> - break;
> -
> - case LOC_BLOCK:
> - sym_addr = BLOCK_START (SYMBOL_BLOCK_VALUE (sym));
> - break;
> -
> - default:
> - continue;
> - }
> -
> - if (sym_addr <= addr)
> - if (sym_addr > best_sym_addr)
> - {
> - /* Quit if we found an exact match. */
> - best_sym = sym;
> - best_sym_addr = sym_addr;
> - best_symtab = symtab;
> - if (sym_addr == addr)
> - goto done;
> - }
> - }
> - }
> - }
> -
> -done:
> - if (symtabp)
> - *symtabp = best_symtab;
> - if (symaddrp)
> - *symaddrp = best_sym_addr;
> - return best_sym;
> -}
> -#endif /* 0 */
> -
> /* Find the source file and line number for a given PC value and SECTION.
> Return a structure containing a symtab pointer, a line number,
> and a pc range for the entire source line.
> Index: symtab.h
> ===================================================================
> RCS file: /cvs/src/src/gdb/symtab.h,v
> retrieving revision 1.50
> diff -u -p -r1.50 symtab.h
> --- symtab.h 24 Oct 2002 21:02:53 -0000 1.50
> +++ symtab.h 25 Oct 2002 23:21:44 -0000
> @@ -1261,13 +1261,6 @@ extern struct symtab_and_line find_pc_li
>
> extern struct symtab_and_line find_pc_sect_line (CORE_ADDR, asection *, int);
>
> -/* Given an address, return the nearest symbol at or below it in memory.
> - Optionally return the symtab it's from through 2nd arg, and the
> - address in inferior memory of the symbol through 3rd arg. */
> -
> -extern struct symbol *find_addr_symbol (CORE_ADDR, struct symtab **,
> - CORE_ADDR *);
> -
> /* Given a symtab and line number, return the pc there. */
>
> extern int find_line_pc (struct symtab *, int, CORE_ADDR *);