+2008-12-20 Hans-Peter Nilsson <hp@axis.com>
+
+ * config/tc-cris.c (cris_process_instruction): Handle
+ BFD_RELOC_CRIS_32_IE, in the test whether the relocation fits.
+ (get_3op_or_dip_prefix_op): Handle TLS/PIC decoration for the
+ "double indirect" addressing mode.
+ (cris_get_reloc_suffix): Add entry for :IE for BFD_RELOC_CRIS_32_IE.
+ (cris_number_to_imm, tc_gen_reloc): Handle BFD_RELOC_CRIS_32_IE.
+
2008-12-08 H.J. Lu <hongjiu.lu@intel.com>
* config/tc-i386.c (build_modrm_byte): Remove an extra blank
as_bad (out_insnp->reloc == BFD_RELOC_CRIS_32_GD
|| out_insnp->reloc == BFD_RELOC_CRIS_32_TPREL
|| out_insnp->reloc == BFD_RELOC_CRIS_16_TPREL
+ || out_insnp->reloc == BFD_RELOC_CRIS_32_IE
? _("TLS relocation size does not match operand size")
: _("PIC relocation size does not match operand size"));
}
prefixp->kind = PREFIX_DIP;
prefixp->opcode = DIP_OPCODE | (AUTOINCR_BIT << 8) | REG_PC;
prefixp->reloc = BFD_RELOC_32;
+
+ /* For :GD and :IE, it makes sense to have TLS specifiers here. */
+ if ((pic || tls) && **cPP == RELOC_SUFFIX_CHAR)
+ cris_get_reloc_suffix (cPP, &prefixp->reloc, &prefixp->expr);
}
else
/* Neither '[' nor register nor expression. We lose. */
TLSMAP ("GD", BFD_RELOC_CRIS_32_GD),
PICTLSMAP ("DTPREL16", BFD_RELOC_CRIS_16_DTPREL),
PICTLSMAP ("DTPREL", BFD_RELOC_CRIS_32_DTPREL),
+ TLSMAP ("IE", BFD_RELOC_CRIS_32_IE),
PICTLSMAP ("TPOFFGOT16", BFD_RELOC_CRIS_16_GOT_TPREL),
PICTLSMAP ("TPOFFGOT", BFD_RELOC_CRIS_32_GOT_TPREL),
TLSMAP ("TPOFF16", BFD_RELOC_CRIS_16_TPREL),
case BFD_RELOC_CRIS_32_GOT_GD:
case BFD_RELOC_CRIS_16_GOT_GD:
case BFD_RELOC_CRIS_32_GD:
+ case BFD_RELOC_CRIS_32_IE:
case BFD_RELOC_CRIS_32_DTPREL:
case BFD_RELOC_CRIS_16_DTPREL:
case BFD_RELOC_CRIS_32_GOT_TPREL:
case BFD_RELOC_CRIS_32_GOT_GD:
case BFD_RELOC_CRIS_16_GOT_GD:
case BFD_RELOC_CRIS_32_GD:
+ case BFD_RELOC_CRIS_32_IE:
case BFD_RELOC_CRIS_32_DTPREL:
case BFD_RELOC_CRIS_16_DTPREL:
case BFD_RELOC_CRIS_32_GOT_TPREL: