Re: libtool-2.2.11a on AIX 5.3 current git master / followup on the old test suite and failures in the new testsuit
Hello Ralf, On 21.08.2010 10:17, Ralf Wildenhues wrote: * Rainer Tammer wrote on Sat, Aug 07, 2010 at 09:35:56AM CEST: I have added one additional patch (as I did for the last run): # diff /daten/source/libtool-2.2.11a/tests/defs.in defs.in [...] # On AIX, shared libraries remain loaded in memory after use if they # are world-readable, until root issues slibclean. On NFS, this causes # a testsuite rerun to fail to clean up test group directories. Avoid # this with a suitable umask. Do not do this on other systems, for # example HP-UX suffers unless shared libraries are mode 555. case $host_os in aix*) umask o-rwx ;; esac I have pushed your patch now, as below. OK, this is working. Now I get some new errors from the old test suite: # grep FAIL check.log FAIL: tests/f77demo-exec.test FAIL: tests/f77demo-exec.test FAIL: tests/fcdemo-exec.test FAIL: tests/fcdemo-exec.test ... This is because the LIBPATH is not OK: This has been fixed since in git Libtool. Sorry, this is still not working with the current git. ... FAIL: tests/f77demo-exec.test PASS: tests/f77demo-shared.test PASS: tests/f77demo-make.test FAIL: tests/f77demo-exec.test PASS: tests/fcdemo-static.test PASS: tests/fcdemo-make.test PASS: tests/fcdemo-exec.test PASS: tests/fcdemo-conf.test PASS: tests/fcdemo-make.test FAIL: tests/fcdemo-exec.test PASS: tests/fcdemo-shared.test PASS: tests/fcdemo-make.test FAIL: tests/fcdemo-exec.test 4 of 124 tests failed Please report to bug-libt...@gnu.org Which commit should fix the problem. Cheers, and thanks again, Ralf Bye Rainer Tammer 2010-08-21 Rainer Tammer tam...@... (tiny change) Avoid issues with AIX resident shared libraries in old testsuite. * tests/defs.m4sh [aix]: Remove file mode permission for others, so shared libraries are not kept in memory after execution. Fixes failures of repeated mdemo-inst.test with on AIX 5.3. diff --git a/tests/defs.m4sh b/tests/defs.m4sh index 1230555..183783e 100644 --- a/tests/defs.m4sh +++ b/tests/defs.m4sh @@ -130,6 +130,7 @@ func_get_config objext objdir CC host +host_os host_alias build build_alias $LIBTOOL --config : fatal @@ -351,6 +352,15 @@ m4dir=$srcdir/libltdl/m4 auxdir=$srcdir/libltdl/config scripts=$auxdir/ltmain.m4sh $srcdir/libtoolize.m4sh +# On AIX, shared libraries remain loaded in memory after use if they +# are world-readable, until root issues slibclean. On NFS, this causes +# a testsuite rerun to fail to clean up test group directories. Avoid +# this with a suitable umask. Do not do this on other systems, for +# example HP-UX suffers unless shared libraries are mode 555. +case $host_os in +aix*) umask o-rwx ;; +esac + func_msg Running $progname # Local Variables:
Re: libtool-2.2.11a on AIX 5.3 current git master / followup on the old test suite and failures in the new testsuit
* Rainer Tammer wrote on Sat, Aug 07, 2010 at 09:35:56AM CEST: I have added one additional patch (as I did for the last run): # diff /daten/source/libtool-2.2.11a/tests/defs.in defs.in [...] # On AIX, shared libraries remain loaded in memory after use if they # are world-readable, until root issues slibclean. On NFS, this causes # a testsuite rerun to fail to clean up test group directories. Avoid # this with a suitable umask. Do not do this on other systems, for # example HP-UX suffers unless shared libraries are mode 555. case $host_os in aix*) umask o-rwx ;; esac I have pushed your patch now, as below. Now I get some new errors from the old test suite: # grep FAIL check.log FAIL: tests/f77demo-exec.test FAIL: tests/f77demo-exec.test FAIL: tests/fcdemo-exec.test FAIL: tests/fcdemo-exec.test ... This is because the LIBPATH is not OK: This has been fixed since in git Libtool. Cheers, and thanks again, Ralf 2010-08-21 Rainer Tammer tam...@... (tiny change) Avoid issues with AIX resident shared libraries in old testsuite. * tests/defs.m4sh [aix]: Remove file mode permission for others, so shared libraries are not kept in memory after execution. Fixes failures of repeated mdemo-inst.test with on AIX 5.3. diff --git a/tests/defs.m4sh b/tests/defs.m4sh index 1230555..183783e 100644 --- a/tests/defs.m4sh +++ b/tests/defs.m4sh @@ -130,6 +130,7 @@ func_get_config objext objdir CC host +host_os host_alias build build_alias $LIBTOOL --config : fatal @@ -351,6 +352,15 @@ m4dir=$srcdir/libltdl/m4 auxdir=$srcdir/libltdl/config scripts=$auxdir/ltmain.m4sh $srcdir/libtoolize.m4sh +# On AIX, shared libraries remain loaded in memory after use if they +# are world-readable, until root issues slibclean. On NFS, this causes +# a testsuite rerun to fail to clean up test group directories. Avoid +# this with a suitable umask. Do not do this on other systems, for +# example HP-UX suffers unless shared libraries are mode 555. +case $host_os in +aix*) umask o-rwx ;; +esac + func_msg Running $progname # Local Variables:
another func_append inlining regression (was: libtool-2.2.11a on AIX 5.3 current git master / followup on the old test suite and failures in the new testsuit)
* Rainer Tammer wrote on Thu, Aug 05, 2010 at 09:25:14AM CEST: The new test suite still yields many failures in comparison to 2.2.8. I assume most if not all of the regressions are due to a single issue: # grep FAILED check.log 38: Link order of deplibs FAILED (link-order2.at:138) That fails more or less like this (taken from a test run of mine) in git master: ../../libtool/tests/link-order2.at:123: $LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS $static -o main$EXEEXT main.$OBJEXT libb.la -la0 + /home/rwild/lt/build-powerpc-ibm-aix5.3.0.0/libtool --mode=link cc -qlanglvl=extc89 -g -no-undefined -L/home/rwild/lt/build-powerpc-ibm-aix5.3.0.0/tests/t estsuite.dir/039/lib -o main main.o libb.la -la0 stderr: stdout: libtool: link: cc -qlanglvl=extc89 -g -o .libs/main main.o -L/home/rwild/lt/build-powerpc-ibm-aix5.3.0.0/tests/testsuite.dir/039/.libs -L/home/rwild/lt/bui ld-powerpc-ibm-aix5.3.0.0/tests/testsuite.dir/039/lib -L./.libs -lb -la1 -la0 -Wl,-blibpath::/home/rwild/lt/build-powerpc-ibm-aix5.3.0.0/tests/testsuite.dir /039/lib:/usr/vac/lib:/usr/lib:/lib Note the double colon after -blibpath, which is due to a regression in v2.2.10-40-g0da7d80 fixed with the patch below. I wish I'd never approved that patch, this one took me so long to find ... Thanks, Ralf Fix another typo on Add func_append_quoted and do... * libltdl/config/ltmain.m4sh (func_mode_link): Fix regression in computation of finalize_rpath introduced in v2.2.10-40-g0da7d80, fixing several testsuite failures on AIX. Report by Rainer Tammer. diff --git a/libltdl/config/ltmain.m4sh b/libltdl/config/ltmain.m4sh index fad2e64..e5065fb 100644 --- a/libltdl/config/ltmain.m4sh +++ b/libltdl/config/ltmain.m4sh @@ -7568,7 +7568,7 @@ EOF *$hardcode_libdir_separator$libdir$hardcode_libdir_separator*) ;; *) - func_append hardcode_libdirs _libdirs$hardcode_libdir_separator$libdir + func_append hardcode_libdirs $hardcode_libdir_separator$libdir ;; esac fi
revert unwanted enabling of libtool tracing (was: libtool-2.2.11a on AIX 5.3 current git master / followup on the old test suite and failures in the new testsuit)
Rainer, I'm going through things in some random order, and it will take me at least a little while to get through them all. * Rainer Tammer wrote on Thu, Aug 05, 2010 at 09:25:14AM CEST: 38. link-order2.at:46: testing Link order of deplibs ... libtool: compile: cc_r -qlanglvl=extc89 -g -c a0.c -DPIC -o .libs/a0.o libtool: compile: cc_r -qlanglvl=extc89 -g -c a1.c -DPIC -o .libs/a1.o libtool: compile: cc_r -qlanglvl=extc89 -g -c b.c -DPIC -o .libs/b.o libtool: link: /usr/bin/nm -B -BCpg .libs/a0.o | awk '{ if ((($ 2 == T) || ($ 2 == D) || ($ 2 == B)) (substr($ 3,1,1) != .)) { print $ 3 } }' | sort -u .libs/liba0.exp libtool: link: cc_r -qlanglvl=extc89 -Wl,-bM:SRE -o .libs/liba0.so.0 .libs/a0.o -L/daten/source/libtool-2.2.11a/tests/testsuite.dir/038/lib -lc -Wl,-bnoentry -qlanglvl=extc89 -Wl,-bE:.libs/li libtool: link: ar cru .libs/liba0.a .libs/liba0.so.0 libtool: link: ( cd .libs rm -f liba0.la ln -s ../liba0.la liba0.la ) libtool: install: cp .libs/liba0.a /daten/source/libtool-2.2.11a/tests/testsuite.dir/038/lib/liba0.a libtool: install: cp .libs/liba0.lai /daten/source/libtool-2.2.11a/tests/testsuite.dir/038/lib/liba0.la libtool: enabling shell trace mode + test 2 -gt 0 + opt=--finish + shift + opt_finish=: + set dummy --mode finish /daten/source/libtool-2.2.11a/tests/testsuite.dir/038/lib Waitaminute. Why is libtool enabling trace mode here? That wasn't requested anywhere; and it leads to huge log files. *time passes* git bisect converges at v2.2.10-34-gb8dd17a, the introduction of getopt.m4sh. I'm pushing the patch below to undo that. Thanks, Ralf Ensure not to reverse preserving of --debug for relinking/finish. * libltdl/config/ltmain.m4sh (func_check_version_match): Only preserve '--debug' switch if $opt_debug is not equal to ':'. * tests/help.at (debug tracing): New test group. Report by Rainer Tammer. diff --git a/libltdl/config/ltmain.m4sh b/libltdl/config/ltmain.m4sh index 32a41c7..fad2e64 100644 --- a/libltdl/config/ltmain.m4sh +++ b/libltdl/config/ltmain.m4sh @@ -393,7 +393,7 @@ M4SH_GETOPTS( fi # preserve --debug - $opt_debug func_append preserve_args --debug + test $opt_debug = : || func_append preserve_args --debug case $host in *cygwin* | *mingw* | *pw32* | *cegcc*) diff --git a/tests/help.at b/tests/help.at index e1bcbf5..c4eaa87 100644 --- a/tests/help.at +++ b/tests/help.at @@ -92,3 +92,100 @@ AT_CHECK([$LIBTOOL cl liba.la], [], [ignore], [ignore]) AT_CLEANUP + + +AT_SETUP([debug tracing]) + +AT_DATA([a.c], +[[int a () { return 0; } +]]) + +AT_DATA([b.c], +[[extern int a (); +int b () { return a (); } +]]) + +AT_DATA([main.c], +[[extern int b (); +int main () { return b (); } +]]) + +inst=`pwd`/inst +libdir=$inst/lib +bindir=$inst/bin +mkdir $inst $libdir $bindir + +# This test will not work correctly if --debug is passed. +AT_CHECK([case $LIBTOOL $CC $CPPFLAGS $CFLAGS $LDFLAGS in ]dnl +[ *\ --debug\ *) exit 77;; *) :;; esac]) + +check_trace () +{ + if test X$trace = X--debug; then +AT_CHECK([grep 'enabling shell trace mode' stdout stderr], [0], [ignore]) +AT_CHECK([grep ' --mode' stderr], [0], [ignore]) + else +AT_CHECK([grep 'enabling shell trace mode' stdout stderr], [1]) +AT_CHECK([grep ' --mode' stderr], [1]) + fi +} + +orig_LIBTOOL=$LIBTOOL +for trace in '' --debug; do + LIBTOOL=$orig_LIBTOOL $trace + + # Hypothesis: debug output should happen if (and only if) --debug is + # passed, for compile, link, install, uninstall, and clean modes. + AT_CHECK([$LIBTOOL --mode=compile $CC $CPPFLAGS $CFLAGS -c a.c], + [], [stdout], [stderr]) + check_trace + AT_CHECK([$LIBTOOL --mode=compile $CC $CPPFLAGS $CFLAGS -c b.c], + [], [stdout], [stderr]) + check_trace + AT_CHECK([$CC $CPPFLAGS $CFLAGS -c main.c], [], [ignore], [ignore]) + AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o liba.la a.lo ]dnl + [ -no-undefined -rpath $libdir], [], [stdout], [stderr]) + check_trace + AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o libb.la b.lo ]dnl + [ -no-undefined -rpath $libdir liba.la], [], [stdout], [stderr]) + check_trace + AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o main$EXEEXT main.$OBJEXT ]dnl + [libb.la], [], [stdout], [stderr]) + check_trace + LT_AT_NOINST_EXEC_CHECK([./main], [], [], [stdout], [stderr]) + check_trace + + AT_CHECK([$LIBTOOL --mode=install cp liba.la libb.la $libdir], + [], [stdout], [stderr]) + check_trace + + # Hypothesis: --debug should be passed to relink mode if (and only if) + # it was passed at link mode. + AT_CHECK([$orig_LIBTOOL --mode=install cp liba.la libb.la $libdir], + [], [stdout], [stderr]) + if grep ': relinking ' stdout stderr; then +if test X$trace = X--debug; then + AT_CHECK([grep ' --mode=relink' stdout stderr | grep ' --debug '], + [0], [ignore]) +else + AT_CHECK([grep '