btw I would update libffi before spending much more time figuring out bugs..
On 2021/07/30 23:17, George Koehler wrote:
> On Thu, 29 Jul 2021 14:57:28 +0000
> Charlene Wendling <julianaito@posteo.jp> wrote:
>
> > Hi,
> >
> > George emitted the hypothesis that libffi may be partly broken on
> > macppc. He was right :)
> >
> > After searching around, i found out that upstream has already a fix for
> > that [0]. Tests results have improved a lot:
> >
> > Before the below diff:
> >
> > # of expected passes 440
> > # of unexpected failures 104
> >
> > After the below diff:
> >
> > # of expected passes 530
> > # of unexpected failures 14
>
> Thank you for finding this diff!
> ok gkoehler@
>
> The patched code is inside #ifndef POWERPC64, so there is no change
> on powerpc64. There are 10 "unexpected failures" on powerpc64. Now
> I hope that our libffi consumers might get lucky and dodge the few
> remaining failures on powerpc*.
>
> macppc and powerpc64:
> 2 failures in libffi.call/float2.c
> -- They fail because our <float.h>'s LBDL_EPSILON is a double, not
> a long double, so printf("%Lf", LDBL_EPSILON) warns.
> macppc only:
> 10 failures in libffi.bhaible/test-call.c
> 2 failures in libffi.call/many.c
> -- These pass more than 8 floating-point arguments.
> Args after registers f1 .. f8 must go on the stack.
> powerpc64 only:
> 2 failures in libffi.call/va_1.c
> 2 failures in libffi.call/va_struct1.c
> 2 failures in libffi.call/va_struct2.c
> 2 failures in libffi.call/va_struct3.c
> -- These do va_arg(3) with a struct.
>
> --George
>
> > I have been able to build gforth on macppc and make it run with that
> > patched libffi. Finally. I'll send a diff for gforth after that one,
> > some extra bits are required.
> >
> > I think no further consumer testing is really needed, given the
> > spectacular change in tests results, we should assume the libffi we're
> > shipping on macppc currently is in a pretty bad shape anyway.
> >
> > Comments/feedback are welcome,
> >
> > Charlène.
> >
> >
> > [0] https://github.com/libffi/libffi/commit/4d6d2866
> >
> >
> > Index: Makefile
> > ===================================================================
> > RCS file: /cvs/ports/devel/libffi/Makefile,v
> > retrieving revision 1.43
> > diff -u -p -u -p -r1.43 Makefile
> > --- Makefile 11 Jun 2021 15:37:14 -0000 1.43
> > +++ Makefile 29 Jul 2021 13:54:53 -0000
> > @@ -3,7 +3,7 @@
> > COMMENT= Foreign Function Interface
> >
> > DISTNAME= libffi-3.3
> > -REVISION= 0
> > +REVISION= 1
> > SHARED_LIBS += ffi 1.2 # .6.4
> > CATEGORIES= devel
> >
> > Index: patches/patch-src_powerpc_sysv_S
> > ===================================================================
> > RCS file: patches/patch-src_powerpc_sysv_S
> > diff -N patches/patch-src_powerpc_sysv_S
> > --- /dev/null 1 Jan 1970 00:00:00 -0000
> > +++ patches/patch-src_powerpc_sysv_S 29 Jul 2021 13:54:53 -0000
> > @@ -0,0 +1,48 @@
> > +$OpenBSD$
> > +
> > +From 4d6d2866ae43e55325e8ee96561221804602cd7a Mon Sep 17 00:00:00 2001
> > +From: Samuel Holland <samuel@sholland.org>
> > +Date: Fri, 21 Feb 2020 21:06:15 -0600
> > +Subject: [PATCH] Update powerpc sysv assembly for ffi_powerpc.h changes (#541)
> > +
> > +Some of the flag bits were moved when adding powerpc64 vector support.
> > +
> > +Fixes #536
> > +
> > +Index: src/powerpc/sysv.S
> > +--- src/powerpc/sysv.S.orig
> > ++++ src/powerpc/sysv.S
> > +@@ -104,17 +104,16 @@ ENTRY(ffi_call_SYSV)
> > + bctrl
> > +
> > + /* Now, deal with the return value. */
> > +- mtcrf 0x01,%r31 /* cr7 */
> > ++ mtcrf 0x03,%r31 /* cr6-cr7 */
> > + bt- 31,L(small_struct_return_value)
> > + bt- 30,L(done_return_value)
> > + #ifndef __NO_FPRS__
> > + bt- 29,L(fp_return_value)
> > +
No comments:
Post a Comment