Commit Graph

282 Commits

Author SHA1 Message Date
Charles Wilson
09556c7c90 forgot to commit with last change 2003-11-06 13:43:15 +00:00
Scott James Remnant
1bbeb14f36 * libltdl/ltdl.c (lt_dlerror): change return value when
no error has occured to NULL to match documentation.
(Debian Bug #157229)
2003-10-07 22:29:05 +00:00
Bob Friesenhahn
abaff9e0ec * libltdl/ltdl.c: Only include malloc.h if stdlib.h can not be
found.
2003-09-29 10:57:57 +00:00
Jim Pick
522aef6a38 Much as we have tried not to make it the callers' responsibility
to maintain an lt_dlrealloc function pointer, it is too difficult
to implement realloc as malloc/memcpy/free without knowing the
size of the original block.  rpl_realloc has been deprecated since
2002-10-30, but kaffe has real failures with that so it's time to
bite the bullet.  Caller gets to maintain lt_dlrealloc:

* NEWS (1.5.1): Updated.
* libltdl/ltdl.c (LT_DLREALLOC): Use lt_dlrealloc so the user can
update the function pointer to match lt_dlmalloc.
(lt_emalloc): Use lt_dlrealloc rather than hardcoding realloc.
* doc/libtool.texi (Libltdl interface): Describe lt_dlrealloc now
that it too has become part of the exported interface to libltdl.
2003-08-05 16:05:01 +00:00
Peter O'Gorman
9bfa9cf6b9 * libtool.m4 (darwin): Use "-undefined dynamic_lookup" if the
user set MACOSX_DEPLOYMENT_TARGET to 10.3 or greater.
* libltdl/ltdl.c (dyld): Save the error from the first lookup
to report in lt_dlerror(). Otherwise the error is always
"Symbol _foo not in /usr/lib/libSystem.dylib".
Thanks to Chris Zubrzycki for reporting this.
2003-08-01 19:08:14 +00:00
Peter O'Gorman
90233b7fa9 * libtool.m4 (darwin): Remove checks for Apple-specific gcc.
* libltdl/ltdl.c (HAVE_MACH_O_DYLD_H): #define
__private_extern__ for fsf gcc.
* ltmain.in (darwin): Only add new paths to newlib_search_path.
2003-06-03 15:36:58 +00:00
Gary V. Vaughan
a45bccc70d * libltdl/ltdl.c (argz_insert): Corrected an off by one error when
checking that before is not out of range.
2003-05-30 15:25:10 +00:00
Gary V. Vaughan
b6dc76b844 * libltdl/ltdl.c (lt_int_dyld_lib_install_name): Removed unused
variable mh1.
(sys_dyld_close): Removed unused variable size.
2003-05-30 15:21:46 +00:00
Peter O'Gorman
eeb3d9cc7c * libltdl/ltdl.c (dyld): Remove some debug printf's, fix a bug.
* ltmain.in (darwin): Only link against shared libraries when doing
link_all_deplibs.
2003-03-29 04:09:00 +00:00
Peter O'Gorman
97ade8120f * ltmain.in: Always use $echo not echo for consistency.
Changes for darwin building. Warn if linking against libs linked
with -module. Use module_cmds if available and building a module,
move convenience double lib check,
* libltdl/ltdl.c: ltdl support for darwin (first blush)
* libltdl/README: note that darwin is supported
* ltdl.m4: Changes for darwin, and for new shrext
* libtool.m4: Changed the way darwin builds stuff (make check passes)
added module_cmds, module_expsym_cmds and hardcode_automatic and put
them in the libtool script. check for zsh's removal of escapes. Allow
libraries to be stripped on darwin.
* TODO: Remove the todo about zsh's removal of excapes. note that zsh
echo works perfectly well, eval is screwed up. Seems to be fixed in
latest zsh.
* THANKS: added self :)
* f77demo/configure.ac: Use config.h or it doesn't work.
2003-03-20 20:24:21 +00:00
Charles Wilson
6da15e03aa * libtool.m4 (AC_LIBTOOL_PROG_CC_C_O): use printf, not
echo. (AC_DEPLIBS_CHECK_METHOD): use new shell function
win32_libid on w32 platforms
* ltmain.in: add new section for shell functions. Add
win32_libid() shell function.
* f77demo/Makefile.am: add -no-undefined flag


