* subsegs.c (subsegs_begin): create bss0_frchainP in the same was
[deliverable/binutils-gdb.git] / gas / subsegs.c
index 9768e7f504aefb59d710361f6c7caeb1c4bbc0e6..5ef9570df779d3a6c1424b17d7491517472a9828 100644 (file)
@@ -36,7 +36,7 @@ frchainS*     frchain_root,
 frchainS*      frchain_root,
     *  frchain_now,    /* Commented in "subsegs.h". */
     *  data0_frchainP,
   *  bss0_frchainP;
* bss0_frchainP;
 
 #endif
 char * const /* in: segT   out: char* */
@@ -109,8 +109,10 @@ void
 #else
        subseg_new (SEG_DATA, 0);       /* .data 0 */
        data0_frchainP = frchain_now;
+
        subseg_new (SEG_BSS, 0);
        bss0_frchainP = frchain_now;
+
 #endif
        
 }
@@ -136,22 +138,21 @@ register int      subseg;
        seg_fix_rootP = & segment_info[seg].fix_root;
        seg_fix_tailP = & segment_info[seg].fix_tail;
 #else
-       if (seg == SEG_BSS)
-           {
-                   seg_fix_rootP = & bss_fix_root;
-                   seg_fix_tailP = & bss_fix_tail;
-           }
-       else if (seg == SEG_DATA)
+       if (seg == SEG_DATA)
            {
                    seg_fix_rootP = & data_fix_root;
                    seg_fix_tailP = & data_fix_tail;
            }
-       else
+       else if (seg == SEG_TEXT)
            {
-                   know (seg == SEG_TEXT);
                    seg_fix_rootP = & text_fix_root;
                    seg_fix_tailP = & text_fix_tail;
            }
+       else {
+                   know (seg == SEG_BSS);
+                   seg_fix_rootP = & bss_fix_root;
+                   seg_fix_tailP = & bss_fix_tail;
+           }
 #endif
 }
 \f
@@ -173,12 +174,23 @@ register int      subseg;
 
 void
     subseg_new (seg, subseg)   /* begin assembly for a new sub-segment */
-register segT  seg;    /* SEG_DATA or SEG_TEXT or SEG_BSS */
+register segT  seg; /* SEG_DATA or SEG_TEXT */
 register subsegT       subseg;
 {
        long tmp;               /* JF for obstack alignment hacking */
 #ifndef MANY_SEGMENTS
-       know( seg == SEG_DATA || seg == SEG_TEXT || seg == SEG_BSS);
+       know(seg == SEG_DATA || seg == SEG_TEXT || seg == SEG_BSS);
+#endif
+#ifdef OBJ_AOUT
+/* If -R specifed, always put stuff into the data section */
+       if (flagseen['R']) 
+       {
+         if (seg == SEG_DATA) 
+         {
+           subseg += 1000;
+           seg = SEG_TEXT;
+         }
+       }
 #endif
        if (seg != now_seg || subseg != now_subseg)
            {                           /* we just changed sub-segments */
This page took 0.02512 seconds and 4 git commands to generate.