qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] tcg: Remove dh_alias indirection for dh_typecode


From: Alex Bennée
Subject: Re: [PATCH] tcg: Remove dh_alias indirection for dh_typecode
Date: Thu, 17 Feb 2022 12:41:06 +0000
User-agent: mu4e 1.7.7; emacs 28.0.91

Richard Henderson <richard.henderson@linaro.org> writes:

> The dh_alias redirect is intended to handle TCG types as distinguished
> from C types.  TCG does not distinguish signed int from unsigned int,
> because they are the same size.  However, we need to retain this
> distinction for dh_typecode, lest we fail to extend abi types properly
> for the host call parameters.
>
> This bug was detected when running the 'arm' emulator on an s390
> system. The s390 uses TCG_TARGET_EXTEND_ARGS which triggers code
> in tcg_gen_callN to extend 32 bit values to 64 bits; the incorrect
> sign data in the typemask for each argument caused the values to be
> extended as unsigned values.
>
> This simple program exhibits the problem:
>
>       static volatile int num = -9;
>       static volatile int den = -5;
>
>       int
>       main(void)
>       {
>               int quo = num / den;
>               printf("num %d den %d quo %d\n", num, den, quo);
>               exit(0);
>       }
>
> When run on the broken qemu, this results in:
>
>       num -9 den -5 quo 0
>
> The correct result is:
>
>       num -9 den -5 quo 1
>

Resolves: https://gitlab.com/qemu-project/qemu/-/issues/876

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>

-- 
Alex Bennée



reply via email to

[Prev in Thread] Current Thread [Next in Thread]