+Thu Jun 12 12:16:20 1997  Ian Lance Taylor  <ian@cygnus.com>
+
+       * write.c (write_object_file): In non BFD_ASSEMBLER code, as we
+       step through the frags calling cvt_frag_to_fill, switch to
+       SEG_DATA when we reach data_frag_root.
+
 Tue Jun 10 17:08:34 1997  Jeffrey A Law  (law@cygnus.com)
 
        * config/tc-mn10300.c (md_assemble): Allow an empty register
 
 
   for (fragP = text_frag_root; fragP; fragP = fragP->fr_next)
     {
+      /* At this point we have linked all the frags into a single
+         chain.  However, cvt_frag_to_fill may call md_convert_frag
+         which may call fix_new.  We need to ensure that fix_new adds
+         the fixup to the right section.  */
+      if (fragP == data_frag_root)
+       subseg_change (SEG_DATA, 0);
+
       cvt_frag_to_fill (&headers, SEG_TEXT, fragP);
 
       /* Some assert macros don't work with # directives mixed in.  */
 #ifdef TC_GENERIC_RELAX_TABLE
 
 static int is_dnrange PARAMS ((fragS *, fragS *));
-static long relax_frag PARAMS ((fragS *, long));
 
 /* Subroutines of relax_segment.  */
 static int
 
 /* Relax a fragment by scanning TC_GENERIC_RELAX_TABLE.  */
 
-static long
+long
 relax_frag (fragP, stretch)
      fragS *fragP;
      long stretch;