+2014-08-01 Takashi Yoshii <yoshii.takashi@renesas.com>
+
+ PR 10378
+ * config/tc-sh.c (tc_gen_reloc): Fix initialization of addend in
+ SWITCH_TABLE case.
+
2014-07-29 Matthew Fortune <matthew.fortune@imgtec.com>
* config/tc-mips.c: Rename INSN_LOAD_COPROC_DELAY to INSN_LOAD_COPROC
if (SWITCH_TABLE (fixp))
{
*rel->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_subsy);
- rel->addend = 0;
+ rel->addend = rel->address - S_GET_VALUE(fixp->fx_subsy);
if (r_type == BFD_RELOC_16)
r_type = BFD_RELOC_SH_SWITCH16;
else if (r_type == BFD_RELOC_8)
+2014-08-01 Takashi Yoshii <yoshii.takashi@renesas.com>
+
+ PR 10378
+ * ld-sh/adjsw8.s: New.
+ * ld-sh/sh.exp: Add switch8 adjustment test.
+
2014-07-29 Matthew Fortune <matthew.fortune@imgtec.com>
* ld-mips-elf/abiflags-strip1-ph.d: New.
--- /dev/null
+L0: .byte L1-L0
+ .byte L2-L0
+ .byte L3-L0
+ .align 1
+L1: mov.l 1f,r1
+ .uses L1
+ jmp @r1
+ nop
+L2: mov.l 1f,r1
+ .uses L2
+ jmp @r1
+ nop
+L3: nop
+ .align 2
+1: .long 2f
+2:
}
}
+set testadjsw8 "SH switch8 adjustment after relax"
+if ![ld_assemble $as "-relax $srcdir/$subdir/adjsw8.s" tmpdir/adjsw8.o] {
+ unresolved $testadjsw8
+} else {
+ if ![ld_simple_link $ld tmpdir/adjsw8 "-relax tmpdir/adjsw8.o"] {
+ fail $testadjsw8
+ } else {
+ send_log "exec $objdump -s tmpdir/adjsw8\n"
+ verbose "exec $objdump -s tmpdir/adjsw8"
+ catch "exec $objdump -s tmpdir/adjsw8" exec_output
+ if [string match "*04080c00*" $exec_output] {
+ pass $testadjsw8
+ } else {
+ send_log "bad switch table\n"
+ verbose "bad switch table"
+ fail $testadjsw8
+ }
+ }
+}
+
set testlink "SH relaxing"
set testjsr "SH confirm relaxing"
set testrun "SH relaxing execution"