handle local commons in one place only
authorceriel <none@none>
Tue, 6 Dec 1988 13:22:34 +0000 (13:22 +0000)
committerceriel <none@none>
Tue, 6 Dec 1988 13:22:34 +0000 (13:22 +0000)
util/ceg/ce_back/obj_back/end_back.c
util/ceg/ce_back/obj_back/output.c
util/ceg/ce_back/obj_back/relocation.c

index 3c55192..30b9e69 100644 (file)
@@ -9,6 +9,20 @@ finish_tables()
 /* Prepare tables for do_local_relocation() and output().
  */
 {
+       register struct outname *np = symbol_table;
+       register int i = nname;
+
+       for (; i; i--, np++) {
+               if ((np->on_type & S_COM) && ! (np->on_type & S_EXT)) {
+                        long sz = np->on_valu;
+
+                        switchseg(SEGBSS);
+                        align_word();
+                        np->on_type &= (~S_COM);
+                        np->on_valu = cur_value();
+                        bss(sz);
+                }
+       }
        while ( ( text - text_area) % EM_WSIZE != 0 ) 
                text1( '\0');
        while ( ( data - data_area) % EM_WSIZE != 0 )
index 28a6b87..57a5810 100644 (file)
@@ -129,15 +129,6 @@ reduce_name_table()
                register struct outname *np = &symbol_table[i];
 
                np->on_type &= ~S_NEEDED;
-               if ((np->on_type & S_COM) && ! (np->on_type & S_EXT)) {
-                       long sz = np->on_valu;
-
-                       switchseg(SEGBSS);
-                       align_word();
-                       np->on_type &= (~S_COM);
-                       np->on_valu = cur_value();
-                       bss(sz);
-               }
                if (diff_index[i] && diff_index[i] == diff_index[i-1]) {
                        symbol_table[i - diff_index[i]] = *np;
                }
index 0f0c49b..764efdd 100644 (file)
@@ -24,15 +24,6 @@ do_local_relocation()
                register struct outname *np = &symbol_table[rp->or_nami];
                int olddiff = diff;
                
-               if ((np->on_type & S_COM) && ! (np->on_type & S_EXT)) {
-                       long sz = np->on_valu;
-
-                       switchseg(SEGBSS);
-                       align_word();
-                       np->on_type &= (~S_COM);
-                       np->on_valu = cur_value();
-                       bss(sz);
-               }
                if ( np->on_valu  != -1 && ! (np->on_type & S_COM)) {
                        register long oldval,newval;
                        register char *sect;