Permit symbols to be superseded when new symbol files have
authorJohn Gilmore <gnu@cygnus>
Sat, 13 Apr 1991 22:37:48 +0000 (22:37 +0000)
committerJohn Gilmore <gnu@cygnus>
Sat, 13 Apr 1991 22:37:48 +0000 (22:37 +0000)
        been read in, particularly for VxWorks.

        * symfile.c (symbol_file_add):  Use filtered printing and wrap it.
        If we have wiped out any old symbol tables, clean up at end of
        symbol reading.
        (symbol_file_command):  Don't reference symfile_fns if it's zero.

gdb/symfile.c

index 31aa1e22fc7fc07764d41b5bf6a3638fb89f6f07..d2f82552e983985342f9e0a6000af656e450f9e2 100644 (file)
@@ -413,7 +413,8 @@ symbol_file_add (name, from_tty, addr, mainline)
 
   if (from_tty)
     {
-      printf ("Reading symbol data from %s...", name);
+      printf_filtered ("Reading symbol data from %s...", name);
+      wrap_here ("");
       fflush (stdout);
     }
 
@@ -457,9 +458,12 @@ symbol_file_add (name, from_tty, addr, mainline)
       symfile_fns = sf;
     }
 
+  /* If we have wiped out any old symbol tables, clean up.  */
+  clear_symtab_users_once ();
+
   if (from_tty)
     {
-      printf ("done.\n");
+      printf_filtered ("done.\n");
       fflush (stdout);
     }
 }
@@ -489,9 +493,11 @@ symbol_file_command (name, from_tty)
       /* FIXME, this does not account for the main file and subsequent
          files (shared libs, dynloads, etc) having different formats. 
          It only calls the cleanup routine for the main file's format.  */
-      (*symfile_fns->sym_new_init) ();
-      free (symfile_fns);
-      symfile_fns = 0;
+      if (symfile_fns) {
+        (*symfile_fns->sym_new_init) ();
+        free (symfile_fns);
+        symfile_fns = 0;
+      }
       return;
     }