aboutsummaryrefslogtreecommitdiff
path: root/gas/subsegs.c
diff options
context:
space:
mode:
Diffstat (limited to 'gas/subsegs.c')
-rw-r--r--gas/subsegs.c18
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 */