Rehi Janis, Good to see you active again :)
Perhaps you want to pursue this? We'd need to suggest this to dejagnu, have it in a release and bump the minimum required deja version of gcc. So it may take time but IMO would be a worthwhile cleanup. Or do you see a better way to handle this properly? The first patch below is the dejagnu part, the other patch is the corresponding follow-up for gcc. cheers, Bernhard On Fri, Mar 16, 2012 at 03:59:58PM +0100, Bernhard Reutner-Fischer wrote: >On Fri, Mar 16, 2012 at 11:04:45AM +0100, Bernhard Reutner-Fischer wrote: > >>The underlying problem is that dejagnu's runtest.exp only allows for a >>single "libdir" where it searches for includes -- see comment in >>libgomp.exp and libitm.exp >> >>While just adding more and more load_gcc_lib calls to users outside of >>gcc/ is the easy way out, it is (IMHO) error prone (i ran make check >>just in gcc and not in toplevel, fixed my script now). >> >>It would be desirable if dejagnu would just find all the currently >>load_gcc_lib'ed files on its own, via load_lib. >>One could >>- teach dejagnu to treat libdir as a list of paths > >The attached works for me for a toplevel make -k check (double-checked >with individual make check in lib{gomp,itm}). I do not intend to pursue >this any further. >runtest.exp: add libdirs list for load_lib() > >libgomp wants to load .exp files from ../gcc/testsuite/lib. >Instrument load_lib to be able to find the files. >Previously we used to have a helper proc that had to first load all >dependent .exp manually and then, again manually, the desired .exp. > >2012-03-16 Bernhard Reutner-Fischer <al...@gcc.gnu.org> > > * runtest.exp (libdirs): New global list. > (load_lib): Append libdirs to search_and_load_files directories. > >diff --git a/runtest.exp b/runtest.exp >index 4bfed83..8e6a7de 100644 >--- a/runtest.exp >+++ b/runtest.exp >@@ -589,7 +589,7 @@ proc lookfor_file { dir name } { > # source tree, (up one or two levels), then in the current dir. > # > proc load_lib { file } { >- global verbose libdir srcdir base_dir execpath tool >+ global verbose libdir libdirs srcdir base_dir execpath tool > global loaded_libs > > if {[info exists loaded_libs($file)]} { >@@ -597,8 +597,11 @@ proc load_lib { file } { > } > > set loaded_libs($file) "" >- >- if { [search_and_load_file "library file" $file [list ../lib $libdir >$libdir/lib [file dirname [file dirname $srcdir]]/dejagnu/lib $srcdir/lib >$execpath/lib . [file dirname [file dirname [file dirname >$srcdir]]]/dejagnu/lib]] == 0 } { >+ set search_dirs [list ../lib $libdir $libdir/lib [file dirname [file >dirname $srcdir]]/dejagnu/lib $srcdir/lib $execpath/lib . [file dirname [file >dirname [file dirname $srcdir]]]/dejagnu/lib] >+ if {[info exists libdirs]} { >+ lappend search_dirs $libdirs >+ } >+ if { [search_and_load_file "library file" $file $search_dirs ] == 0 } { > send_error "ERROR: Couldn't find library file $file.\n" > exit 1 > } >@@ -652,6 +655,8 @@ set libdir [file dirname $execpath]/dejagnu > if {[info exists env(DEJAGNULIBS)]} { > set libdir $env(DEJAGNULIBS) > } >+# list of extra directories for load_lib >+set libdirs {} > > verbose "Using $libdir to find libraries" > >libgomp/ChangeLog > >2012-03-16 Bernhard Reutner-Fischer <al...@gcc.gnu.org> > > * testsuite/lib/libgomp.exp: Set libdirs. Remove now redundant > manual inclusion of gfortran-dg's dependencies. > >libitm/ChangeLog > >2012-03-16 Bernhard Reutner-Fischer <al...@gcc.gnu.org> > > * testsuite/lib/libitm.exp: Set libdirs. Remove now redundant > manual inclusion of gcc-dg's dependencies. > > >diff --git a/libgomp/testsuite/lib/libgomp.exp >b/libgomp/testsuite/lib/libgomp.exp >index 02909f8..54e1e652 100644 >--- a/libgomp/testsuite/lib/libgomp.exp >+++ b/libgomp/testsuite/lib/libgomp.exp >@@ -1,32 +1,12 @@ >-# Damn dejagnu for not having proper library search paths for load_lib. >-# We have to explicitly load everything that gcc-dg.exp wants to load. >+global libdirs >+lappend libdirs $srcdir/../../gcc/testsuite/lib > >-proc load_gcc_lib { filename } { >- global srcdir loaded_libs >+load_lib dg.exp > >- load_file $srcdir/../../gcc/testsuite/lib/$filename >- set loaded_libs($filename) "" >-} >+# BUG: gcc-dg calls gcc-set-multilib-library-path but does not load gcc-defs! >+load_lib gcc-defs.exp > >-load_lib dg.exp >-load_gcc_lib file-format.exp >-load_gcc_lib target-supports.exp >-load_gcc_lib target-supports-dg.exp >-load_gcc_lib scanasm.exp >-load_gcc_lib scandump.exp >-load_gcc_lib scanrtl.exp >-load_gcc_lib scantree.exp >-load_gcc_lib scanipa.exp >-load_gcc_lib prune.exp >-load_gcc_lib target-libpath.exp >-load_gcc_lib wrapper.exp >-load_gcc_lib gcc-defs.exp >-load_gcc_lib torture-options.exp >-load_gcc_lib timeout.exp >-load_gcc_lib timeout-dg.exp >-load_gcc_lib fortran-modules.exp >-load_gcc_lib gcc-dg.exp >-load_gcc_lib gfortran-dg.exp >+load_lib gfortran-dg.exp > > set dg-do-what-default run > >diff --git a/libitm/testsuite/lib/libitm.exp b/libitm/testsuite/lib/libitm.exp >index f322ed5..1ac8f31 100644 >--- a/libitm/testsuite/lib/libitm.exp >+++ b/libitm/testsuite/lib/libitm.exp >@@ -12,34 +12,15 @@ > # along with this program; if not, write to the Free Software > # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, > USA. > >-# Damn dejagnu for not having proper library search paths for load_lib. >-# We have to explicitly load everything that gcc-dg.exp wants to load. >+global libdirs >+lappend libdirs $srcdir/../../gcc/testsuite/lib > >-proc load_gcc_lib { filename } { >- global srcdir loaded_libs >+load_lib dg.exp > >- load_file $srcdir/../../gcc/testsuite/lib/$filename >- set loaded_libs($filename) "" >-} >+# BUG: gcc-dg calls gcc-set-multilib-library-path but does not load gcc-defs! >+load_lib gcc-defs.exp > >-load_lib dg.exp >-load_gcc_lib file-format.exp >-load_gcc_lib target-supports.exp >-load_gcc_lib target-supports-dg.exp >-load_gcc_lib scanasm.exp >-load_gcc_lib scandump.exp >-load_gcc_lib scanrtl.exp >-load_gcc_lib scantree.exp >-load_gcc_lib scanipa.exp >-load_gcc_lib prune.exp >-load_gcc_lib target-libpath.exp >-load_gcc_lib wrapper.exp >-load_gcc_lib gcc-defs.exp >-load_gcc_lib torture-options.exp >-load_gcc_lib timeout.exp >-load_gcc_lib timeout-dg.exp >-load_gcc_lib fortran-modules.exp >-load_gcc_lib gcc-dg.exp >+load_lib gcc-dg.exp > > set dg-do-what-default run >