some more changes for debugger support
authorceriel <none@none>
Wed, 1 Aug 1990 14:35:07 +0000 (14:35 +0000)
committerceriel <none@none>
Wed, 1 Aug 1990 14:35:07 +0000 (14:35 +0000)
lang/m2/comp/.distr
lang/m2/comp/options.c
lang/m2/comp/program.g
lang/m2/comp/stab.c

index bcd28f6..a668f96 100644 (file)
@@ -51,6 +51,7 @@ program.g
 real.H
 scope.C
 scope.h
+stab.c
 standards.h
 statement.g
 tmpvar.C
index f23d747..d45e8b5 100644 (file)
@@ -57,10 +57,14 @@ DoOption(text)
        case 's':       /* symmetric: MIN(INTEGER) = -MAX(INTEGER) */
        case '3':       /* strict 3rd edition Modula-2 */
        case 'l':       /* local additions enabled */
-       case 'g':       /* generate symbol table for debugger */
                options[text[-1]]++;
                break;
 
+       case 'g':       /* generate symbol table for debugger */
+               options['g']++;
+               options['n']++; /* no register vars ??? */
+               break;
+
        case 'w':
                if (*text) {
                        while (*text) {
index 1982eb5..96ca2fc 100644 (file)
@@ -13,8 +13,8 @@
 #include       "debug.h"
 
 #include       <alloc.h>
-#include       <em_arith.h>
-#include       <em_label.h>
+#include       <em.h>
+#include       <stb.h>
 
 #include       "strict3rd.h"
 #include       "main.h"
@@ -235,7 +235,15 @@ ProgramModule
        priority(&(df->mod_priority))
        ';' import(0)*
        block(&(df->mod_body)) IDENT
-               { if (options['g']) stb_string(df, D_END);
+               { if (options['g']) {
+                       if (state == PROGRAM) {
+                               C_ms_stb_cst(df->df_idf->id_text,
+                                            N_MAIN,
+                                            0,
+                                            (arith) 0);
+                       }
+                       stb_string(df, D_END);
+                 }
                  close_scope(SC_CHKFORW|SC_CHKPROC|SC_REVERSE);
                  match_id(df->df_idf, dot.TOK_IDF);
                }
index 29ec9f5..41e39a2 100644 (file)
@@ -305,7 +305,8 @@ stb_string(df, kind)
                        }
                }
                else {  /* local variable */
-                       stb_type(tp, 0);
+                       stb_type(tp, 1);        /* assign type num to avoid
+                                                  difficult to parse string */
                        addc_db_str(';');
                        C_ms_stb_cst(db_str.base, N_LSYM, 0, df->var_off);
                }