mirror of
https://github.com/php/php-src.git
synced 2024-09-21 09:57:23 +00:00
Merge branch 'PHP-8.2' into PHP-8.3
* PHP-8.2: Hint the opcache shm mapping location only when JIT is enabled Fix the JIT buffer relocation failure at the corner case (#11266)
This commit is contained in:
commit
ead61c7f29
@ -20,6 +20,7 @@
|
||||
*/
|
||||
|
||||
#include "zend_shared_alloc.h"
|
||||
#include "jit/zend_jit.h"
|
||||
|
||||
#ifdef USE_MMAP
|
||||
|
||||
@ -48,7 +49,7 @@
|
||||
# define MAP_HUGETLB MAP_ALIGNED_SUPER
|
||||
#endif
|
||||
|
||||
#if (defined(__linux__) || defined(__FreeBSD__)) && (defined(__x86_64__) || defined (__aarch64__)) && !defined(__SANITIZE_ADDRESS__)
|
||||
#if defined(HAVE_JIT) && (defined(__linux__) || defined(__FreeBSD__)) && (defined(__x86_64__) || defined (__aarch64__)) && !defined(__SANITIZE_ADDRESS__)
|
||||
static void *find_prefered_mmap_base(size_t requested_size)
|
||||
{
|
||||
size_t huge_page_size = 2 * 1024 * 1024;
|
||||
@ -197,8 +198,17 @@ static int create_segments(size_t requested_size, zend_shared_segment ***shared_
|
||||
#ifdef PROT_MAX
|
||||
flags |= PROT_MAX(PROT_READ | PROT_WRITE | PROT_EXEC);
|
||||
#endif
|
||||
#if (defined(__linux__) || defined(__FreeBSD__)) && (defined(__x86_64__) || defined (__aarch64__)) && !defined(__SANITIZE_ADDRESS__)
|
||||
void *hint = find_prefered_mmap_base(requested_size);
|
||||
#if defined(HAVE_JIT) && (defined(__linux__) || defined(__FreeBSD__)) && (defined(__x86_64__) || defined (__aarch64__)) && !defined(__SANITIZE_ADDRESS__)
|
||||
void *hint;
|
||||
if (JIT_G(enabled) && JIT_G(buffer_size)
|
||||
&& zend_jit_check_support() == SUCCESS) {
|
||||
hint = find_prefered_mmap_base(requested_size);
|
||||
} else {
|
||||
/* Do not use a hint if JIT is not enabled, as this profits only JIT and
|
||||
* this is potentially unsafe when the only suitable candidate is just
|
||||
* after the heap (e.g. in non-PIE builds) (GH-13775). */
|
||||
hint = MAP_FAILED;
|
||||
}
|
||||
if (hint != MAP_FAILED) {
|
||||
# ifdef MAP_HUGETLB
|
||||
size_t huge_page_size = 2 * 1024 * 1024;
|
||||
|
Loading…
Reference in New Issue
Block a user