aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-rl78.c11
2 files changed, 15 insertions, 1 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 909b4f4..b51d7d6 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2014-08-18 Nick Clifton <nickc@redhat.com>
+
+ * config/tc-rl78.c (md_apply_fix): Correct handling of small sized
+ RELOC_RL78_DIFF fixups.
+
2014-08-18 Alan Modra <amodra@gmail.com>
* read.c (parse_mri_cons): Warning fix.
diff --git a/gas/config/tc-rl78.c b/gas/config/tc-rl78.c
index f2382b7..1627c61 100644
--- a/gas/config/tc-rl78.c
+++ b/gas/config/tc-rl78.c
@@ -1361,13 +1361,22 @@ md_apply_fix (struct fix * f ATTRIBUTE_UNUSED,
break;
case BFD_RELOC_32:
- case BFD_RELOC_RL78_DIFF:
op[0] = val;
op[1] = val >> 8;
op[2] = val >> 16;
op[3] = val >> 24;
break;
+ case BFD_RELOC_RL78_DIFF:
+ op[0] = val;
+ if (f->fx_size > 1)
+ op[1] = val >> 8;
+ if (f->fx_size > 2)
+ op[2] = val >> 16;
+ if (f->fx_size > 3)
+ op[3] = val >> 24;
+ break;
+
case BFD_RELOC_RL78_HI8:
val = val >> 16;
op[0] = val;