diff options
author | Tim Janik <timj@gtk.org> | 2001-02-17 06:34:42 +0000 |
---|---|---|
committer | Tim Janik <timj@src.gnome.org> | 2001-02-17 06:34:42 +0000 |
commit | c80c7b84fd1550aa932d102b256506df9189eddc (patch) | |
tree | 770f02890aa75c106dc4c3c11b3b3b5a1789b179 | |
parent | 41b0cbc3c044da879fb45400b2c3b7db84e4e41e (diff) | |
download | glib-c80c7b84fd1550aa932d102b256506df9189eddc.tar.gz |
check for systems with broken RTLD_GLOBAL.
Sat Feb 17 07:33:44 2001 Tim Janik <timj@gtk.org>
* configure.in (G_MODULE_BROKEN_RTLD_GLOBAL): check for systems
with broken RTLD_GLOBAL.
Sat Feb 17 07:33:21 2001 Tim Janik <timj@gtk.org>
* gmodule-dl.c: fix systems with broken RTLD_GLOBAL.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | ChangeLog.pre-2-0 | 5 | ||||
-rw-r--r-- | ChangeLog.pre-2-10 | 5 | ||||
-rw-r--r-- | ChangeLog.pre-2-12 | 5 | ||||
-rw-r--r-- | ChangeLog.pre-2-2 | 5 | ||||
-rw-r--r-- | ChangeLog.pre-2-4 | 5 | ||||
-rw-r--r-- | ChangeLog.pre-2-6 | 5 | ||||
-rw-r--r-- | ChangeLog.pre-2-8 | 5 | ||||
-rw-r--r-- | configure.in | 32 | ||||
-rw-r--r-- | gmodule/ChangeLog | 4 | ||||
-rw-r--r-- | gmodule/gmodule-dl.c | 10 | ||||
-rw-r--r-- | gmodule/gmoduleconf.h.in | 3 |
12 files changed, 86 insertions, 3 deletions
@@ -1,3 +1,8 @@ +Sat Feb 17 07:33:44 2001 Tim Janik <timj@gtk.org> + + * configure.in (G_MODULE_BROKEN_RTLD_GLOBAL): check for systems + with broken RTLD_GLOBAL. + 2001-01-02 Dan Winship <danw@helixcode.com> * garray.h (g_array_append_val, g_array_prepend_val, diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index 399f2e390..6903d3864 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,8 @@ +Sat Feb 17 07:33:44 2001 Tim Janik <timj@gtk.org> + + * configure.in (G_MODULE_BROKEN_RTLD_GLOBAL): check for systems + with broken RTLD_GLOBAL. + 2001-01-02 Dan Winship <danw@helixcode.com> * garray.h (g_array_append_val, g_array_prepend_val, diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 399f2e390..6903d3864 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,8 @@ +Sat Feb 17 07:33:44 2001 Tim Janik <timj@gtk.org> + + * configure.in (G_MODULE_BROKEN_RTLD_GLOBAL): check for systems + with broken RTLD_GLOBAL. + 2001-01-02 Dan Winship <danw@helixcode.com> * garray.h (g_array_append_val, g_array_prepend_val, diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index 399f2e390..6903d3864 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,3 +1,8 @@ +Sat Feb 17 07:33:44 2001 Tim Janik <timj@gtk.org> + + * configure.in (G_MODULE_BROKEN_RTLD_GLOBAL): check for systems + with broken RTLD_GLOBAL. + 2001-01-02 Dan Winship <danw@helixcode.com> * garray.h (g_array_append_val, g_array_prepend_val, diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 399f2e390..6903d3864 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,8 @@ +Sat Feb 17 07:33:44 2001 Tim Janik <timj@gtk.org> + + * configure.in (G_MODULE_BROKEN_RTLD_GLOBAL): check for systems + with broken RTLD_GLOBAL. + 2001-01-02 Dan Winship <danw@helixcode.com> * garray.h (g_array_append_val, g_array_prepend_val, diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 399f2e390..6903d3864 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,8 @@ +Sat Feb 17 07:33:44 2001 Tim Janik <timj@gtk.org> + + * configure.in (G_MODULE_BROKEN_RTLD_GLOBAL): check for systems + with broken RTLD_GLOBAL. + 2001-01-02 Dan Winship <danw@helixcode.com> * garray.h (g_array_append_val, g_array_prepend_val, diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 399f2e390..6903d3864 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,8 @@ +Sat Feb 17 07:33:44 2001 Tim Janik <timj@gtk.org> + + * configure.in (G_MODULE_BROKEN_RTLD_GLOBAL): check for systems + with broken RTLD_GLOBAL. + 2001-01-02 Dan Winship <danw@helixcode.com> * garray.h (g_array_append_val, g_array_prepend_val, diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 399f2e390..6903d3864 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,8 @@ +Sat Feb 17 07:33:44 2001 Tim Janik <timj@gtk.org> + + * configure.in (G_MODULE_BROKEN_RTLD_GLOBAL): check for systems + with broken RTLD_GLOBAL. + 2001-01-02 Dan Winship <danw@helixcode.com> * garray.h (g_array_append_val, g_array_prepend_val, diff --git a/configure.in b/configure.in index c51d4b269..26065730a 100644 --- a/configure.in +++ b/configure.in @@ -481,6 +481,7 @@ G_MODULE_LIBS= G_MODULE_LDFLAGS= dnl G_MODULE_IMPL= don't reset, so cmd-line can override G_MODULE_NEED_USCORE=0 +G_MODULE_BROKEN_RTLD_GLOBAL=0 G_MODULE_HAVE_DLERROR=0 dnl *** dlopen() and dlsym() in system libraries if test -z "$G_MODULE_IMPL"; then @@ -533,6 +534,36 @@ if test "$G_MODULE_IMPL" = "G_MODULE_IMPL_DL"; then LDFLAGS_orig="$LDFLAGS" LIBS="$LIBS $G_MODULE_LIBS" LDFLAGS="$LDFLAGS $G_MODULE_LDFLAGS" +dnl *** check for OSF1/5.0 RTLD_GLOBAL brokenness + AC_CACHE_CHECK([for RTLD_GLOBAL brokenness], + glib_cv_rtldglobal_broken,[ + AC_TRY_RUN([ + #include <dlfcn.h> + #ifndef RTLD_GLOBAL + #define RTLD_GLOBAL 0 + #endif + #ifndef RTLD_LAZY + #define RTLD_LAZY 0 + #endif + int pthread_create; + int main () { + void *handle, *global, *local; + global = &pthread_create; + handle = dlopen ("libpthread.so", RTLD_GLOBAL | RTLD_LAZY); + if (!handle) return 0; + local = dlsym (handle, "pthread_create"); + return global == local; + }], + [glib_cv_rtldglobal_broken=no], + [glib_cv_rtldglobal_broken=yes], + []) + rm -f plugin.c plugin.o plugin.lo + ]) + if test "x$glib_cv_rtldglobal_broken" = "xyes"; then + G_MODULE_BROKEN_RTLD_GLOBAL=1 + else + G_MODULE_BROKEN_RTLD_GLOBAL=0 + fi dnl *** check whether we need preceeding underscores AC_MSG_CHECKING(for preceeding underscore in symbols) AC_CACHE_VAL(glib_cv_uscore,[ @@ -575,6 +606,7 @@ AC_SUBST(G_MODULE_LIBS) AC_SUBST(G_MODULE_LDFLAGS) AC_SUBST(G_MODULE_HAVE_DLERROR) AC_SUBST(G_MODULE_NEED_USCORE) +AC_SUBST(G_MODULE_BROKEN_RTLD_GLOBAL) AC_SUBST(GLIB_DEBUG_FLAGS) diff --git a/gmodule/ChangeLog b/gmodule/ChangeLog index 1aa611c34..33daaf4cb 100644 --- a/gmodule/ChangeLog +++ b/gmodule/ChangeLog @@ -1,3 +1,7 @@ +Sat Feb 17 07:33:21 2001 Tim Janik <timj@gtk.org> + + * gmodule-dl.c: fix systems with broken RTLD_GLOBAL. + 2000-07-19 Sebastian Wilhelmi <wilhelmi@ira.uka.de> * gmodule.h: include glib.h before doing extern "C". Makes some diff --git a/gmodule/gmodule-dl.c b/gmodule/gmodule-dl.c index bbf76913b..9b635a72d 100644 --- a/gmodule/gmodule-dl.c +++ b/gmodule/gmodule-dl.c @@ -58,15 +58,19 @@ * RTLD_GLOBAL - the external symbols defined in the library will be made * available to subsequently loaded libraries. */ -#ifndef RTLD_GLOBAL -#define RTLD_GLOBAL 0 -#endif /* RTLD_GLOBAL */ #ifndef RTLD_LAZY #define RTLD_LAZY 1 #endif /* RTLD_LAZY */ #ifndef RTLD_NOW #define RTLD_NOW 0 #endif /* RTLD_NOW */ +/* some systems (OSF1 V5.0) have broken RTLD_GLOBAL linkage */ +#ifdef G_MODULE_BROKEN_RTLD_GLOBAL +#undef RTLD_GLOBAL +#endif /* G_MODULE_BROKEN_RTLD_GLOBAL */ +#ifndef RTLD_GLOBAL +#define RTLD_GLOBAL 0 +#endif /* RTLD_GLOBAL */ /* --- functions --- */ diff --git a/gmodule/gmoduleconf.h.in b/gmodule/gmoduleconf.h.in index ee2aa5c3c..cad0816ac 100644 --- a/gmodule/gmoduleconf.h.in +++ b/gmodule/gmoduleconf.h.in @@ -38,6 +38,9 @@ extern "C" { #if (@G_MODULE_NEED_USCORE@) || defined (hp9000s300) || defined (__hp9000s300) || defined (__hp9000s300__) #define G_MODULE_NEED_USCORE #endif +#if (@G_MODULE_BROKEN_RTLD_GLOBAL@) +#define G_MODULE_BROKEN_RTLD_GLOBAL +#endif #ifdef __cplusplus |