* read.c (emit_expr): Check for overflow of a negative value
correctly. * write.c (fixup_segment): Likewise. * config/obj-coff.c (fixup_segment): Likewise. PR 11411.
This commit is contained in:
parent
d703b5a783
commit
6468dabdec
2 changed files with 21 additions and 3 deletions
|
@ -1,5 +1,10 @@
|
|||
Thu Jan 9 09:08:43 1997 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* read.c (emit_expr): Check for overflow of a negative value
|
||||
correctly.
|
||||
* write.c (fixup_segment): Likewise.
|
||||
* config/obj-coff.c (fixup_segment): Likewise.
|
||||
|
||||
* config/tc-m68k.c (struct label_line): Define.
|
||||
(labels, current_label): New static variables.
|
||||
(md_assemble): Mark current_label as text, and clear it.
|
||||
|
|
19
gas/read.c
19
gas/read.c
|
@ -3198,14 +3198,25 @@ emit_expr (exp, nbytes)
|
|||
register valueT get;
|
||||
register valueT use;
|
||||
register valueT mask;
|
||||
valueT hibit;
|
||||
register valueT unmask;
|
||||
|
||||
/* JF << of >= number of bits in the object is undefined. In
|
||||
particular SPARC (Sun 4) has problems */
|
||||
if (nbytes >= sizeof (valueT))
|
||||
mask = 0;
|
||||
{
|
||||
mask = 0;
|
||||
if (nbytes > sizeof (valueT))
|
||||
hibit = 0;
|
||||
else
|
||||
hibit = (valueT) 1 << (nbytes * BITS_PER_CHAR - 1);
|
||||
}
|
||||
else
|
||||
mask = ~(valueT) 0 << (BITS_PER_CHAR * nbytes); /* Don't store these bits. */
|
||||
{
|
||||
/* Don't store these bits. */
|
||||
mask = ~(valueT) 0 << (BITS_PER_CHAR * nbytes);
|
||||
hibit = (valueT) 1 << (nbytes * BITS_PER_CHAR - 1);
|
||||
}
|
||||
|
||||
unmask = ~mask; /* Do store these bits. */
|
||||
|
||||
|
@ -3216,7 +3227,9 @@ emit_expr (exp, nbytes)
|
|||
|
||||
get = exp->X_add_number;
|
||||
use = get & unmask;
|
||||
if ((get & mask) != 0 && (get & mask) != mask)
|
||||
if ((get & mask) != 0
|
||||
&& ((get & mask) != mask
|
||||
|| (get & hibit) == 0))
|
||||
{ /* Leading bits contain both 0s & 1s. */
|
||||
as_warn ("Value 0x%lx truncated to 0x%lx.",
|
||||
(unsigned long) get, (unsigned long) use);
|
||||
|
|
Loading…
Reference in a new issue