Peter Rosin [Wed, 17 Mar 2010 07:54:16 +0000 (08:54 +0100)]
Use Get/SetThreadErrorMode if they are available.
* libltdl/loaders/loadlibrary.c (wrap_geterrormode): Replaced...
(wrap_getthreaderrormode): ...by this function that checks
first for GetThreadErrorMode, then GetErrorMode and makes use
of either of those or...
(fallback_getthreaderrormode): ...else falls back to this
replacement function that implements the old workaround, which
was previously implemented in...
(fallback_geterrormode): ...this now renamed function.
(geterrormode): Replaced...
(getthreaderrormode): ...by this function pointer that points
at either of wrap_getthreaderrormode, GetThreadErrorMode,
GetErrorMode or fallback_getthreaderrormode.
(wrap_setthreaderrormode): New function that checks if
SetThreadErrorMode is supported by the system and makes use of
it if it is.
(fallback_setthreaderrormode): New function that is used
otherwise that implements the old version using SetErrorMode.
(setthreaderrormode): New function pointer that points at
either of wrap_setthreaderrormode, SetThreadErrorMode or
fallback_setthreaderrormode.
(vm_open): Adjust to the above.
Pierre Ossman [Mon, 22 Feb 2010 21:44:04 +0000 (22:44 +0100)]
Fix deplibs check fallback for 64-bit Windows and Windows CE.
* libltdl/m4/libtool.m4 (_LT_CHECK_MAGIC_METHOD): Accept file formats
'pe-arm-wince' and 'pe-x86-64'. Add note about consistency with ...
* libltdl/config/ltmain.m4sh (func_win32_libid): ... the respective
pattern here; sync pattern from the former.
* tests/deplibs-mingw.at (deplibs without file command): New
file, new test.
* Makefile.am (TESTSUITE_AT): Update.
* NEWS: Update.
Charles Wilson [Sun, 21 Feb 2010 21:56:44 +0000 (16:56 -0500)]
Guard against strerror()==NULL
* libltdl/config/ltmain.m4sh (func_emit_cwrapperexe_src:main):
Check return value of strerror() using nonnull().
(func_emit_cwrapperexe_src:find_executable): Ditto.
(func_emit_cwrapperexe_src:chase_symlinks): Ditto.
Charles Wilson [Sun, 12 Jul 2009 22:49:06 +0000 (18:49 -0400)]
Document wrapper changes.
* NEWS: Indicate new feature and incompatibility.
* doc/libtool.texi [detailmenu]: Add reference to subsection
'Wrapper executables for programs', in Platform Quirks category.
[Linking executables]: Mention wrapper executables, in
addition to wrapper scripts. Add menu referencing subsection
'Wrapper executables for programs'.
[Wrapper executables for programs]: New subsection. Documents
cwrapper rationale and command line options.
Charles Wilson [Sun, 12 Jul 2009 21:40:26 +0000 (17:40 -0400)]
Add --lt-* options to shell wrapper
* libltdl/config/ltmain.m4sh (func_emit_wrapper): Call
func_parse_lt_options early. Use func_exec_program.
(func_emit_wrapper:func_parse_lt_options): New function.
(func_emit_wrapper:func_lt_dump_args): New function.
(func_emit_wrapper:func_exec_program_core): New function.
(func_emit_wrapper:func_exec_program): New function.
Charles Wilson [Sun, 12 Jul 2009 18:30:44 +0000 (14:30 -0400)]
Enable runtime cwrapper debugging; add tests
* libltdl/config/ltmain.m4sh (func_emit_cwrapperexe_src):
Update comments. Initialize program_name. Eliminate _LENGTH
variables for string constants. In debug mode, print a
banner with known content before any other output. Remove
LTWRAPPER_DEBUGPRINTF macro. Add constants and variables
to support new --lt-debug option.
(func_emit_cwrapperexe_src:ltwrapper_debugprintf): Renamed to...
(func_emit_cwrapperexe_src:lt_debugprintf): this. Only print
messages if lt_debug != 0. Ensure appearance of messages
conforms to GCS.
(func_emit_cwrapperexe_src:lt_fatal): Ditto.
(func_emit_cwrapperexe_src:lt_error_core): Ditto.
(func_emit_cwrapperexe_src): Update all callers to lt_fatal.
Update all users of LTWRAPPER_DEBUGPRINTF (()) to call
lt_debugprintf () directly.
(func_emit_cwrapperexe_src:main): Consolidate option parsing.
Ensure first use of lt_debugprintf occurs after option parsing.
Add stanza to parse for --lt-debug and set lt_debug variable.
Use strcmp rather than strncmp, where safe.
* tests/cwrapper.at: Add new tests for --lt-debug and
-DLT_DEBUGWRAPPER.
Peter Rosin [Thu, 21 Jan 2010 07:42:12 +0000 (08:42 +0100)]
Report proper errors from the loadlibrary loader.
* libltdl/loaders/loadlibrary.c (loadlibraryerror): New
helper function that returns the latest Windows error as a
string, or the provided default string on failure to do so.
(LOADLIB_SETERROR): New macro that wraps previous to make it
easy to use.
(vm_open, vm_close, vm_sym): Make use of previous.
(LOCALFREE): New macro to help free the Windows error string.
(vl_exit): Make use of previous.
* tests/loadlibarry.at: New file, new test that makes sure
the loadlibrary loader reports non-standard error messages.
* Makefile.am (TESTSUITE_AT): Add above test.
Peter Rosin [Mon, 18 Jan 2010 08:48:23 +0000 (09:48 +0100)]
Use GetErrorMode if it is available.
* libltdl/loaders/loadlibrary.c (wrap_geterrormode): New
function that checks if GetErrorMode is supported by the
system and makes use of it if it is.
(fallback_geterrormode): New function that is used otherwise
that implements the old workaround.
(geterrormode): New function pointer that points at either
of the above or directly at GetErrorMode.
(vm_open): Make use of the above.
Ralf Wildenhues [Wed, 9 Dec 2009 06:28:59 +0000 (07:28 +0100)]
Improve parsing of .la files in libltdl.
* libltdl/ltdl.c (trim): Do not dump core upon missing quote in
module .la file.
* tests/lalib-syntax.at (syntax of .la files): New file, new
test.
* Makefile.am (TESTSUITE_AT): Add tests/lalib-syntax.at.
Report by Bob Friesenhahn.
Ralf Wildenhues [Wed, 2 Dec 2009 22:01:56 +0000 (23:01 +0100)]
Sane fallback initialization of $ECHO from $as_echo.
* libltdl/config/general.m4sh: Use 'printf %s\n' if $as_echo is
unset.
* tests/testsuite.at: Likewise.
* THANKS: Update.
Report by Vadim Zeitlin and Peter Rosin.
Ralf Wildenhues [Wed, 2 Dec 2009 22:12:27 +0000 (23:12 +0100)]
lt_dlloader_remove and lt_dlloader_find accept const arguments.
* libltdl/lt_dlloader.c (lt_dlloader_remove, lt_dlloader_find):
Accept `const char *' arguments, as documented. Cast them to
`void *' for the slist machinery.
* libltdl/libltdl/lt_dlloader.h: Adjust prototypes.
Ralf Wildenhues [Wed, 2 Dec 2009 22:11:23 +0000 (23:11 +0100)]
Test and fix slist.c.
* libltdl/libltdl/slist.h: Include stddef.h, for size_t.
(slist_remove): Return pointer to SList, not void.
* libltdl/slist.c: Include stdlib.h, for malloc and free.
(slist_remove): Adjust prototype as above.
(slist_sort): Do not loop forever on one-item list.
* tests/slist.at (SList functionality): New file, new test.
* Makefile.am (TESTSUITE_AT): Add tests/slist.at.
Ralf Wildenhues [Sun, 29 Nov 2009 22:03:14 +0000 (23:03 +0100)]
Fix bindir and dlopen tests for C++ compilers (CC=g++).
* tests/bindir.at (bindir basic lib test, bindir install tests):
Include stdlib.h rather than declaring abort.
* tests/lt_dlopenext.at (lt_dlopenext error messages): Use
`extern "C"' annotation for dlsym'ed function in C++ mode.
Ralf Wildenhues [Tue, 24 Nov 2009 14:22:57 +0000 (15:22 +0100)]
Tighten regex for Portland C++ compiler for version 10.
* libltdl/m4/libtool.m4 (_LT_LANG_CXX_CONFIG) [linux]:
Match a dot after version 1 through 5, so 10 and up don't match,
and use weak symbols.
* THANKS: Update.
Report by Jeff Squyres and Brent Leback.
Bob Friesenhahn [Sat, 14 Nov 2009 19:52:24 +0000 (13:52 -0600)]
Don't load module.la from current directory by default.
* libltdl/ltdl.c (try_dlopen): Do not attempt to load an
unqualified module.la file from the current directory (by
default) since doing so is insecure and is not compliant with
the documentation.
* tests/testsuite.at: Qualify access to module.la file in
current directory so that test passes.
Ralf Wildenhues [Sun, 1 Nov 2009 10:41:34 +0000 (11:41 +0100)]
Fix func_normal_abspath sed script for Solaris.
* libltdl/config/general.m4sh (pathcar, pathcdr, removedotparts)
(collapseslashes, finalslash): Use single quotes, for clarity.
(removedotparts): Avoid \{N,M\} after subexpression \(...\), for
Solaris /bin/sed.
Ralf Wildenhues [Sun, 1 Nov 2009 10:38:23 +0000 (11:38 +0100)]
Improve versioning algorithm documentation.
* doc/libtool.texi (Updating version info): Repeat the
algorithms in different, hopefully simpler terms.
* THANKS: Update.
Prompted by Richard B. Kreckel.
Ralf Wildenhues [Sun, 1 Nov 2009 08:26:51 +0000 (09:26 +0100)]
Fix quoting of AS, DLLTOOL, and OBJDUMP for the libtool script.
* libltdl/m4/ltoptions.m4 (AC_LIBTOOL_DLOPEN): Quote values of
$AS, $DLLTOOL, and $OBJDUMP, so they can contain arguments.
* THANKS: Update.
Report by Matthijs Kooijman.
Dave Korn [Sat, 12 Sep 2009 06:01:38 +0000 (08:01 +0200)]
Control where win32 DLLs get installed.
* libltdl/config/general.m4sh (func_normal_abspath): New function.
(func_relative_path): Likewise.
* libltdl/config/ltmain.m4sh (func_mode_help): Document "-bindir".
(func_mode_link): Accept new "-bindir" option and use it, if
supplied, to place Windows DLLs.
* tests/bindir.at: New file for install tests using "-bindir".
* Makefile.am (TESTSUITE_AT): Add bindir.at.
* doc/libtool.texi (Link Mode): Update documentation.
* NEWS, THANKS: Update.
Allow dlopen self test to work with gcc's -fvisibility=hidden.
* libltdl/m4/libtool.m4 (_LT_TRY_DLOPEN_SELF): Declare default
visibility for the symbol we are going to test dlopen (NULL)
when a GCC version is used that understands the visibility
attribute, under the assumption that if -fvisibility=hidden
will be used, the user code will be sufficiently annotated
for visibility of needed symbols from the main executable.
* THANKS: Update.
Report by Josh Hursey against OpenMPI.
Fix and split recent testsuite addition for compile/link flags.
* tests/flags.at (passing flags through libtool): Split into ...
(passing CC flags through libtool)
(passing CXX flags through libtool)
(passing F77 flags through libtool)
(passing FC flags through libtool)
(passing GCJ flags through libtool): ... these five tests,
factorized with m4_foreach. Fix F77 and FC compile and link
commands; add GCJ tag. Use LT_AT_TAG to correctly skip tags
for which no compiler exists. Use $EXEEXT where appropriate.
Drop unneeded use of reload_cmds.
Reports by Peter Rosin and Peter O'Gorman.
Testsuite keyword 'interactive' and check-* rules.
* Makefile.am (testsuite_deps, testsuite_deps_uninstalled):
New variables.
(check-local, installcheck-local): Use them.
(check-interactive, check-noninteractive): New rules.
* tests/link-order2.at (Link order of deplibs),
tests/static.at (static linking flags for programs): Add keyword
`interactive'.
* doc/libtool.texi (Test descriptions): Document all keywords
used in the Libtool test suite.
* NEWS: Update.
Fix failure test in the presence of --with-pic or -prefer-pic.
* tests/fail.at (Failure tests): Run non-PIC failure test only
if pic_mode is 'default' or 'no', rather than 'default' or 'yes'
and also -prefer-pic has not been passed in $CFLAGS.
* THANKS: Update.
Report by Donn Washburn.
Add testsuite exposure for passing of compiler and linker flags.
* tests/flags.at (passing flags through libtool): New file, new
test, for bug fixed in previous commit.
* Makefile.am (TESTSUITE_AT): Add tests/flags.at.
Peter Rosin [Fri, 4 Sep 2009 20:19:36 +0000 (22:19 +0200)]
Make -Wc,FLAG behave like -Xcompiler FLAG in link mode.
* libltdl/config/ltmain.m4sh (func_mode_link): Remove "-Wc,"
instead of replacing it with "$wl" when linking programs
through the compiler driver, just as is the case when linking
libraries.
* NEWS: Update.
Shut up prototype warnings with recent GCC and -Wstrict-prototypes.
* libltdl/config/ltmain.m4sh (func_generate_dlsyms): Use recent
GCC's diagnostic pragma to override a -Wstrict-prototypes
setting for the symbol list code.
* THANKS: Update.
Yaakov Selkowitz [Tue, 30 Jun 2009 12:26:20 +0000 (08:26 -0400)]
[CXX] Use correct export_dynamic_flag_spec for PE-COFF $hosts
* libltdl/m4/libtool.m4 (_LT_LANG_CXX_CONFIG) [cygwin*|mingw*|pw32*|cegcc*]:
Define export_dynamic_flag_spec as -Wl,--export-all-symbols here as well
(see commit 5f2bbb494a2753afb2878c399cfd8316b7403a5b).
Signed-off-by: Charles Wilson <libtool@cwilson.fastmail.fm>
Ralf Wildenhues [Wed, 10 Jun 2009 17:47:33 +0000 (19:47 +0200)]
Fix concurrent extraction of convenience libraries on Darwin.
* libltdl/m4/libtool.m4 (_LT_CMD_OLD_ARCHIVE): New libtool
variable `lock_old_archive_extraction', set to `yes' on darwin.
* doc/libtool.texi (libtool script contents): Document it.
* libltdl/config/ltmain.m4sh (func_extract_an_archive): Lock
`ar x' invocation if `lock_old_archive_extraction' is yes.
* tests/darwin.at (darwin concurrent library extraction): New
test.
* NEWS: Update.
Report by Akim Demaille.
Ralf Wildenhues [Sun, 7 Jun 2009 09:42:17 +0000 (11:42 +0200)]
testsuite: cope when some installed libltdl.la has been removed.
* tests/old-m4-iface.at (AC_WITH_LTDL): Pass --with-included-ltdl
to configure, to ensure we do not accidentally link against a
previously installed libltdl.so where the corresponding .la
file has been removed, thus we do not add a run path, and the
runtime linker then fails to find libltdl.so.7.
* tests/configure-iface.at (--with-ltdl-include/lib): Remove -L
flags from LDFLAGS to avoid picking up an installed libltdl
outside of the default locations.
* THANKS: Update.
Prompted by report from Patrice Fromy.
Vincent Torri [Sun, 7 Jun 2009 07:25:45 +0000 (09:25 +0200)]
Fix C wrapper invocation for ceGCC hosts (cegcc and mingw32ce).
* libltdl/config/ltmain.m4sh (func_mode_link): do not generate
C wrapper for cegcc and mingw32ce hosts.
(func_emit_cwrapperexe_src): remove useless check on
__MINGW32CE__.
Ralf Wildenhues [Sun, 7 Jun 2009 07:01:12 +0000 (09:01 +0200)]
Don't pick up double-quotes from /etc/ld.so.conf on Ubuntu.
* libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER) [ linux ]
<sys_lib_dlsearch_path_spec>: Remove embedded double quotes from
paths picked up from /etc/ld.so.conf. Fixes libltdl compile
failure on Ubuntu 7.10.
* THANKS: Update.
Report by Camilo La Rota.
* libldtl/m4/libtool.m4 (_LT_LINKER_SHLIBS)
<export_symbols_cmds>: Modify the GNU-nm-on-AIX version so that
it adds weak defined symbols to the export list.
Build AIX shared libraries with binutils 2.19.50+.
* libltdl/m4/libtool.m4 (_LT_LINKER_SHLIBS, _LT_LANG_CXX_CONFIG)
<lt_use_gnu_ld_interface>: New variable to control whether the
GNU ld or native ld interface is used. Set to "no" for GNU ld
2.19.50+ on AIX, otherwise mirror $with_gnu_ld. Update the
warning message that is printed when using GNU ld on AIX.
Adjust the whole_archive_flag_spec value for GNU ld on AIX.
* NEWS, THANKS: Update.
Rainer Emrich [Tue, 5 May 2009 20:51:03 +0000 (22:51 +0200)]
Fix cross compilation for HPPA/64 with a BSD file command.
* libltdl/m4/libtool.m4 (_LT_CHECK_MAGIC_METHOD)
[hpux10.20*, hpux11*, !ia64] <lt_cv_deplibs_check_method>:
Match the dot in `PA-RISC 2.0' literally. Adjust hppa*64*
pattern to also match BSD `file' output, used in cross
compilation setups.
* THANKS: Update.
Report and initial patch by Rainer Emrich, refined by Peter
Rosin.
Ralf Wildenhues [Tue, 5 May 2009 05:39:16 +0000 (07:39 +0200)]
libtoolize: ignore trailing junk on scriptversion line.
* libtoolize.m4sh (func_install_update): Ignore semi-colon or
comment-sign and all following characters when parsing a
`scriptversion' line in one of the auxiliary scripts; recent
Automake-provided script have a stylized comment to induce
Emacs to use UTC.
Exposed by the `libtoolize config files serial update' test.
Ralf Wildenhues [Sat, 2 May 2009 08:36:17 +0000 (10:36 +0200)]
Initial port for BlueGene BG/L.
* libltdl/m4/libtool.m4 (_LT_COMPILER_PIC, _LT_LINKER_SHLIBS)
(_LT_LANG_CXX_CONFIG) [linux]: Detect bgxl*, bgf*, mpixl*
compilers.
* NEWS, THANKS: Update.
Report, feedback and testing by John R. Cary and Christian
Rössel.
Ralf Wildenhues [Sat, 2 May 2009 08:24:28 +0000 (10:24 +0200)]
Allow through -tp=* at link time, for pgcc.
* libltdl/config/ltmain.m4sh (func_mode_link): Portlant Group
pgcc uses `-tp=PROCESSOR' for target processor selection; allow
the flag through at link time.
Report by Ethan Mallove.
Ralf Wildenhues [Sat, 2 May 2009 07:57:47 +0000 (09:57 +0200)]
Fix quoting of eval'ed variable.
* libltdl/m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS): Double-quote
$lt_cv_sys_global_symbol_pipe for eval, like we do in ltmain,
in order to preserve TABs and multiple adjacent whitespace.
Report by Bruno Haible.
Yaakov Selkowitz [Sun, 29 Mar 2009 23:38:58 +0000 (19:38 -0400)]
Use correct export_dynamic_flag_spec for PE-COFF $hosts
* libltdl/m4/libtool.m4 (_LT_LINKER_SHLIBS) [cygwin*|mingw*|pw32*|cegcc*]:
Define export_dynamic_flag_spec as -Wl,--export-all-symbols, as required
by GNU ld for PE-COFF.
Signed-off-by: Charles Wilson <libtool@cwilson.fastmail.fm>
Peter Rosin [Fri, 20 Mar 2009 15:42:25 +0000 (16:42 +0100)]
LT_OUTPUT should always create the libtool script.
* libltdl/m4/libtool.m4 (LT_OUTPUT): Make LT_OUTPUT ignore the
--no-create configure option, and assume that the user wants
to use an up-to-date libtool script if the LT_OUTPUT macro is
present.
* tests/early-libtool.at: Make sure we do not regress.
Peter Rosin [Wed, 18 Mar 2009 18:52:27 +0000 (19:52 +0100)]
Don't settle for any dumpbin/link program as name lister.
* libltdl/m4/libtool.m4 (LT_PATH_NM): When locating dumpbin or
link -dump, check if they appear to really be capable of name
listing, in order to eliminate e.g. link from coreutils. This
makes the name lister decision fall back on nm as the default if
no acceptable candidate is found, which mainly happens on
(arguably broken) cross compiles.
* NEWS: Update
* THANKS: Update
Reports by Rudolf Leitgeb and Peter Kjellerstedt.
Signed-off-by: Peter Rosin <peda@lysator.liu.se> Signed-off-by: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
Ralf Wildenhues [Sat, 28 Feb 2009 16:13:27 +0000 (17:13 +0100)]
Document INNER_TESTSUITEFLAGS, drop leading space.
* README: Document INNER_TESTSUITEFLAGS.
* tests/cmdline_wrap.at (Run tests with low max_cmd_len):
When using INNER_TESTSUITEFLAGS on the testsuite invocation,
drop leading space after "-k libtool", so that the user may
further limit the set of tests to be run.
Ralf Wildenhues [Mon, 2 Mar 2009 06:25:31 +0000 (07:25 +0100)]
Fix low max_cmd_len template test on UnixWare.
* libltdl/config/ltmain.m4sh (func_mode_link): When expanding
$reload_cmds, always put objects in $reload_objs rather than
adding them to the command line, to allow more general command
lines in reload_cmds. Ensure $reload_objs contains a leading
space.
* libltdl/m4/libtool.m4 (_LT_LANG_CXX_CONFIG) [sysv5*,
sco3.2v5*, sco5v6*] <reload_cmds>: For CC, invoke prelinker
before creating reloadable object.
(_LT_CMD_RELOAD) <reload_cmds, reload_flag>: Declare as
_LT_TAGDECL, not _LC_DECL.
(_LT_LANG_CXX_CONFIG, _LT_LANG_F77_CONFIG, _LT_LANG_FC_CONFIG)
(_LT_LANG_GCJ_CONFIG) <reload_cmds, reload_flag>: Initialize
from default (C tag) value.
* THANKS: Update.
Report and analysis by Tim Rice and John Wolfe.
Török Edwin [Sat, 28 Feb 2009 12:26:59 +0000 (13:26 +0100)]
Do not add bogus directory arguments to link command lines.
* libltdl/config/ltmain.m4sh (func_mode_link): Ensure $path is
always initialized before it is used. Reported for zsh, for
which $path contains $PATH entries even after "emulate sh", see
<http://bugs.debian.org/517501>.
Ralf Wildenhues [Mon, 16 Feb 2009 20:59:34 +0000 (21:59 +0100)]
Do not pass $INSTALL via TESTS_ENVIRONMENT.
* Makefile.am (TESTS_ENVIRONMENT): Set lt_INSTALL, not INSTALL,
so that a bogus relative path to the install-sh script in the
source tree is not propagated to the configure scripts of the
old test suite.
* tests/testsuite.at: Adjust.
* tests/install.at (Install tests): Likewise.
Kurt Roeckx [Tue, 3 Feb 2009 06:54:33 +0000 (07:54 +0100)]
lt_dlopenext sets error upon successful library load.
* libltdl/ltdl.c (lt_dlopenadvise): Fix bogus error on
successful loading of library with lt_dlopenext.
Report by Kaiwang Chen in <http://bugs.debian.org/510006>.