ld/testsuite: allow to force another directory for gcc linker
authorClément Chigot <chigot@adacore.com>
Wed, 14 Sep 2022 13:53:18 +0000 (15:53 +0200)
committerClément Chigot <chigot@adacore.com>
Thu, 22 Sep 2022 07:23:18 +0000 (09:23 +0200)
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.

ld/testsuite/config/default.exp

index 103b426bbd8cd5b7f5509294256fa91804e80eda..c1175c42760969a35907a65f7872640a29b3495f 100644 (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
-}
-set gcc_B_opt "-B[pwd]/tmpdir/ld/"
+# 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/"
+}
 
 # load the linker path
 set ld_L_opt ""