* ltdl.c (realloc): Remove custom realloc. (#define
rpl_realloc realloc) and comment out later code for custom
realloc. You can't define your own malloc unless you know
enough about the malloc in use to be able to tell how big
the src ptr is. The disabled code incorrectly used the
*destination* ptr to decide how much to copy. This
sometimes results in out-of-bound accesses which cause
segfaults. This is a quick hack for now; we may want
something cleaner later. (tryall_dlopen_module): check to
be sure (dirname_len > 0) before testing first character
against '/'. (try_dlopen): check for feof(file) in read
loop -- otherwise infloop?
2002-10-31 00:52:39 +00:00
Andrew Suffield
6487bfdcb5 Correct sense of libltdl file not found check. 2002-10-24 21:28:34 +00:00
Robert Boehne
c2b67f1043 * libltdl/ltdl.c: Commented out access() call that checks for a
library file's existence and permissions, as it appears to fail
in every case.
2002-09-24 14:06:50 +00:00
Bob Friesenhahn
d036ca584c Port libltdl fully to native Win32 API. 2002-08-28 20:40:28 +00:00
Gary V. Vaughan
f57ca23232 * libltdl/ltdl.c (tryall_dlopen): We need to catch missing file
errors early so that file_not_found() can detect what happened.
2002-07-16 09:12:30 +00:00
Gary V. Vaughan
a6eb30bff0 * libltdl/ltdl.c (argz_insert): Actually, BEFORE can be NULL
when *PARGZ_LEN is non-NULL, so the assertion to the contrary was
bogus.
Reported by Bob Friesenhahn <bfreisen@simple.dallas.tx.us>
and Albert Chin-A-Young <china@thewrittenword.com>
2002-06-23 21:35:58 +00:00
Gary V. Vaughan
762853d3e2 * libltdl/ltdl.c (foreach_dirinpath): Ensure that filename is '0'
terminated by all code paths.
Reported by Lutz Mller <lutz@users.sourceforge.net>
2002-06-22 14:47:24 +00:00
Daniel Kobras
9fb013ff55 * libltdl/ltdl.c (try_dlopen): Don't return bogus handle to user
if tryall_dlopen() fails.
2002-06-11 16:09:22 +00:00
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
Gary V. Vaughan
ccee1e498a * libltdl/ltdl.c (lt_dlopen): Change the default search order
for modules.  If the named module has no directory component,
always start the search with the user_search_path directories,
and then fall back on the current directory only if that fails.
2000-11-29 01:33:24 +00:00
Gary V. Vaughan
e637d738c9 * ltdl.c: Relegate non-POSIX-compliant symbols (e.g. those
ending in ``_t'') to deprecated #define compatibility macros.
Also ease up on the namespace pollution, so that only ``lt_''
and ``LT_'' prefixes are taken from the global namespace.
* ltdl.h: ditto.
2000-11-19 01:23:17 +00:00
Gary V. Vaughan
223e9ede2f * ltdl.c: Reformatted.
* ltdl.h: ditto.
2000-11-17 18:44:28 +00:00
Alexandre Oliva
6aa6b1b1d9 * libltdl/ltdl.c (load_deplibs): Don't append shlib_ext; use
lt_dlopenext() instead.
2000-09-04 06:09:25 +00:00
Alexandre Oliva
c82ec3eb1c * libltdl/ltdl.c (lt_dlopen): Set dlname from library_names if
dlname is empty.
2000-09-04 01:52:34 +00:00
Thomas Tanner
264e859d07 * NEWS: update
* doc/libtool.texi (libltdl): rename lt_(find|next|add|remove)_dlloader
  to lt_dlloader_*
* libltdl/ltdl.c: ditto
* libltdl/ltdl.h: ditto, add declaration of lt_dlloader_(find|remove)
2000-05-11 15:17:27 +00:00
Pavel Roskin
94022a0210 * libltdl/ltdl.c: Typo. 2000-05-06 10:46:49 +00:00
Paul Sokolovsky
c8eefcf574 * ltdl.c: support lt_dlopen(0) for win32 2000-05-05 02:31:48 +00:00
Thomas Tanner
508df1487b * NEWS: reformatting
* ltmain.in (ILD): add extra convenience library scanning pass

* ltmain.in (ILD): accept -R flags for libraries, too

* ltmain.in (ILD): correclty merge the dlpreopened libraries
  with deplibs

* ltmain.in (install mode): remove directories from filenames
  before relinking (reported by Elrond <Elrond@Wunder-Nett.org>)

* doc/libtool.texi (libltdl): rename Library -> Lesser,
  clarify exception clause
