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>
|
2019-12-11 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
* h8300-dis.c (extract_immediate): Avoid signed overflow.
|
* h8300-dis.c (extract_immediate): Avoid signed overflow.
|
||||||
|
@ -96,7 +96,7 @@ enum print_insn_arg_error
|
|||||||
while (0)
|
while (0)
|
||||||
|
|
||||||
/* Get a 4 byte signed integer. */
|
/* 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) \
|
#define NEXTLONG(p, val, ret_val) \
|
||||||
do \
|
do \
|
||||||
@ -104,7 +104,8 @@ enum print_insn_arg_error
|
|||||||
p += 4; \
|
p += 4; \
|
||||||
if (!FETCH_DATA (info, p)) \
|
if (!FETCH_DATA (info, p)) \
|
||||||
return ret_val; \
|
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)
|
while (0)
|
||||||
|
|
||||||
@ -115,7 +116,8 @@ enum print_insn_arg_error
|
|||||||
p += 4; \
|
p += 4; \
|
||||||
if (!FETCH_DATA (info, p)) \
|
if (!FETCH_DATA (info, p)) \
|
||||||
return PRINT_INSN_ARG_MEMORY_ERROR; \
|
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)
|
while (0)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user