RISC-V: Fix DW_CFA_advance_loc relocation.
authorKuan-Lin Chen <rufus@andestech.com>
Fri, 10 Feb 2017 06:58:52 +0000 (14:58 +0800)
committerPalmer Dabbelt <palmer@dabbelt.com>
Tue, 14 Mar 2017 16:51:29 +0000 (09:51 -0700)
gas/ChangeLog:

2017-03-02  Kuan-Lin Chen  <rufus@andestech.com>

        * config/tc-riscv.c (md_apply_fix): Set fx_frag and
        fx_next->fx_frag for CFA_advance_loc relocations.

gas/ChangeLog
gas/config/tc-riscv.c

index 4d638b4..1478cdf 100644 (file)
@@ -1,5 +1,10 @@
 2017-03-02  Kuan-Lin Chen  <rufus@andestech.com>
 
+       * config/tc-riscv.c (md_apply_fix): Set fx_frag and
+       fx_next->fx_frag for CFA_advance_loc relocations.
+
+2017-03-02  Kuan-Lin Chen  <rufus@andestech.com>
+
        * config/tc-riscv.c (md_apply_fix): Compute the correct offsets
        for CFA relocations.
 
index 3744e84..723ccba 100644 (file)
@@ -1966,6 +1966,8 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED)
                  if (subtype < 0x80 && (subtype & 0x40))
                    {
                      /* DW_CFA_advance_loc */
+                     fixP->fx_frag = (fragS *) fixP->fx_frag->fr_opcode;
+                     fixP->fx_next->fx_frag = fixP->fx_frag;
                      fixP->fx_r_type = BFD_RELOC_RISCV_SET6;
                      fixP->fx_next->fx_r_type = BFD_RELOC_RISCV_SUB6;
                    }