handle local commons in one place only
This commit is contained in:
parent
18b719de80
commit
87d0349814
3 changed files with 14 additions and 18 deletions
util/ceg/ce_back/obj_back
|
@ -9,6 +9,20 @@ finish_tables()
|
||||||
/* Prepare tables for do_local_relocation() and output().
|
/* 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 )
|
while ( ( text - text_area) % EM_WSIZE != 0 )
|
||||||
text1( '\0');
|
text1( '\0');
|
||||||
while ( ( data - data_area) % EM_WSIZE != 0 )
|
while ( ( data - data_area) % EM_WSIZE != 0 )
|
||||||
|
|
|
@ -129,15 +129,6 @@ reduce_name_table()
|
||||||
register struct outname *np = &symbol_table[i];
|
register struct outname *np = &symbol_table[i];
|
||||||
|
|
||||||
np->on_type &= ~S_NEEDED;
|
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]) {
|
if (diff_index[i] && diff_index[i] == diff_index[i-1]) {
|
||||||
symbol_table[i - diff_index[i]] = *np;
|
symbol_table[i - diff_index[i]] = *np;
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,15 +24,6 @@ do_local_relocation()
|
||||||
register struct outname *np = &symbol_table[rp->or_nami];
|
register struct outname *np = &symbol_table[rp->or_nami];
|
||||||
int olddiff = diff;
|
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)) {
|
if ( np->on_valu != -1 && ! (np->on_type & S_COM)) {
|
||||||
register long oldval,newval;
|
register long oldval,newval;
|
||||||
register char *sect;
|
register char *sect;
|
||||||
|
|
Loading…
Reference in a new issue