* libltdl/config/ltmain.m4sh (func_lalib_unsafe_p): redirect

and restore from stdin, not stdout.
* tests/execute-mode.at (execute mode): Adjust test to catch
this.
Report by Roberto Bagnara.
This commit is contained in:
Ralf Wildenhues 2008-03-05 20:14:43 +00:00
parent 3280cb4b7c
commit 54c180945e
3 changed files with 44 additions and 6 deletions

View File

@ -1,3 +1,11 @@
2008-03-05 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
* libltdl/config/ltmain.m4sh (func_lalib_unsafe_p): redirect
and restore from stdin, not stdout.
* tests/execute-mode.at (execute mode): Adjust test to catch
this.
Report by Roberto Bagnara.
2008-03-04 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
Fix libltdl to not skip dlopen on systems with several loaders,

View File

@ -648,7 +648,7 @@ func_lalib_p ()
func_lalib_unsafe_p ()
{
lalib_p=no
if test -r "$1" && exec 5<&1 <"$1"; then
if test -r "$1" && exec 5<&0 <"$1"; then
for lalib_p_l in 1 2 3 4
do
read lalib_p_line
@ -656,7 +656,7 @@ func_lalib_unsafe_p ()
\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
esac
done
exec 1<&5 5<&-
exec 0<&5 5<&-
fi
test "$lalib_p" = yes
}

View File

@ -51,6 +51,30 @@ fi
AT_DATA([lt-real],
[[#! /bin/sh
echo "$@"
cat
]])
AT_DATA([libfakelib.la],
[[# libfakelib.la - a libtool library file
# Generated by ltmain.sh (GNU libtool 1.2605 2008/03/04 22:31:32) 2.3a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
dlname=''
library_names=''
old_library='libfakelib.a'
inherited_linker_flags=''
dependency_libs=''
weak_library_names=''
current=
age=
revision=
installed=no
shouldnotlink=yes
dlopen=''
dlpreopen=''
libdir=''
]])
mkdir sub
@ -61,20 +85,26 @@ AT_CHECK([$LIBTOOL --mode=execute ./foo])
AT_CHECK([$LIBTOOL --mode=execute sub/foo])
AT_CHECK([$LIBTOOL --mode=execute ./foo foo], [], [foo
])
AT_CHECK([$LIBTOOL --mode=execute ./lt-wrapper foo], [], [foo
AT_CHECK([$LIBTOOL --mode=execute ./lt-wrapper foo </dev/null], [], [foo
])
AT_CHECK([cd sub && $LIBTOOL --mode=execute ./foo ../foo], [], [../foo
])
# suppose that ./foo is gdb, and lt-wrapper is the wrapper script.
AT_CHECK([$LIBTOOL --mode=execute ./foo lt-wrapper bar baz], [],
AT_CHECK([$LIBTOOL --mode=execute ./foo lt-wrapper bar baz </dev/null], [],
[./lt-real bar baz
])
# check that stdin works even with -dlopen.
AT_CHECK([echo bar | $LIBTOOL --mode=execute -dlopen libfakelib.la ./lt-wrapper foo],
[], [foo
bar
])
# Check that a missing real program causes an error.
# The error message and code are likely to be 126,
# "No such file or directory" but system-dependent.
mv -f lt-real lt-backup
AT_CHECK([$LIBTOOL --mode=execute ./lt-wrapper foo || exit 1],
AT_CHECK([$LIBTOOL --mode=execute ./lt-wrapper foo </dev/null || exit 1],
[1], [ignore], [ignore])
mv -f lt-backup lt-real
@ -82,7 +112,7 @@ mv -f lt-backup lt-real
AT_CHECK([$LIBTOOL --mode=execute ./foo "arg with special chars: \$!&*\`'()"],
[], [arg with special chars: $!&*`'()
])
AT_CHECK([$LIBTOOL --mode=execute ./lt-wrapper "arg with special chars: \$!&*\`'()"],
AT_CHECK([$LIBTOOL --mode=execute ./lt-wrapper "arg with special chars: \$!&*\`'()" </dev/null],
[], [arg with special chars: $!&*`'()
])
AT_CHECK([$LIBTOOL --mode=execute ./foo lt-wrapper "arg with special chars: \$!&*\`'()"],