From a2f4fa559b68dbc3a9e7a844e710af3c8116715e Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Sun, 17 Jan 1999 04:15:06 +0000 Subject: [PATCH] * libltdl/ltdl.h (lt_dlpreopen_default): reverted to a macro without arguments, that calls lt_dlpreopen_default_ with lt_dlpreloaded_symbols * libltdl/ltdl.c (lt_dlpreopen_default_): renamed from lt_dlpreopen_default --- ChangeLog | 8 ++++++++ libltdl/ltdl.c | 15 +++++++++------ libltdl/ltdl.h | 4 ++-- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8c061b51d..c84c541a2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +1999-01-17 Alexandre Oliva + + * libltdl/ltdl.h (lt_dlpreopen_default): reverted to a macro + without arguments, that calls lt_dlpreopen_default_ with + lt_dlpreloaded_symbols + * libltdl/ltdl.c (lt_dlpreopen_default_): renamed from + lt_dlpreopen_default + 1999-01-15 Gary V. Vaughan From Andrey Slepuhin diff --git a/libltdl/ltdl.c b/libltdl/ltdl.c index 0e93215f6..05057009b 100644 --- a/libltdl/ltdl.c +++ b/libltdl/ltdl.c @@ -697,7 +697,7 @@ lt_dlpreopen (preloaded) } int -lt_dlpreopen_default (preloaded) +lt_dlpreopen_default_ (preloaded) const lt_dlsymlist *preloaded; { #if HAVE_DLPREOPEN @@ -792,7 +792,6 @@ tryall_dlopen (handle, filename) return 0; } -#undef FILENAME_MAX /* max. filename length */ #ifndef FILENAME_MAX #define FILENAME_MAX 1024 @@ -808,6 +807,12 @@ find_module (handle, dir, libdir, dlname, old_name) { char fullname[FILENAME_MAX]; + /* search for old library first; if it was dlpreopened, we + want the preopened version of it, even if a dlopenable + module is available */ + if (*old_name && tryall_dlopen(handle, old_name) == 0) + return 0; + /* search a module */ if (*dlname) { /* try to open the installed module */ @@ -833,8 +838,6 @@ find_module (handle, dir, libdir, dlname, old_name) return 0; } } - if (*old_name && tryall_dlopen(handle, old_name) == 0) - return 0; last_error = file_not_found_error; return 1; } @@ -1213,9 +1216,9 @@ lt_dlsym (handle, symbol) /* otherwise try "symbol" */ if (handle->type->sym_prefix) { strcpy(sym, handle->type->sym_prefix); - strcat(sym, handle->name); + strcat(sym, symbol); } else - strcpy(sym, handle->name); + strcpy(sym, symbol); address = handle->type->find_sym(handle, sym); if (sym != lsym) free(sym); diff --git a/libltdl/ltdl.h b/libltdl/ltdl.h index 18ccbc8d9..c792df90c 100644 --- a/libltdl/ltdl.h +++ b/libltdl/ltdl.h @@ -76,7 +76,7 @@ typedef struct { __BEGIN_DECLS _LTDLL_EXTERN int lt_dlinit __P((void)); _LTDLL_EXTERN int lt_dlpreopen __P((const lt_dlsymlist *preloaded)); -_LTDLL_EXTERN int lt_dlpreopen_default __P((const lt_dlsymlist *preloaded)); +_LTDLL_EXTERN int lt_dlpreopen_default_ __P((const lt_dlsymlist *preloaded)); _LTDLL_EXTERN int lt_dlexit __P((void)); _LTDLL_EXTERN lt_dlhandle lt_dlopen __P((const char *filename)); _LTDLL_EXTERN int lt_dlclose __P((lt_dlhandle handle)); @@ -85,7 +85,7 @@ _LTDLL_EXTERN const char *lt_dlerror __P((void)); _LTDLL_EXTERN const char *lt_dlsearchpath __P((const char *search_path)); extern const lt_dlsymlist lt_preloaded_symbols[]; - +#define lt_dlpreopen_default() lt_dlpreopen_default_(lt_preloaded_symbols) __END_DECLS #endif /* !_LTDL_H_ */ -- 2.47.2