Avoid undefined behaviour with signed expressions

PR 17453
bfd/
	* libbfd.c (COERCE16, COERCE32, COERCE64): Use unsigned types.
	(EIGHT_GAZILLION): Delete.
binutils/
	* dwarf.c (read_leb128): Avoid signed overflow.
	(read_debug_line_header): Likewise.
gas/
	* config/tc-i386.c (fits_in_signed_long): Use unsigned param and
	expression to avoid signed overflow.
	(fits_in_signed_byte, fits_in_unsigned_byte, fits_in_unsigned_word,
	fits_in_signed_word, fits_in_unsigned_long): Similarly.
	* expr.c (operand <'-'>): Avoid signed overflow.
	* read.c (s_comm_internal): Likewise.
This commit is contained in:
Alan Modra
2014-10-14 13:36:20 +10:30
parent 9495b2e66f
commit 65879393f0
9 changed files with 43 additions and 26 deletions

View File

@@ -2309,7 +2309,7 @@ relax_align (register relax_addressT address, /* Address now. */
relax_addressT mask;
relax_addressT new_address;
mask = ~((~0) << alignment);
mask = ~((relax_addressT) ~0 << alignment);
new_address = (address + mask) & (~mask);
#ifdef LINKER_RELAXING_SHRINKS_ONLY
if (linkrelax)