Commit Graph

164 Commits

Author SHA1 Message Date
Charles Wilson
7cb0a065a5 * NEWS: Updated.
* libtool.m4: use $NM to create the symbol list on cygwin, not
$ltdll_cmds as on mingw.  For all tags, (and host=cygwin) set
allow_undefined_flag="" so that the --auto-import magic
works properly.  For all tags (and host=cygiwn) set
always_export_symbols=no -- it is unnecessary thanks to
binutils' auto-export magic.
* libltdl/ltdl.c: Don't force cygwin to use the LoadLibrary
wrapper; use cygwin's builtin implementatino of dl*.
* cdemo/Makefile.am: the downside of unsetting
'allow_undefined_flag' -- we must include -no-undefined
in the _la_LDFLAGS variable.
* depdemo/l1/Makefile.am: ditto.
* depdemo/l2/Makefile.am: ditto.
* depdemo/l3/Makefile.am: ditto.
* depdemo/l4/Makefile.am: ditto.
* mdemo/Makefile.am: ditto.
* tagdemo/Makefile.am: ditto.
* demo/Makefile.am: ditto.  But also, we must make special
provision to clean up the hell0 wrapper script.
* pdemo/Makefile.am: ditto -no-undefined.  ditto hell0.
And use 'hell_static' instead of 'hell.static'.
* tests/pdemo-inst.test: use 'hell_static' instead
of 'hell.static'.
* tests/pdemo-exec.test: ditto.
2002-06-01 14:09:50 +00:00
Gary V. Vaughan
1cf9d2964d * NEWS: Updated.
* THANKS: Added Rob Collins and Chuck Wilson for their cygwin
work.

