You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by rs...@hyperreal.org on 1998/04/12 17:49:29 UTC

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  Changes    Path
  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
  --- STATUS	1998/04/11 15:46:29	1.292
  +++ STATUS	1998/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.tmpl	1998/04/10 10:34:32	1.98
  +++ Configuration.tmpl	1998/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 <dl.h>
  +#include <errno.h>
  +
  +void *os_dl_load(char *path)
  +{
  +    shl_t handle;
  +    handle = shl_load(path, BIND_IMMEDIATE|BIND_VERBOSE|BIND_NOSTART, 0L);
  +    return (void *)handle;
  +}
  +
  +void os_dl_unload(void *handle) 
  +{
  +    shl_unload((shl_t)handle);
  +    return;
  +}
  +
  +void *os_dl_sym(void *handle, char *symname)
  +{
  +    void *symaddr = NULL;
  +    int status;
  +
  +    errno = 0;
  +    status = shl_findsym((shl_t *)&handle, symname, TYPE_PROCEDURE, &symaddr);
  +    if (status == -1 && errno == 0) /* try TYPE_DATA instead */
  +        status = shl_findsym((shl_t *)&handle, symname, TYPE_DATA, &symaddr);
  +    return (status == -1 ? NULL : symaddr);
  +}
  +
  +char *os_dl_error(void)
  +{
  +    return strerror(errno);
  +}
  +
  +#endif /* HPUX dlopen interface-emulation */
  +
  
  
  
  1.19      +9 -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.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- os.h	1998/04/11 12:01:05	1.18
  +++ os.h	1998/04/12 15:49:28	1.19
  @@ -116,10 +116,19 @@
   # define RTLD_NOW 1
   #endif
   
  +#if defined(HPUX) || defined(HPUX10)
  +#include <dl.h>
   #define os_dl_module_handle_type void *
  +void *os_dl_load(char *path);
  +void os_dl_unload(void *handle);
  +void *os_dl_sym(void *handle, char *symname);
  +char *os_dl_error(void);
  +#else
  +#define os_dl_module_handle_type void *
   #define os_dl_load(l)   dlopen(l, RTLD_NOW)
   #define os_dl_unload(l) dlclose(l)
   #define os_dl_sym(h,s)  dlsym(h,s)
   #define os_dl_error()   dlerror()
  +#endif
   
   #endif	/* !APACHE_OS_H */