summaryrefslogtreecommitdiff
path: root/gas/config/tc-sh.c
diff options
context:
space:
mode:
authorKaz Kojima <kkojima@rr.iij4u.or.jp>2007-04-15 22:02:25 +0000
committerKaz Kojima <kkojima@rr.iij4u.or.jp>2007-04-15 22:02:25 +0000
commit504d556f8ece34749ea5f4cc66aa530b48dbbbb7 (patch)
tree16d4ab69257a0433e3e7654c769021f28dbd1a1d /gas/config/tc-sh.c
parentd175e196088d6b73cbd865083188709ac937ac0c (diff)
downloadbinutils-redhat-504d556f8ece34749ea5f4cc66aa530b48dbbbb7.tar.gz
* config/tc-sh.c (align_test_frag_offset_fixed_p): Handle
rs_fill frags.
Diffstat (limited to 'gas/config/tc-sh.c')
-rw-r--r--gas/config/tc-sh.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/gas/config/tc-sh.c b/gas/config/tc-sh.c
index 6cb9c93bc4..3af26a958e 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;