[prev in list] [next in list] [prev in thread] [next in thread] 

List:       apache-bugdb
Subject:    mod_so/3997: Enable mod_so for OpenStep for Mach platform
From:       Rex Dieter <rdieter () math ! unl ! edu>
Date:       1999-03-04 17:56:42
[Download RAW message or body]


> Number:         3997
> Category:       mod_so
> Synopsis:       Enable mod_so for OpenStep for Mach platform
> Confidential:   no
> Severity:       non-critical
> Priority:       medium
> Responsible:    apache
> State:          open
> Class:          sw-bug
> Submitter-Id:   apache
> Arrival-Date:   Thu Mar  4 11:10:00 PST 1999
> Last-Modified:
> Originator:     rdieter@math.unl.edu
> Organization:
apache
> Release:        1.3.4
> Environment:
OpenStep for Mach 4.2, cc compiler
> Description:
Sorry, this isn't really a bug, but a feature addition.  I discovered the code within \
the mod_so that supports the MacOSX/Rhapsody platform, also works for OpenStep for \
Mach.  I'm including a patch here that touches up the files: Configure and mod_so.c \
to enable use of this module on this platform.

Actually building loadable modules on this platform is tricky, and I haven't found a \
nice "automatic" way of doing it yet.  For now, all I've been doing to create them, \
is to first make a regular module, say, mod_expires.o, then to create the loadable \
module, issue: cc -bundle -o mod_expires.bundle mod_expires.o -undefined suppress
and put the bundle in the libexec directory of the apache tree.
> How-To-Repeat:

> Fix:
#   This patch incorporates the changes required to enable
# loadable modules for OpenStep.  Turns out Apple had already
# provided this support for Rhapsody, and the same code works
# for OpenStep too.  -- Rex 990303


diff -durb apache_1.3.4_orig/src/Configure apache_1.3.4/src/Configure
--- apache_1.3.4_orig/src/Configure	Sat Jan  9 08:24:51 1999
+++ apache_1.3.4/src/Configure	Wed Mar  3 15:10:50 1999
@@ -472,12 +473,9 @@
 	;;
     *-next-openstep*)
 	OS='OpenStep/Mach'
	CC='cc'
 	OPTIM='-O'
 	CFLAGS="$CFLAGS -DNEXT"
-	CFLAGS_SHLIB='-dynamic -fno-common'
-	LD_SHLIB='cc'
-	LDFLAGS_SHLIB='-dynamiclib -undefined warning'
 	DEF_WANTHSREGEX=yes
 	;;
     *-apple-rhapsody*)
@@ -987,6 +985,13 @@
 	    LDFLAGS_SHLIB="-shared"
 	    LDFLAGS_SHLIB_EXPORT="-rdynamic"
 	    ;;
+	*-next-openstep*)
+	    LD_SHLIB="cc"
+	    CFLAGS_SHLIB='-dynamic -fno-common'
+	    LDFLAGS_SHLIB='-bundle -undefined warning'
+	    LDFLAGS_SHLIB_EXPORT=""
+	    SHLIB_SUFFIX_DEPTH=0
+	    ;;
 	*-apple-rhapsody*)
 	    LD_SHLIB="cc"
 	    CFLAGS_SHLIB=""
diff -durb apache_1.3.4_orig/src/include/ap_config.h \
                apache_1.3.4/src/include/ap_config.h
--- apache_1.3.4_orig/src/include/ap_config.h	Fri Jan  1 13:04:38 1999
+++ apache_1.3.4/src/include/ap_config.h	Wed Mar  3 15:07:42 1999
@@ -386,6 +386,9 @@
 #define NO_USE_SIGACTION
 #define HAVE_SYSLOG 1
 
+#define USE_FLOCK_SERIALIZED_ACCEPT
+#define SINGLE_LISTEN_UNSERIALIZED_ACCEPT
+
 #elif defined(RHAPSODY) /* Mac OS X Server */
 #define HAVE_GMTOFF
 #define HAVE_MMAP
diff -durb apache_1.3.4_orig/src/os/unix/os.c apache_1.3.4/src/os/unix/os.c
--- apache_1.3.4_orig/src/os/unix/os.c	Wed Sep 16 01:49:44 1998
+++ apache_1.3.4/src/os/unix/os.c	Wed Mar  3 14:43:36 1999
@@ -26,7 +26,7 @@
  *  dynamic shared object (DSO) mechanism
  */
 
-#ifdef RHAPSODY
+#if defined(RHAPSODY) || (defined(NEXT) && defined(__DYNAMIC__) )
 #include <mach-o/dyld.h>
 #include "httpd.h"
 #include "http_log.h"
@@ -77,7 +77,7 @@
 
 void ap_os_dso_init(void)
 {
-#if defined(RHAPSODY)
+#if defined(RHAPSODY) || (defined(NEXT) && defined(__DYNAMIC__) )
     NSLinkEditErrorHandlers handlers;
 
     handlers.undefined = undefined_symbol_handler;
@@ -95,7 +95,7 @@
     handle = shl_load(path, BIND_IMMEDIATE|BIND_VERBOSE|BIND_NOSTART, 0L);
     return (void *)handle;
 
-#elif defined(RHAPSODY)
+#elif defined(RHAPSODY) || (defined(NEXT) && defined(__DYNAMIC__) ) 
     NSObjectFileImage image;
     if (NSCreateObjectFileImageFromFile(path, &image) !=
         NSObjectFileImageSuccess)
@@ -116,7 +116,7 @@
 #if defined(HPUX) || defined(HPUX10)
     shl_unload((shl_t)handle);
 
-#elif defined(RHAPSODY)
+#elif defined(RHAPSODY) || (defined(NEXT) && defined(__DYNAMIC__) ) 
     NSUnLinkModule(handle,FALSE);
 
 #else
@@ -138,7 +138,7 @@
         status = shl_findsym((shl_t *)&handle, symname, TYPE_DATA, &symaddr);
     return (status == -1 ? NULL : symaddr);
 
-#elif defined(RHAPSODY)
+#elif defined(RHAPSODY) || (defined(NEXT) && defined(__DYNAMIC__) ) 
     NSSymbol symbol;
     char *symname2 = (char*)malloc(sizeof(char)*(strlen(symname)+2));
     sprintf(symname2, "_%s", symname);
@@ -163,7 +163,7 @@
 {
 #if defined(HPUX) || defined(HPUX10)
     return strerror(errno);
-#elif defined(RHAPSODY)
+#elif defined(RHAPSODY) || (defined(NEXT) && defined(__DYNAMIC__) ) 
     return NULL;
 #else
     return dlerror();
> Audit-Trail:
> Unformatted:
[In order for any reply to be added to the PR database, ]
[you need to include <apbugs@Apache.Org> in the Cc line ]
[and leave the subject line UNCHANGED.  This is not done]
[automatically because of the potential for mail loops. ]
[If you do not include this Cc, your reply may be ig-   ]
[nored unless you are responding to an explicit request ]
[from a developer.                                      ]
[Reply only with text; DO NOT SEND ATTACHMENTS!         ]


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic