fix some oss-fuzz (#1224)
* fix oss-fuzz 18138. * fix oss-fuzz 20079. * fix oss-fuzz 20209. * fix oss-fuzz 20210. * fix oss-fuzz 20262. * rollback. * rollback. * fix oss-fuzz 20079. * fix oss-fuzz 20179. * fix oss-fuzz 20195. * fix oss-fuzz 20206. * fix oss-fuzz 20207. * fix oss-fuzz 20265. * fix oss-fuzz 20285. * fix oss-fuzz 20868. * fix oss-fuzz 20908. * fix oss-fuzz 20909. * fix oss-fuzz 20914. * fix oss-fuzz 20922. * fix oss-fuzz 20928. * remove warnigs. * fix oss-fuzz 20961. * fix oss-fuzz 21005. * remove clang warnings. * fix oss-fuzz 21043. * fix oss-fuzz 21047. * fix oss-fuzz 21050. * fix oss-fuzz 21219.
This commit is contained in:
parent
8ff326a2a3
commit
930cb9ada8
@ -608,7 +608,7 @@ NEON_POP(pmax_u16, neon_u16, 2)
|
|||||||
#undef NEON_FN
|
#undef NEON_FN
|
||||||
|
|
||||||
#define NEON_FN(dest, src1, src2) \
|
#define NEON_FN(dest, src1, src2) \
|
||||||
dest = (src1 > src2) ? (src1 - src2) : (src2 - src1)
|
dest = (src1 > src2) ? ((int64_t)src1 - (int64_t)src2) : ((int64_t)src2 - (int64_t)src1)
|
||||||
NEON_VOP(abd_s8, neon_s8, 4)
|
NEON_VOP(abd_s8, neon_s8, 4)
|
||||||
NEON_VOP(abd_u8, neon_u8, 4)
|
NEON_VOP(abd_u8, neon_u8, 4)
|
||||||
NEON_VOP(abd_s16, neon_s16, 2)
|
NEON_VOP(abd_s16, neon_s16, 2)
|
||||||
@ -1052,7 +1052,7 @@ uint64_t HELPER(neon_qrshl_u64)(CPUARMState *env, uint64_t val, uint64_t shiftop
|
|||||||
if (tmp >= (ssize_t)sizeof(src1) * 8) { \
|
if (tmp >= (ssize_t)sizeof(src1) * 8) { \
|
||||||
if (src1) { \
|
if (src1) { \
|
||||||
SET_QC(); \
|
SET_QC(); \
|
||||||
dest = (1 << (sizeof(src1) * 8 - 1)); \
|
dest = (uint32_t)(1U << (sizeof(src1) * 8 - 1)); \
|
||||||
if (src1 > 0) { \
|
if (src1 > 0) { \
|
||||||
dest--; \
|
dest--; \
|
||||||
} \
|
} \
|
||||||
@ -1067,7 +1067,7 @@ uint64_t HELPER(neon_qrshl_u64)(CPUARMState *env, uint64_t val, uint64_t shiftop
|
|||||||
dest = ((uint64_t)src1) << tmp; \
|
dest = ((uint64_t)src1) << tmp; \
|
||||||
if ((dest >> tmp) != src1) { \
|
if ((dest >> tmp) != src1) { \
|
||||||
SET_QC(); \
|
SET_QC(); \
|
||||||
dest = (uint32_t)(1 << (sizeof(src1) * 8 - 1)); \
|
dest = (uint32_t)(1U << (sizeof(src1) * 8 - 1)); \
|
||||||
if (src1 > 0) { \
|
if (src1 > 0) { \
|
||||||
dest--; \
|
dest--; \
|
||||||
} \
|
} \
|
||||||
@ -1133,7 +1133,7 @@ uint64_t HELPER(neon_qrshl_s64)(CPUARMState *env, uint64_t valop, uint64_t shift
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
int64_t tmp = val;
|
int64_t tmp = val;
|
||||||
val <<= shift;
|
val = (uint64_t)val << (shift & 0x3f);
|
||||||
if ((val >> shift) != tmp) {
|
if ((val >> shift) != tmp) {
|
||||||
SET_QC();
|
SET_QC();
|
||||||
val = (tmp >> 63) ^ ~SIGNBIT64;
|
val = (tmp >> 63) ^ ~SIGNBIT64;
|
||||||
|
@ -6144,7 +6144,7 @@ static int disas_neon_data_insn(DisasContext *s, uint32_t insn)
|
|||||||
val = 0;
|
val = 0;
|
||||||
for (n = 0; n < 4; n++) {
|
for (n = 0; n < 4; n++) {
|
||||||
if (imm & (1 << (n + (pass & 1) * 4)))
|
if (imm & (1 << (n + (pass & 1) * 4)))
|
||||||
val |= 0xff << (n * 8);
|
val |= 0xffU << (n * 8);
|
||||||
}
|
}
|
||||||
tcg_gen_movi_i32(tcg_ctx, tmp, val);
|
tcg_gen_movi_i32(tcg_ctx, tmp, val);
|
||||||
} else {
|
} else {
|
||||||
@ -11127,7 +11127,7 @@ static void disas_thumb_insn(CPUARMState *env, DisasContext *s) // qq
|
|||||||
/* jump to the offset */
|
/* jump to the offset */
|
||||||
val = (uint32_t)s->pc + 2;
|
val = (uint32_t)s->pc + 2;
|
||||||
offset = ((int32_t)((uint32_t)insn << 24)) >> 24;
|
offset = ((int32_t)((uint32_t)insn << 24)) >> 24;
|
||||||
val += offset << 1;
|
val += (int32_t)((uint32_t)offset << 1);
|
||||||
gen_jmp(s, val);
|
gen_jmp(s, val);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -11140,7 +11140,7 @@ static void disas_thumb_insn(CPUARMState *env, DisasContext *s) // qq
|
|||||||
/* unconditional branch */
|
/* unconditional branch */
|
||||||
val = (uint32_t)s->pc;
|
val = (uint32_t)s->pc;
|
||||||
offset = ((int32_t)((uint32_t)insn << 21)) >> 21;
|
offset = ((int32_t)((uint32_t)insn << 21)) >> 21;
|
||||||
val += (offset << 1) + 2;
|
val += (int32_t)((uint32_t)offset << 1) + 2;
|
||||||
gen_jmp(s, val);
|
gen_jmp(s, val);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1471,7 +1471,7 @@ void glue(helper_phsubd, SUFFIX)(CPUX86State *env, Reg *d, Reg *s)
|
|||||||
{
|
{
|
||||||
d->L(0) = (int32_t)((int64_t)d->L(0) - (int64_t)d->L(1));
|
d->L(0) = (int32_t)((int64_t)d->L(0) - (int64_t)d->L(1));
|
||||||
XMM_ONLY(d->L(1) = (int32_t)((int64_t)d->L(2) - (int64_t)d->L(3)));
|
XMM_ONLY(d->L(1) = (int32_t)((int64_t)d->L(2) - (int64_t)d->L(3)));
|
||||||
d->L((1 << SHIFT) + 0) = (uint32_t)((int32_t)s->L(0) - (int32_t)s->L(1));
|
d->L((1 << SHIFT) + 0) = (uint32_t)((int64_t)s->L(0) - (int64_t)s->L(1));
|
||||||
XMM_ONLY(d->L(3) = (int32_t)s->L(2) - (int32_t)s->L(3));
|
XMM_ONLY(d->L(3) = (int32_t)s->L(2) - (int32_t)s->L(3));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -210,8 +210,8 @@ void HELPER(divs)(CPUM68KState *env, uint32_t word)
|
|||||||
if (den == 0) {
|
if (den == 0) {
|
||||||
raise_exception(env, EXCP_DIV0);
|
raise_exception(env, EXCP_DIV0);
|
||||||
}
|
}
|
||||||
quot = num / den;
|
quot = (int64_t)num / den;
|
||||||
rem = num % den;
|
rem = (int64_t)num % den;
|
||||||
flags = 0;
|
flags = 0;
|
||||||
if (word && quot != (int16_t)quot)
|
if (word && quot != (int16_t)quot)
|
||||||
flags |= CCF_V;
|
flags |= CCF_V;
|
||||||
|
@ -1170,7 +1170,7 @@ DISAS_INSN(bitop_im)
|
|||||||
bitnum &= 7;
|
bitnum &= 7;
|
||||||
else
|
else
|
||||||
bitnum &= 31;
|
bitnum &= 31;
|
||||||
mask = 1 << bitnum;
|
mask = 1U << bitnum;
|
||||||
|
|
||||||
tmp = tcg_temp_new(tcg_ctx);
|
tmp = tcg_temp_new(tcg_ctx);
|
||||||
assert (CCF_Z == (1 << 2));
|
assert (CCF_Z == (1 << 2));
|
||||||
|
@ -3394,7 +3394,7 @@ static void gen_r6_muldiv(DisasContext *ctx, int opc, int rd, int rs, int rt)
|
|||||||
{
|
{
|
||||||
TCGv t2 = tcg_temp_new(tcg_ctx);
|
TCGv t2 = tcg_temp_new(tcg_ctx);
|
||||||
TCGv t3 = tcg_temp_new(tcg_ctx);
|
TCGv t3 = tcg_temp_new(tcg_ctx);
|
||||||
tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t2, t0, -1LL << 63);
|
tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t2, t0, -1ULL << 63);
|
||||||
tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t3, t1, -1LL);
|
tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t3, t1, -1LL);
|
||||||
tcg_gen_and_tl(tcg_ctx, t2, t2, t3);
|
tcg_gen_and_tl(tcg_ctx, t2, t2, t3);
|
||||||
tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t3, t1, 0);
|
tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t3, t1, 0);
|
||||||
@ -3411,7 +3411,7 @@ static void gen_r6_muldiv(DisasContext *ctx, int opc, int rd, int rs, int rt)
|
|||||||
{
|
{
|
||||||
TCGv t2 = tcg_temp_new(tcg_ctx);
|
TCGv t2 = tcg_temp_new(tcg_ctx);
|
||||||
TCGv t3 = tcg_temp_new(tcg_ctx);
|
TCGv t3 = tcg_temp_new(tcg_ctx);
|
||||||
tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t2, t0, -1LL << 63);
|
tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t2, t0, -1ULL << 63);
|
||||||
tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t3, t1, -1LL);
|
tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t3, t1, -1LL);
|
||||||
tcg_gen_and_tl(tcg_ctx, t2, t2, t3);
|
tcg_gen_and_tl(tcg_ctx, t2, t2, t3);
|
||||||
tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t3, t1, 0);
|
tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t3, t1, 0);
|
||||||
@ -3574,7 +3574,7 @@ static void gen_muldiv(DisasContext *ctx, uint32_t opc,
|
|||||||
{
|
{
|
||||||
TCGv t2 = tcg_temp_new(tcg_ctx);
|
TCGv t2 = tcg_temp_new(tcg_ctx);
|
||||||
TCGv t3 = tcg_temp_new(tcg_ctx);
|
TCGv t3 = tcg_temp_new(tcg_ctx);
|
||||||
tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t2, t0, -1LL << 63);
|
tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t2, t0, -1ULL << 63);
|
||||||
tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t3, t1, -1LL);
|
tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t3, t1, -1LL);
|
||||||
tcg_gen_and_tl(tcg_ctx, t2, t2, t3);
|
tcg_gen_and_tl(tcg_ctx, t2, t2, t3);
|
||||||
tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t3, t1, 0);
|
tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t3, t1, 0);
|
||||||
@ -3983,7 +3983,7 @@ static void gen_loongson_integer(DisasContext *ctx, uint32_t opc,
|
|||||||
tcg_gen_movi_tl(tcg_ctx, *cpu_gpr[rd], 0);
|
tcg_gen_movi_tl(tcg_ctx, *cpu_gpr[rd], 0);
|
||||||
tcg_gen_br(tcg_ctx, l3);
|
tcg_gen_br(tcg_ctx, l3);
|
||||||
gen_set_label(tcg_ctx, l1);
|
gen_set_label(tcg_ctx, l1);
|
||||||
tcg_gen_brcondi_tl(tcg_ctx, TCG_COND_NE, t0, -1LL << 63, l2);
|
tcg_gen_brcondi_tl(tcg_ctx, TCG_COND_NE, t0, -1ULL << 63, l2);
|
||||||
tcg_gen_brcondi_tl(tcg_ctx, TCG_COND_NE, t1, -1LL, l2);
|
tcg_gen_brcondi_tl(tcg_ctx, TCG_COND_NE, t1, -1LL, l2);
|
||||||
tcg_gen_mov_tl(tcg_ctx, *cpu_gpr[rd], t0);
|
tcg_gen_mov_tl(tcg_ctx, *cpu_gpr[rd], t0);
|
||||||
tcg_gen_br(tcg_ctx, l3);
|
tcg_gen_br(tcg_ctx, l3);
|
||||||
@ -4014,7 +4014,7 @@ static void gen_loongson_integer(DisasContext *ctx, uint32_t opc,
|
|||||||
int l2 = gen_new_label(tcg_ctx);
|
int l2 = gen_new_label(tcg_ctx);
|
||||||
int l3 = gen_new_label(tcg_ctx);
|
int l3 = gen_new_label(tcg_ctx);
|
||||||
tcg_gen_brcondi_tl(tcg_ctx, TCG_COND_EQ, t1, 0, l1);
|
tcg_gen_brcondi_tl(tcg_ctx, TCG_COND_EQ, t1, 0, l1);
|
||||||
tcg_gen_brcondi_tl(tcg_ctx, TCG_COND_NE, t0, -1LL << 63, l2);
|
tcg_gen_brcondi_tl(tcg_ctx, TCG_COND_NE, t0, -1ULL << 63, l2);
|
||||||
tcg_gen_brcondi_tl(tcg_ctx, TCG_COND_NE, t1, -1LL, l2);
|
tcg_gen_brcondi_tl(tcg_ctx, TCG_COND_NE, t1, -1LL, l2);
|
||||||
gen_set_label(tcg_ctx, l1);
|
gen_set_label(tcg_ctx, l1);
|
||||||
tcg_gen_movi_tl(tcg_ctx, *cpu_gpr[rd], 0);
|
tcg_gen_movi_tl(tcg_ctx, *cpu_gpr[rd], 0);
|
||||||
|
@ -132,7 +132,7 @@ int64_t strtosz_suffix_unit(const char *nptr, char **end,
|
|||||||
if (mul == 1 && mul_required) {
|
if (mul == 1 && mul_required) {
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
if ((val * mul >= INT64_MAX) || val < 0) {
|
if ((val * mul >= (double)INT64_MAX) || val < 0) {
|
||||||
retval = -ERANGE;
|
retval = -ERANGE;
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user