From 58a882c1fda1979cfaa53f9e23e896af88dfdd86 Mon Sep 17 00:00:00 2001 From: David Carlier Date: Sat, 5 Sep 2020 14:04:01 +0000 Subject: [PATCH] Opcache JIT, code simplification for Haiku. More straightforward approach to get the path of the current PHP process. --- ext/opcache/jit/zend_elf.c | 17 +++++------------ ext/opcache/jit/zend_jit_perf_dump.c | 17 +++++------------ 2 files changed, 10 insertions(+), 24 deletions(-) diff --git a/ext/opcache/jit/zend_elf.c b/ext/opcache/jit/zend_elf.c index 2618f5a488d2d..58d6fdd72cc6a 100644 --- a/ext/opcache/jit/zend_elf.c +++ b/ext/opcache/jit/zend_elf.c @@ -22,7 +22,7 @@ #if defined(__FreeBSD__) #include #elif defined(__HAIKU__) -#include +#include #endif #include #include @@ -67,20 +67,13 @@ void zend_elf_load_symbols(void) const char *path = getexecname(); int fd = open(path, O_RDONLY); #elif defined(__HAIKU__) - image_info ii; - int32_t ic = 0; - - while (get_next_image_info(0, &ic, &ii) == B_OK) { - if (ii.type == B_APP_IMAGE) { - break; - } - } - - if (ii.type != B_APP_IMAGE) { + char path[PATH_MAX]; + if (find_path(B_APP_IMAGE_SYMBOL, B_FIND_PATH_IMAGE_PATH, + NULL, path, sizeof(path)) != B_OK) { return; } - int fd = open(ii.name, O_RDONLY); + int fd = open(path, O_RDONLY); #else // To complete eventually for other ELF platforms. // Otherwise APPLE is Mach-O diff --git a/ext/opcache/jit/zend_jit_perf_dump.c b/ext/opcache/jit/zend_jit_perf_dump.c index 94feba1f07d8c..613280c2179d2 100644 --- a/ext/opcache/jit/zend_jit_perf_dump.c +++ b/ext/opcache/jit/zend_jit_perf_dump.c @@ -36,7 +36,7 @@ // avoiding thread.h inclusion as it conflicts with vtunes types. extern unsigned int thr_self(void); #elif defined(__HAIKU__) -#include +#include #endif #include "zend_elf.h" @@ -136,20 +136,13 @@ static void zend_jit_perf_jitdump_open(void) const char *path = getexecname(); fd = open(path, O_RDONLY); #elif defined(__HAIKU__) - image_info ii; - int32_t ic = 0; - - while (get_next_image_info(0, &ic, &ii) == B_OK) { - if (ii.type == B_APP_IMAGE) { - break; - } - } - - if (ii.type != B_APP_IMAGE) { + char path[PATH_MAX]; + if (find_path(B_APP_IMAGE_SYMBOL, B_FIND_PATH_IMAGE_PATH, + NULL, path, sizeof(path)) != B_OK) { return; } - fd = open(ii.name, O_RDONLY); + fd = open(path, O_RDONLY); #else fd = -1; #endif