cvs commit: apache-1.3/src/os/unix os.c os.h
rasmus 98/07/10 11:29:52 Modified:src CHANGES src/os/unix os.c os.h Log: Set the RTLD_GLOBAL dlopen mode parameter to allow dynamically loaded modules to load their own modules dynamically. This improves mod_perl and mod_php3 when these modules are loaded dynamically into Apache. Revision ChangesPath 1.958 +5 -0 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.957 retrieving revision 1.958 diff -u -r1.957 -r1.958 --- CHANGES 1998/07/10 12:58:54 1.957 +++ CHANGES 1998/07/10 18:29:45 1.958 @@ -270,6 +270,11 @@ log the current cache usage percentage at LogLevel debug [Martin Kraemer, based on discussion between Dean Gaudet & Dirk vanGulik] + *) Set the RTLD_GLOBAL dlopen mode parameter to allow dynamically loaded + modules to load their own modules dynamically. This improves mod_perl + and mod_php3 when these modules are loaded dynamically into Apache. + [Rasmus Lerdorf] + Changes with Apache 1.3.0 *) Using a type map file as a custom error document was not possible. 1.12 +2 -2 apache-1.3/src/os/unix/os.c Index: os.c === RCS file: /export/home/cvs/apache-1.3/src/os/unix/os.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- os.c 1998/04/28 08:42:11 1.11 +++ os.c 1998/07/10 18:29:50 1.12 @@ -35,9 +35,9 @@ #else #if defined(OSF1) ||\ (defined(__FreeBSD_version) && (__FreeBSD_version >= 22)) -return dlopen((char *)path, RTLD_NOW); +return dlopen((char *)path, RTLD_NOW | RTLD_GLOBAL); #else -return dlopen(path, RTLD_NOW); +return dlopen(path, RTLD_NOW | RTLD_GLOBAL); #endif #endif } 1.26 +4 -0 apache-1.3/src/os/unix/os.h Index: os.h === RCS file: /export/home/cvs/apache-1.3/src/os/unix/os.h,v retrieving revision 1.25 retrieving revision 1.26 diff -u -r1.25 -r1.26 --- os.h 1998/07/06 11:54:30 1.25 +++ os.h 1998/07/10 18:29:51 1.26 @@ -120,6 +120,10 @@ #define RTLD_NOW 1 #endif +#ifndef RTLD_GLOBAL +#define RTLD_GLOBAL 0 +#endif + #if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) #define DLSYM_NEEDS_UNDERSCORE #endif
cvs commit: apache-1.3/src/os/unix os.c os.h
rse 98/04/12 08:49:28 Modified:.STATUS src CHANGES Configuration.tmpl Configure src/os/unix os.c os.h Log: Although I though we have no chance under HP/UX for using shared objects I today figured out that their proprietary shl_xxx system calls are very close to the dlopen-style interface. And because our os/unix/ stuff already provides an abstraction layer we now can provide DSO support for HP/UX by emulating the dlopen-style interface while not changing anything inside mod_so ;-) Revision ChangesPath 1.293 +1 -0 apache-1.3/STATUS Index: STATUS === RCS file: /export/home/cvs/apache-1.3/STATUS,v retrieving revision 1.292 retrieving revision 1.293 diff -u -r1.292 -r1.293 --- STATUS1998/04/11 15:46:29 1.292 +++ STATUS1998/04/12 15:49:24 1.293 @@ -178,6 +178,7 @@ * Ralf's and Martin's DSO support for all SVR4-derivate Unix platforms * THE BIG SYMBOL RENAMING * Ralf's DSO configuration updates for the UnixWare platform +* Ralf's DSO support for the HP/UX platform by emulating dlopen Available Patches: 1.767 +4 -0 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.766 retrieving revision 1.767 diff -u -r1.766 -r1.767 --- CHANGES 1998/04/11 15:22:03 1.766 +++ CHANGES 1998/04/12 15:49:25 1.767 @@ -1,5 +1,9 @@ Changes with Apache 1.3b6 + *) Adding DSO support for the HP/UX platform by emulating the dlopen-style + interface via the similar but proprietary HP/UX shl_xxx-style system + calls. [Ralf S. Engelschall] + *) PORT: Updated UnixWare 2.0.x and 2.1.x entries for DSO support and made APACI Makefile.tmpl "install" target more robust for sensible UnixWare Make. [Ralf S. Engelschall] 1.99 +3 -3 apache-1.3/src/Configuration.tmpl Index: Configuration.tmpl === RCS file: /export/home/cvs/apache-1.3/src/Configuration.tmpl,v retrieving revision 1.98 retrieving revision 1.99 diff -u -r1.98 -r1.99 --- Configuration.tmpl1998/04/10 10:34:32 1.98 +++ Configuration.tmpl1998/04/12 15:49:26 1.99 @@ -62,11 +62,11 @@ # heavily platform-dependent. The current state is this: # # Out-of-the-box supported platforms: -# Linux, FreeBSD, Solaris, SunOS, -# IRIX, OSF1, UnixWare, SINIX, SVR4 +# Linux, FreeBSD, Solaris, SunOS, OSF1 +# IRIX, HP/UX, UnixWare, SINIX, SVR4 # # Explicitly unsupported platforms: -# HP/UX, AIX, Ultrix +# AIX, Ultrix # # For other platforms where you want to use the DSO mechanism you # first have to make sure it supports the pragmatic dlopen() 1.237 +16 -0 apache-1.3/src/Configure Index: Configure === RCS file: /export/home/cvs/apache-1.3/src/Configure,v retrieving revision 1.236 retrieving revision 1.237 diff -u -r1.236 -r1.237 --- Configure 1998/04/11 15:22:04 1.236 +++ Configure 1998/04/12 15:49:26 1.237 @@ -858,6 +858,22 @@ LDFLAGS_SHLIB_EXPORT="" DEF_SHARED_CORE=yes ;; +*-hp-hpux9.*) +case $CC in +*/gcc|gcc ) CFLAGS_SHLIB="-fpic" ;; +*/cc|cc ) CFLAGS_SHLIB="+z" ;; +esac +LDFLAGS_SHLIB="-b" +LDFLAGS_SHLIB_EXPORT="-Wl,-E -Wl,-B,deferred" +;; +*-hp-hpux10.*) +case $CC in +*/gcc|gcc ) CFLAGS_SHLIB="-fpic" ;; +*/cc|cc ) CFLAGS_SHLIB="+z" ;; +esac +LDFLAGS_SHLIB="-b" +LDFLAGS_SHLIB_EXPORT="-Wl,-E -Wl,-B,deferred" +;; *) ## ok, no known explict support for shared objects ## on this platform, but we give not up immediately. 1.7 +43 -0 apache-1.3/src/os/unix/os.c Index: os.c === RCS file: /export/home/cvs/apache-1.3/src/os/unix/os.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- os.c 1998/03/17 07:54:27 1.6 +++ os.c 1998/04/12 15:49:28 1.7 @@ -12,3 +12,46 @@ */ extern void os_is_not_here(void); void os_is_not_here(void) {} + + +#if defined(HPUX) || defined(HPUX10) + +/* + * HPUX dlopen interface-emulation + */ + +#include +#include + +void *os_dl_load(char *path) +{ +shl_t handle; +handle = shl_load(path, BIND_IMMEDIATE|BIND_VERBOSE|BIND_NOSTART, 0L); +return (voi
cvs commit: apache-1.3/src/os/unix os.c os.h
dgaudet 98/03/16 23:54:29 Modified:src/ap ap_execve.c src/include alloc.h conf.h hide.h http_config.h http_core.h http_protocol.h httpd.h src/main alloc.c http_config.c http_core.c http_log.c http_main.c http_protocol.c http_request.c http_vhost.c src/os/unix os.c os.h Log: - staticization! (Doug I know this breaks your dce thing -- but we talked about you changing STANDALONE_MAIN to be a #include instead.) - change API_EXPORT to CORE_EXPORT for the functions Doug needed for mod_perl - basic_http_header is API_EXPORT - send_header_field is API_EXPORT_NONSTD - srm_command_loop is API_EXPORT Revision ChangesPath 1.8 +1 -0 apache-1.3/src/ap/ap_execve.c Index: ap_execve.c === RCS file: /export/home/cvs/apache-1.3/src/ap/ap_execve.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- ap_execve.c 1998/02/27 09:46:31 1.7 +++ ap_execve.c 1998/03/17 07:54:09 1.8 @@ -331,5 +331,6 @@ return NULL; } #else +extern void ap_execve_is_not_here(void); void ap_execve_is_not_here(void) {} #endif /* NEED_HASHBANG_EMUL */ 1.49 +1 -2 apache-1.3/src/include/alloc.h Index: alloc.h === RCS file: /export/home/cvs/apache-1.3/src/include/alloc.h,v retrieving revision 1.48 retrieving revision 1.49 diff -u -r1.48 -r1.49 --- alloc.h 1998/03/14 00:32:05 1.48 +++ alloc.h 1998/03/17 07:54:10 1.49 @@ -82,8 +82,7 @@ typedef struct pool pool; -extern pool *permanent_pool; -void init_alloc(void); /* Set up everything */ +pool * init_alloc(void); /* Set up everything */ API_EXPORT(pool *) make_sub_pool(pool *);/* All pools are subpools of permanent_pool */ API_EXPORT(void) destroy_pool(pool *); 1.191 +5 -0 apache-1.3/src/include/conf.h Index: conf.h === RCS file: /export/home/cvs/apache-1.3/src/include/conf.h,v retrieving revision 1.190 retrieving revision 1.191 diff -u -r1.190 -r1.191 --- conf.h1998/03/13 23:44:42 1.190 +++ conf.h1998/03/17 07:54:10 1.191 @@ -759,6 +759,11 @@ #define API_VAR_EXPORT #endif +/* modules should not used functions marked CORE_EXPORT */ +#ifndef CORE_EXPORT +#define CORE_EXPORT API_EXPORT +#endif + /* So that we can use inline on some critical functions, and use * GNUC attributes (such as to get -Wall warnings for printf-like * functions). Only do this in gcc 2.7 or later ... it may work 1.12 +4 -53 apache-1.3/src/include/hide.h Index: hide.h === RCS file: /export/home/cvs/apache-1.3/src/include/hide.h,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- hide.h1998/03/14 12:22:10 1.11 +++ hide.h1998/03/17 07:54:11 1.12 @@ -117,6 +117,7 @@ #define cgi_module AP_cgi_module #define config_log_module AP_config_log_module #define core_moduleAP_core_module +#define day_snames AP_day_snames #define db_auth_module AP_db_auth_module #define dbm_auth_moduleAP_dbm_auth_module #define digest_module AP_digest_module @@ -131,6 +132,7 @@ #define info_moduleAP_info_module #define mime_magic_module AP_mime_magic_module #define mime_moduleAP_mime_module +#define month_snames AP_month_snames #define negotiation_module AP_negotiation_module #define prelinked_modules AP_prelinked_modules #define preloaded_modules AP_preloaded_modules @@ -152,14 +154,11 @@ /* * Text segment symbols */ -#define AMCSocketCleanup AP_AMCSocketCleanup -#define AMCSocketInitializeAP_AMCSocketInitialize #define MD5Final AP_MD5Final #define MD5InitAP_MD5Init #define MD5Update AP_MD5Update #define add_cgi_vars AP_add_cgi_vars #define add_common_varsAP_add_common_vars -#define add_file_conf AP_add_file_conf #define add_module AP_add_module #define add_named_module AP_add_named_module #define add_per_dir_conf AP_add_per_dir_conf @@ -192,7 +191,6 @@ #define bskiplfAP_bskiplf #define bvputs AP_bvputs #define bwrite