diff options
Diffstat (limited to 'gas/config/tc-sh.c')
-rw-r--r-- | gas/config/tc-sh.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/gas/config/tc-sh.c b/gas/config/tc-sh.c index 6cb9c93..3af26a9 100644 --- a/gas/config/tc-sh.c +++ b/gas/config/tc-sh.c @@ -847,9 +847,13 @@ align_test_frag_offset_fixed_p (const fragS *frag1, const fragS *frag2, /* Maybe frag2 is after frag1. */ frag = frag1; - while (frag->fr_type == rs_align_test) + while (frag->fr_type == rs_fill + || frag->fr_type == rs_align_test) { - off += frag->fr_fix; + if (frag->fr_type == rs_fill) + off += frag->fr_fix + frag->fr_offset * frag->fr_var; + else + off += frag->fr_fix; frag = frag->fr_next; if (frag == NULL) break; @@ -863,9 +867,13 @@ align_test_frag_offset_fixed_p (const fragS *frag1, const fragS *frag2, /* Maybe frag1 is after frag2. */ off = frag1->fr_address - frag2->fr_address; frag = frag2; - while (frag->fr_type == rs_align_test) + while (frag->fr_type == rs_fill + || frag->fr_type == rs_align_test) { - off -= frag->fr_fix; + if (frag->fr_type == rs_fill) + off -= frag->fr_fix + frag->fr_offset * frag->fr_var; + else + off -= frag->fr_fix; frag = frag->fr_next; if (frag == NULL) break; |