mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-29 04:53:56 +08:00
ubsan: m68k: left shift cannot be represented in type 'int'
* m68k-dis.c (COERCE32): Cast value first. (NEXTLONG, NEXTULONG): Avoid signed overflow.
This commit is contained in:
parent
f8a87c78e6
commit
334175b693
@ -1,3 +1,8 @@
|
||||
2019-12-11 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* m68k-dis.c (COERCE32): Cast value first.
|
||||
(NEXTLONG, NEXTULONG): Avoid signed overflow.
|
||||
|
||||
2019-12-11 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* h8300-dis.c (extract_immediate): Avoid signed overflow.
|
||||
|
@ -96,7 +96,7 @@ enum print_insn_arg_error
|
||||
while (0)
|
||||
|
||||
/* Get a 4 byte signed integer. */
|
||||
#define COERCE32(x) ((bfd_signed_vma) ((x) ^ 0x80000000) - 0x80000000)
|
||||
#define COERCE32(x) (((bfd_vma) (x) ^ 0x80000000) - 0x80000000)
|
||||
|
||||
#define NEXTLONG(p, val, ret_val) \
|
||||
do \
|
||||
@ -104,7 +104,8 @@ enum print_insn_arg_error
|
||||
p += 4; \
|
||||
if (!FETCH_DATA (info, p)) \
|
||||
return ret_val; \
|
||||
val = COERCE32 ((((((p[-4] << 8) + p[-3]) << 8) + p[-2]) << 8) + p[-1]); \
|
||||
val = COERCE32 (((((((unsigned) p[-4] << 8) + p[-3]) << 8) \
|
||||
+ p[-2]) << 8) + p[-1]); \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
@ -115,7 +116,8 @@ enum print_insn_arg_error
|
||||
p += 4; \
|
||||
if (!FETCH_DATA (info, p)) \
|
||||
return PRINT_INSN_ARG_MEMORY_ERROR; \
|
||||
val = (unsigned int) ((((((p[-4] << 8) + p[-3]) << 8) + p[-2]) << 8) + p[-1]); \
|
||||
val = (((((((unsigned) p[-4] << 8) + p[-3]) << 8) \
|
||||
+ p[-2]) << 8) + p[-1]); \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user