* libltdl/ltdl.c, libltdl.h (License): ditto
2000-03-26 23:01:20 +00:00
Gary V. Vaughan
e884b6d673 * libltdl/ltdl.c (lt_find_dlhandle): Deleted. This was B.S.
far cleaner to use lt_dlforeach and lt_dlgetinfo.
* libltdl/ltdl.h:  Prototype deleted.
* doc/libtool.texi: Documentation deleted.
* NEWS: annoncement deleted.
2000-02-24 02:15:35 +00:00
Gary V. Vaughan
65e997bb2c * libltdl/ltdl.c (lt_find_dlhandle): New function.
(tryall_dlopen): Use it.
* libltdl/ltdl.h:  Prototype it.
* doc/libtool.texi: Document it.
* NEWS: updated.
2000-02-21 22:27:24 +00:00
Gary V. Vaughan
b87267f513 * libltdl/ltdl.c (lt_remove_dlloader): typo, s/=/==/g. 2000-02-21 22:09:36 +00:00
Gary V. Vaughan
7b0532e642 * libltdl/ltdl.c (lt_dlinit): removed unused variable, `loader'. 2000-02-21 22:03:16 +00:00
Gary V. Vaughan
2ca76b52bd * libltdl/ltdl.h (lt_dlloader_data_t): New type for loader
instance data.
(lt_user_dlloader): New lt_dlloader_data_t field.
(lt_module_open_t): Add lt_dlloader_data_t parameter.
(lt_module_close_t): Add lt_dlloader_data_t parameter.
(lt_find_sym_t): Add lt_dlloader_data_t parameter.
(lt_dlloader_exit_t): Add lt_dlloader_data_t parameter.
* libltdl/ltdl.c:  A sprinkling of /*ARGSUSED*/ markers to
reassure lint that the unused arguments are intentional.
(lt_dlloader_t): New lt_dlloader_data_t field.
(lt_dlloader_data): New function to return the contents of the
dlloader_data field.
(sys_dl_open): Take an additional lt_dlloader_data_t argument.
(sys_dl_close): Ditto.
(sys_dl_sym): Ditto.
(sys_dl): Initialise lt_dlloader_data_t field.
(sys_shl_open, sys_shl_close, sys_shl_sym, sys_shl): As above.
(sys_wll_open, sys_wll_close, sys_wll_sym, sys_wll): As above.
(sys_bedl_open, sys_bedl_close, sys_bedl_sym, sys_bedl): As
above.
(sys_dld_open, sys_dld_close, sys_dld_sym, sys_dld): As above.
(presym_init, presym_exit, presym_open, presym_close, presym_sym,
presym): As above.
(lt_dlinit): Call presym_init with additional argument.
(lt_dlexit): Call dlloader_exit method with additional argument.
(tryall_dlopen): Call module_open method with additional argument.
(lt_dlclose): Call module_close method with additional argument.
(lt_dlsym): Call find_sym method with additional argument.
(lt_add_dlloader): Initialise dlloader_data field.
(lt_remove_dlloader): Call dlloader_exit method with additional
argument.
2000-02-07 18:17:21 +00:00
Gary V. Vaughan
9218f3bcc2 * libltdl/ltdl.c (find_file): Prevent early release of memory
in filename/*pdir.
From Jon Leichter <jon@symas.com>
2000-02-03 12:54:29 +00:00
Gary V. Vaughan
ade92ab63b (sys_wll_init): Deleted. No longer required. And this time,
with feeling!
(sys_wll_exit): Ditto.
2000-02-03 12:33:06 +00:00
Gary V. Vaughan
f802484346 * NEWS: updated.
* doc/libtool.texi (Libltdl interface): Moved user defined module
loader documentation from here...
(Module loaders for libltdl) ...to here, and updated the text and
added examples.
* ltdl.m4 (AC_CHECK_FUNCS): check strcmp for lt_find_dlloader.
* libltdl/ltdl.h: Reformatted and commented for readability.
(struct lt_user_dlloader): New data type for passing
initialisation pointers to lt_add_dlloader.
(LTDL_ERROR_INVALID_LOADER):  New error message when non loader
handles are passed to the user loader API.
(LTDL_ERROR_INIT_LOADER): New error when loader initialisation
fails.
(LTDL_ERROR_REMOVE_LOADER): New error when loader removal fails.
(lt_module_open_t): renamed from lt_lib_open_t.
(lt_module_close_t): renamed from lt_lib_close_t.
(lt_dlloader_exit_t): renamed from lt_dlloader_exit_t.
* libltdl/ltdl.c: Reordered builtin loaders so that the "dld"
loader no longer occurs before "dlopen" on some platforms and
after it on others.
(lt_dlloader_t): Moved here from ltdl.h, added a field,
"loader_name", for identifying the loader, and renamed from
lt_dltype_t.  Renamed type variables to loader IFF of type
lt_dlloader_t.
(lt_module_t): Renamed from lt_syshandle. Renamed handle variables
to module IFF of type lt_module_t.
(LTDL_TYPE_TOP): Deleted.  No longer required.
(sys_dl): Initialised as a struct lt_user_dlloader.
(sys_dl_init): Deleted.  No longer required.
(sys_dl_exit): Ditto.
(sys_shl): Initialised as a struct lt_user_dlloader.
(sys_shl_init): Deleted.  No longer required.
(sys_shl_exit): Ditto.
(sys_wll): Initialised as a struct lt_user_dlloader.
(sys_wll_init): Deleted.  No longer required.
(sys_wll_exit): Ditto.
(sys_bedl): Initialised as a struct lt_user_dlloader.
(sys_bedl_init): Deleted.  No longer required.
(sys_bedl_exit): Ditto.
(sys_dld): Initialised as a struct lt_user_dlloader.
(sys_dld_init): Deleted.  No longer required.
(sys_dld_exit): Ditto.
(sys_presym): Initialised as a struct lt_user_dlloader.
(lt_mod_init_t): Moved to here from ltdl.h.
(lt_dlinit): Add builtin loaders using the user loader API.
(lt_dlexit): Unregister and free all loaders.
(lt_add_dlloader): New function to add a new module loader after the
loader specified in the argument.
(lt_remove_dlloader): New function to remove a module loader.
(lt_next_dlloader): New function for iterating over module loaders.
(lt_dlloader_name): Accessor function for name of dlloader.
(lt_find_dlloader): New function to get a reference to a registered
module loader.
(strcmp): static implementation incase the host has none.
(lt_dlgettypes, lt_dlsettypes): Removed.
2000-02-02 22:43:14 +00:00
Thomas Tanner
112b7cb29f * libltdl/ltdl.c: replace NULL with 0, remove unused system
and app_private pointers from lt_dlhandle_t
* libltdl/ltdl.c (presym_add_list): new preloaded symbols
  don't need to be added to the end

* libltdl/ltdl.c (lt_dlgetdata, lt_dlsetdata): removed
* libltdl/ltdl.h: ditto
* doc/libtool.texi (libltdl interface): ditto
2000-02-02 10:05:42 +00:00
Gary V. Vaughan
4d1f56497a * libltdl/ltdl.h (lt_dlrealloc): removed declaration.
* libltdl/ltdl.c (lt_dlrealloc): removed definition.
(lt_dladderror): Instead of calling lt_dlrealloc, use lt_dlmalloc,
and lt_dlfree.
2000-01-31 10:40:12 +00:00
Gary V. Vaughan
e9898ee435 * libltdl/ltdl.h (lt_dlrealloc): Added declaration.
* libltdl/ltdl.c (lt_dlrealloc): Added default definition.
2000-01-28 14:26:40 +00:00
Gary V. Vaughan
fb77bf4dd6 * libltdl/ltdl.c (lt_dlseterror): Catch errorcodes below 0 as
invalid.
* libltdl/ltdl.h (LTDL_ERROR): Added missing '_' in K&R
definition.
2000-01-28 01:39:00 +00:00
Gary V. Vaughan
c1f19d38df * NEWS: Updated.
* doc/libtool.texi (Libltdl interface): Document new entry
points.
* libltdl/ltdl.c (lt_dladderror): New function to add a user
defined error message to the tables used by lt_dlerror().
(lt_dlseterror):  New function to allow setting of last_error by
user modules.
(ltdl_error_strings): New preprocessor generated table of internal
error diagnostic strings.
(user_error_strings): New internal list of registered user error
diagnostic strings.
(throughout!): Use error messages from ltdl_error_strings.
* libltdl/ltdl.h (ltdl_error_table): New macro to tabulate
internal diagnostic error strings alongside enum keys.
2000-01-27 16:13:07 +00:00
Gary V. Vaughan
9e2159f458 * NEWS: Updated.
* doc/libtool.texi (Libltdl interface): Document new entry
points.
* libltdl/ltdl.c (lt_dltype_t):  Use new type definitions for
existing fields.
(lt_dladdtype): New function to add a new ltdl dynamic loader
type to the end of the list of valid types..
(lt_dlgettypes): New function to return the complete list of ltdl
dynamic loader types.
(lt_dlsettypes): New function to replace the list of ltdl dynamic
loader types entirely -- e.g. to prepend a new type to the
existing list.
(sys_dl_open, sys_dl_close, sys_dl_sym): Work with lt_syshandle..
(sys_shl_open, sys_shl_close, sys_shl_sym): ditto.
(sys_dld_open, sys_dld_close, sys_dld_sym): ditto.
(sys_wll_open, sys_wll_close, sys_wll_sym): ditto.
(sys_bedl_open, sys_bedl_close, sys_bedl_sym): ditto.
(presym_open, presym_close, presym_sym): ditto.
(tryall_dlopen): Call lt_lib_open_t functions lt_syshandle
compatibly.
(lt_dlclose): Call lt_lib_close_t functions lt_syshandle
compatibly.
(lt_dlsym): Call lt_find_sym_t functions lt_syshandle compatibly.
(lt_dltype_t): moved type declaration from here...
* libltdl/ltdl.h (lt_dltype_t): ...to here.
(lt_syshandle): new type for low level system handles passed by
loader functions
(lt_mod_init_t):  New type for functions implementing the
initialisation for an ltdl dynamic loader.
(lt_mod_exit_t): Type of exit functions for the same.
(lt_lib_open_t): Type of loader functions for the same.
(lt_lib_close_t): Type of unloader functions for the same.
(lt_find_sym_t): Type of symbol resolver functions for the same.
2000-01-27 15:14:34 +00:00
Gary V. Vaughan
f4993ae3b8 * libltdl/ltdl.c (sys_dl_init, sys_dl_exit, sys_dl_open,
sys_dl_close, sys_dl_sym):  Preprocess these away on cygwin to
avoid spurious error messages.
2000-01-27 15:07:49 +00:00
Thomas Tanner
8683e2f1b4 * ltmain.in: rewrite of the ILD code, merge linking code for
programs, libraries and objects, allow linking of shared libraries
  against static libraries/objects on platforms that support it
  but print a warning, fix some typos

* partially revert my previous change and
  update only copyright notices of files that were actually modified

* NEWS: update

* libltdl/Makefile.am: version number was wrong

* libltdl/ltdl.c (tryall_dlopen): revert Gary's change
  since it breaks dlpreopening
* ltdl.m4: ditto

* libltdl/ltdl.c (sys_search_path): search in the system default
  library search path, too
* ltdl.m4 (AC_LTDL_SYSSEARCHPATH): extract the path

* libltdl/ltdl.c (find_module): remove bogus file_not_found_error

* libltdl/ltdl.c (load_deplibs): implement loading of dependency
  libraries
* libltdl/ltdl.c (unload_deplibs): implement unloading of dependency
  libraries
* libltdl/ltdl.c (lt_dlexit): correctly close all modules and
  their dependencies

* libltdl/ltdl.c (lt_dlforeach): new function
* libltdl/ltdl.h: ditto
* doc/libtool.texi (using libltdl): document it

* libtool.m4: reformatting, only add -I$topsrc_dir/libltdl to
  INCLTDL

* libtoolize.in: reformatting
* ltconfig.in: reformatting
* ltmain.in: reformatting

* mdemo/configure.in: AC_SUBST INCLTDL
* mdemo/Makefile.am: use INCLTDL

* tests/Makefile.am: reexport OBJEXT and EXEEXT
* tests/dryrun.test: use them for building main.obj and mdemo.exe
2000-01-19 20:34:37 +00:00
Gary V. Vaughan
f7c496a099 * libltdl/ltdl.c (tryall_dlopen): Abort with
file_not_found_error before trying all lib_open() methods
if the file to be dlopened doesn't exist.
* ltdl.m4 (AC_HAVE_HEADERS): add unistd.h.
2000-01-17 15:21:33 +00:00
Gary V. Vaughan
8697488d34 * libltdl/ltdl.c (find_file): memory error fixed. 2000-01-16 23:20:47 +00:00
Gary V. Vaughan
d2223c3fbc * libltdl/ltdl.h (LTDL_STMT_START, LTDL_STMT_END): Macros for
wrapping other macros to make a portable compound statement from
multiple C statements in the expansion.
(LTDL_SET_PRELOADED_SYMBOLS): Use the above macros to add an
extern declaration for lt_preloaded_symbols, to remove
dependency on undefined symbol from libltdl.dll on cygwin (and
other -no-undefined architectures).
* libltdl/ltdl.c (lt_preloaded_symbols): No longer defined here.
2000-01-14 13:28:52 +00:00
Thomas Tanner
47938d46eb * update all copyright notices to 2000
* doc/libtool.texi (using libltdl): document new lt_dlinfo struct,
  replace NULL with @code{NULL}, document lt_dlsetdata(),
  lt_dlgetdata() and lt_dlgetinfo()
* libltdl/Makefile.am: increment interface version number
* libltdl/configure.in: set version number to 1.1
* libltdl/ltdl.c: make some variables public by moving them
  to the info struct, add support for application specific data
  within module handles, new lt_dlsetdata(), lt_dlgetdata() and
  lt_dlgetinfo() functions,
  fix memory leaks, minor cleanups
* libltdl/ltdl.h: ditto
* mdemo/main.c: demonstrate use of lt_dlgetinfo,
  improved handling of errors

* ltconfig.in: set hardcode_into_libs = yes for GNU/Hurd, Linux
  and Solaris, only hardcode *all* run-paths if hardcode_into_libs
  is set to 'all', otherwise hardcode only user-specified rpaths
  into libraries
* ltmain.in: minor cleanups, we don't need to add user-specified
  rpaths to compile_rpath, finalize_rpath is sufficient

* ltconfig.in: transform linux* -> *linux-gnu* _after_ host_os has
  been set! (reported by Bruno Haible <haible@ilog.fr>)

* configure.in: AC_SUBST reload_flag, deplibs_check_method
  and file_magic_cmd

* README: use 'libtool --version' instead of 'ltconfig --version'
  (suggested by Francios Pinard <pinard@iro.umontreal.ca>
2000-01-13 00:28:09 +00:00
Gary V. Vaughan
397308770c * libltdl/ltdl.h (LTDL_DIRSEP_CHAR): Leave undefined when
not compiling for a Windows target.
* libltdl/ltdl.c (canonicalize_path): New function to
ensure internal paths use '/' directory separators.
(find_file): use canonicalize_path.  Memory management
changed to cope.
(lt_dlopen): ditto.
(free_vars): Removed `dir' and `name', which are now handled
internally.
2000-01-10 23:09:12 +00:00
Gary V. Vaughan
9cd1acc5b4 * libltdl/ltdl.h (LTDL_DIRSEP_CHAR): Define to '/' or '\',
as suitable for the target host.
(LTDL_PATHSEP_CHAR): Similarly with ':' or ';'.
* libltdl/ltdl.c: Use LTDL_DIRSEP_CHAR and LTDL_PATHSEP_CHAR
instead of hardcoding throughout.
Reported by Jon Leichter <jon@symas.com>
2000-01-10 15:40:25 +00:00
Gary V. Vaughan
afe514df6a * NEWS: updated.
* libltdl/Makefile.am: Use -no-undefined for dll compliance.
* libltdl/configure.in: Use AC_LIBTOOL_WIN32_DLL for dll
compliance.
* libltdl/ltdl.c: Define and use LTDL_GLOBAL_DATA to correctly
export global data symbols from libtldl.dll.
* libltdl/ltdl.h: Define and use LTDL_SCOPE to declare data
symbols as dllexport, dllimport or plain ornary extern depending
in the context in which it is used.
1999-12-13 16:34:18 +00:00
Thomas Tanner
974da4c714 * NEWS: updated
* THANKS: added Olly Betts and Pavel Roskin
* doc/libtool.texi: fix typo

