mirror of
https://github.com/php/php-src.git
synced 2024-09-23 02:47:26 +00:00
Fix bug #48575 - Use dlopen() just like all the other *nixes instead of OSX specific code.
This commit is contained in:
parent
118b42f142
commit
afcc47ef85
12
Zend/Zend.m4
12
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
|
||||
|
||||
|
20
Zend/zend.h
20
Zend/zend.h
@ -80,18 +80,7 @@
|
||||
# include <dlfcn.h>
|
||||
#endif
|
||||
|
||||
#if HAVE_MACH_O_DYLD_H
|
||||
#include <mach-o/dyld.h>
|
||||
|
||||
/* 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
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
10
configure.in
10
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
|
||||
|
@ -29,7 +29,7 @@
|
||||
|
||||
#include "SAPI.h"
|
||||
|
||||
#if defined(HAVE_LIBDL) || HAVE_MACH_O_DYLD_H
|
||||
#if defined(HAVE_LIBDL)
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#ifdef HAVE_STRING_H
|
||||
@ -48,7 +48,7 @@
|
||||
#include <sys/param.h>
|
||||
#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
|
||||
|
Loading…
Reference in New Issue
Block a user