From Robert Collins  <robert.collins@itdomain.com.au>:
* configure.ac (AC_EXEEXT): Needed for DOSish systems.
* libtool.m4 (shlibpath_overrides_runpath) [cygwin]: Set to yes
when compiling with gcc.
(lt_prog_compiler_pic) [cygwin]: No longer needs the -DDLL_EXPORT
hack, so we just say the pic is the default.
(AC_LIBTOOL_PROG_LD_SHLIBS) [cygwin]: Extract symbols from a
library normally.
[cygwin]: Declare C++ compiler characterisics for g++, taking into
account the new auto-import support in cygwin ld.
* ltmain.in (specialdeplibs) [cygwin]: Be careful about
eliminating duplicate -lgcc's from the link line.
[cygwin]: Be smarter about .exe suffixes.
* demo/configure.ac (AC_EXEEXT, AC_LIBTOOL_WIN32_DLL):  Support
DOSish systems properly.
* depdemo/configure.ac (AC_EXEEXT, AC_LIBTOOL_WIN32_DLL):  Ditto.
* demo/Makefile.am (deplibs-check): Allow for .exe suffix.  Use
hell_static instead of hell.static for multi-`.' inhibited OSes.
* tests/demo-exec.test: Ditto.
* tests/demo-inst.test: Ditto.
* demo/foo.h [cygwin]: Sanitize cygwin dll support.
* demo/foo.c (_LIBFOO_COMPILATION_): No longer required.
* demo/hello.c (_LIBFOO_COMPILATION_): Ditto.
* depdemo/Makefile.am (bin_PROGRAMS): Use depdemo_static instead
of depdemo.static for multi-`.' inhibited OSes.
* tests/depdemo-exec.test: Ditto.
* tests/depdemo-inst.test: Ditto.
* mdemo/Makefile.am (bin_PROGRAMS):  Ditto for mdemo.static.
* tests/dryrun.test: Ditto.
* tests/mdemo-exec.test: Ditto.
* tests/mdemo-inst.test: Ditto.
* tests/build-relink.test:  Be careful about possible .exe
suffixes.
* tests/noinst-link.test: Allow for .exe suffix.
2002-03-03 03:19:55 +00:00
Volker Christian
bc88ff43b1 * libltdl/ltdl.c (find_handle_callback): treat the result of a call
to access(2) correctly when deciding whether a library can be found
in a directory from user_search_path.
2002-01-11 00:25:19 +00:00
Albert Chin-A-Young
55770c848b * ltdl.c: change some types to size_t from int because
strlen() returns size_t. argz_len changed to size_t in
foreach_dirinpath() because argzize_path() takes 3rd
argument as size_t, not int. Based on lint run from
Bob Friesenhahn <bfriesen@simple.dallas.tx.us>.
2001-10-28 02:35:22 +00:00
Albert Chin-A-Young
1093bb18a8 * libltdl/ltdl.c: Match function return type with prototype
(add static initializer to file_not_found).
2001-10-04 14:53:19 +00:00
Albert Chin-A-Young
d4e4eab57e * libltdl/ltdl.c: Match function return type with prototype
(add static initializer to some functions) to prevent warnings
from HP-UX cc.
2001-09-21 17:38:39 +00:00
Gary V. Vaughan
862b3a97d5 * libltdl/ltdl.c: Added support for dmalloc, and uncovered some
memory bugs as a result.
2001-09-21 03:28:39 +00:00
Gary V. Vaughan
7eba1343df * ltdl.m4 (AC_CHECK_HEADERS): Check for assert.h.
* libltdl/ltdl.c:  If not, disable assertions manually.
2001-09-13 19:43:58 +00:00
Gary V. Vaughan
d736ae4d0c * libltdl/ltdl.c (foreach_dirinpath): argz_len should be a size_t.
Reported by Albert Chin <china@thewrittenword.com>
2001-09-06 23:16:04 +00:00
Gary V. Vaughan
adc412c82b From Michael Pruett <mpruett@engr.sgi.com>:
* libltdl/ltdl.c (find_module): `0' valued arguments to
tryall_dlopen_module() must be explicitly cast to avoid compiler
warnings on some environments.
2001-09-06 21:23:59 +00:00
Gary V. Vaughan
cc3dcd152e From Marius Vollmer <mvo@zagadka.ping.de>:
* libltdl/ltdl.c (tryall_dlopen_module): Don't forget to propogate
errors over recurse levels.
2001-09-03 00:22:13 +00:00
Gary V. Vaughan
1a6eb03f74 Based on a patch from Marius Vollmer <mvo@zagadka.ping.de>:
* NEWS: updated.
* ltdl.m4 (AC_LIB_LTDL): Check for unistd.h.
* ltdl.c: Include unistd.h if it exists.
(LTDL_SEARCHPATH_VAR): Macro to prevent hardcoding
"LTDL_LIBRARY_PATH".
(LTDL_ARCHIVE_EXT): Macro to prevent hardcoding ".la".
(archive_ext): Have only one copy of ".la" in the readonly
segment of the compiled library.
(find_handle_callback): Don't bother trying to dlopen the file if
it doesn't exist.
(find_handle): Don't bother searching for files if no search_path
was supplied.
(file_not_found): A new function to determine whether the last
error was due to a file not found condition.
(try_dlopen): Renamed from lt_dlopen() and changed to have the
same footprint as tryall_dlopen.  This involved a minor rewrite of
much of the internals of this function.
(lt_dlopen): A new function wrapped arounf try_dlopen().
(lt_dlopenext): If a file already has a suitable extension, don't
bother adding additional extensions and trying to open those.
Tidy up the rest of the code to prevent continued searching with
an eventual FILE_NOT_FOUND when a genuine failure earlier in the
search process could be legitimately reported.
2001-09-02 17:38:55 +00:00
Gary V. Vaughan
63ad459714 * libltdl/ltdl.c (argz_create_sep): Don't forget to include the
terminating '0' when counting argz_len.
(argz_create_sep): When canonicalizing argz, don't forget to copy
the terminating '0', incase canonicalization has shortened argz.
(argz_stringify): Don't covert the final '0' to a separator.
2001-08-16 00:48:52 +00:00
Gary V. Vaughan
196a286bc6 * libltdl/ltdl.c (lt_dlhandle_next): Now we can loop through all
loaded module handles as originally intended.
2001-08-15 00:23:22 +00:00
Gary V. Vaughan
27f0f2ccee * libltdl/ltdl.c (lt_dlseterror): Oops. This never worked
either, due to a pair of typos.  Now fixed.
2001-08-15 00:01:46 +00:00
Gary V. Vaughan
a3c34e5ca2 * libltdl/ltdl.c (N_ELEMENTS): Deleted. How come nobody noticed
there was no way this could have ever worked?
(lt_dlcaller_set_data): Now that valid caller_ids must be
non-zero, allocate an addition entry in the caller_data vector and
use a zero valued key as the end marker.
(lt_dlcaller_get_data): Iterate up to the end marker in one pass.
2001-08-14 23:28:40 +00:00
Gary V. Vaughan
93a734ce9d * libltdl/ltdl.c (lt_dlcaller_register): Caller ids are allocated
starting from value `1', so that clients can use a value of zero
to indicate that libltdl has not yet initialised.
2001-08-14 22:45:21 +00:00
Gary V. Vaughan
47491fdaa1 * libltdl/ltdl.c (find_file_callback): Fix a multiple free()
bug.
(tryall_dlopen_module): Remove some unused variables.
2001-08-13 22:53:39 +00:00
Gary V. Vaughan
01d29019a5 * libltdl/ltdl.c (lt_dlinsertsearchdir): Calculate the address
of the end of user_search_path correctly.
2001-08-13 19:51:34 +00:00
Gary V. Vaughan
8fe352b363 * libltdl/ltdl.c (rpl_argz_stringify): New fallback implementation.
* ltdl.m4 (AC_LTDL_FUNC_ARGZ):  Test for argz_stringify in libc.
* libltdl/ltdl.c (lt_argz_insertinorder): Renamed from
lt_argz_insert to make room for...
(lt_argz_insert): Wraps argz_insert with libltdl error handling.
(lt_dlpath_insertdir): Insert new path elements into an
argzized path.
(lt_dlinsertsearchdir): New function to insert new search
directories anywhere into user_search_path using the above.
(lt_dladdsearchdir): Rewritten to use lt_dlpath_insertdir.
* libltdl/ltdl.h (lt_dlinsertsearchdir): Prototype for export.
* doc/libtool.texi (Libltdl interface): Document it.
* NEWS: Updated,
2001-08-13 17:25:49 +00:00
Gary V. Vaughan
3539a1bf85 * libltdl/ltdl.c (load_deplibs): Insert missing 1st argument to
LT_EMALLOC.
2001-08-05 16:01:56 +00:00
Gary V. Vaughan
9b398f1b1d * libltdl/ltdl.c: Fixed several careless mistakes in the
foreach_dirinpath support functions.
(foreach_dirinpath): Walk path elements with the argz API.
2001-08-05 10:57:03 +00:00
Gary V. Vaughan
5473bb5e38 * ltdl.m4: Bump serial number.
General reformat and tify up in line with Autoconf-2.50 support.
(AC_LTDL_FUNC_ARGZ): Test for system implementations of a
handful of argz API calls, the error_t type, and the argz.h
header.
* libltdl/configure.ac (AM_INIT_AUTOMAKE): Bump version number.
* libltdl/ltdl.c (rpl_argz_append, rpl_argz_create_sep.
rpl_argz_insert, rpl_rgz_next):  Fallback implementations of
the similarly named functions for machines that don;t use glibc.
(lt_dlrealloc):  New memory function pointer that can be set by
the client.  Defaults to rpl_realloc, which in turn uses only
lt_dlmalloc and lt_dlfree.
(LT_EMALLOC, LT_EREALLOC): Set internal out-of-memory error
inside the functions called by these new macros.  Simplified all
callers by removing explicit client error reporting.
(memmove):  Fallback implementation of overlap safe memory copy
function.
(tryall_dlopen):  Factorized common code into...
(tryall_dlopen_module): ...this new helper function.
(canonicalize_path):  Changed function signature to return success
or failure.  Updated all callers.
(foreachfile_callback):  Make use of argz API.
(LT_DLSTRLEN): Moved from here...
* libltdl/ltdl.h (LT_STRLEN): ...to here.  Updated all callers.
(lt_dlrealloc):  Declare new memory management handle.
2001-08-01 06:50:16 +00:00
Gary V. Vaughan
be59bd4ad3 From Steve Ellcey <sje@cup.hp.com>:
* libltdl/ltdl.c (foreach_dirinpath): Free unassigned pointer
fix for `canonical'.
2001-07-25 02:52:36 +00:00
Gary V. Vaughan
63a4771533 Cleanup of libltdl:
* ltdl.c (lt_dladderror): Don't use `index' as a variable name,
since it is a function on BSD based boxes.
(lt_dlseterror): Ditto.
(lt_dlexit): Remove unused errormsg declaration.
(foreach_dirinpath):  Make sure filename is initialised.
(find_handle):  Return NULL for a failed search.
(foreachfile_callback): Don't reuse data2 symbol from prototype
in func declaration to prevent symbol shadowing.
* ltdl.h (lt_dlmutex_seterror): Don't use `error' as a parameter
name, since it is a function on glibc boxes.
2001-07-02 01:21:30 +00:00
Gary V. Vaughan
9a49cbac3e From Alexander Bluhm <Alexander.Bluhm@WiredMinds.de>
* libltdl/ltdl.c (lt_dlopen): Fix bad memory initialisation
assumptions.
2001-06-29 01:00:17 +00:00
Gary V. Vaughan
2d0b02d866 * NEWS: Updated.
* libltdl/ltdl,c (LT_DLMUTEX_LOCK): Renamed from MUTEX_LOCK to
avoid potential namespace clash.
(LT_DLMUTEX_UNLOCK, LT_DLMUTEX_SETERROR, LT_DLMUTEX_GETERROR):
Ditto.
(lt_dlmutex_lock_func): Renamed from mutex_lock to avoid a
namespace clash of NCR MP-RAS.
(lt_dlmutex_unlock_func, lt_dlmutex_seterror_func,
lt_dlmutex_geterror_func): Ditto.
Reported by Edouard G. Parmelan <Edouard.Parmelan@France.NCR.COM>
2001-06-26 01:37:48 +00:00
Gary V. Vaughan
f2b86e159b * libltdl/ltdl.c (LT_DLSTRLEN): Call strlen only if the argument
is non-NULL and non-zero in length.  Changed all calls to strlen
appropriately.
2001-06-26 01:06:00 +00:00
Gary V. Vaughan
62216889fc * libltdl/ltdl.c: Prototype all static functions. 2001-06-26 00:53:37 +00:00
Gary V. Vaughan
6c7f7fe214 * ltdl.m4: Bump serial number to 3.
(AC_LIB_LTDL): Require AC_HEADER_DIRENT for ltdl.c.
* libltdl/ltdl.h (lt_dlforeachfile): Prototype for new function.
* libltdl/ltdl.c: Include an appropriate header for the
opendir/dirent api.
(foreach_dirinpath): Visit each file in a list of directories.
(find_file_callback): Factor out the core of find_file() to make
use of foreach_dirinpath().
(find_file): Use it!
(find_handle_callback, find_handle): Ditto.
(lt_dlforeachfile):  New function to find files in a searchpath.,,
(foreachfile_callback): ...using this callback.
* doc/libtool.texi (Libltdl interface): Document new
lt_dlforeachfile api call.
2001-06-26 00:50:39 +00:00
Gary V. Vaughan
fb267cab4e * ltdl.m4 (AC_C_INLINE): No longer required.
* libltdl/ltdl.c (strdup, strcmp, strchr, strrchr, memcpy, trim,
free_vars):  Revoke inline keyword from declarations.  `static
inline' is not very portable, and in addition Unixware 7.1.1's
compiler says you can't access static variables from inline
functions.
Reported by Peter Eisentraut  <peter_e@gmx.net>
2001-04-24 22:53:48 +00:00
Peter Eisentraut
3a75446c04 * doc/PLATFORMS: With this patch, freebsd4.3 passes the test
suite.
* libltdl/ltdl.c (lt_dlexit): Quit loop if only resident modules
are left.
2001-04-23 21:16:38 +00:00
Gary V. Vaughan
3050795c98 * ltdl.m4 (AC_CHECK_HEADERS): UW7 has sys/dl.h, so we must
check for that here.
* libltdl/ltdl.c (HAVE_SYS_DL_H):  Include it if necessary for
the dlopen loader.
Reported by Matthew Schalit <mschalit@pacbell.net>
2001-04-22 22:50:54 +00:00
Alexandre Oliva
69355e247f formatting change 2001-04-16 20:39:44 +00:00
Gary V. Vaughan
c0b7dcf2f9 * libltdl/ltdl.c (sys_shl_open): Cache a handle for the `self'
module, since HPUX adds module symbols into the `self' pool if
it is opened later.  Return the cached pointer if the caller
subsequently tries to open `self'.
(sys_shl_sym): Diagnose NULL modules.
2001-04-08 10:34:45 +00:00
Gary V. Vaughan
1d08896a95 From Ahmed Masud <masud@googgun.com>
* libltdl/ltdl.c (sys_shl_open):  Return a NULL module handle
for self opening.
(sys_shl_close):  Be careful not to close a NULL module handle.
(sys_shl_sym):  Allow shl_findsym() to open NULL modules, but
discard the modified module address it returns.
2001-04-05 22:05:49 +00:00
Gary V. Vaughan
da8bfb3dee * libltdl/ltdl.c (lt_dlopen): When reading the .la file,
reallocate the line buffer size if the line overflows the
original buffer.
Reported by Nick Hudson <skrll@netbsd.org>
2001-04-05 21:32:49 +00:00
Edward M. Lee
d35d97b0af * libltdl/ltdl.c: Use windows paths while calling LoadLibrary. 2001-03-31 00:12:41 +00:00
Gary V. Vaughan
066ce19719 * NEWS: Updated.
* doc/libtool.texi (Thread Safety in libltdl): New node describing
the  application the new MT API.
* libltdl/ltdl.h: Prototypes.
* libltdl/ltdl.c: Use these functions throughout the rest of
the file to provide thread locking.
(lt_dlmutex_register): New function to set callbacks for
multi-threaded calls into libltdl.
(lt_dl_mutex_lock): Type of a locking callback function.
(lt_dl_mutex_lock): Type of an unlocking callback function.
(lt_dl_mutex_seterror): Type of a callback function to save the
last libltdl error message in thread local storage.
(lt_dl_mutex_geterror): Type of a callback function to retrieve
the last saved error message from thread local storage.
2001-02-23 22:58:20 +00:00
Gary V. Vaughan
b37d4417e5 * libltdl/ltdl.c (lt_dlcaller_register): dont set an unsigned
type to a negative number.
Reported by Guenter Millahn <Guenter.Millahn@Informatik.TU-Cottbus.DE>
2001-02-20 01:51:50 +00:00
Gary V. Vaughan
230d659fcc * libltdl/ltdl.c (load_deplibs): Make sure the depcount is reset,
even when deplibs are not used because of the patch below.
2001-02-02 20:38:53 +00:00
Gary V. Vaughan
482d62add6 * ltdl.m4 (AC_LTDL_SYS_DLOPEN_DEPLIBS): If we know that the host
architecture automatically loads deplibs, then...
* libltdl/ltdl.c (load_deplibs): ...don't manually load each one.
2001-02-02 19:02:38 +00:00
Gary V. Vaughan
2b9f5eb2b4 * libltdl/ltdl.c (load_deplibs): If loading a deplib fails,
don't sweat -- it may be a lib that is already statically linked
into the loading application.

