From a968e61d8eddf228173019b0265ac6cf6a52cccf Mon Sep 17 00:00:00 2001 From: Hans-Peter Nilsson Date: Wed, 18 Jun 2014 00:11:01 +0200 Subject: [PATCH] GAS: Fix MMIX err-fb-2.s regression caused by recent generic GAS changes. --- gas/ChangeLog | 7 +++++++ gas/config/tc-mmix.c | 11 +++++++++++ 2 files changed, 18 insertions(+) diff --git a/gas/ChangeLog b/gas/ChangeLog index d75b57fef5..eaf5c0364f 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,10 @@ +2014-06-17 Hans-Peter Nilsson + + * config/tc-mmix.c (loc_assert_s): New member frag. + (s_loc): Set it. + (mmix_md_end): If an error is reported for a LOC expression, patch + up the related frag. + 2014-06-17 Chris Metcalf PR gas/16908 diff --git a/gas/config/tc-mmix.c b/gas/config/tc-mmix.c index ab0fd0076f..7740ee2325 100644 --- a/gas/config/tc-mmix.c +++ b/gas/config/tc-mmix.c @@ -112,6 +112,7 @@ static struct loc_assert_s { segT old_seg; symbolS *loc_sym; + fragS *frag; struct loc_assert_s *next; } *loc_asserts = NULL; @@ -3560,6 +3561,15 @@ mmix_md_end (void) as_bad_where (fnam, line, _("LOC to section unknown or indeterminable " "at first pass")); + + /* Patch up the generic location data to avoid cascading + error messages from later passes. (See original in + write.c:relax_segment.) */ + fragP = loc_assert->frag; + fragP->fr_type = rs_align; + fragP->fr_subtype = 0; + fragP->fr_offset = 0; + fragP->fr_fix = 0; } } @@ -4084,6 +4094,7 @@ s_loc (int ignore ATTRIBUTE_UNUSED) loc_asserts->next = next; loc_asserts->old_seg = now_seg; loc_asserts->loc_sym = esym; + loc_asserts->frag = frag_now; } p = frag_var (rs_org, 1, 1, (relax_substateT) 0, sym, off, (char *) 0);