HAVE_PRELOADED_SYMBOLS): test whether we support -dl*open
* libltdl/ltdl.c (!HAVE_PRELOADED_SYMBOLS, lt_preloaded_symbols):
define it to an empty list if libtool won't generate it, so as to
avoid link errors. This will cause silent dlopening failures, but
maybe this is better than failing to link the program...
without arguments, that calls lt_dlpreopen_default_ with
lt_dlpreloaded_symbols
* libltdl/ltdl.c (lt_dlpreopen_default_): renamed from
lt_dlpreopen_default
system-dependent extension of shared libraries
(libltdl_cv_shlibpath_var, LTDL_SHLIBPATH_VAR): system-dependent
run-time shared library search path
* libltdl/ltdl.c (dldpre_init, dldpre_exit): unrelate init/exit
from add/remove symlists, so one may add dld_preloaded_symbols
from main(), when only a library will call dldpre_init
(lt_dlopen): use LTDL_SHLIBPATH_VAR, if defined, as secondary
search path. Also, if a requested .la file cannot be found, try
with the LTDL_SHLIB_EXTension instead.
depdemo commented out, so that `dist' works before `check'
(BUILD_LTDL): will contain libltdl if --enable-ltdl-install
* Makefile.am (DIST_SUBDIRS): expand SUBDIRS and add depdemo,
commented out
(SUBDIRS): add $(BUILT_LTDL)
* libltdl/Makefile.am (EXTRA_LTLIBRARIES): add libtest.la, the
same as libltdl but always a convenience library. Not built by
default. Both libraries now depend on the libtool script, that
depends on ../libtool and is rebuilt when needed
* mdemo/Makefile.am (mdemo, mdemo.debug): depend on and link with
../libltdl/libtest.la, that is rebuilt if needed
(mdemo_LDADD): removed $(LIBADD_M), to avoid silent failures
(foo1.la): renamed from libfoo1.la; test removing the lib prefix
* mdemo/foo1.c: renamed libfoo1_LTX symbols to foo1_LTX
* mdemo/main.c: don't include string.h nor math.h, nor refer to
sin nor cos
* tests/mdemo-exec.test: renamed libfoo1.la to foo1.la
* tests/mdemo-inst.test: ditto
and don't redefine it if already defined; default to 1024, as on
most systems
(LT_SYMBOL_LENGTH): renamed from MAX_SYMBOL_LENGTH
(LT_SYMBOL_OVERHEAD): new macro, that accounts for the size of
the _LTX_ separator and the initial underscore
(lt_dlsym): sym now points to a stack buffer (lsym) if possible,
or is dynamically allocated. If allocation fails, a
buffer_overflow_error is returned.
old-fashioned archive, use a copy of libobjs saved before
convenience libraries are appended
* libltdl/ltdl.h (_LTDLL_EXPORT, _LTDLL_IMPORT): use cygwin or
unix library import/export primitives; this may be convenient for
people willing to create DLLs
(_LTDLL_EXTERN): select _LTDLL_EXPORT or _LTDLL_IMPORT depending
on _LTDL_COMPILE_
* libltdl/ltdl.h, libltdl/ltdl.c (lt_dlpreopen): new function,
that replaces the current preloaded_symbols list with its
argument, and returns the old value, initially NULL
(dldpre_init): don't refer to dld_preloaded_symbols any more
(dldpre_open, dldpre_sym): search preloaded_symbols
(lt_dlpreopen_default): call lt_dlpreopen with
dld_preloaded_symbols, that is declared as extern; it should be
called from the main program or from some static library without
-no-undefined
(lt_dlerror): new function, that returns the error message for the
last error occurred; the error message is kept in the static
variable last_error
* libltdl/configure.in (enable-ltdl-install): moved back from
enable-install; other packages might use enable-install already,
better have fine grained control over this.
* libltdl/Makefile.am (libltdls.la): discarded
* libltdl/Makefile.am (CFLAGS): ditto
* libltdl/configure.in: check for memory.h, rindex() and
dlpreopening. Fixed NEED_USCORE caching policy.
* libltdl/ltdl.h (lt_dlsym): make the name argument const
* libltdl/ltdl.c (types): new variable: head of list of available
dlopening mechanisms
(lt_dltype_t): interface of a dlopening mechanism, with pointers
to functions for init, exit, open, close and sym
(lt_dlhandle_t): added pointer to interface type
(strdup): don't name it strdup; it can be troublesome
(strrchr): ditto; use rindex if available
(LIBTOOL_STATIC): check HAVE_DLPREOPEN instead, and move to the
end of the file, so that it becomes the header of the list
(all): renamed all interface-implementation functions, to avoid
name clashes, and created lt_dltype_t nodes for all of them
(lt_dlinit): initialize all available interfaces; remove those
that fail from the list. Return failure only if no interfaces
could be initialized.
(lt_dlexit): return number of failures
(tryall_dlopen): try to open the library with all available
interfaces
(lt_dlopen): use tryall_dlopen; increased size of fixed buffers.
We should probably make these bound-checked or dynamically
allocated for the final release! Fix bug when filename did not
contain slashes; should we check for `\\' too? Try old_library if
everything else fails.
(lt_dlclose): use the interface type for closing
(lt_dlsym): make `symbol' const, use interface type for looking up
* mdemo/Makefile.am: moved mdemo/modules/* back into mdemo
(SUBDIRS): removed
(libfoo2_la_LDFLAGS): added -static; nice test. However, since it
causes -lm to linked into hell*, it causes tests that should fail
to pass
(noinst_HEADERS): no need to install foo.h
* mdemo/configure.in: remove modules/Makefile
tests/mdemo-exec.test: updated accordingly
* mdemo/Makefile.am: ../libltdl is within $(srcdir)
* libltdl, Makefile.am: added libltdl (a system independent
dlopen wrapper library extracted from mdemo)
* ltmain.in: added -module flag for compiling and linking of
modules. If enabled it compiles always both .o (with -DLT_RENAME)
and .lo files
* mdemo: modified mdemo to work with libltdl
* tests/ltdl*: added tests for libltdl