* libltdl/ltdl.c: Clean up the shadowing of the global handles
variable.
(LT_DLRESIDENT_FLAGS): Add extra parens to satisfy -Wall.
(load_deplibs):  Cast isspace() argument to an int to satisfy
-Wall.
2001-01-31 00:07:32 +00:00
Gary V. Vaughan
61510e8475 * NEWS: Updated.
* doc/libtool.texi (User defined module data): Updated.
* libltdl/ltdl.c (lt_dlhandle_next): New function.
* libltdl/ltdl.h (lt_dlhandle_next): Prototypes.
2001-01-08 01:52:12 +00:00
Gary V. Vaughan
bd96d1928a * NEWS: Updated.
* doc/libtool.texi (User defined module data):  Document it all.
* ltdl.m4:  Check for memcpy, or else bcopy.
* ltdl.c (lt_caller_data): New type.
(lt_dl_handle_struct): Add an lt_caller_data field.
(lt_dlcaller_register, lt_dlcaller_set_data,
lt_dlcaller_get_data): New functions.
(rpl_memcpy): A minimal fallback implementation.
(rpl_realloc): A realloc implemented with lt_dlmalloc and
lt_dlfree.
(LT_DLMALLOC, LT_DLFREE, LT_DLREALLOC, LT_DLMEM_REASSIGN):
New memory handling convenience macros.  Use them
appropriately throughout the rest of this file.
* ltdl.h (lt_dlcaller_register, lt_dlcaller_set_data,
lt_dlcaller_get_data): Prototyped.
2001-01-05 09:33:39 +00:00
Gary V. Vaughan
22218cc780 * libltdl/ltdl.c (lt_dlexit): Was checking for residency of the
wrong module.
Reported by Robert Boehne  <rboehne@ricardo-us.com>
2000-12-20 23:50:09 +00:00
Utz-Uwe Haus
6da151bd3c * libltdl/ltdl.c (lt_dlopen): Changed "dl_dependency_libs" keyword
to "dependency_libs".
2000-12-16 01:09:44 +00:00
Tod Milam
2c856a4196 * libltdl/ltdl.c (lt_dlexit): Reset the loaders value to zero when
the last module has been unloaded.
2000-12-14 21:08:03 +00:00
Gary V. Vaughan
4ae2e67203 * doc/libtool.texi (Libltdl interface): Add documentation.
* libltdl/ltdl.h (lt_dlmakeresident, lt_dlisresident):  Add
prototypes.
(LT_DLERROR_CLOSE_RESIDENT_MODULE): New error status.
* libltdl/ltdl.c (lt_dlmakeresident, lt_dlisresident):  Allow
making and testing of resident module status, which prevents a
module from being lt_dlclosed.
(lt_dlopen):  If lt_dlopen()ing self, make the module resident.
(lt_dlclose):  Return an error if the module is resident.
2000-12-02 23:50:54 +00:00
Gary V. Vaughan
c2cc89dcb2 * libltdl/ltdl.h (lt_dlhandle): Rename the wrapped structure
to prevent nameclash when used from C++.
* libltdl/ltdl.c: Fixed all references.
2000-11-29 22:59:56 +00:00