Skip to content
Snippets Groups Projects
Commit 19f2f6a9 authored by Jiong Wang's avatar Jiong Wang
Browse files

[ARM] Fix 32-bit host build failure.

  gas/
    * config/tc-arm.c (add_to_lit_pool): Use "inst.operands[1].imm" for * sign
    extension.  Casting the type of imm1 and imm2 to offsetT.  Fix one logic
    error when checking X_op.
parent d6f18fe6
No related branches found
No related tags found
No related merge requests found
2014-07-15 Jiong Wang <jiong.wang@arm.com>
* config/tc-arm.c (add_to_lit_pool): Use "inst.operands[1].imm" for
sign extension. Casting the type of imm1 and imm2 to offsetT. Fix
one logic error when checking X_op.
2014-07-14 Andreas Schwab <schwab@linux-m68k.org> 2014-07-14 Andreas Schwab <schwab@linux-m68k.org>
* config/tc-m68k.c (md_convert_frag_1): Don't complain with * config/tc-m68k.c (md_convert_frag_1): Don't complain with
......
...@@ -3198,7 +3198,7 @@ add_to_lit_pool (unsigned int nbytes) ...@@ -3198,7 +3198,7 @@ add_to_lit_pool (unsigned int nbytes)
imm1 = inst.operands[1].imm; imm1 = inst.operands[1].imm;
imm2 = (inst.operands[1].regisimm ? inst.operands[1].reg imm2 = (inst.operands[1].regisimm ? inst.operands[1].reg
: inst.reloc.exp.X_unsigned ? 0 : inst.reloc.exp.X_unsigned ? 0
: ((int64_t)(imm1)) >> 32); : ((int64_t) inst.operands[1].imm) >> 32);
if (target_big_endian) if (target_big_endian)
{ {
imm1 = imm2; imm1 = imm2;
...@@ -3237,11 +3237,11 @@ add_to_lit_pool (unsigned int nbytes) ...@@ -3237,11 +3237,11 @@ add_to_lit_pool (unsigned int nbytes)
&& !(pool_size & 0x7) && !(pool_size & 0x7)
&& ((entry + 1) != pool->next_free_entry) && ((entry + 1) != pool->next_free_entry)
&& (pool->literals[entry].X_op == O_constant) && (pool->literals[entry].X_op == O_constant)
&& (pool->literals[entry].X_add_number == imm1) && (pool->literals[entry].X_add_number == (offsetT) imm1)
&& (pool->literals[entry].X_unsigned && (pool->literals[entry].X_unsigned
== inst.reloc.exp.X_unsigned) == inst.reloc.exp.X_unsigned)
&& (pool->literals[entry + 1].X_op == O_constant) && (pool->literals[entry + 1].X_op == O_constant)
&& (pool->literals[entry + 1].X_add_number == imm2) && (pool->literals[entry + 1].X_add_number == (offsetT) imm2)
&& (pool->literals[entry + 1].X_unsigned && (pool->literals[entry + 1].X_unsigned
== inst.reloc.exp.X_unsigned)) == inst.reloc.exp.X_unsigned))
break; break;
...@@ -3275,8 +3275,8 @@ add_to_lit_pool (unsigned int nbytes) ...@@ -3275,8 +3275,8 @@ add_to_lit_pool (unsigned int nbytes)
   
We also check to make sure the literal operand is a We also check to make sure the literal operand is a
constant number. */ constant number. */
if (!(inst.reloc.exp.X_op == O_constant) if (!(inst.reloc.exp.X_op == O_constant
|| (inst.reloc.exp.X_op == O_big)) || inst.reloc.exp.X_op == O_big))
{ {
inst.error = _("invalid type for literal pool"); inst.error = _("invalid type for literal pool");
return FAIL; return FAIL;
......
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