From: Nick Clifton Date: Mon, 18 Aug 2014 16:34:03 +0000 (+0100) Subject: This fixes the processing of BFD_RELOC_RL78_DIFF fixups when the size is less X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=3ce3a066e18b52c1b7c8da841e0416ecf687e1e5;p=binutils-gdb.git This fixes the processing of BFD_RELOC_RL78_DIFF fixups when the size is less than 4. This affects DWARF debug info generation in particular. * config/tc-rl78.c (md_apply_fix): Correct handling of small sized RELOC_RL78_DIFF fixups. --- diff --git a/gas/ChangeLog b/gas/ChangeLog index 909b4f4025e..b51d7d6bf21 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 f2382b7b06a..1627c61eebb 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;