]> granicus.if.org Git - php/commitdiff
Fixed bug #80814 (threaded mod_php won't load on FreeBSD: No space available for...
authorDmitry Stogov <dmitry@zend.com>
Wed, 10 Mar 2021 13:03:47 +0000 (16:03 +0300)
committerDmitry Stogov <dmitry@zend.com>
Wed, 10 Mar 2021 13:03:47 +0000 (16:03 +0300)
NEWS
TSRM/TSRM.c
TSRM/TSRM.h
ext/opcache/jit/zend_jit_x86.dasc

diff --git a/NEWS b/NEWS
index 4ca029d681cb79d0a3f08952db47e8597725b390..64bc45c8e185b78be9c839aa71ad326a8d481518 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -6,6 +6,8 @@ PHP                                                                        NEWS
   . Fixed bug #75776 (Flushing streams with compression filter is broken). (cmb)
   . Fixed bug #80811 (Function exec without $output but with $restult_code
     parameter crashes). (Nikita)
+  . Fixed bug #80814 (threaded mod_php won't load on FreeBSD: No space
+    available for static Thread Local Storage). (Dmitry)
 
 - IMAP:
   . Fixed bug #80800 (imap_open() fails when the flags parameter includes
index cd340035a27e23901685315009bc8258e1e77d14..2d60b6a9d6eeeb34201166a6834ae9b1681ce078 100644 (file)
@@ -729,13 +729,13 @@ TSRM_API size_t tsrm_get_ls_cache_tcb_offset(void)
 #if defined(__APPLE__) && defined(__x86_64__)
     // TODO: Implement support for fast JIT ZTS code ???
        return 0;
-#elif defined(__x86_64__) && defined(__GNUC__)
+#elif defined(__x86_64__) && defined(__GNUC__) && !defined(__FreeBSD__)
        size_t ret;
 
        asm ("movq _tsrm_ls_cache@gottpoff(%%rip),%0"
           : "=r" (ret));
        return ret;
-#elif defined(__i386__) && defined(__GNUC__)
+#elif defined(__i386__) && defined(__GNUC__) && !defined(__FreeBSD__)
        size_t ret;
 
        asm ("leal _tsrm_ls_cache@ntpoff,%0"
index 6978b4973204e2f53e92f341ef391cced814f2fa..eea158d015aec620e1d6ab1dd20cf6374ceb529c 100644 (file)
@@ -147,7 +147,7 @@ TSRM_API const char *tsrm_api_name(void);
 # define __has_attribute(x) 0
 #endif
 
-#if !__has_attribute(tls_model)
+#if !__has_attribute(tls_model) || defined(__FreeBSD__)
 # define TSRM_TLS_MODEL_ATTR
 #elif __PIC__
 # define TSRM_TLS_MODEL_ATTR __attribute__((tls_model("initial-exec")))
index d886085ad4b88e45904a9c26bb01040de3c2772a..41a0d2fe079e377ba3e7717abfb83a96ac2cd736 100644 (file)
@@ -2933,7 +2933,7 @@ static int zend_jit_setup(void)
 # elif defined(__GNUC__) && defined(__x86_64__)
        tsrm_ls_cache_tcb_offset = tsrm_get_ls_cache_tcb_offset();
        if (tsrm_ls_cache_tcb_offset == 0) {
-#if defined(__has_attribute) && __has_attribute(tls_model)
+#if defined(__has_attribute) && __has_attribute(tls_model) && !defined(__FreeBSD__)
                size_t ret;
 
                asm ("movq _tsrm_ls_cache@gottpoff(%%rip),%0"
@@ -2952,7 +2952,7 @@ static int zend_jit_setup(void)
 # elif defined(__GNUC__) && defined(__i386__)
        tsrm_ls_cache_tcb_offset = tsrm_get_ls_cache_tcb_offset();
        if (tsrm_ls_cache_tcb_offset == 0) {
-#if 1
+#if !defined(__FreeBSD__)
                size_t ret;
 
                asm ("leal _tsrm_ls_cache@ntpoff,%0\n"