*** empty log message ***

This commit is contained in:
Gordon Matzigkeit 1997-08-29 03:09:18 +00:00 committed by Gordon Matzigkeit
parent 23bd3ca76a
commit 7f28c91f91
6 changed files with 316 additions and 228 deletions

View File

@ -1,8 +1,22 @@
Thu Aug 28 20:58:56 1997 Gordon Matzigkeit <gord@gnu.ai.mit.edu>
* ltmain.sh.in (echo): Change test to one that uses printf.
This works on AIX, which has the same problems that Solaris does,
but no working echo program.
Wed Aug 27 09:54:21 1997 Gordon Matzigkeit <gord@gnu.ai.mit.edu>
* ltmain.sh.in (link): Make sure that compile_command and
finalize_command are always evaled. Quote any unknown linker
flags we need to pass through.
(compile): Use quoting for flags we pass.
(echo): I hate Sun! The /usr/bin/echo on Solaris handles
backslash sequences, which makes it impossible to do backslash
quoting using echo and sed. So, we search for an echo that obeys
the `echo '\t'` = '\t' equality. Then we use `$echo' everywhere
in ltmain.sh.
Put tabs back into the ${IFS= } sequences. Emacs untabify is
libtool bane.
* ltconfig.in: Quote all variable values that may contain
metacharacters creating the libtool script. This provides

2
NEWS
View File

@ -5,6 +5,8 @@ New in 1.0b:
* Suppress duplicate compiler output during `compile' mode.
* New `execute' mode to support debugging uninstalled libtool
libraries and executables.
* New quoting code to robustly handle any metacharacters passed in
arguments to libtool commands.
* Deleted `dlname' mode. Dlopen applications should only use the
runtime search method described in (libtool)Finding the dlname.
* Experimental support for dynamically loaded modules, even on

8
TODO
View File

@ -1,6 +1,14 @@
For next public release:
************************
* #@%$ing SUN makes their Solaris /usr/bin/echo always interpret
backslashes, so:
var='\n'
newvar=`echo "$var"`
test "$var" = "$newvar"
returns false. We need to detect this, and use the other
echo (/usr/ucb/echo).
* Document `execute' mode, and the experimental nature of -dlopen and
-dlpreopen.

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1,13 @@
Thu Aug 28 20:58:30 1997 Gordon Matzigkeit <gord@gnu.ai.mit.edu>
* quote.test (echo): Change test to version that uses printf.
Be less strict about return results.
Wed Aug 27 23:22:06 1997 Gordon Matzigkeit <gord@gnu.ai.mit.edu>
* quote.test (echo): Add the test for a non-backslash-mangling
echo.
Tue Aug 26 13:39:40 1997 Gordon Matzigkeit <gord@gnu.ai.mit.edu>
* quote.test: New torture test for libtool metacharacter quoting.

View File

@ -13,8 +13,34 @@ fi
# Do the torture test.
status=0
echo=echo
if test X`$echo '\t'` = 'X\t'; then :
else
# The Solaris and AIX default echo program unquotes backslashes.
# This makes it impossible to quote backslashes using
# echo "$something" | sed 's/\\/\\\\/g'
# So, we emulate echo with printf '%s\n'
echo='printf %s\n'
if test X`$echo '\t'` = 'X\t'; then :
else
# Oops. We have no working printf. Try to find a not-so-buggy echo.
echo=echo
IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:"
save_PATH="$PATH"
PATH="$PATH":/usr/ucb
for dir in $PATH; do
if test -f $dir/echo && test X`$dir/echo '\t'` = 'X\t'; then
echo="$dir/echo"
break
fi
done
IFS="$save_ifs"
PATH="$save_PATH"
fi
fi
for mode in compile link install; do
echo "= $mode mode"
$echo "== $mode mode"
# Unfortunately, without an array data type, it is nearly impossible
# to protect libtool from metacharacters in filenames. So, we just
@ -42,28 +68,28 @@ for mode in compile link install; do
esac
# Trivial.
echo "TRYING: no quoting"
$echo "= trying: no quoting"
result=`$libtool -n --mode=$mode $preargs "${flag}test" $postargs` || status=1
case "$result" in
*"$preargs ${flag}test $postargs"*)
echo "PASSED: $result"
*"$preargs ${flag}test "*)
$echo "= passed: $result"
;;
*)
echo "FAILED: $result"
$echo "= failed: $result"
status=1
;;
esac
# Metacharacters that should be backslashified.
for mchar in \\ \" \$; do
echo "TRYING: \\$mchar quoting"
$echo "= trying: \\$mchar quoting"
result=`$libtool -n --mode=$mode $preargs "${flag}${mchar}test${mchar}" $postargs` || status=1
case "$result" in
*"$preargs ${flag}\\${mchar}test\\${mchar} $postargs"*)
echo "PASSED: $result"
*"$preargs ${flag}\\${mchar}test\\${mchar} "*)
$echo "= passed: $result"
;;
*)
echo "FAILED: $result"
$echo "= failed: $result"
status=1
;;
esac
@ -73,14 +99,14 @@ for mode in compile link install; do
for mchar in "[" "]" "~" "#" "^" "&" "*" "(" ")" "{" "}" "|" ";" "<" ">" "?" \
"'" " " " "; do
echo "TRYING: \"$mchar\" quoting"
$echo "= trying: \"$mchar\" quoting"
result=`$libtool -n --mode=$mode $preargs "${flag}${mchar}test${mchar}" $postargs` || status=1
case "$result" in
*"$preargs \"${flag}${mchar}test${mchar}\" $postargs"*)
echo "PASSED: $result"
*"$preargs \"${flag}${mchar}test${mchar}\" "*)
$echo "= passed: $result"
;;
*)
echo "FAILED: $result"
$echo "= failed: $result"
status=1
;;
esac