From 7799bb2c277915edc6461287bc2c9602f560bf79 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Thu, 12 Jun 1997 16:17:53 +0000 Subject: [PATCH] * 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. PR 12580. --- gas/ChangeLog | 6 ++++++ gas/write.c | 10 ++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index c1db9d42231..e329610754c 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +Thu Jun 12 12:16:20 1997 Ian Lance Taylor + + * 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 diff --git a/gas/write.c b/gas/write.c index 77960f08042..71b5fec8a9f 100644 --- a/gas/write.c +++ b/gas/write.c @@ -1460,6 +1460,13 @@ write_object_file () 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. */ @@ -1886,7 +1893,6 @@ write_object_file () #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 @@ -1902,7 +1908,7 @@ is_dnrange (f1, f2) /* Relax a fragment by scanning TC_GENERIC_RELAX_TABLE. */ -static long +long relax_frag (fragP, stretch) fragS *fragP; long stretch; -- 2.30.2