PR26498 UBSAN: elf32-spu.c:2292 left shift overflow
authorAlan Modra <amodra@gmail.com>
Wed, 26 Aug 2020 10:32:07 +0000 (20:02 +0930)
committerAlan Modra <amodra@gmail.com>
Wed, 26 Aug 2020 13:53:45 +0000 (23:23 +0930)
PR 26498
* elf32-spu.c (find_function_stack_adjust): Use unsigned vars to
avoid UB left shift.

bfd/ChangeLog
bfd/elf32-spu.c

index cbce5be495a1969e05973f04bb00642a71888702..1cd7943abc39da92746c00d5491c8967b675f60f 100644 (file)
@@ -1,3 +1,9 @@
+2020-08-26  Alan Modra  <amodra@gmail.com>
+
+       PR 26498
+       * elf32-spu.c (find_function_stack_adjust): Use unsigned vars to
+       avoid UB left shift.
+
 2020-08-26  Alan Modra  <amodra@gmail.com>
 
        PR 26484
index 13cff2c5e09880b0da7e49d05c1b131650394337..167b90d6a2f3617663153e706c5aad4a58737e81 100644 (file)
@@ -2209,14 +2209,14 @@ find_function_stack_adjust (asection *sec,
                            bfd_vma *lr_store,
                            bfd_vma *sp_adjust)
 {
-  int reg[128];
+  int32_t reg[128];
 
   memset (reg, 0, sizeof (reg));
   for ( ; offset + 4 <= sec->size; offset += 4)
     {
       unsigned char buf[4];
       int rt, ra;
-      int imm;
+      uint32_t imm;
 
       /* Assume no relocs on stack adjusing insns.  */
       if (!bfd_get_section_contents (sec->owner, sec, buf, offset, 4))