Friday, April 13, 2018

Re: php on arm

The patch allowed the build to continue.

Packages so far:
op1bsd63snap$ pkg_info
autoconf-2.69p2 automatically configure source code on many Un*x platforms
bison-3.0.4p0 GNU parser generator
bzip2-1.0.6p8 block-sorting file compressor, unencumbered
gettext-0.19.8.1p1 GNU gettext runtime libraries and programs
help2man-1.47.5 generates simple manual pages from program output
libiconv-1.14p3 character set conversion library
libsigsegv-2.12 library for handling page faults in user mode
m4-1.4.18 GNU m4
metaauto-1.0p1 wrapper for gnu auto*
pcre-8.41 perl-compatible regular expression library
xz-5.2.3p0 LZMA compression and decompression tools
op1bsd63snap$ pkg_info
autoconf-2.69p2 automatically configure source code on many Un*x platforms
bison-3.0.4p0 GNU parser generator
bzip2-1.0.6p8 block-sorting file compressor, unencumbered
gettext-0.19.8.1p1 GNU gettext runtime libraries and programs
help2man-1.47.5 generates simple manual pages from program output
libiconv-1.14p3 character set conversion library
libsigsegv-2.12 library for handling page faults in user mode
m4-1.4.18 GNU m4
metaauto-1.0p1 wrapper for gnu auto*
pcre-8.41 perl-compatible regular expression library
sqlite3-3.22.0p0 embedded SQL implementation
xz-5.2.3p0 LZMA compression and decompression tools
op1bsd63snap$ pkg_info
autoconf-2.69p2 automatically configure source code on many Un*x platforms
bison-3.0.4p0 GNU parser generator
bzip2-1.0.6p8 block-sorting file compressor, unencumbered
gettext-0.19.8.1p1 GNU gettext runtime libraries and programs
help2man-1.47.5 generates simple manual pages from program output
libffi-3.2.1p4 Foreign Function Interface
libiconv-1.14p3 character set conversion library
libsigsegv-2.12 library for handling page faults in user mode
m4-1.4.18 GNU m4
metaauto-1.0p1 wrapper for gnu auto*
pcre-8.41 perl-compatible regular expression library
sqlite3-3.22.0p0 embedded SQL implementation
xz-5.2.3p0 LZMA compression and decompression tools
op1bsd63snap$

-----Original Message-----
From: owner-ports@openbsd.org <owner-ports@openbsd.org> On Behalf Of Stuart Henderson
Sent: April 13, 2018 2:45 PM
To: s_graf@telus.net
Cc: 'Peter Hessler' <phessler@openbsd.org>; ports@openbsd.org; Jasper Lievisse Adriaanse <jasper@humppa.nl>
Subject: Re: php on arm

On 2018/04/13 14:22, s_graf@telus.net wrote:
> cc -DHAVE_CONFIG_H -I. -I.. -I. -I../include -Iinclude -I../src -I.
> -I../include -Iinclude -I../src -O2 -pipe -MT src/arm/sysv.lo -MD -MP
> -MF src/arm/.deps/sysv.Tpo -c ../src/arm/sysv.S -fPIC -DPIC -o
> src/arm/.libs/sysv.o
> ../src/arm/sysv.S:363:2: error: invalid instruction, did you mean: fldmiax?
> fldmiadgt ip, {d0-d7}
> ^
> ../src/arm/sysv.S:412:2: error: invalid instruction, did you mean: fstmiax?
> fstmiadeq r2, {d0-d3}
> ^
> /tmp/sysv-897c4d.s:263:2: error: invalid instruction fstmfdd sp!,
> {d0-d7} ^
> /tmp/sysv-897c4d.s:313:2: error: invalid instruction, did you mean: fldmiax?
> fldmiad sp, {d0-d1}
> ^
> /tmp/sysv-897c4d.s:316:2: error: invalid instruction, did you mean: fldmiax?
> fldmiad sp, {d0-d3}
> ^
> Error while executing cc -DHAVE_CONFIG_H -I. -I.. -I. -I../include
> -Iinclude -I../src -I. -I../include -Iinclude -I../src -O2 -pipe -MT
> src/arm/sysv.lo -MD -MP -MF src/arm/.deps/sysv.Tpo -c
> ../src/arm/sysv.S -fPIC -DPIC -o src/arm/.libs/sysv.o
> *** Error 2 in arm-unknown-openbsd6.3 (Makefile:1337
> 'src/arm/sysv.lo')
> *** Error 1 in arm-unknown-openbsd6.3 (Makefile:1621 'all-recursive')
> *** Error 1 in arm-unknown-openbsd6.3 (Makefile:730 'all')
> *** Error 1 in /usr/ports/pobj/libffi-3.2.1/libffi-3.2.1 (Makefile:616
> 'all')

