Skip to content
Snippets Groups Projects
Commit 5a00ea25 authored by Hans-Peter Nilsson's avatar Hans-Peter Nilsson
Browse files

* 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.
parent 75f500d7
No related branches found
No related tags found
No related merge requests found
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> 2008-12-08 H.J. Lu <hongjiu.lu@intel.com>
* config/tc-i386.c (build_modrm_byte): Remove an extra blank * config/tc-i386.c (build_modrm_byte): Remove an extra blank
......
...@@ -2208,6 +2208,7 @@ cris_process_instruction (char *insn_text, struct cris_instruction *out_insnp, ...@@ -2208,6 +2208,7 @@ cris_process_instruction (char *insn_text, struct cris_instruction *out_insnp,
as_bad (out_insnp->reloc == BFD_RELOC_CRIS_32_GD as_bad (out_insnp->reloc == BFD_RELOC_CRIS_32_GD
|| out_insnp->reloc == BFD_RELOC_CRIS_32_TPREL || out_insnp->reloc == BFD_RELOC_CRIS_32_TPREL
|| out_insnp->reloc == BFD_RELOC_CRIS_16_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") ? _("TLS relocation size does not match operand size")
: _("PIC relocation size does not match operand size")); : _("PIC relocation size does not match operand size"));
} }
...@@ -3045,6 +3046,10 @@ get_3op_or_dip_prefix_op (char **cPP, struct cris_prefix *prefixp) ...@@ -3045,6 +3046,10 @@ get_3op_or_dip_prefix_op (char **cPP, struct cris_prefix *prefixp)
prefixp->kind = PREFIX_DIP; prefixp->kind = PREFIX_DIP;
prefixp->opcode = DIP_OPCODE | (AUTOINCR_BIT << 8) | REG_PC; prefixp->opcode = DIP_OPCODE | (AUTOINCR_BIT << 8) | REG_PC;
prefixp->reloc = BFD_RELOC_32; 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 else
/* Neither '[' nor register nor expression. We lose. */ /* Neither '[' nor register nor expression. We lose. */
...@@ -3489,6 +3494,7 @@ cris_get_reloc_suffix (char **cPP, bfd_reloc_code_real_type *relocp, ...@@ -3489,6 +3494,7 @@ cris_get_reloc_suffix (char **cPP, bfd_reloc_code_real_type *relocp,
TLSMAP ("GD", BFD_RELOC_CRIS_32_GD), TLSMAP ("GD", BFD_RELOC_CRIS_32_GD),
PICTLSMAP ("DTPREL16", BFD_RELOC_CRIS_16_DTPREL), PICTLSMAP ("DTPREL16", BFD_RELOC_CRIS_16_DTPREL),
PICTLSMAP ("DTPREL", BFD_RELOC_CRIS_32_DTPREL), PICTLSMAP ("DTPREL", BFD_RELOC_CRIS_32_DTPREL),
TLSMAP ("IE", BFD_RELOC_CRIS_32_IE),
PICTLSMAP ("TPOFFGOT16", BFD_RELOC_CRIS_16_GOT_TPREL), PICTLSMAP ("TPOFFGOT16", BFD_RELOC_CRIS_16_GOT_TPREL),
PICTLSMAP ("TPOFFGOT", BFD_RELOC_CRIS_32_GOT_TPREL), PICTLSMAP ("TPOFFGOT", BFD_RELOC_CRIS_32_GOT_TPREL),
TLSMAP ("TPOFF16", BFD_RELOC_CRIS_16_TPREL), TLSMAP ("TPOFF16", BFD_RELOC_CRIS_16_TPREL),
...@@ -3630,6 +3636,7 @@ cris_number_to_imm (char *bufp, long val, int n, fixS *fixP, segT seg) ...@@ -3630,6 +3636,7 @@ cris_number_to_imm (char *bufp, long val, int n, fixS *fixP, segT seg)
case BFD_RELOC_CRIS_32_GOT_GD: case BFD_RELOC_CRIS_32_GOT_GD:
case BFD_RELOC_CRIS_16_GOT_GD: case BFD_RELOC_CRIS_16_GOT_GD:
case BFD_RELOC_CRIS_32_GD: case BFD_RELOC_CRIS_32_GD:
case BFD_RELOC_CRIS_32_IE:
case BFD_RELOC_CRIS_32_DTPREL: case BFD_RELOC_CRIS_32_DTPREL:
case BFD_RELOC_CRIS_16_DTPREL: case BFD_RELOC_CRIS_16_DTPREL:
case BFD_RELOC_CRIS_32_GOT_TPREL: case BFD_RELOC_CRIS_32_GOT_TPREL:
...@@ -3911,6 +3918,7 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixP) ...@@ -3911,6 +3918,7 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixP)
case BFD_RELOC_CRIS_32_GOT_GD: case BFD_RELOC_CRIS_32_GOT_GD:
case BFD_RELOC_CRIS_16_GOT_GD: case BFD_RELOC_CRIS_16_GOT_GD:
case BFD_RELOC_CRIS_32_GD: case BFD_RELOC_CRIS_32_GD:
case BFD_RELOC_CRIS_32_IE:
case BFD_RELOC_CRIS_32_DTPREL: case BFD_RELOC_CRIS_32_DTPREL:
case BFD_RELOC_CRIS_16_DTPREL: case BFD_RELOC_CRIS_16_DTPREL:
case BFD_RELOC_CRIS_32_GOT_TPREL: case BFD_RELOC_CRIS_32_GOT_TPREL:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment