From: tromey Date: Mon, 14 Feb 2000 21:53:27 +0000 (+0000) Subject: * gc.h (dlopen): Define as GC_dlopen on Linux. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=25414f0e1d9d186d8f0968fa961eb3104f5371dc;p=gc * gc.h (dlopen): Define as GC_dlopen on Linux. (GC_dlopen): Declare on Linux. * dyn_load.c (GC_dlopen): Define for Linux. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@31970 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/ChangeLog b/ChangeLog index 180f1110..538a55c4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2000-02-14 Tom Tromey + + * gc.h (dlopen): Define as GC_dlopen on Linux. + (GC_dlopen): Declare on Linux. + * dyn_load.c (GC_dlopen): Define for Linux. + Fri Jan 28 17:13:20 2000 Anthony Green * gcconfig.h (DATASTART): Add missing extern declaration diff --git a/dyn_load.c b/dyn_load.c index 8c3ec418..f44726bc 100644 --- a/dyn_load.c +++ b/dyn_load.c @@ -32,7 +32,7 @@ #include "gc_priv.h" /* BTL: avoid circular redefinition of dlopen if SOLARIS_THREADS defined */ -# if defined(SOLARIS_THREADS) && defined(dlopen) +# if (defined(SOLARIS_THREADS) || defined(LINUX_THREADS)) && defined(dlopen) /* To support threads in Solaris, gc.h interposes on dlopen by */ /* defining "dlopen" to be "GC_dlopen", which is implemented below. */ /* However, both GC_FirstDLOpenedLinkMap() and GC_dlopen() use the */ @@ -190,11 +190,6 @@ void * GC_dlopen(const char *path, int mode) } # endif /* SOLARIS_THREADS */ -/* BTL: added to fix circular dlopen definition if SOLARIS_THREADS defined */ -# if defined(GC_must_restore_redefined_dlopen) -# define dlopen GC_dlopen -# endif - # ifndef USE_PROC_FOR_LIBRARIES void GC_register_dynamic_libraries() { @@ -260,6 +255,25 @@ void GC_register_dynamic_libraries() # endif /* !USE_PROC ... */ # endif /* SUNOS */ +#ifdef LINUX_THREADS +#include + +void * GC_dlopen(const char *path, int mode) +{ + void * result; + + LOCK(); + result = dlopen(path, mode); + UNLOCK(); + return(result); +} +#endif /* LINUX_THREADS */ + +/* BTL: added to fix circular dlopen definition if SOLARIS_THREADS defined */ +#if defined(GC_must_restore_redefined_dlopen) +# define dlopen GC_dlopen +#endif + #if defined(LINUX) && defined(__ELF__) || defined(SCO_ELF) /* Dynamic loading code for Linux running ELF. Somewhat tested on diff --git a/gc.h b/gc.h index 535ff63a..bd7fddf4 100644 --- a/gc.h +++ b/gc.h @@ -712,6 +712,10 @@ GC_API void (*GC_is_visible_print_proc) # endif /* SOLARIS_THREADS */ +#if defined(LINUX_THREADS) + void * GC_dlopen(const char *path, int mode); +# define dlopen GC_dlopen +#endif #if defined(IRIX_THREADS) || defined(LINUX_THREADS) || defined(HPUX_THREADS) /* We treat these similarly. */