diff options
Diffstat (limited to 'gas/subsegs.c')
-rw-r--r-- | gas/subsegs.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/gas/subsegs.c b/gas/subsegs.c index 1e2beef..9768e7f 100644 --- a/gas/subsegs.c +++ b/gas/subsegs.c @@ -1,5 +1,5 @@ /* subsegs.c - subsegments - - Copyright (C) 1987, 1990, 1991 Free Software Foundation, Inc. + Copyright (C) 1987, 1990, 1991, 1992 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -35,7 +35,8 @@ frchainS* frchain_root, #else frchainS* frchain_root, * frchain_now, /* Commented in "subsegs.h". */ - * data0_frchainP; + * data0_frchainP, + * bss0_frchainP; #endif char * const /* in: segT out: char* */ @@ -108,6 +109,8 @@ void #else subseg_new (SEG_DATA, 0); /* .data 0 */ data0_frchainP = frchain_now; + subseg_new (SEG_BSS, 0); + bss0_frchainP = frchain_now; #endif } @@ -133,7 +136,12 @@ register int subseg; seg_fix_rootP = & segment_info[seg].fix_root; seg_fix_tailP = & segment_info[seg].fix_tail; #else - if (seg == SEG_DATA) + if (seg == SEG_BSS) + { + seg_fix_rootP = & bss_fix_root; + seg_fix_tailP = & bss_fix_tail; + } + else if (seg == SEG_DATA) { seg_fix_rootP = & data_fix_root; seg_fix_tailP = & data_fix_tail; @@ -165,12 +173,12 @@ register int subseg; void subseg_new (seg, subseg) /* begin assembly for a new sub-segment */ -register segT seg; /* SEG_DATA or SEG_TEXT */ +register segT seg; /* SEG_DATA or SEG_TEXT or SEG_BSS */ register subsegT subseg; { long tmp; /* JF for obstack alignment hacking */ #ifndef MANY_SEGMENTS - know( seg == SEG_DATA || seg == SEG_TEXT ); + know( seg == SEG_DATA || seg == SEG_TEXT || seg == SEG_BSS); #endif if (seg != now_seg || subseg != now_subseg) { /* we just changed sub-segments */ |