handle local commons in one place only

This commit is contained in:
ceriel 1988-12-06 13:22:34 +00:00
parent 18b719de80
commit 87d0349814
3 changed files with 14 additions and 18 deletions

View 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 )

View 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;
}

View 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;