mirror of
https://github.com/php/php-src.git
synced 2024-09-21 09:57:23 +00:00
Fix TLS access in JIT on FreeBSD/amd64
DTV elements are 8 bytes in size a per ABI [1], and the index is offset by 1
on FreeBSD [2]
[1] http://people.redhat.com/drepper/tls.pdf
[2] bf56e8b9c8/libexec/rtld-elf/rtld.c (L5260)
Closes GH-13928
This commit is contained in:
parent
272da51bfd
commit
79862f24da
1
NEWS
1
NEWS
@ -13,6 +13,7 @@ PHP NEWS
|
||||
- Opcache:
|
||||
. Fixed bug GH-14267 (opcache.jit=off does not allow enabling JIT at runtime).
|
||||
(ilutov)
|
||||
. Fixed TLS access in JIT on FreeBSD/amd64. (Arnaud)
|
||||
|
||||
- Soap:
|
||||
. Fixed bug #47925 (PHPClient can't decompress response). (nielsdos)
|
||||
|
@ -2910,6 +2910,15 @@ static int zend_jit_setup(void)
|
||||
: "=a" (ti));
|
||||
tsrm_tls_offset = ti[1];
|
||||
tsrm_tls_index = ti[0] * 8;
|
||||
#elif defined(__FreeBSD__)
|
||||
size_t *ti;
|
||||
|
||||
__asm__(
|
||||
"leaq _tsrm_ls_cache@tlsgd(%%rip), %0\n"
|
||||
: "=a" (ti));
|
||||
tsrm_tls_offset = ti[1];
|
||||
/* Index is offset by 1 on FreeBSD (https://github.com/freebsd/freebsd-src/blob/bf56e8b9c8639ac4447d223b83cdc128107cc3cd/libexec/rtld-elf/rtld.c#L5260) */
|
||||
tsrm_tls_index = (ti[0] + 1) * 8;
|
||||
#else
|
||||
size_t *ti;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user