diff --git a/gas/ChangeLog b/gas/ChangeLog index 909b4f4025..b51d7d6bf2 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2014-08-18 Nick Clifton + + * config/tc-rl78.c (md_apply_fix): Correct handling of small sized + RELOC_RL78_DIFF fixups. + 2014-08-18 Alan Modra * read.c (parse_mri_cons): Warning fix. diff --git a/gas/config/tc-rl78.c b/gas/config/tc-rl78.c index f2382b7b06..1627c61eeb 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;