X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=src%2Fmodule.c;h=0c8b3b3315bb0f38b358383fc4ddcc615465d7ef;hp=e7948d8a0e9abec32534e7665797fa6109e65fdf;hb=440ff658995f1378fd74c0101ff6c2b4951ffdf9;hpb=ba906e039ffe9e57842ce5135aa43efa00b8a4c6 diff --git a/src/module.c b/src/module.c index e7948d8..0c8b3b3 100644 --- a/src/module.c +++ b/src/module.c @@ -35,6 +35,9 @@ #include "token.h" #include "parser.h" +#define PSI_CPP_SEARCH +#include "php_psi_cpp.h" + #if HAVE_LIBJIT # include "libjit.h" # ifndef HAVE_LIBFFI @@ -236,6 +239,9 @@ static PHP_MINIT_FUNCTION(psi) flags |= PSI_SILENT; } + PSI_G(search_path) = pemalloc(strlen(PSI_G(directory)) + strlen(psi_cpp_search) + 1 + 1, 1); + sprintf(PSI_G(search_path), "%s:%s", PSI_G(directory), psi_cpp_search); + PSI_G(context) = psi_context_init(NULL, ops, psi_error_wrapper, flags); psi_context_build(PSI_G(context), PSI_G(directory)); @@ -268,7 +274,9 @@ static PHP_MINFO_FUNCTION(psi) php_info_print_table_start(); php_info_print_table_header(2, "PSI Support", "enabled"); php_info_print_table_row(2, "Extension Version", PHP_PSI_VERSION); + php_info_print_table_row(2, "Search Path", PSI_G(search_path)); php_info_print_table_end(); + php_info_print_table_start(); php_info_print_table_header(3, "Used Library", "Compiled", "Linked"); php_info_print_table_row(3, "libffi", @@ -292,6 +300,33 @@ static PHP_MINFO_FUNCTION(psi) DISPLAY_INI_ENTRIES(); } +static void ptr_free(void *ptr) +{ + free(*(void **) ptr); +} + +static PHP_GINIT_FUNCTION(psi) +{ + char *tmp; + struct psi_plist **bl_decls = &psi_globals->blacklist.decls; + + *bl_decls = psi_plist_init(ptr_free); + +#define BL_DECL_ADD(d) \ + tmp = strdup(d); \ + *bl_decls = psi_plist_add(*bl_decls, &tmp) + + BL_DECL_ADD("dlsym"); + BL_DECL_ADD("alloca"); + BL_DECL_ADD("atexit"); + BL_DECL_ADD("_IO_cookie_init"); +} + +static PHP_GSHUTDOWN_FUNCTION(psi) +{ + psi_plist_free(psi_globals->blacklist.decls); +} + static const zend_function_entry psi_functions[] = { PHP_FE(psi_dump, ai_psi_dump) PHP_FE(psi_validate, ai_psi_validate) @@ -313,7 +348,11 @@ zend_module_entry psi_module_entry = { NULL, PHP_MINFO(psi), PHP_PSI_VERSION, - STANDARD_MODULE_PROPERTIES + ZEND_MODULE_GLOBALS(psi), + PHP_GINIT(psi), + PHP_GSHUTDOWN(psi), + NULL, /* post-deactivate */ + STANDARD_MODULE_PROPERTIES_EX }; #ifdef COMPILE_DL_PSI