aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2016-06-11 13:18:15 -0700
committerJohn Baldwin <jhb@FreeBSD.org>2016-07-06 06:09:19 -0700
commitdb297a6501dc44c10bff096eddcc358b48810aad (patch)
tree7d4c4e3c4d101b53028c633f71a45ee955cd75e4
parent9ca107148e888a7f7aaf3582569708684bd04690 (diff)
downloadgdb-db297a6501dc44c10bff096eddcc358b48810aad.zip
gdb-db297a6501dc44c10bff096eddcc358b48810aad.tar.gz
gdb-db297a6501dc44c10bff096eddcc358b48810aad.tar.bz2
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.
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/ada-lang.c4
2 files changed, 7 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index c9ad9cc..5adf9a8 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,10 @@
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
the MEDIA_FP_REGNUM register.
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index b22b7ac..05bfd7b 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -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;