summaryrefslogtreecommitdiff
path: root/acinclude.m4
diff options
context:
space:
mode:
authorChristoph M. Becker <cmbecker69@gmx.de>2018-09-11 12:23:50 +0200
committerChristoph M. Becker <cmbecker69@gmx.de>2018-09-11 12:23:50 +0200
commitaaae9c66dbfaae8149e7848e397ce31a4ddccee4 (patch)
treecce595a5647e41571acc4ef95744924a9fde2cc0 /acinclude.m4
parent034b7ff09143e3d86d6e4f8c15728b52b0c413d7 (diff)
parentb117feeb2b545b34296f2fc492166d790610fffe (diff)
downloadphp-git-aaae9c66dbfaae8149e7848e397ce31a4ddccee4.tar.gz
Merge branch 'PHP-7.3'
* PHP-7.3: Fix #76510: file_exists() stopped working for phar://
Diffstat (limited to 'acinclude.m4')
-rw-r--r--acinclude.m436
1 files changed, 36 insertions, 0 deletions
diff --git a/acinclude.m4 b/acinclude.m4
index 626031c289..48724f4f0b 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -1740,6 +1740,42 @@ choke me
])
dnl
+dnl PHP_BROKEN_GCC_STRLEN_OPT
+dnl
+dnl Early releases of GCC 8 shipped with a strlen() optimization bug, so they
+dnl didn't properly handle the `char val[1]` struct hack. See bug #76510.
+dnl
+AC_DEFUN([PHP_BROKEN_GCC_STRLEN_OPT], [
+ AC_CACHE_CHECK([for broken gcc optimize-strlen],ac_cv_have_broken_gcc_strlen_opt,[
+ AC_RUN_IFELSE([AC_LANG_SOURCE([[
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+struct s
+{
+ int i;
+ char c[1];
+};
+int main()
+{
+ struct s *s = malloc(sizeof(struct s) + 3);
+ s->i = 3;
+ strcpy(s->c, "foo");
+ return strlen(s->c+1) == 2;
+}
+]])],[
+ ac_cv_have_broken_gcc_strlen_opt=yes
+],[
+ ac_cv_have_broken_gcc_strlen_opt=no
+],[
+ ac_cv_have_broken_gcc_strlen_opt=no
+])])
+ if test "$ac_cv_have_broken_gcc_strlen_opt" = "yes"; then
+ CFLAGS="$CFLAGS -fno-optimize-strlen"
+ fi
+])
+
+dnl
dnl PHP_FOPENCOOKIE
dnl
AC_DEFUN([PHP_FOPENCOOKIE], [