dougm 00/04/02 20:56:12 Modified: . Changes INSTALL Makefile.PL Log: updated dso+aix Perl patch Revision Changes Path 1.454 +3 -0 modperl/Changes Index: Changes =================================================================== RCS file: /home/cvs/modperl/Changes,v retrieving revision 1.453 retrieving revision 1.454 diff -u -r1.453 -r1.454 --- Changes 2000/04/03 03:40:35 1.453 +++ Changes 2000/04/03 03:56:11 1.454 @@ -10,6 +10,9 @@ =item 1.22_01-dev +updated dso+aix Perl patch +[Jens-Uwe Mager <[EMAIL PROTECTED]>] + warn that dso+Perl malloc needs a Perl built with -Ubincompat5005 add Apache::BINMODE stub for 5.6.0 tied filehandle support (fixes cgi.t #4) 1.14 +42 -2 modperl/INSTALL Index: INSTALL =================================================================== RCS file: /home/cvs/modperl/INSTALL,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- INSTALL 2000/03/09 20:21:15 1.13 +++ INSTALL 2000/04/03 03:56:11 1.14 @@ -345,8 +345,35 @@ following patch to perl 5.005_3 does fix that problem: --- perl5.005_03/ext/DynaLoader/dl_aix.xs.orig Fri Mar 3 17:00:58 2000 - +++ perl5.005_03/ext/DynaLoader/dl_aix.xs Fri Mar 3 17:06:51 2000 - @@ -222,7 +222,16 @@ + +++ perl5.005_03/ext/DynaLoader/dl_aix.xs Sun Apr 2 13:37:05 2000 + @@ -74,8 +74,8 @@ + } Module, *ModulePtr; + + /* + - * We keep a list of all loaded modules to be able to call the fini + - * handlers at atexit() time. + + * We keep a list of all loaded modules to be able to reference count + + * duplicate dlopen's. + */ + static ModulePtr modList; + + @@ -88,7 +88,6 @@ + + static void caterr(char *); + static int readExports(ModulePtr); + -static void terminate(void); + static void *findMain(void); + + static char *strerror_failed = "(strerror failed)"; + @@ -165,7 +164,6 @@ + if (!mainModule) { + if ((mainModule = findMain()) == NULL) + return NULL; + - atexit(terminate); + } + /* + * Scan the list of modules if have the module already loaded. + @@ -222,7 +220,16 @@ mp->refCnt = 1; mp->next = modList; modList = mp; @@ -364,6 +391,19 @@ dlclose(mp); errvalid++; strcpy(errbuf, "loadbind: "); + @@ -336,12 +343,6 @@ + safefree(mp->name); + safefree(mp); + return result; + -} + - + -static void terminate(void) + -{ + - while (modList) + - dlclose(modList); + } + + /* Added by Wayne Scott Please make sure that you rebuild both perl and mod_perl after applying this patch. 1.155 +61 -20 modperl/Makefile.PL Index: Makefile.PL =================================================================== RCS file: /home/cvs/modperl/Makefile.PL,v retrieving revision 1.154 retrieving revision 1.155 diff -u -r1.154 -r1.155 --- Makefile.PL 2000/04/03 03:49:38 1.154 +++ Makefile.PL 2000/04/03 03:56:11 1.155 @@ -2096,25 +2096,66 @@ EOF warn <<EOF; ---- perl5.005_03/ext/DynaLoader/dl_aix.xs.orig Fri Mar 3 17:00:58 2000 -+++ perl5.005_03/ext/DynaLoader/dl_aix.xs Fri Mar 3 17:06:51 2000 -@@ -222,7 +222,16 @@ - mp->refCnt = 1; - mp->next = modList; - modList = mp; -- if (loadbind(0, mainModule, mp->entry) == -1) { -+ /* -+ * Assume anonymous exports come from the module this dlopen -+ * is linked into, that holds true as long as dlopen and all -+ * of the perl core are in the same shared object. Also bind -+ * against the main part, in the case a perl is not the main -+ * part, e.g mod_perl as DSO in Apache so perl modules can -+ * also reference Apache symbols. -+ */ -+ if (loadbind(0, (void *)dlopen, mp->entry) == -1 || -+ loadbind(0, mainModule, mp->entry) == -1) { - dlclose(mp); - errvalid++; - strcpy(errbuf, "loadbind: "); +--- perl5.005_03/ext/DynaLoader/dl_aix.xs.orig Fri Mar 3 17:00:58 2000 ++++ perl5.005_03/ext/DynaLoader/dl_aix.xs Sun Apr 2 13:37:05 2000 +@@ -74,8 +74,8 @@ + } Module, *ModulePtr; + + /* +- * We keep a list of all loaded modules to be able to call the fini +- * handlers at atexit() time. ++ * We keep a list of all loaded modules to be able to reference count ++ * duplicate dlopen's. + */ + static ModulePtr modList; + +@@ -88,7 +88,6 @@ + + static void caterr(char *); + static int readExports(ModulePtr); +-static void terminate(void); + static void *findMain(void); + + static char *strerror_failed = "(strerror failed)"; +@@ -165,7 +164,6 @@ + if (!mainModule) { + if ((mainModule = findMain()) == NULL) + return NULL; +- atexit(terminate); + } + /* + * Scan the list of modules if have the module already loaded. +@@ -222,7 +220,16 @@ + mp->refCnt = 1; + mp->next = modList; + modList = mp; +- if (loadbind(0, mainModule, mp->entry) == -1) { ++ /* ++ * Assume anonymous exports come from the module this dlopen ++ * is linked into, that holds true as long as dlopen and all ++ * of the perl core are in the same shared object. Also bind ++ * against the main part, in the case a perl is not the main ++ * part, e.g mod_perl as DSO in Apache so perl modules can ++ * also reference Apache symbols. ++ */ ++ if (loadbind(0, (void *)dlopen, mp->entry) == -1 || ++ loadbind(0, mainModule, mp->entry) == -1) { + dlclose(mp); + errvalid++; + strcpy(errbuf, "loadbind: "); +@@ -336,12 +343,6 @@ + safefree(mp->name); + safefree(mp); + return result; +-} +- +-static void terminate(void) +-{ +- while (modList) +- dlclose(modList); + } + + /* Added by Wayne Scott + EOF }