* config/tc-arm.h (TC_FIX_TYPE): Change to int.
(TC_INIT_FIX_DATA): Initialize to 0, not NULL. * config/tc-arm.c (fix_new_arm): Remove now-unnecessary cast. (md_apply_fix3): Delete fix_is_thumb variable; refer to fixP->tc_fix_data directly in the sole place it was used. Explicitly truncate value, *valP, fixP->fx_addnumber, and fixP->fx_offset to 32 bits, for consistent behavior between 32- and 64-bit hosts.
This commit is contained in:
parent
5656b6b85e
commit
adbaf9485a
3 changed files with 28 additions and 8 deletions
|
@ -1,3 +1,14 @@
|
||||||
|
2005-05-26 Zack Weinberg <zack@codesourcery.com>
|
||||||
|
|
||||||
|
* config/tc-arm.h (TC_FIX_TYPE): Change to int.
|
||||||
|
(TC_INIT_FIX_DATA): Initialize to 0, not NULL.
|
||||||
|
* config/tc-arm.c (fix_new_arm): Remove now-unnecessary cast.
|
||||||
|
(md_apply_fix3): Delete fix_is_thumb variable; refer to
|
||||||
|
fixP->tc_fix_data directly in the sole place it was used.
|
||||||
|
Explicitly truncate value, *valP, fixP->fx_addnumber, and
|
||||||
|
fixP->fx_offset to 32 bits, for consistent behavior between 32-
|
||||||
|
and 64-bit hosts.
|
||||||
|
|
||||||
2005-05-27 Jan Beulich <jbeulich@novell.com>
|
2005-05-27 Jan Beulich <jbeulich@novell.com>
|
||||||
|
|
||||||
* config/tc-ia64.c (struct proc_pending): New.
|
* config/tc-ia64.c (struct proc_pending): New.
|
||||||
|
|
|
@ -7297,7 +7297,7 @@ fix_new_arm (fragS * frag,
|
||||||
|
|
||||||
/* Mark whether the fix is to a THUMB instruction, or an ARM
|
/* Mark whether the fix is to a THUMB instruction, or an ARM
|
||||||
instruction. */
|
instruction. */
|
||||||
new_fix->tc_fix_data = (PTR) thumb_mode;
|
new_fix->tc_fix_data = thumb_mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -10077,9 +10077,6 @@ md_apply_fix3 (fixS * fixP,
|
||||||
unsigned long temp;
|
unsigned long temp;
|
||||||
int sign;
|
int sign;
|
||||||
char * buf = fixP->fx_where + fixP->fx_frag->fr_literal;
|
char * buf = fixP->fx_where + fixP->fx_frag->fr_literal;
|
||||||
/* The double cast here prevents warnings about converting a pointer
|
|
||||||
to an integer of different size. We know the value is 0, 1, or 2. */
|
|
||||||
int fix_is_thumb = (int) (size_t) fixP->tc_fix_data;
|
|
||||||
|
|
||||||
assert (fixP->fx_r_type <= BFD_RELOC_UNUSED);
|
assert (fixP->fx_r_type <= BFD_RELOC_UNUSED);
|
||||||
|
|
||||||
|
@ -10098,9 +10095,21 @@ md_apply_fix3 (fixS * fixP,
|
||||||
value += md_pcrel_from (fixP);
|
value += md_pcrel_from (fixP);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Remember value for emit_reloc. */
|
/* On a 64-bit host, silently truncate 'value' to 32 bits for
|
||||||
|
consistency with the behavior on 32-bit hosts. Remember value
|
||||||
|
for emit_reloc. */
|
||||||
|
value &= 0xffffffff;
|
||||||
|
value ^= 0x80000000;
|
||||||
|
value -= 0x80000000;
|
||||||
|
|
||||||
|
*valP = value;
|
||||||
fixP->fx_addnumber = value;
|
fixP->fx_addnumber = value;
|
||||||
|
|
||||||
|
/* Same treatment for fixP->fx_offset. */
|
||||||
|
fixP->fx_offset &= 0xffffffff;
|
||||||
|
fixP->fx_offset ^= 0x80000000;
|
||||||
|
fixP->fx_offset -= 0x80000000;
|
||||||
|
|
||||||
switch (fixP->fx_r_type)
|
switch (fixP->fx_r_type)
|
||||||
{
|
{
|
||||||
case BFD_RELOC_NONE:
|
case BFD_RELOC_NONE:
|
||||||
|
@ -10436,7 +10445,7 @@ md_apply_fix3 (fixS * fixP,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BFD_RELOC_ARM_SWI:
|
case BFD_RELOC_ARM_SWI:
|
||||||
if (fix_is_thumb)
|
if (fixP->tc_fix_data != 0)
|
||||||
{
|
{
|
||||||
if (((unsigned long) value) > 0xff)
|
if (((unsigned long) value) > 0xff)
|
||||||
as_bad_where (fixP->fx_file, fixP->fx_line,
|
as_bad_where (fixP->fx_file, fixP->fx_line,
|
||||||
|
|
|
@ -96,8 +96,8 @@ struct fix;
|
||||||
deliberately not been updated to mark assembler created stabs
|
deliberately not been updated to mark assembler created stabs
|
||||||
symbols as Thumb. */
|
symbols as Thumb. */
|
||||||
|
|
||||||
#define TC_FIX_TYPE PTR
|
#define TC_FIX_TYPE int
|
||||||
#define TC_INIT_FIX_DATA(FIX) ((FIX)->tc_fix_data = NULL)
|
#define TC_INIT_FIX_DATA(FIX) ((FIX)->tc_fix_data = 0)
|
||||||
|
|
||||||
/* We need to keep some local information on symbols. */
|
/* We need to keep some local information on symbols. */
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue