From 3b377b51a22681f4594f8eb55e6de25ea01204c1 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Wed, 10 Mar 2021 16:03:47 +0300 Subject: Fixed bug #80814 (threaded mod_php won't load on FreeBSD: No space available for static Thread Local Storage) --- NEWS | 2 ++ TSRM/TSRM.c | 4 ++-- TSRM/TSRM.h | 2 +- ext/opcache/jit/zend_jit_x86.dasc | 4 ++-- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/NEWS b/NEWS index 4ca029d681..64bc45c8e1 100644 --- 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 diff --git a/TSRM/TSRM.c b/TSRM/TSRM.c index cd340035a2..2d60b6a9d6 100644 --- a/TSRM/TSRM.c +++ b/TSRM/TSRM.c @@ -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" diff --git a/TSRM/TSRM.h b/TSRM/TSRM.h index 6978b49732..eea158d015 100644 --- a/TSRM/TSRM.h +++ b/TSRM/TSRM.h @@ -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"))) diff --git a/ext/opcache/jit/zend_jit_x86.dasc b/ext/opcache/jit/zend_jit_x86.dasc index d886085ad4..41a0d2fe07 100644 --- a/ext/opcache/jit/zend_jit_x86.dasc +++ b/ext/opcache/jit/zend_jit_x86.dasc @@ -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" -- cgit v1.2.1