This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[patch] delete find_addr_symbol


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.

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 *);


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]