Improved 'stop in' mechanism, and prevent core dump ir currlang is not set
authorceriel <none@none>
Wed, 9 Jun 1993 14:18:43 +0000 (14:18 +0000)
committerceriel <none@none>
Wed, 9 Jun 1993 14:18:43 +0000 (14:18 +0000)
util/grind/db_symtab.g
util/grind/main.c
util/grind/scope.h

index 80bb4cd..d25ad58 100644 (file)
@@ -837,12 +837,14 @@ DbRead(f)
 
                                if (sc) CurrentScope = sc;
                        }
-                       if (! saw_code && !CurrentScope->sc_bp_opp) {
-                           CurrentScope->sc_bp_opp = n->on_valu;
-                           if (! CurrentScope->sc_start) {
+                       else if (! saw_code) {
                                CurrentScope->sc_start = n->on_valu;
                                add_scope_addr(CurrentScope);
-                           }
+                       }
+                       if (!CurrentScope->sc_bp_opp
+                           || CurrentScope->sc_bp_lineno > n->on_desc) {
+                               CurrentScope->sc_bp_opp = n->on_valu;
+                               CurrentScope->sc_bp_lineno = n->on_desc;
                        }
                        saw_code = 1;
                        add_position_addr(line_file->on_mptr, n);
index 2ff63ef..bdedac5 100644 (file)
@@ -11,6 +11,7 @@
 #include "scope.h"
 #include "Lpars.h"
 #include "type.h"
+#include "langdep.h"
 
 static char    *usage = "Usage: %s [<ack.out>] [<a.out>]";
 char           *progname;
@@ -95,6 +96,9 @@ main(argc, argv)
   reserve(tkidf);
   reserve(shorts);
   init_run();
+  if (! currlang) {
+       fatal("could not determine source language. Recompile with -g?");
+  }
   prompt();
   Commands();
   signal_child(SIGKILL);
index 5a661d2..b92f490 100644 (file)
@@ -8,6 +8,7 @@ typedef struct scope {
   struct symbol *sc_definedby;         /* symbol defining this scope */
   long         sc_start;               /* start address of code of this scope */
   long         sc_bp_opp;              /* first breakpoint opportunity */
+  int          sc_bp_lineno;           /* linenumber belonging to this bp. */
   short                sc_proclevel;           /* proc level of this scope */
   char         sc_has_activation_record;
 } t_scope, *p_scope;