PR26458 UBSAN: elf32-i386.c:3615 left shift of negative value
authorAlan Modra <amodra@gmail.com>
Wed, 26 Aug 2020 01:30:22 +0000 (11:00 +0930)
committerAlan Modra <amodra@gmail.com>
Wed, 26 Aug 2020 13:53:44 +0000 (23:23 +0930)
Happens when poking symbol index -2 into r_info.  (The index is
updated before writing out to file.)

PR 26458
* elf/common.h (ELF32_R_INFO): Cast symbol index to unsigned.

include/ChangeLog
include/elf/common.h

index 2ec02dc5000e1e06b296ab4f40e40c4060f359ac..b51a186fc6e21cd1ef575a725480f845354931e0 100644 (file)
@@ -1,3 +1,8 @@
+2020-08-26  Alan Modra  <amodra@gmail.com>
+
+       PR 26458
+       * elf/common.h (ELF32_R_INFO): Cast symbol index to unsigned.
+
 2020-08-24  Cooper Qu  <cooper.qu@linux.alibaba.com>
 
        * opcode/csky.h (CSKYV2_ISA_10E60): New.
index 2138868c9b90a82a04af6bb63057a201a47ce610..efef412caafe35cadf9febf58566e6b852d6ef0e 100644 (file)
 
 #define ELF32_R_SYM(i)         ((i) >> 8)
 #define ELF32_R_TYPE(i)                ((i) & 0xff)
-#define ELF32_R_INFO(s,t)      (((s) << 8) + ((t) & 0xff))
+#define ELF32_R_INFO(s,t)      (((unsigned) (s) << 8) + ((t) & 0xff))
 
 #define ELF64_R_SYM(i)         ((i) >> 32)
 #define ELF64_R_TYPE(i)                ((i) & 0xffffffff)