lang/php73: Fix "Bus error (core dumped)" by disabling ifuncs

PHP 7.3 uses ifuncs optimisations which generates a list of problems on FreeBSD:
https://bugs.php.net/bug.php?id=77284
https://bugs.php.net/bug.php?id=77279
https://bugs.php.net/bug.php?id=77261

Therefore ifuncs will be disabled in PHP 7.3.1. To make it usable until the release,
we import the patch until then:
291589114a

PR:		233024
Submitted by:	Pascal Christen <pascal.christen@hostpoint.ch>
MFH:		2019Q1
This commit is contained in:
Torsten Zuehlsdorff
2019-01-08 15:54:23 +00:00
parent 477f2358a0
commit dfd2e3f597
3 changed files with 19 additions and 5 deletions

View File

@@ -2,7 +2,7 @@
PORTNAME= php73
DISTVERSION= 7.3.0
PORTREVISION?= 0
PORTREVISION?= 1
CATEGORIES?= lang devel www
MASTER_SITES= PHP/distributions
DISTNAME= php-${DISTVERSION}

View File

@@ -1,4 +1,4 @@
--- acinclude.m4.orig 2018-08-14 11:39:24 UTC
--- acinclude.m4.orig 2018-12-04 16:12:30 UTC
+++ acinclude.m4
@@ -971,15 +971,9 @@ dnl ------------------------------------
if test "$3" != "shared" && test "$3" != "yes" && test "$4" = "cli"; then
@@ -32,7 +32,7 @@
dnl Some systems require that we link $2 to $1 when building
])
@@ -2934,8 +2922,7 @@ dnl in GNU Make which causes the .d file
@@ -2970,8 +2958,7 @@ dnl in GNU Make which causes the .d file
$abs_srcdir/$ac_provsrc:;
$ac_bdir[$]ac_hdrobj: $abs_srcdir/$ac_provsrc
@@ -42,7 +42,7 @@
\$(PHP_DTRACE_OBJS): $ac_bdir[$]ac_hdrobj
EOF
@@ -2954,12 +2941,12 @@ dnl Always attempt to create both PIC an
@@ -2990,12 +2977,12 @@ dnl Always attempt to create both PIC an
$ac_bdir[$]ac_provsrc.lo: \$(PHP_DTRACE_OBJS)
echo "[#] Generated by Makefile for libtool" > \$[]@
@test -d "$dtrace_lib_dir" || mkdir $dtrace_lib_dir
@@ -57,7 +57,7 @@
echo "non_pic_object=[']$dtrace_prov_name[']" >> \$[]@ [;\\]
else [\\]
echo "non_pic_object='none'" >> \$[]@ [;\\]
@@ -2971,7 +2958,7 @@ EOF
@@ -3007,7 +2994,7 @@ EOF
*)
cat>>Makefile.objects<<EOF
$ac_bdir[$]ac_provsrc.o: \$(PHP_DTRACE_OBJS)

View File

@@ -0,0 +1,14 @@
--- configure.ac.orig 2019-01-08 12:14:44 UTC
+++ configure.ac
@@ -579,7 +579,10 @@ PHP_SOCKADDR_CHECKS
dnl Checks for GCC function attributes on all systems except ones without glibc
dnl Fix for these systems is already included in GCC 7, but not on GCC 6
-AS_CASE([$host_alias], [*-*-*android*|*-*-*uclibc*|*-*-*musl*], [true], [
+dnl
+dnl At least some versions of FreeBSD seem to have buggy ifunc support, see
+dnl bug #77284. Conservatively don't use ifuncs on FreeBSD.
+AS_CASE([$host_alias], [*-*-*android*|*-*-*uclibc*|*-*-*musl*|*freebsd*], [true], [
AX_GCC_FUNC_ATTRIBUTE([ifunc])
AX_GCC_FUNC_ATTRIBUTE([target])
])