+2003-01-07 DJ Delorie <dj@redhat.com>
+
+ * config/tc-xstormy16.c (md_cgen_lookup_reloc): Adjust value based
+ on operand type.
+ (xstormy16_md_apply_fix3): Use adjustment.
+
2003-01-02 Ben Elliston <bje@redhat.com>
* configure.in: Add iq2000-elf target.
case XSTORMY16_OPERAND_ABS24:
return BFD_RELOC_XSTORMY16_24;
- case XSTORMY16_OPERAND_REL8_2:
case XSTORMY16_OPERAND_REL8_4:
+ fixP->fx_addnumber -= 2;
+ case XSTORMY16_OPERAND_REL8_2:
+ fixP->fx_addnumber -= 2;
fixP->fx_pcrel = 1;
return BFD_RELOC_8_PCREL;
fixP->fx_where += 2;
/* Fall through... */
case XSTORMY16_OPERAND_REL12A:
+ fixP->fx_addnumber -= 2;
fixP->fx_pcrel = 1;
return BFD_RELOC_XSTORMY16_REL_12;
/* Canonical name, since used a lot. */
CGEN_CPU_DESC cd = gas_cgen_cpu_desc;
+ /* md_cgen_lookup_reloc() will adjust this to compensate for where
+ in the opcode the relocation happens, for pcrel relocations. We
+ have no other way of keeping track of what this offset needs to
+ be. */
+ fixP->fx_addnumber = 0;
+
/* This port has pc-relative relocs and DIFF_EXPR_OK defined, so
it must deal with turning a BFD_RELOC_{8,16,32,64} into a
BFD_RELOC_*_PCREL for the case of
/* Tuck `value' away for use by tc_gen_reloc.
See the comment describing fx_addnumber in write.h.
This field is misnamed (or misused :-). */
- fixP->fx_addnumber = value;
+ fixP->fx_addnumber += value;
}
\f