Skip to content

Commit

Permalink
Fixed bug php#13581: threaded mod_php fails on NetBSD with No space a…
Browse files Browse the repository at this point in the history
…vailable for Thread Local Storage.
  • Loading branch information
stixpjr committed Mar 28, 2024
1 parent 4bc7ea3 commit cc01c5c
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 5 deletions.
6 changes: 4 additions & 2 deletions TSRM/TSRM.c
Original file line number Diff line number Diff line change
Expand Up @@ -777,14 +777,16 @@ TSRM_API size_t tsrm_get_ls_cache_tcb_offset(void)
// TODO: Implement support for fast JIT ZTS code ???
return 0;
#elif defined(__x86_64__) && defined(__GNUC__) && !defined(__FreeBSD__) && \
!defined(__OpenBSD__) && !defined(__MUSL__) && !defined(__HAIKU__)
!defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(__MUSL__) && \
!defined(__HAIKU__)
size_t ret;

asm ("movq _tsrm_ls_cache@gottpoff(%%rip),%0"
: "=r" (ret));
return ret;
#elif defined(__i386__) && defined(__GNUC__) && !defined(__FreeBSD__) && \
!defined(__OpenBSD__) && !defined(__MUSL__) && !defined(__HAIKU__)
!defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(__MUSL__) && \
!defined(__HAIKU__)
size_t ret;

asm ("leal _tsrm_ls_cache@ntpoff,%0"
Expand Down
2 changes: 1 addition & 1 deletion TSRM/TSRM.h
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ TSRM_API bool tsrm_is_managed_thread(void);
# define __has_attribute(x) 0
#endif

#if !__has_attribute(tls_model) || defined(__FreeBSD__) || defined(__MUSL__) || defined(__HAIKU__)
#if !__has_attribute(tls_model) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__MUSL__) || defined(__HAIKU__)
# define TSRM_TLS_MODEL_ATTR
#elif __PIC__
# define TSRM_TLS_MODEL_ATTR __attribute__((tls_model("initial-exec")))
Expand Down
5 changes: 3 additions & 2 deletions ext/opcache/jit/zend_jit_ir.c
Original file line number Diff line number Diff line change
Expand Up @@ -3241,7 +3241,8 @@ static void 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) && !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__MUSL__)
#if defined(__has_attribute) && __has_attribute(tls_model) && !defined(__FreeBSD__) && \
!defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(__MUSL__)
size_t ret;

asm ("movq _tsrm_ls_cache@gottpoff(%%rip),%0"
Expand All @@ -3268,7 +3269,7 @@ static void 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 !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__MUSL__)
#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(__MUSL__)
size_t ret;

asm ("leal _tsrm_ls_cache@ntpoff,%0\n"
Expand Down

0 comments on commit cc01c5c

Please sign in to comment.