Use unsigned integer constant with left shifts.

This avoids undefined behavior.

gdb/ChangeLog:

	* ada-lang.c (ada_unpack_from_contents): Use unsigned constants with
	left shifts.
This commit is contained in:
John Baldwin 2016-06-11 13:18:15 -07:00
parent 9ca107148e
commit db297a6501
2 changed files with 7 additions and 2 deletions

View File

@ -1,3 +1,8 @@
2016-07-06 John Baldwin <jhb@FreeBSD.org>
* ada-lang.c (ada_unpack_from_contents): Use unsigned constants with
left shifts.
2016-07-06 John Baldwin <jhb@FreeBSD.org>
* sh64-tdep.c (sh64_analyze_prologue): Set "uses_fp" when setting

View File

@ -2525,7 +2525,7 @@ ada_unpack_from_contents (const gdb_byte *src, int bit_offset, int bit_size,
accumSize += HOST_CHAR_BIT - unusedLS;
if (accumSize >= HOST_CHAR_BIT)
{
unpacked[unpacked_idx] = accum & ~(~0L << HOST_CHAR_BIT);
unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
accumSize -= HOST_CHAR_BIT;
accum >>= HOST_CHAR_BIT;
unpacked_bytes_left -= 1;
@ -2539,7 +2539,7 @@ ada_unpack_from_contents (const gdb_byte *src, int bit_offset, int bit_size,
while (unpacked_bytes_left > 0)
{
accum |= sign << accumSize;
unpacked[unpacked_idx] = accum & ~(~0L << HOST_CHAR_BIT);
unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
accumSize -= HOST_CHAR_BIT;
if (accumSize < 0)
accumSize = 0;