aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans-Peter Nilsson <hp@axis.com>2001-04-04 03:05:47 +0000
committerHans-Peter Nilsson <hp@axis.com>2001-04-04 03:05:47 +0000
commitaacb52510a2e29f5a4c3ebae082f9e99b24cf79f (patch)
treec8a83d5b2ca255aa26ac51731d0864c21999ef2f
parentd9697354487c09683dd0b1265cf6f8b3fd523a71 (diff)
downloadfsf-binutils-gdb-aacb52510a2e29f5a4c3ebae082f9e99b24cf79f.zip
fsf-binutils-gdb-aacb52510a2e29f5a4c3ebae082f9e99b24cf79f.tar.gz
fsf-binutils-gdb-aacb52510a2e29f5a4c3ebae082f9e99b24cf79f.tar.bz2
* write.c (write_object_file): Reset broken word state before
calling relax_seg.
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/write.c20
2 files changed, 25 insertions, 0 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 4d20134..64816e3 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2001-04-04 Hans-Peter Nilsson <hp@axis.com>
+
+ * write.c (write_object_file): Reset broken word state before
+ calling relax_seg.
+
2001-03-31 Alan Modra <alan@linuxcare.com.au>
* listing.c (listing_listing): Enable listing on EDICT_NOLIST_NEXT
diff --git a/gas/write.c b/gas/write.c
index ea4b082..1a2798b 100644
--- a/gas/write.c
+++ b/gas/write.c
@@ -1544,6 +1544,26 @@ write_object_file ()
{
int changed;
+#ifndef WORKING_DOT_WORD
+ /* We need to reset the markers in the broken word list and
+ associated frags between calls to relax_segment (via
+ relax_seg). Since the broken word list is global, we do it
+ once per round, rather than locally in relax_segment for each
+ segment. */
+ struct broken_word *brokp;
+
+ for (brokp = broken_words;
+ brokp != (struct broken_word *) NULL;
+ brokp = brokp->next_broken_word)
+ {
+ brokp->added = 0;
+
+ if (brokp->dispfrag != (fragS *) NULL
+ && brokp->dispfrag->fr_type == rs_broken_word)
+ brokp->dispfrag->fr_subtype = 0;
+ }
+#endif
+
changed = 0;
bfd_map_over_sections (stdoutput, relax_seg, &changed);
if (!changed)