mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-07-03 03:07:26 +08:00
* config/tc-z8k.c (INSERT): Remove, not used anywhere.
(md_apply_fix3): Make relative branches out of range an error instead of a warning. Display correct line number for out of range branches/calls/memory accesses.
This commit is contained in:
@ -1,3 +1,10 @@
|
|||||||
|
2005-01-27 Christian Groessler <chris@groessler.org>
|
||||||
|
|
||||||
|
* config/tc-z8k.c (INSERT): Remove, not used anywhere.
|
||||||
|
(md_apply_fix3): Make relative branches out of range an error
|
||||||
|
instead of a warning. Display correct line number for out of
|
||||||
|
range branches/calls/memory accesses.
|
||||||
|
|
||||||
2005-01-27 Nathan Sidwell <nathan@codesourcery.com>
|
2005-01-27 Nathan Sidwell <nathan@codesourcery.com>
|
||||||
|
|
||||||
* dwarf2dbg.c (dwarf2_finish): Correct logic for determining when
|
* dwarf2dbg.c (dwarf2_finish): Correct logic for determining when
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* tc-z8k.c -- Assemble code for the Zilog Z800n
|
/* tc-z8k.c -- Assemble code for the Zilog Z800n
|
||||||
Copyright 1992, 1993, 1994, 1995, 1996, 1998, 2000, 2001, 2002, 2003
|
Copyright 1992, 1993, 1994, 1995, 1996, 1998, 2000, 2001, 2002, 2003,
|
||||||
Free Software Foundation, Inc.
|
2005 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GAS, the GNU Assembler.
|
This file is part of GAS, the GNU Assembler.
|
||||||
|
|
||||||
@ -995,8 +995,6 @@ apply_fix (char *ptr, int type, expressionS *operand, int size)
|
|||||||
|
|
||||||
/* Now we know what sort of opcodes it is. Let's build the bytes. */
|
/* Now we know what sort of opcodes it is. Let's build the bytes. */
|
||||||
|
|
||||||
#define INSERT(x,y) *x++ = y>>24; *x++ = y>> 16; *x++=y>>8; *x++ =y;
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
build_bytes (opcode_entry_type *this_try, struct z8k_op *operand ATTRIBUTE_UNUSED)
|
build_bytes (opcode_entry_type *this_try, struct z8k_op *operand ATTRIBUTE_UNUSED)
|
||||||
{
|
{
|
||||||
@ -1432,13 +1430,15 @@ md_apply_fix3 (fixS *fixP, valueT *valP, segT segment ATTRIBUTE_UNUSED)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (val & 1)
|
if (val & 1)
|
||||||
as_bad (_("cannot branch to odd address"));
|
as_bad_where (fixP->fx_file, fixP->fx_line,
|
||||||
val /= 2;
|
_("cannot branch to odd address"));
|
||||||
if (val > 127 || val < -128)
|
val /= 2;
|
||||||
as_warn (_("relative jump out of range"));
|
if (val > 127 || val < -128)
|
||||||
*buf++ = val;
|
as_warn_where (fixP->fx_file, fixP->fx_line,
|
||||||
fixP->fx_no_overflow = 1;
|
_("relative jump out of range"));
|
||||||
|
*buf++ = val;
|
||||||
|
fixP->fx_no_overflow = 1;
|
||||||
fixP->fx_done = 1;
|
fixP->fx_done = 1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -1452,10 +1452,12 @@ md_apply_fix3 (fixS *fixP, valueT *valP, segT segment ATTRIBUTE_UNUSED)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (val & 1)
|
if (val & 1)
|
||||||
as_bad (_("cannot branch to odd address"));
|
as_bad_where (fixP->fx_file, fixP->fx_line,
|
||||||
|
_("cannot branch to odd address"));
|
||||||
val /= 2;
|
val /= 2;
|
||||||
if (val > 0 || val < -127)
|
if (val > 0 || val < -127)
|
||||||
as_bad (_("relative jump out of range"));
|
as_bad_where (fixP->fx_file, fixP->fx_line,
|
||||||
|
_("relative jump out of range"));
|
||||||
*buf = (*buf & 0x80) | (-val & 0x7f);
|
*buf = (*buf & 0x80) | (-val & 0x7f);
|
||||||
fixP->fx_no_overflow = 1;
|
fixP->fx_no_overflow = 1;
|
||||||
fixP->fx_done = 1;
|
fixP->fx_done = 1;
|
||||||
@ -1471,9 +1473,11 @@ md_apply_fix3 (fixS *fixP, valueT *valP, segT segment ATTRIBUTE_UNUSED)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (val & 1)
|
if (val & 1)
|
||||||
as_bad (_("cannot branch to odd address"));
|
as_bad_where (fixP->fx_file, fixP->fx_line,
|
||||||
|
_("cannot branch to odd address"));
|
||||||
if (val > 4096 || val < -4095)
|
if (val > 4096 || val < -4095)
|
||||||
as_bad (_("relative call out of range"));
|
as_bad_where (fixP->fx_file, fixP->fx_line,
|
||||||
|
_("relative call out of range"));
|
||||||
val = -val / 2;
|
val = -val / 2;
|
||||||
*buf = (*buf & 0xf0) | ((val >> 8) & 0xf);
|
*buf = (*buf & 0xf0) | ((val >> 8) & 0xf);
|
||||||
buf++;
|
buf++;
|
||||||
@ -1502,7 +1506,8 @@ md_apply_fix3 (fixS *fixP, valueT *valP, segT segment ATTRIBUTE_UNUSED)
|
|||||||
case R_REL16:
|
case R_REL16:
|
||||||
val = val - fixP->fx_frag->fr_address + fixP->fx_where - fixP->fx_size;
|
val = val - fixP->fx_frag->fr_address + fixP->fx_where - fixP->fx_size;
|
||||||
if (val > 32767 || val < -32768)
|
if (val > 32767 || val < -32768)
|
||||||
as_bad (_("relative address out of range"));
|
as_bad_where (fixP->fx_file, fixP->fx_line,
|
||||||
|
_("relative address out of range"));
|
||||||
*buf++ = (val >> 8);
|
*buf++ = (val >> 8);
|
||||||
*buf++ = val;
|
*buf++ = val;
|
||||||
fixP->fx_no_overflow = 1;
|
fixP->fx_no_overflow = 1;
|
||||||
|
Reference in New Issue
Block a user