ffi.enable=1
--FILE--
<?php
- // Check if target supports "fastcall" calling convention
- try {
- FFI::cdef("extern size_t __attribute__((fastcall)) (*zend_printf)(const char *format);");
- $fastcall = "__attribute__((fastcall)) ";
- } catch (Throwable $e) {
- $fastcall = "";
- }
- $zend = FFI::cdef("
+ require_once('utils.inc');
+ $fastcall = ffi_get_fastcall_specifier();
+ $zend = ffi_cdef("
- const char *get_zend_version(void);
- //char *get_zend_version(void);
- extern size_t (*zend_printf)(const char *format, ...);
+ const char *get_zend_version(void);
+ //char *get_zend_version(void);
+ extern size_t (*zend_printf)(const char *format, ...);
- unsigned long $fastcall zend_hash_func(const char *str, size_t len);
+ unsigned long $fastcall zend_hash_func(const char *str, size_t len);
- void $fastcall zend_str_tolower(char *str, size_t length);
+ void $fastcall zend_str_tolower(char *str, size_t length);
- ");
+ ", ffi_get_php_dll_name());
var_dump(trim(explode("\n",$zend->get_zend_version())[0]));
//var_dump(trim(FFI::string($zend->get_zend_version())));
var_dump($zend->zend_printf);
?>
--INI--
ffi.enable=1
+opcache.jit=0
--FILE--
<?php
+ require_once('utils.inc');
$zend = FFI::cdef("
- typedef int (*zend_write_func_t)(const char *str, size_t str_length);
- extern zend_write_func_t zend_write;
+ typedef int (*zend_write_func_t)(const char *str, size_t str_length);
+ extern zend_write_func_t zend_write;
- ");
+ ", ffi_get_php_dll_name());
echo "Hello World!\n";