ubsan: score: left shift of negative value
authorAlan Modra <amodra@gmail.com>
Mon, 13 Jan 2020 00:16:55 +0000 (10:46 +1030)
committerAlan Modra <amodra@gmail.com>
Mon, 13 Jan 2020 01:42:30 +0000 (12:12 +1030)
* score-dis.c (print_insn_score48): Use unsigned variables for
unsigned values.  Don't left shift negative values.
(print_insn_score32): Likewise.
* score7-dis.c (print_insn_score32, print_insn_score16): Likewise.

opcodes/ChangeLog
opcodes/score-dis.c
opcodes/score7-dis.c

index 26d1e6c4a2c142e2a7df8e87463ca9ac422e5f41..47401860b7074bca068471ad0842906ea11c3e20 100644 (file)
@@ -1,3 +1,10 @@
+2020-01-13  Alan Modra  <amodra@gmail.com>
+
+       * score-dis.c (print_insn_score48): Use unsigned variables for
+       unsigned values.  Don't left shift negative values.
+       (print_insn_score32): Likewise.
+       * score7-dis.c (print_insn_score32, print_insn_score16): Likewise.
+
 2020-01-13  Alan Modra  <amodra@gmail.com>
 
        * tic4x-dis.c (tic4x_print_register): Remove dead code.
