libstdc++: fix testing with uninstalled compilers, redux In r17-2449-g7f2bba0d2d0821 I attempted to make this change, but accidentally broke the testsuite parallelization logic. This happened because gcc-defs and libstdc++ both did: rename runtest_file_p gcc_parallelize_saved_runtest_file_p ... in order to replace runtest_file_p with a version that returns true if the test, besides the usual check, also falls into the partition a given parallelized runtest instance executes. This meant that each call to runtest_file_p was incrementing the partition counter twice (because it called gcc_parallel_test_run_p twice; once through gcc_parallelize_saved_runtest_file_p - which now became the gcc-defs copy of the replaced runtest_file_p - and once directly). The copy of this logic in libstdc++ is supposed to be identical (and indeed was up to an accidental divergence as a result of copy-pastery) to the one in gcc-defs, so we simply remove the former. gcc-defs also defines other things that have parallels in the libstdc++ testsuite logic. To avoid clobbering the libstdc++ definitions, I've moved the load_libs that loaded them later. This seems to have been the intention (a comment above the load_lib block states "compiler routines, then ours") at some point. It may be worth looking into this again to see whether we can deduplicate more code. But, when I looked at it, the logic seemed distinct enough not to risk removing it for now. libstdc++-v3/ChangeLog: * testsuite/lib/libstdc++.exp: Load gcc-defs.exp. Load prune.exp and dg-options.exp after GCC testsuite libs. (libstdc++_init): Use gcc-set-multilib-library-path to calculate LD_LIBRARY_PATH for installed G++ compilers.
diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp index b44c240..cda2312 100644 --- a/libstdc++-v3/testsuite/lib/libstdc++.exp +++ b/libstdc++-v3/testsuite/lib/libstdc++.exp
@@ -65,8 +65,6 @@ # compiler routines, then ours load_gcc_lib target-supports.exp load_gcc_lib target-supports-dg.exp -load_lib prune.exp -load_lib dg-options.exp load_gcc_lib scanasm.exp load_gcc_lib scandump.exp load_gcc_lib scantree.exp @@ -75,7 +73,10 @@ load_gcc_lib timeout-dg.exp load_gcc_lib wrapper.exp load_gcc_lib target-utils.exp +load_gcc_lib gcc-defs.exp load_gcc_lib dg-test-cleanup.exp +load_lib prune.exp +load_lib dg-options.exp # Useful for debugging. Pass the name of a variable and the verbosity # threshold (number of -v's on the command line). @@ -247,13 +248,14 @@ } } } - - set_ld_library_path_env_vars - if [info exists env(LD_LIBRARY_PATH)] { - verbose -log "LD_LIBRARY_PATH = $env(LD_LIBRARY_PATH)" - } } else { set compiler [transform "g++"] + append ld_library_path [gcc-set-multilib-library-path $compiler] + } + + set_ld_library_path_env_vars + if [info exists env(LD_LIBRARY_PATH)] { + verbose -log "LD_LIBRARY_PATH = $env(LD_LIBRARY_PATH)" } # Set the default timeout for v3 tests. @@ -1641,81 +1643,6 @@ set additional_prunes "" -if { [info exists env(GCC_RUNTEST_PARALLELIZE_DIR)] \ - && [info procs runtest_file_p] != [list] \ - && [info procs gcc_parallelize_saved_runtest_file_p] == [list] } then { - global gcc_runtest_parallelize_counter - global gcc_runtest_parallelize_counter_minor - global gcc_runtest_parallelize_enable - global gcc_runtest_parallelize_dir - global gcc_runtest_parallelize_last - - set gcc_runtest_parallelize_counter 0 - set gcc_runtest_parallelize_counter_minor 0 - set gcc_runtest_parallelize_enable 1 - set gcc_runtest_parallelize_dir [getenv GCC_RUNTEST_PARALLELIZE_DIR] - set gcc_runtest_parallelize_last 0 - - proc gcc_parallel_test_run_p { testcase } { - global gcc_runtest_parallelize_counter - global gcc_runtest_parallelize_counter_minor - global gcc_runtest_parallelize_enable - global gcc_runtest_parallelize_dir - global gcc_runtest_parallelize_last - - if { $gcc_runtest_parallelize_enable == 0 } { - return 1 - } - - # Only test the filesystem every 10th iteration - incr gcc_runtest_parallelize_counter_minor - if { $gcc_runtest_parallelize_counter_minor == 10 } { - set gcc_runtest_parallelize_counter_minor 0 - } - if { $gcc_runtest_parallelize_counter_minor != 1 } { - #verbose -log "gcc_parallel_test_run_p $testcase $gcc_runtest_parallelize_counter $gcc_runtest_parallelize_last" - return $gcc_runtest_parallelize_last - } - - set path $gcc_runtest_parallelize_dir/$gcc_runtest_parallelize_counter - - if {![catch {open $path {RDWR CREAT EXCL} 0600} fd]} { - close $fd - set gcc_runtest_parallelize_last 1 - #verbose -log "gcc_parallel_test_run_p $testcase $gcc_runtest_parallelize_counter 1" - incr gcc_runtest_parallelize_counter - return 1 - } - set gcc_runtest_parallelize_last 0 - #verbose -log "gcc_parallel_test_run_p $testcase $gcc_runtest_parallelize_counter 0" - incr gcc_runtest_parallelize_counter - return 0 - } - - proc gcc_parallel_test_enable { val } { - global gcc_runtest_parallelize_enable - set gcc_runtest_parallelize_enable $val - } - - rename runtest_file_p gcc_parallelize_saved_runtest_file_p - proc runtest_file_p { runtests testcase } { - if ![gcc_parallelize_saved_runtest_file_p $runtests $testcase] { - return 0 - } - return [gcc_parallel_test_run_p $testcase] - } - -} else { - - proc gcc_parallel_test_run_p { testcase } { - return 1 - } - - proc gcc_parallel_test_enable { val } { - } - -} - # Utility functions, invoked via dg-final. # Compare output file written by test to expected result.