[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Lightning] [BUG] [AMD64 ABI] %r12 not preserved and restored in tra
From: |
Paulo César Pereira de Andrade |
Subject: |
Re: [Lightning] [BUG] [AMD64 ABI] %r12 not preserved and restored in trampoline function prolog/epilog |
Date: |
Mon, 16 Sep 2019 12:13:39 -0300 |
Em sáb, 14 de set de 2019 às 04:59, Paul Cercueil <address@hidden> escreveu:
>
> Hi Paulo,
Hi Paul,
[...]
> > I believe quite some time ago I had made a commit for this issue
> > in another computer, that I no longer have, and never pushed it.
> > For sure it will be added in the next release of GNU Lightning that
> > I am already working on. It just is taking more time than expected
> > due to issues with powerpc 32 bit abi, that previously I had tested
> > only on AIX, and when testing on Linux, it uses another ABI...
>
> What are the issues with powerpc 32 ABI?
Previously I had tested only on AIX 32 bit, and it was quite a long ago.
Linux 32 bit uses a different ABI, most difficult part was the varargs
abi, that, to some extent, remembers the x86_64 abi.
> Because I'm seeing strange things happening there that I don't have on
> other CPU architectures... (not endian related)
Just to make sure, please test with the latest git. I just pushed 1800+
lines of diff. Tested on:
powerpc 32 bit Linux (_CALL_SYSV)
powerpc 64 bit Linux and AIX (!_CALL_SYSV -- assume _CALL_AIX || _CALL_LINUX)
powerpc 64 bit little endian Linux
Powerpc 32 bit abi on AIX should work, but untested.
Dropped, hopefully only temporarily Darwin ppc, as it was broken for a
long time, would not compile.
I believe it might have been due to using r0 as temporary in some places.
Now it never uses r0, because r0 has special semantics on several
instructions.
Thanks,
Paulo