ld/testsuite: allow to force another directory for gcc linker

Add a new variable "ld_testsuite_tmpdir" to enable manual configuration
of the -B flag added to gcc calls. This flag ensure that gcc is invoking
the linker and the assembler we want to test.

When launching the testsuite outside of the build tree, the links made
by the testsuite in tmpdir/ld will point to nothing. Thus, even with the
PATH correctly setup towards the linker directory, gcc might end up
falling back to its default linker. Hence this variable to ensure that
gcc, whatever happens, is using the linker we want.

ld/ChangeLog:

	* testsuite/config/default.exp: Allow to change -B flag with
	ld_testsuite_bindir variable.
This commit is contained in:
Clément Chigot 2022-09-14 15:53:18 +02:00
parent 3581ae2d45
commit b59f8a90ba

View File

@ -57,14 +57,21 @@ remote_exec host "mkdir -p tmpdir"
# Make symlinks from tmpdir/ld to the linker and assembler in the
# build tree, so that we can use a -B option to gcc to force it to use
# the newly built linker and assembler.
if {![file isdirectory tmpdir/ld]} then {
catch "exec mkdir tmpdir/ld" status
catch "exec ln -s ../../ld-new tmpdir/ld/ld" status
catch "exec ln -s ld tmpdir/ld/collect-ld" status
catch "exec ln -s ../../../gas/as-new tmpdir/ld/as" status
# the newly built linker and assembler.
# The variable ld_testsuite_bindir allows to provide another directory
# for -B option. This can be useful when launching the testsuite outside
# the build tree as the symlinks will be wrong in this case.
if {[info exists ld_testsuite_bindir]} {
set gcc_B_opt "-B$ld_testsuite_bindir/"
} else {
if {![file isdirectory tmpdir/ld]} then {
catch "exec mkdir tmpdir/ld" status
catch "exec ln -s ../../ld-new tmpdir/ld/ld" status
catch "exec ln -s ld tmpdir/ld/collect-ld" status
catch "exec ln -s ../../../gas/as-new tmpdir/ld/as" status
}
set gcc_B_opt "-B[pwd]/tmpdir/ld/"
}
set gcc_B_opt "-B[pwd]/tmpdir/ld/"
# load the linker path
set ld_L_opt ""