* fix major bugs which rendered libtool virtually
  unusable (i.e. not portable):
* ltconfig.in: don't hardcode system dependent variables in ltconfig!!
  but set sane defaults
* Makefile.am: pass variables from AC_LIBTOOL_SETUP to ltconfig
* libtool.m4: ditto, fix typo in AC_PROG_LD_RELOAD_FLAG

* ltconfig.in: use old_deplibs for archives, too
  remove second occurence of sysv5
* ltmain.in: fix typo, fix the second occurence of -DPIC, too

* libltdl/Makefile.am: increment version number, fix typo
* libltdl/ltdl.c (lt_dlsym): don't report an error if the
  libltdl-style symbol name wasn't found


* ltconfig.in: add support for Unixware (sysv4.2uw2*)
1999-11-02 12:33:05 +00:00
Alexandre Oliva
fb682e5b83 * libltdl/ltdl.c (lt_dlopen): Do not search paths when the
specified library is not just a basename.
1999-10-16 07:05:39 +00:00
Alexandre Oliva
f5480b5c13 * libltdl/COPYING.LIB: Update to version 2.1.
* libltdl/ltdl.h, libltdl/ltdl.c: Update FSF address.
1999-08-07 07:40:18 +00:00
Thomas Tanner
3f8de2c2fc * NEWS: updated
* doc/PLATFORMS: updated
* changed my email address
1999-07-01 14:48:06 +00:00
Thomas Tanner
1be7f3cc98 * NEWS: updated
* README: added GNU Hurd to the supported platforms
* doc/libtool.texi: document `-dlpreopen dummy'
  instead of `-dlopen dummy'
