Em sex., 19 de ago. de 2022 às 04:47, Paul Cercueil
<paul@crapouillou.net> escreveu:
Hi Paul,
>> I don't know if that's a known thing, but there are several
>> breakages
>> on PowerPC (PPC32BE):
>
> What operating system?
Linux, under qemu-user.
>> FAIL: 3to2
...
Please confirm running:
$ cpp -dM /dev/null | grep _CALL
prints a definition for _CALL_SYSV
Maybe it is some different processor that lacks some feature,
or uses a different abi.
It might also be a problem with glibc, as it might be an issue
only with variadic functions, in this case, printf, that might be
expecting float values in float registers for variadic arguments.
If yes, please test this reduced test:
"""
.data 32
dfmt:
.c "%1.0f\n"
.code
jmpi main
#define def_test_double(a, b, c) \
name test_double_##a##_##b##_##c \
test_double_##a##_##b##_##c: \
prolog \
arg_d $d0 \
arg_d $d1 \
getarg_d %b $d0 \
getarg_d %c $d1 \
subr_d %a %b %c \
retr_d %a \
epilog
#define test_double(a, b, c, x, y) \
prepare \
pushargi_d x \
pushargi_d y \
finishi test_double_##a##_##b##_##c \
retval_d %f0 \
prepare \
pushargi dfmt \
ellipsis \
pushargr_d %f0 \
finishi @printf
def_test_double(f0, f0, f0)
name main
main:
prolog
test_double(f0, f0, f0, 3.0, 2.0)
ret
epilog
"""
and run it as:
$ cd check
$ make debug
...
(gdb) break _jit_emit
(gdb) run test.tst # << assuming you called the sample file test.tst
...
(gdb) finish
(gdb) x/48i _jit.code.ptr
Please copy&paste the output.