index 6b98a3359f0dac25199143774e121546423afc83..6f37dfdc4f18b40edda1c3ae5f8f2508fc248552 100644 (file)
@@ -565,7 +565,7 @@ print_insn_score48 (struct disassemble_info *info, bfd_vma given)
                               {
                               case 'r':
                                 {
-                                  long reg;
+                                  unsigned long reg;
 
                                   reg = given >> bitstart;
                                   reg &= (2u << (bitend - bitstart)) - 1;
@@ -575,7 +575,7 @@ print_insn_score48 (struct disassemble_info *info, bfd_vma given)
                                 break;
                               case 'd':
                                 {
-                                  long reg;
+                                  unsigned long reg;
 
                                   reg = given >> bitstart;
                                   reg &= (2u << (bitend - bitstart)) - 1;
@@ -600,14 +600,14 @@ print_insn_score48 (struct disassemble_info *info, bfd_vma given)
                                       || ((given & insn->mask) == 0x0c00000b)   /* stc1  */
                                       || ((given & insn->mask) == 0x0c000013)   /* stc2  */
                                       || ((given & insn->mask) == 0x0c00001b))  /* stc3  */
-                                    reg <<= 2;
+                                    reg *= 4;
 
                                   func (stream, "%ld", reg);
                                 }
                                 break;
                               case 'x':
                                 {
-                                  long reg;
+                                  unsigned long reg;
 
                                   reg = given >> bitstart;
                                   reg &= (2u << (bitend - bitstart)) - 1;
@@ -617,7 +617,7 @@ print_insn_score48 (struct disassemble_info *info, bfd_vma given)
                                 break;
                                 case 'w':
                                 {
-                                    long reg;
+                                    unsigned long reg;
                                     reg = given >> bitstart;
                                     reg &= (2u << (bitend - bitstart)) - 1;
                                     reg <<= 2;
@@ -731,7 +731,7 @@ print_insn_score32 (bfd_vma pc, struct disassemble_info *info, long given)
                            }
                            else
                            {
-                               long reg;
+                               unsigned long reg;
                                int bitstart = 10;
                                int bitend = 14;
                                reg = given >> bitstart;
@@ -784,7 +784,7 @@ print_insn_score32 (bfd_vma pc, struct disassemble_info *info, long given)
                               {
                               case 'r':
                                 {
-                                  long reg;
+                                  unsigned long reg;
 
                                   reg = given >> bitstart;
                                   reg &= (2u << (bitend - bitstart)) - 1;
@@ -794,7 +794,7 @@ print_insn_score32 (bfd_vma pc, struct disassemble_info *info, long given)
                                 break;
                               case 'd':
                                 {
-                                  long reg;
+                                  unsigned long reg;
 
                                   reg = given >> bitstart;
                                   reg &= (2u << (bitend - bitstart)) - 1;
@@ -817,14 +817,14 @@ print_insn_score32 (bfd_vma pc, struct disassemble_info *info, long given)
                                       || ((given & insn->mask) == 0x0c00000b)   /* stc1  */
                                       || ((given & insn->mask) == 0x0c000013)   /* stc2  */
                                       || ((given & insn->mask) == 0x0c00001b))  /* stc3  */
-                                    reg <<= 2;
+                                    reg *= 4;
 
                                   func (stream, "%ld", reg);
                                 }
                                 break;
                               case 'x':
                                 {
-                                  long reg;
+                                  unsigned long reg;
 
                                   reg = given >> bitstart;
                                   reg &= (2u << (bitend - bitstart)) - 1;
index b1b77341807859c8cacdc4c0d33757a21da33b39..c9b235b7b4c6a60b07ce68b91bf3e212a7f74ddb 100644 (file)
@@ -613,20 +613,20 @@ print_insn_score32 (bfd_vma pc, struct disassemble_info *info, long given)
                               {
                               case 'r':
                                 {
-                                  long reg;
+                                  unsigned long reg;
 
                                   reg = given >> bitstart;
-                                  reg &= (2 << (bitend - bitstart)) - 1;
+                                  reg &= (2u << (bitend - bitstart)) - 1;
 
                                   func (stream, "%s", score_regnames[reg]);
                                 }
                                 break;
                               case 'd':
                                 {
-                                  long reg;
+                                  unsigned long reg;
 
                                   reg = given >> bitstart;
-                                  reg &= (2 << (bitend - bitstart)) - 1;
+                                  reg &= (2u << (bitend - bitstart)) - 1;
 
                                   func (stream, "%ld", reg);
                                 }
@@ -636,9 +636,9 @@ print_insn_score32 (bfd_vma pc, struct disassemble_info *info, long given)
                                   long reg;
 
                                   reg = given >> bitstart;
-                                  reg &= (2 << (bitend - bitstart)) - 1;
-                                  reg = ((reg ^ (1 << (bitend - bitstart))) -
-                                        (1 << (bitend - bitstart)));
+                                  reg &= (2u << (bitend - bitstart)) - 1;
+                                  reg = ((reg ^ (1 << (bitend - bitstart)))
+                                        (1 << (bitend - bitstart)));
 
                                   if (((given & insn->mask) == 0x0c00000a)      /* ldc1  */
                                       || ((given & insn->mask) == 0x0c000012)   /* ldc2  */
@@ -646,17 +646,17 @@ print_insn_score32 (bfd_vma pc, struct disassemble_info *info, long given)
                                       || ((given & insn->mask) == 0x0c00000b)   /* stc1  */
                                       || ((given & insn->mask) == 0x0c000013)   /* stc2  */
                                       || ((given & insn->mask) == 0x0c00001b))  /* stc3  */
-                                    reg <<= 2;
+                                    reg *= 4;
 
                                   func (stream, "%ld", reg);
                                 }
                                 break;
                               case 'x':
                                 {
-                                  long reg;
+                                  unsigned long reg;
 
                                   reg = given >> bitstart;
-                                  reg &= (2 << (bitend - bitstart)) - 1;
+                                  reg &= (2u << (bitend - bitstart)) - 1;
 
                                   func (stream, "%lx", reg);
                                 }
@@ -667,12 +667,12 @@ print_insn_score32 (bfd_vma pc, struct disassemble_info *info, long given)
                             break;
                           case '`':
                             c++;
-                            if ((given & (1 << bitstart)) == 0)
+                            if ((given & (1u << bitstart)) == 0)
                               func (stream, "%c", *c);
                             break;
                           case '\'':
                             c++;
-                            if ((given & (1 << bitstart)) != 0)
+                            if ((given & (1u << bitstart)) != 0)
                               func (stream, "%c", *c);
                             break;
                           default:
@@ -789,7 +789,7 @@ print_insn_score16 (bfd_vma pc, struct disassemble_info *info, long given)
                               if (!bitend)
                                 abort ();
                               reg = given >> bitstart;
-                              reg &= (2 << (bitend - bitstart)) - 1;
+                              reg &= (2u << (bitend - bitstart)) - 1;
                               switch (*c)
                                 {
                                 case 'R':
@@ -835,7 +835,7 @@ print_insn_score16 (bfd_vma pc, struct disassemble_info *info, long given)
 
                           case '\'':
                             c++;
-                            if ((given & (1 << bitstart)) != 0)
+                            if ((given & (1u << bitstart)) != 0)
                               func (stream, "%c", *c);
                             break;
                           default:
This page took 0.029535 seconds and 4 git commands to generate.