* symtab.c (lookup_symbol): Don't try adding .c to the name.
authorJim Kingdon <jkingdon@engr.sgi.com>
Thu, 6 Jan 1994 23:09:53 +0000 (23:09 +0000)
committerJim Kingdon <jkingdon@engr.sgi.com>
Thu, 6 Jan 1994 23:09:53 +0000 (23:09 +0000)
gdb/ChangeLog
gdb/symtab.c

index 7b347bd9057edc8571076d6aaeec5f34599c0872..9aa3bb612e834c3bce17cf026ce8a671347b1f16 100644 (file)
@@ -1,5 +1,7 @@
 Thu Jan  6 07:17:53 1994  Jim Kingdon  (kingdon@deneb.cygnus.com)
 
+       * symtab.c (lookup_symbol): Don't try adding .c to the name.
+
        * remote-bug.c: At the start of each section, reset srec_frame
        back to 160.
 
index 47a85da3558b726a9d509d347e85da540accdbfe..cf948aa0b36fdffacdd96a8c058a633f672cc32d 100644 (file)
@@ -193,6 +193,10 @@ lookup_symtab (name)
   s = lookup_symtab_1 (name);
   if (s) return s;
 
+#if 0
+  /* This screws c-exp.y:yylex if there is both a type "tree" and a symtab
+     "tree.c".  */
+
   /* If name not found as specified, see if adding ".c" helps.  */
   /* Why is this?  Is it just a user convenience?  (If so, it's pretty
      questionable in the presence of C++, FORTRAN, etc.).  It's not in
@@ -203,6 +207,7 @@ lookup_symtab (name)
   strcat (copy, ".c");
   s = lookup_symtab_1 (copy);
   if (s) return s;
+#endif /* 0 */
 
   /* We didn't find anything; die.  */
   return 0;
@@ -420,6 +425,21 @@ find_pc_psymbol (psymtab, pc)
 
   best_pc = psymtab->textlow - 1;
 
+  /* Search the global symbols as well as the static symbols, so that
+     find_pc_partial_function doesn't use a minimal symbol and thus
+     cache a bad endaddr.  */
+  for (p = psymtab->objfile->global_psymbols.list + psymtab->globals_offset;
+       (p - (psymtab->objfile->global_psymbols.list + psymtab->globals_offset)
+       < psymtab->n_global_syms);
+       p++)
+    if (SYMBOL_NAMESPACE (p) == VAR_NAMESPACE
+       && SYMBOL_CLASS (p) == LOC_BLOCK
+       && pc >= SYMBOL_VALUE_ADDRESS (p)
+       && SYMBOL_VALUE_ADDRESS (p) > best_pc)
+      {
+       best_pc = SYMBOL_VALUE_ADDRESS (p);
+       best = p;
+      }
   for (p = psymtab->objfile->static_psymbols.list + psymtab->statics_offset;
        (p - (psymtab->objfile->static_psymbols.list + psymtab->statics_offset)
        < psymtab->n_static_syms);