From afcc47ef85ce10111b3880aec61df009a2cc83c7 Mon Sep 17 00:00:00 2001 From: Scott MacVicar Date: Thu, 6 Aug 2009 01:33:54 +0000 Subject: [PATCH] Fix bug #48575 - Use dlopen() just like all the other *nixes instead of OSX specific code. --- Zend/Zend.m4 | 12 -------- Zend/zend.h | 20 +------------ Zend/zend_API.c | 2 +- Zend/zend_extensions.c | 65 ------------------------------------------ configure.in | 10 ------- ext/standard/dl.c | 6 ++-- 6 files changed, 5 insertions(+), 110 deletions(-) diff --git a/Zend/Zend.m4 b/Zend/Zend.m4 index 88ddcbf3f0..3c1b1109b9 100644 --- a/Zend/Zend.m4 +++ b/Zend/Zend.m4 @@ -62,18 +62,6 @@ unix.h \ stdlib.h \ dlfcn.h) -dnl Don't use mach-o/dyld.h on Darwin 8+, dl* is recommended by Apple from there on -dnl See http://developer.apple.com/documentation/DeveloperTools/Conceptual/MachOTopics/Articles/loading_code.html -case $host_alias in -*darwin[[89]]*) - ;; -*) - AC_CHECK_HEADERS([ \ -mach-o/dyld.h -],[],[][]) - ;; -esac - AC_TYPE_SIZE_T AC_TYPE_SIGNAL diff --git a/Zend/zend.h b/Zend/zend.h index 5e20ea0c08..f6fd95de83 100644 --- a/Zend/zend.h +++ b/Zend/zend.h @@ -80,18 +80,7 @@ # include #endif -#if HAVE_MACH_O_DYLD_H -#include - -/* MH_BUNDLE loading functions for Mac OS X / Darwin */ -void *zend_mh_bundle_load (char* bundle_path); -int zend_mh_bundle_unload (void *bundle_handle); -void *zend_mh_bundle_symbol(void *bundle_handle, const char *symbol_name); -const char *zend_mh_bundle_error(void); - -#endif /* HAVE_MACH_O_DYLD_H */ - -#if defined(HAVE_LIBDL) && !defined(HAVE_MACH_O_DYLD_H) && !defined(ZEND_WIN32) +#if defined(HAVE_LIBDL) && !defined(ZEND_WIN32) # ifndef RTLD_LAZY # define RTLD_LAZY 1 /* Solaris 1, FreeBSD's (2.1.7.1 and older) */ @@ -117,13 +106,6 @@ const char *zend_mh_bundle_error(void); # define DL_ERROR dlerror # define DL_HANDLE void * # define ZEND_EXTENSIONS_SUPPORT 1 -#elif defined(HAVE_MACH_O_DYLD_H) -# define DL_LOAD(libname) zend_mh_bundle_load(libname) -# define DL_UNLOAD zend_mh_bundle_unload -# define DL_FETCH_SYMBOL(h,s) zend_mh_bundle_symbol(h,s) -# define DL_ERROR zend_mh_bundle_error -# define DL_HANDLE void * -# define ZEND_EXTENSIONS_SUPPORT 1 #elif defined(ZEND_WIN32) # define DL_LOAD(libname) LoadLibrary(libname) # define DL_FETCH_SYMBOL GetProcAddress diff --git a/Zend/zend_API.c b/Zend/zend_API.c index c147601b1d..f19ec1b24e 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -2456,7 +2456,7 @@ void module_destructor(zend_module_entry *module) /* {{{ */ zend_unregister_functions(module->functions, -1, NULL TSRMLS_CC); } -#if HAVE_LIBDL || defined(HAVE_MACH_O_DYLD_H) +#if HAVE_LIBDL #if !(defined(NETWARE) && defined(APACHE_1_BUILD)) if (module->handle) { DL_UNLOAD(module->handle); diff --git a/Zend/zend_extensions.c b/Zend/zend_extensions.c index fff78d6734..e9be39a14d 100644 --- a/Zend/zend_extensions.c +++ b/Zend/zend_extensions.c @@ -219,71 +219,6 @@ ZEND_API zend_extension *zend_get_extension(const char *extension_name) /* {{{ * } /* }}} */ -/* - * Support for dynamic loading of MH_BUNDLEs on Darwin / Mac OS X - * - */ - -#if HAVE_MACH_O_DYLD_H - -void *zend_mh_bundle_load(char* bundle_path) /* {{{ */ -{ - NSObjectFileImage bundle_image; - NSModule bundle_handle; - NSSymbol bundle_init_nssymbol; - void (*bundle_init)(void); - - if (NSCreateObjectFileImageFromFile(bundle_path, &bundle_image) != NSObjectFileImageSuccess) { - return NULL; - } - - bundle_handle = NSLinkModule(bundle_image, bundle_path, NSLINKMODULE_OPTION_NONE); - NSDestroyObjectFileImage(bundle_image); - - /* call the init function of the bundle */ - bundle_init_nssymbol = NSLookupSymbolInModule(bundle_handle, "__init"); - if (bundle_init_nssymbol != NULL) { - bundle_init = NSAddressOfSymbol(bundle_init_nssymbol); - bundle_init(); - } - - return bundle_handle; -} -/* }}} */ - -int zend_mh_bundle_unload(void *bundle_handle) /* {{{ */ -{ - NSSymbol bundle_fini_nssymbol; - void (*bundle_fini)(void); - - /* call the fini function of the bundle */ - bundle_fini_nssymbol = NSLookupSymbolInModule(bundle_handle, "__fini"); - if (bundle_fini_nssymbol != NULL) { - bundle_fini = NSAddressOfSymbol(bundle_fini_nssymbol); - bundle_fini(); - } - - return (int) NSUnLinkModule(bundle_handle, NULL); -} -/* }}} */ - -void *zend_mh_bundle_symbol(void *bundle_handle, const char *symbol_name) /* {{{ */ -{ - NSSymbol symbol; - symbol = NSLookupSymbolInModule(bundle_handle, symbol_name); - return NSAddressOfSymbol(symbol); -} -/* }}} */ - -const char *zend_mh_bundle_error(void) /* {{{ */ -{ - /* Witness the state of the art error reporting */ - return NULL; -} -/* }}} */ - -#endif /* HAVE_MACH_O_DYLD_H */ - /* * Local variables: * tab-width: 4 diff --git a/configure.in b/configure.in index e9d45d1fcf..3099c525c3 100644 --- a/configure.in +++ b/configure.in @@ -485,16 +485,6 @@ assert.h #endif ]) -dnl Don't use mach-o/dyld.h on Darwin 8+, dl* is recommended by Apple from there on -dnl See http://developer.apple.com/documentation/DeveloperTools/Conceptual/MachOTopics/Articles/loading_code.html -case $host_alias in - *darwin[[89]]*) - ;; - *) - AC_CHECK_HEADERS([mach-o/dyld.h],[],[],[]) - ;; -esac - PHP_FOPENCOOKIE PHP_BROKEN_GETCWD PHP_BROKEN_GLIBC_FOPEN_APPEND diff --git a/ext/standard/dl.c b/ext/standard/dl.c index 95da529533..f1a2462c4b 100644 --- a/ext/standard/dl.c +++ b/ext/standard/dl.c @@ -29,7 +29,7 @@ #include "SAPI.h" -#if defined(HAVE_LIBDL) || HAVE_MACH_O_DYLD_H +#if defined(HAVE_LIBDL) #include #include #ifdef HAVE_STRING_H @@ -48,7 +48,7 @@ #include #define GET_DL_ERROR() DL_ERROR() #endif -#endif /* defined(HAVE_LIBDL) || HAVE_MACH_O_DYLD_H */ +#endif /* defined(HAVE_LIBDL) */ /* {{{ proto int dl(string extension_filename) U Load a PHP extension at runtime */ @@ -85,7 +85,7 @@ PHPAPI PHP_FUNCTION(dl) } /* }}} */ -#if defined(HAVE_LIBDL) || HAVE_MACH_O_DYLD_H +#if defined(HAVE_LIBDL) #ifdef ZTS #define USING_ZTS 1 -- 2.50.1