ubsan: bfin-dis.c:160 shift exponent 32 is too large
authorAlan Modra <amodra@gmail.com>
Wed, 2 Sep 2020 01:03:07 +0000 (10:33 +0930)
committerAlan Modra <amodra@gmail.com>
Wed, 2 Sep 2020 07:00:44 +0000 (16:30 +0930)
* bfin-dis.c (MASKBITS): Use SIGNBIT.

opcodes/ChangeLog
opcodes/bfin-dis.c

index 8481a13e08bd65dbb0bebe4826ef45bb9f504ca2..1c7e4cb12d3de83eaeaad2028bd73a0b61929b32 100644 (file)
@@ -1,3 +1,7 @@
+2020-09-02  Alan Modra  <amodra@gmail.com>
+
+       * bfin-dis.c (MASKBITS): Use SIGNBIT.
+
 2020-09-02  Cooper Qu  <cooper.qu@linux.alibaba.com>
 
        * csky-opc.h (csky_v2_opcodes): Move divul and divsl
index 4f66f12e3cb01007ac244e21abdae8ce0cc10b02..3eb6087a3c861d18656d392c8946395c623a69a2 100644 (file)
@@ -34,7 +34,7 @@
 typedef long TIword;
 
 #define SIGNBIT(bits)       (1ul << ((bits) - 1))
-#define MASKBITS(val, bits) ((val) & ((1ul << (bits)) - 1))
+#define MASKBITS(val, bits) ((val) & ((SIGNBIT (bits) << 1) - 1))
 #define SIGNEXTEND(v, n)    ((MASKBITS (v, n) ^ SIGNBIT (n)) - SIGNBIT (n))
 
 #include "disassemble.h"