* libltdl/ltdl.c (strchr): fixed typo (missing star)


* libltdl/ltdl.c (strrchr): fixed typo (missing star)
* libltdl/ltdl.c (trim): use `const' to silence -Wwrite-strings

* ltmain.in: support `-dlopen dummy', define lt_preloaded_symbols
1999-06-23 15:09:28 +00:00
Gary V. Vaughan
d16e7cb1bb * libltdl/ltdl.c (sys_wll_open): libltdl expects this function to
fail if it is unable to physically load the library.  Sadly,
LoadLibrary will search the loaded libraries for a match and
return one of them if the path search load fails.  Simulate a
failure in this case for compatibility with the other APIs.
Also, LoadLibrary takes the liberty of adding `.dll' to library
names passed without an extension, we now add a trailing `.' to
prevent this from happening.
1999-06-16 14:49:41 +00:00
Gary V. Vaughan
b46d9d5fdb * libltdl/ltdl.c (sys_wll_close): Strangely enough, Microsoft have
decided that LoadLibrary returns `0' for success, yet FreeLibrary
returns `0' for failure!  The FreeLibrary call used to interpret
`0' as success for both functions.
1999-06-15 19:31:08 +00:00
David Jones
6b6c388699 * libltdl/ltdl.c (LTDL_BIND_FLAGS): Remove BIND_VERBOSE, to avoid
printing error messages.
1999-05-27 09:57:39 +00:00
Gary V. Vaughan
d6bb5e77a0 * demo/foo.h: s/PARAMS/LTDL_PARAMS/g
* libltdl/ltdl.h: ditto.
* libltdl/ltdl.c: ditto.
1999-05-21 11:47:21 +00:00
Gary V. Vaughan
5d50500ea7 * demo/foo.h: s/__P/PARAMS/g
* libltdl/ltdl.h: ditto.
* libltdl/ltdl.c: ditto.
Reported by Akim Demaille <demaille@inf.enst.fr>
1999-05-21 11:29:45 +00:00
Thomas Tanner
1707ab25bb * bootstrap: fix libltdl/Makefile.in
* cdemo/main.c: "Welcome _to_ ..."
* mdemo/main.c: ditto
* libltdl/configure.in: support multiple dlopening mechanisms
  at once
* libltdl/ltdl.c: prefix system dependent functions with "sys_"
  to avoid symbol conflicts (libdld didn't work)
* libtool.m4 (AC_LIBLTDL_*): set INCLTDL to the path of ltdl.h
* ltconfig.in: check for dlopen with -ldl first
1999-05-20 17:54:09 +00:00
Alexandre Oliva
d19a427a9c * libltdl/ltdl.c: Remove trivial warnings. 1999-04-12 19:41:29 +00:00
John David Anglin
b6e26ad6dd * libltdl/ltdl.c (shl_close): shl_t was correct here...
(shl_sym): ... but we have to pass the handle by reference here.
1999-04-12 19:02:18 +00:00
Thomas Tanner
c836f3090d * libltdl/configure.in: check for shl_load in libdld
* libltdl/ltdl.c (shl_close, shl_sym): use (shl_t *) instead of shl_t
* ltconfig.in (check for gcc): removed a bogus line,
  check for shl_load in libdld
* ltmain.in: added a warning to the header of the .la file
  to warn users against deleting the file,
  link shared against static libraries if
  deplibs_check_method == pass_all
1999-04-11 21:10:04 +00:00
Gary V. Vaughan
53ec0ae91b * libltdl/ltdl.c (lt_dladdsearchdir): Forgot to mallocate the
extra byte of memory for the teminating NUL, and forgot to
strcpy the original path in to the new memory before appending
the new path compononent.
1999-03-29 13:40:01 +00:00
Thomas Tanner
96dc12316e * NEWS: updated
* README: updated (BeOS support, no longer shared libraries
  support for AmigaOS), cleanups, we have now two mailing lists
* REAMDE-alpha: autogen -> bootstrap, we have now two mailing lists
* THANKS: added Xavier Pianet
* doc/PLATFORMS: BeOS works
* doc/libtool.texi: we have now to two mailing lists,
  updated -dlopen self documentation, documented libltdl's license,
  put each author in a separate line,
  inter-library dependencies on uninstalled libtool libraries are
  now supported, cleanups and minor corrections
* libltdl/COPYING.LIB: new file
* libltdl/ltdl.[ch]: added special exception to the LGPL license
* libtool.spec: removed, it was outdated
* Makefile.am: removed libtool.spec
* ltmain.in: use TMPDIR when possible, create a subdirectory
  in the temporary directory, added -export-symbols-regex to the help,
1999-03-27 16:58:10 +00:00
Thomas Tanner
64d868411f * TODO: support -dlopen for libraries
* doc/PLATFORMS: Erez Zadok reported that libtool works on bsdi 4.0.1
* doc/libtool.texi (libltdl): libltdl supports BeOS
* libltdl/ltdl.c: shlib_ext was declared even if LTDL_SHLIB_EXT
  didn't exist, partially reverted my previous patch: BeOS will
  automatically search in ADDON_PATH
* ltmain.in: don't allow relative run-paths, fixed a typo in a warning,
  ignore -dlopen self for libraries and objects,
  only accept -L paths that exist, minor cleanups,
  bugfix: add -lc for normal libraries, not convenicence libraries
  removed offensive warnings/comments
1999-03-24 22:42:59 +00:00
Thomas Tanner
e65f46d3fc * use the same header in all configure.in's and Makefile.am's
* NEWS: improved support for BeOS and Cygwin
* TODO: ILD branch was merged, all internal variables and macros
  are now documented
* demo/Makefile.am: use $(LIBS) instead of -lm
* doc/libtool.texi: documented new variable hardcode_into_libs
  and thread_safe_flag_spec, renamed all AM_ENABLE/DISABLE_* macros
  to AC_*, documented AC_DISABLE_FAST_INSTALL and AC_LIBTOOL_DLOPEN
* libltdl/ltdl.c: added two new error messages (cannot_open_error,
  cannot_close_error), use them where approriate,
  BeOS support (thanks to Xavier Pianet), on BeOS search modules
  additionally in ADDON_PATH
* libtool.m4: rewrote AC_CHECK_LIBM: BeOS and Cygwin don't have
  libm and *-ncr-sysv4.3* requires libmw
* ltconfig.in: don't check for LoadLibrary, hardcode dlopen
  configuration for BeOS and Cygwin
* ltmain.in: fix sourcing of .la files on Solaris
  (patch by Raja R Harinath)
1999-03-20 00:27:33 +00:00
Thomas Tanner
61bb801686 * libltdl/ltdl.c: removed FILENAME_MAX since LTDL_FILENAME_MAX
is sufficient and doesn't break HP/UX
1999-03-12 20:47:44 +00:00
Alexandre Oliva
50b30fa4d5 * libltdl/ltdl.c (strdup): cannot return str when it's NULL
because of const correctness
1999-03-11 03:14:54 +00:00
Alexandre Oliva
b96c596a21 * libltdl/ltdl.c (strdup): always use our own, because the
standard strdup won't use lt_dlmalloc
1999-03-11 02:50:13 +00:00
Thomas Tanner
c7e268df7d * configure.in: fix spacing for --disable-ltdl-install,
always configure libltdl, add libltdl/acinclude.m4 to
  ACINCLUDE_M4_LIST, disable installation of libltdl if necessary
* libltdl/Makefile.am: set version info for libltdl.la
* libltdl/configure.in: don't check whether
  enable_ltdl_convenience/install was set so that libltdl
  can be used as independent package (libltdl.tar.gz) without
  the need to use --enable-ltdl*
* libltdl/ltdl.c: minor cleanups, allocate the line cache
  dynamically (lt_dlopen)
1999-03-10 16:16:03 +00:00
Alexandre Oliva
6e60d47735 * libltdl/ltdl.c (lt_dlopen): some preprocessors choke if the `#'
of `#define' is not in column 1; let's go back to fortran! :-)
Add #undefs too, to avoid potential warnings or errors.
1999-03-10 14:33:22 +00:00
Thomas Tanner
adf5912c04 * libltdl/ltdl.c (lt_dlopen): don't hardcode the length of the
constant strings
1999-03-09 23:00:24 +00:00
Alexandre Oliva
ae8fc72897 * libltdl/ltdl.c (LTDL_LAZY_OR_NOW): renamed from LTDL_NOW; prefer
LAZY loading because it's much faster and NOW is apparently
partially broken on FreeBSD
Reported by Archie Cobbs <archie@whistle.com>
1999-03-06 20:24:57 +00:00
Thomas Tanner
11cb604bc9 * TODO: added items for next alpha release, ILD etc.
* libltdl/ltdl.c: removed unnecessary check from presym_sym,
  fixed bug in lt_dlclose, allow lt_dlopenext(NULL),
  set deplibs for lt_dlopen(NULL)
1999-02-25 06:46:55 +00:00
Alexandre Oliva
f95e55ad09 * libltdl/configure.in: check for dld.h
* libltdl/ltdl.c: include dld.h
(dld_open) it's spelled memory_error, not no_memory_error
Reported by Stefan Burstroem <f94sbu@efd.lth.se>
1999-02-22 19:24:55 +00:00
Thomas Tanner
b965590d78 * libltdl/ltdl.c (lt_dlopen): use newhandle instead of handle
when dlopening the executable
* libtool.m4 (AC_LIBTOOL_DLOPEN): removed the redundant "yes: "
  prefix for lt_cv_dlopen, renamed lt_cv_dlopen_LIBS
  to lt_cv_dlopen_libs (more consistent)
* ltmain.in: implemented -dl[pre]open self, necessary for
  lt_dlopen(NULL), generation of exported symbols was broken
1999-02-21 15:38:02 +00:00
Archie Cobbs
7666c21afd * libltdl/ltdl.c (lt_dlopen): use newhandle instead of handle
where appropriate, when dlopening a non-libtool library
1999-02-20 05:23:31 +00:00
Alexandre Oliva
e906347209 * libltdl/ltdl.c (lt_dlmalloc, lt_dlfree): SunOS' cc can't cope
with argument lists, we __P even in the definition
1999-02-17 11:56:27 +00:00
Thomas Tanner
c361d1cfeb * cdemo/Makefile.am: renamed *foo1 to *foo, removed $(MATH_LIB)
* cdemo/foo1.c: renamed to foo.c
* libltdl/ltdl.c: eliminated lt_dltype, in presym_open():
  search for @PROGRAM@ if filename == 0, in lt_dlopen():
  fixed bug for filename == 0
* libltdl/ltdl.h: use __P macro for lt_dlmalloc/free
* libtool.m4: new macro AC_LIBTOOL_DLOPEN: checks for dlopen
  and dlopen(NULL) support
* ltconfig.in: added new variables dlopen and dlopen_self,
  --enable-dlopen[-self] flags for AC_LIBTOOL_DLOPEN
* ltmain.in: use dlopen[_self], dlpreopen files if there's no
  dlopen support, build lt_preloaded_symbols only if
  -dl[pre]open was used, include program symbols if -export-dynamic
  was specified and there's no dlopen(NULL) support
* mdemo/configure.in: use AC_LIBTOOL_DLOPEN
* mdemo/main.c: demonstrate lt_dlopen(0)
1999-02-15 16:46:55 +00:00
Thomas Tanner
6d34bd85f0 * *demo/Makefile.am: use $(MATHLIB)
* *demo/configure.in: use AC_CHECK_LIBM
* doc/libtool.texi: renamed file_magic_command to file_magic_cmd,
  renamed archive_sym_cmds to archive_expsym_cmds
* ltconfig.in: ditto
* ltmain.in: ditto
* libltdl/ltdl.c: use lt_dlmalloc/free
* libltdl/ltdl.h: define lt_dlmalloc/free
* libtool.m4: added AC_CHECK_LIBM macro
* ltconfig.in: renamed archive_sym_cmds to archive_expsym_cmds,
  added always_export_symbols, export_symbols_cmd, exclude_expsyms,
  include_expsyms, removed archive_cmds for cygwin/mingw and AIX,
  on Solaris store the exported symbols list in objdir
* ltmain.in: allow -export-symbols for modules, use thread_safe flag,
  add include_expsyms to the exported symbols
1999-02-13 15:43:04 +00:00
Alexandre Oliva
b37f61a8d4 * libltdl/ltdl.c (tryall_dlopen): strcmp filenames was reversed 1999-02-12 12:59:32 +00:00
Thomas Tanner
17915a088c * autogen: libltdl needs autoheader
* demo/Makefile.am: renamed hell.debug to hell.static
  (we're demonstrating static linking, not debugging)
* tests/demo*: ditto
* doc/libtool.texi (libltdl): documented new lt_dlopen(NULL)
  feature
* libltdl/acconfig.h: required for config.h
* libltdl/configure.in: use config.h
* libltdl/ltdl.c: use config.h, support lt_dlopen(NULL)
  (returns a handle for the program itself)
* ltconfig.in: minor reformatting
* ltmain.in: in lt_preloaded_symbols always define
  the program's symbols first, for -export-dynamic list all
  program symbols together, -export-symbols was broken for
  programs, minor reformatting
* mdemo/Makefile.am: renamed mdemo.debug to mdemo.static
* tests/mdemo*: ditto, mdemo.test was completely broken
1999-02-11 23:48:25 +00:00
Alexandre Oliva
425940e0ab * libltdl/ltdl.c (find_module): initialize filename if dir is NULL
Reported by Godmar Back <gback@cs.utah.edu>

1999-02-04  Godmar Back  <gback@cs.utah.edu>

* libltdl/ltdl.c (lt_dlopenext): missing space for terminator when
allocating memory for shlib_ext
1999-02-04 12:39:24 +00:00
Alexandre Oliva
b579b04417 * ltdl.c (lt_dlopenext): tmp would be trashed if shlib_ext was
longer than 3 characters
1999-02-03 07:55:40 +00:00
Alexandre Oliva
0e57eec185 * libltdl/ltdl.c (find_file): fix endless loop condition
(find_module): filename allocation was off by 1
1999-01-27 07:41:15 +00:00
Alexandre Oliva
09616d6977 * libltdl/ltdl.c (lt_dlopen, non-.la): find_file now returns 0 on
failure
1999-01-27 06:55:40 +00:00
Alexandre Oliva
bf0865ed59 * libltdl/ltdl.c (find_file): oops, filenamesize was miscomputed 1999-01-27 06:05:44 +00:00
Alexandre Oliva
c2db1b3525 * libltdl/ltdl.c (find_file): allocate filename dynamically 1999-01-27 05:42:21 +00:00
Alexandre Oliva
77eba97d29 * libltdl/ltdl.c: make all global strings char[], not char*; check
that all calls to malloc() are properly cast
(strdup, strchr, strrchr, trim, free_vars): declare as inline
(find_module): allocate filename dynamically; support null dir
(free_vars): free dir and name only if non-null
(lt_dlopen): keep dir as NULL if not given; fix expression that
calculated the size of name; only free and name if non-null
(lt_dlopenext): allocate tmp dynamically
1999-01-27 04:31:23 +00:00
Thomas Tanner
a5f6b87d4a * cdemo/configure.in: renamed AM_PROG_LIBTOOL to AC_PROG_LIBTOOL
* demo/configure.in: likewise
* depdemo/configure.in: likewise
* libltdl/configure.in: likewise
* mdemo/configure.in: likewise
* libltdl/ltdl.c: in find_module() check whether libdir is defined,
  tryall_dlopen(): move deallocation of an already opened handle
  to lt_dlopen(), allocate the directory in lt_dlopen() dynamically,
  minor cleanups, fixed memory leak (name)
* libtool.m4: renamed all AM_ macros to AC_ and added aliases for
  compatibilty, updated AC_SYS_NM_PARSE (no undefined symbols,
  don't count the symbols)
* ltconfig.in: added thread_safe_flag_spec (not used yet),
  added generic variable for linker options "linkopts" in
  all archive_cmds
* ltmain.in: added -thread-safe flag (unused)
1999-01-27 00:49:06 +00:00
Alexandre Oliva
60d43b8236 * libltdl/ltdl.c (find_module): test old_name and dlname for NULL,
not len==0
1999-01-25 20:58:14 +00:00
Alexandre Oliva
3a2cf81834 * libltdl/configure.in (libltdl_cv_objdir): yes, appending the "/"
in configure.in was much simpler
* libltdl/ltdl.c (objdir): ditto
1999-01-25 15:59:56 +00:00
Alexandre Oliva
f1d990faa4 * libltdl/ltdl.c (objdir): string collation isn't portable; strcat
"/" explicitly.  Or should this be moved to configure.in?
1999-01-25 15:48:45 +00:00
Thomas Tanner
2ad9832810 * libltdl/ltdl.c: allocate the variables in lt_dlopen() dynamically 1999-01-25 10:54:23 +00:00
Thomas Tanner
d045d768ee * libltdl/ltdl.c: minor bugfixes, append a "/" the search
directory only if necessary
* ltconfig.in: added support for FreeBSD >= 3.0
  (patch from Kurt D. Zeilenga)
* THANKS: added Kurt D. Zeilenga
1999-01-24 20:43:52 +00:00
Thomas Tanner
05ba011011 * doc/libtool.texi (libltdl): list supported dlopen mechanisms,
added function lt_dlopenext(), removed reference to
  LTDL_PRELOADED_SYMBOLS in LTDL_SET_PRELOADED_SYMBOLS
* libltdl/ltdl.c: partially reverted Alexandre's dynamic string
  allocation change (it was not necessary and the code was unreadable),
  cleanups, removed usr_search_path_size, renamed usr_search_path
  to user_search_path, in find_module() also check for moved
  modules, merged find_file() and find_library(),
  added lt_dlopenext(), in lt_dladdsearchdir() no longer reset
  the search path if 'search_dir' == NULL and don't use realloc()
  (might not be available on all platforms),
  removed __P((void)) in the declaration of lt_dlgetsearchpath()
* libltdl/ltdl.h: added lt_dlopenext()
* ltconfig.in: AIX archive commands were broken,
  fixed a MAJOR bug in global_symbol_pipe which caused
  "demo-shared.test;demo-make.test" to fail (libtool must not extract
  undefined symbols of libraries, i.e. symcode must not contain 'U')
* tests/Makefile.am (clean-local): "make distclean" in cdemo, too
1999-01-24 14:24:17 +00:00
Alexandre Oliva
6fffb233f1 * libltdl/ltdl.c (lt_dlopen): if we're reusing a previously opened
handle, don't reset its name nor add it to the list, and free the
name we have allocated
Reported by Edouard G. Parmelan <Edouard.Parmelan@France.NCR.COM>
1999-01-22 17:08:26 +00:00
Alexandre Oliva
981a66b4df * libltdl/configure.in: reintroduce code to detect native library
extension
* libltdl/ltdl.c (lt_dlopen): if a .la file name is given, that's
all.  Otherwise, lt_dlopen now tries to append .la first.  If this
fails, it tries the given filename, and, at last, tries to append
the native library extension to the given filename.
* doc/libtool.texi (lt_dlopen): explain new lookup strategy
1999-01-21 05:08:23 +00:00