ubsan: arm: shift exponent 32 is too large for 32-bit type 'unsigned int'
* arm-dis.c (print_insn_arm): Don't shift by 32 on unsigned int var.
This commit is contained in:
parent
c71a963d8e
commit
ebd1c6d1d3
@ -1,3 +1,7 @@
|
|||||||
|
2019-12-24 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
|
* arm-dis.c (print_insn_arm): Don't shift by 32 on unsigned int var.
|
||||||
|
|
||||||
2019-12-23 Jan Beulich <jbeulich@suse.com>
|
2019-12-23 Jan Beulich <jbeulich@suse.com>
|
||||||
|
|
||||||
* ppc-dis.c (print_insn_powerpc): Rename local variable "spaces"
|
* ppc-dis.c (print_insn_powerpc): Rename local variable "spaces"
|
||||||
|
@ -9927,12 +9927,12 @@ print_insn_arm (bfd_vma pc, struct disassemble_info *info, long given)
|
|||||||
unsigned int immed = (given & 0xff);
|
unsigned int immed = (given & 0xff);
|
||||||
unsigned int a, i;
|
unsigned int a, i;
|
||||||
|
|
||||||
a = (((immed << (32 - rotate))
|
a = (immed << ((32 - rotate) & 31)
|
||||||
| (immed >> rotate)) & 0xffffffff);
|
| immed >> rotate) & 0xffffffff;
|
||||||
/* If there is another encoding with smaller rotate,
|
/* If there is another encoding with smaller rotate,
|
||||||
the rotate should be specified directly. */
|
the rotate should be specified directly. */
|
||||||
for (i = 0; i < 32; i += 2)
|
for (i = 0; i < 32; i += 2)
|
||||||
if ((a << i | a >> (32 - i)) <= 0xff)
|
if ((a << i | a >> ((32 - i) & 31)) <= 0xff)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (i != rotate)
|
if (i != rotate)
|
||||||
|
Loading…
Reference in New Issue
Block a user