yann@1: See http://gcc.gnu.org/PR12010 yann@1: yann@1: g++ testsuite fixes for cross-compilers, Dan Kegel, Ixia Communications, 12 July 2003 yann@1: yann@1: The first hunk fixes the error yann@1: yann@1: /testsuite_flags: /testsuite_flags: No such file or directory yann@1: while executing yann@1: "exec sh ${odir_v3}/testsuite_flags --build-includes" yann@1: (procedure "g++_include_flags" line 21) yann@1: invoked from within yann@1: "g++_include_flags [get_multilibs] " yann@1: (procedure "g++_init" line 63) yann@1: invoked from within yann@1: "${tool}_init $test_file_name" yann@1: (procedure "runtest" line 19) yann@1: invoked from within yann@1: "runtest $test_name" yann@1: ("foreach" body line 42) yann@1: invoked from within yann@1: ... yann@1: make[1]: [check-g++] Error 1 (ignored) yann@1: yann@1: The fix isn't especially pretty, but it worked for me, and can't hurt the yann@1: more common native compiler case. Maybe someone who knows the code better yann@1: can come up with a better fix. yann@1: yann@1: The second hunk fixes the error yann@1: yann@1: sh: error while loading shared libraries: /opt/cegl-2.0/powerpc-405-linux-gnu/gcc-3.2.3-glibc-2.2.5/powerpc-405-linux-gnu/./lib/libdl.so.2: ELF file data encoding not little-endian yann@1: yann@1: when trying to compile g++ testcases (!); setting up yann@1: the shared library environment when running crosstests of g++ yann@1: should either be done by a special board file, or by yann@1: setting up a remote chroot environment (see http://kegel.com/crosstool), yann@1: not by blithely setting LD_LIBRARY_PATH on the local system. yann@1: yann@1: --- gcc-3.2.3/gcc/testsuite/lib/g++.exp.old Fri Jul 11 15:42:47 2003 yann@1: +++ gcc-3.2.3/gcc/testsuite/lib/g++.exp Sat Jul 12 12:57:07 2003 yann@1: @@ -72,6 +72,8 @@ yann@1: # yann@1: proc g++_include_flags { paths } { yann@1: global srcdir yann@1: + global objdir yann@1: + global target_triplet yann@1: global HAVE_LIBSTDCXX_V3 yann@1: global TESTING_IN_BUILD_TREE yann@1: yann@1: @@ -90,6 +92,20 @@ yann@1: yann@1: if { ${HAVE_LIBSTDCXX_V3} } { yann@1: set odir_v3 [lookfor_file ${gccpath} libstdc++-v3] yann@1: + if { $odir_v3 == "" } { yann@1: + verbose "g++_include_flags: couldn't find libstdc++-v3 on first try, now looking in build directory $objdir" yann@1: + # first assume no multilibs yann@1: + set odir_v3 [lookfor_file ${objdir} "$target_triplet/libstdc++-v3"] yann@1: + } yann@1: + if { $odir_v3 == "" } { yann@1: + verbose "g++_include_flags: couldn't find libstdc++-v3 on second try, trying multilib" yann@1: + # assume multilib only one level deep yann@1: + set multisub [file tail $gccpath] yann@1: + set odir_v3 [lookfor_file ${objdir} "$target_triplet/$multisub/libstdc++-v3"] yann@1: + } yann@1: + if { $odir_v3 == "" } { yann@1: + error "Can't find libstdc++-v3" yann@1: + } yann@1: append flags [exec sh ${odir_v3}/testsuite_flags --build-includes] yann@1: } else { yann@1: set odir_v2 [lookfor_file ${gccpath} libstdc++] yann@1: @@ -192,16 +192,20 @@ yann@1: } yann@1: } yann@1: yann@1: - # On IRIX 6, we have to set variables akin to LD_LIBRARY_PATH, but yann@1: - # called LD_LIBRARYN32_PATH (for the N32 ABI) and LD_LIBRARY64_PATH yann@1: - # (for the 64-bit ABI). The right way to do this would be to modify yann@1: - # unix.exp -- but that's not an option since it's part of DejaGNU yann@1: - # proper, so we do it here. We really only need to do yann@1: - # this on IRIX, but it shouldn't hurt to do it anywhere else. yann@1: - setenv LD_LIBRARY_PATH $ld_library_path yann@1: - setenv SHLIB_PATH $ld_library_path yann@1: - setenv LD_LIBRARYN32_PATH $ld_library_path yann@1: - setenv LD_LIBRARY64_PATH $ld_library_path yann@1: + if {![is_remote target]} { yann@1: + # On IRIX 6, we have to set variables akin to LD_LIBRARY_PATH, but yann@1: + # called LD_LIBRARYN32_PATH (for the N32 ABI) and LD_LIBRARY64_PATH yann@1: + # (for the 64-bit ABI). The right way to do this would be to modify yann@1: + # unix.exp -- but that's not an option since it's part of DejaGNU yann@1: + # proper, so we do it here. We really only need to do yann@1: + # this on IRIX, but it shouldn't hurt to do it anywhere else. yann@1: + yann@1: + # Doing this causes us to be unable to run cross-compilers. yann@1: + setenv LD_LIBRARY_PATH $ld_library_path yann@1: + setenv SHLIB_PATH $ld_library_path yann@1: + setenv LD_LIBRARYN32_PATH $ld_library_path yann@1: + setenv LD_LIBRARY64_PATH $ld_library_path yann@1: + } yann@1: yann@1: return "$flags" yann@1: }