Please apply this diff to ports/devel/libffi, clean and retry and report back whether you're able to successfully build libffi.
(Don't wait until you have other pieces for php built before letting us know about libffi, please).

jasper, ok with you if it works? (there is finally a 3.3.0 rc now but probably better to avoid going down that route for now just to fix this :)



Index: patches/patch-src_arm_sysv_S
===================================================================
RCS file: /cvs/ports/devel/libffi/patches/patch-src_arm_sysv_S,v
retrieving revision 1.7
diff -u -p -r1.7 patch-src_arm_sysv_S
--- patches/patch-src_arm_sysv_S 22 Jan 2018 06:28:00 -0000 1.7
+++ patches/patch-src_arm_sysv_S 13 Apr 2018 21:41:29 -0000
@@ -1,10 +1,24 @@
-$OpenBSD: patch-src_arm_sysv_S,v 1.7 2018/01/22 06:28:00 bcallah Exp $
+$OpenBSD$

+From FreeBSD, see also
https://github.com/libffi/libffi/issues/162
+https://github.com/libffi/libffi/issues/191
+
+This code is completely different in the 3.3 branch so can probably
+just be removed straight off when a release has been from there.

Index: src/arm/sysv.S
--- src/arm/sysv.S.orig
+++ src/arm/sysv.S
+@@ -360,7 +360,7 @@ ARM_FUNC_START(ffi_call_VFP)
+ cmp r0, #3
+ sub ip, fp, #64
+ flddle d0, [ip]
+- fldmiadgt ip, {d0-d7}
++ vldmiagt ip, {d0-d7}
+
+ LSYM(Lbase_args):
+ @ move first 4 parameters in registers
@@ -396,7 +396,7 @@ LSYM(Lbase_args):
beq LSYM(Lepilogue_vfp)

@@ -14,3 +28,34 @@ Index: src/arm/sysv.S
beq LSYM(Lepilogue_vfp)

cmp r3, #FFI_TYPE_FLOAT
+@@ -409,7 +409,7 @@ LSYM(Lbase_args):
+
+ cmp r3, #FFI_TYPE_STRUCT_VFP_FLOAT
+ cmpne r3, #FFI_TYPE_STRUCT_VFP_DOUBLE
+- fstmiadeq r2, {d0-d3}
++ vstmiaeq r2, {d0-d3}
+
+ LSYM(Lepilogue_vfp):
+ RETLDM "r0-r3,fp"
+@@ -420,7 +420,7 @@ LSYM(Lepilogue_vfp):
+
+
+ ARM_FUNC_START(ffi_closure_VFP)
+- fstmfdd sp!, {d0-d7}
++ vstmdb sp!, {d0-d7}
+ @ r0-r3, then d0-d7
+ UNWIND .pad #80
+ add ip, sp, #80
+@@ -470,10 +470,10 @@ ARM_FUNC_START(ffi_closure_VFP)
+ ldmia sp, {r0, r1}
+ b .Lclosure_epilogue_vfp
+ .Lretfloat_struct_vfp:
+- fldmiad sp, {d0-d1}
++ vldmia sp, {d0-d1}
+ b .Lclosure_epilogue_vfp
+ .Lretdouble_struct_vfp:
+- fldmiad sp, {d0-d3}
++ vldmia sp, {d0-d3}
+ b .Lclosure_epilogue_vfp
+
+ .ffi_closure_VFP_end:

No comments:

Post a Comment