Skip to content
  • Alan Modra's avatar
    Make gold testsuite work with CC and CXX specifying -B · 5acaada7
    Alan Modra authored
    The patch allows the gold testsuite to pass when using something like
    the following configure line, which works for the rest of the binutils
    testsuite.  At least, it does if you don't configure your gcc with any
    of the options that force a particular path to as or ld.
    
    gccdir="/home/alan/build/gcc/prev-"
    gccsrc="/home/alan/src/gcc.git"
    gcctarg="x86_64-linux"
    CC="${gccdir}gcc/xgcc -B${gccdir}gcc/" \
    CXX="${gccdir}gcc/xg++ -B${gccdir}gcc/ -I${gccdir}$gcctarg/libstdc++-v3/include -I${gccdir}$gcctarg/libstdc++-v3/include/$gcctarg -I${gccsrc}/libstdc++-v3/libsupc++ -L${gccdir}$gcctarg/libstdc++-v3/src/.libs/" \
    ~/src/binutils-gdb/configure ...
    
    gold's -Bgcctestdir/ option must come before the -B supplied by $CC
    or $CXX, in order to pick up the linker we want to test.  Also when
    using a not-yet-installed gcc, it is necessary to provide a collect-ld
    in gcctestdir/ as otherwise a collect-ld script in -B${gccdir}gcc/
    will be used and the wrong linker tested.
    
    Besides this, the patch fixes some bugs: The $COMPILE -D_FORTIFY_SOURCE
    edit was wrong (but worked for usual values), and the $CXXLINK_S edit
    unnecessarily but harmlessly used extra backslash quoting.  See
    posix shell documentation regarding quoting, or
    www.gnu.org/software/bash/manual/bashref.html#Command-Substitution
    
    Also, -Bgcctestdir/ in one place makes it less likely a new test will
    be added that accidentally lacks the option.
    
    	* Makefile.am (gcctestdir1/ld): Use $@ and absolute paths.
    	(gcctestdir1/collect-ld): New.
    	(ld1_DEPENDENCIES): Add gcctestdir1/collect-ld.
    	(ld1_LDFLAGS): Remove -Bgcctestdir1/.
    	(editcc1, ld1_LINK): Define.
    	(gcctestdir2/ld, gcctestdir2/collect-ld, ld2_DEPENDENCIES),
    	(ld2_LDFLAGS, editcc2, ld2_LINK),
    	(ld1_r_DEPENDENCIES, ld1_r_LDFLAGS, ld1_r_LINK),
    	(gcctestdir2-r/ld, gcctestdir2-r/collect-ld, ld2_r_DEPENDENCIES),
    	(ld2_r_LDFLAGS, editcc2r, ld2_r_LINK),
    	(gcctestdir3/ld, gcctestdir3/collect-ld, ld3_DEPENDENCIES),
    	(ld3_LDFLAGS, editcc3, ld3_LINK),
    	(gcctestdir4/ld, gcctestdir4/collect-ld, ld4_DEPENDENCIES),
    	(ld4_LDFLAGS, editcc4, ld4_LINK): Similarly.
    	* Makefile.in: Regenerate.
    	* testsuite/Makefile.am (editcc): Define sed command to put
    	our -B option first.  Remove other occurrences of -Bgcctestdir/
    	throughout file.
    	(editcc1): Define for -D_FORTIFY_SOURCE stripping.
    	(editcc2): Define for -static-libgcc/libstdc++ stripping.
    	(LINK1, CXXLINK1): Don't use CCLD or CXXLD.
    	(CCLD, CXXLD, COMPILE, LINK, CXXCOMPILE, CXXLINK, CXXLINK_S): Define
    	using editcc macros.
    	(gcctestdir/collect-ld): New rule, add as a dependency of..
    	(gcctestdir/ld): ..this.  Use $@ and abs_top_buildir.
    	(gcctestdir/as): Use $@.
    	* testsuite/Makefile.in: Regenerate.
    	* testsuite/incremental_test.sh (actual): Match collect-ld too.
    5acaada7
To find the state of this project's repository at the time of any of these versions, check out the tags.