From 6fc4950f05d425378ca7d1f3237aa759c761a07d Mon Sep 17 00:00:00 2001 From: tromey Date: Mon, 14 Feb 2000 21:53:27 +0000 Subject: [PATCH] * 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 --- boehm-gc/ChangeLog | 6 ++++++ boehm-gc/dyn_load.c | 26 ++++++++++++++++++++------ boehm-gc/gc.h | 4 ++++ 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/boehm-gc/ChangeLog b/boehm-gc/ChangeLog index 180f111067f..538a55c465f 100644 --- a/boehm-gc/ChangeLog +++ b/boehm-gc/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/boehm-gc/dyn_load.c b/boehm-gc/dyn_load.c index 8c3ec4186c4..f44726bc833 100644 --- a/boehm-gc/dyn_load.c +++ b/boehm-gc/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/boehm-gc/gc.h b/boehm-gc/gc.h index 535ff63ac03..bd7fddf4391 100644 --- a/boehm-gc/gc.h +++ b/boehm-gc/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. */ -- 2.11.0