binutils/testsuite/
[platform/upstream/binutils.git] / binutils / testsuite / config / default.exp
index 6ee5eda..4c8b6e0 100644 (file)
@@ -74,21 +74,26 @@ if ![file isdirectory tmpdir] {catch "exec mkdir tmpdir" status}
 # Make a copy from tmpdir/gas/as and tmpdir/gas/ld to the assembler
 # and linker in the build tree, so that we can use a -B option to gcc
 # to force it to use the newly built assembler/linker.
-if {![file isdirectory tmpdir/gas]} then {
-    catch "exec mkdir tmpdir/gas" status
-    if {[file isfile ../gas/as-new[exe_ext]]} then {
-       catch "exec cp ../gas/as-new[exe_ext] tmpdir/gas/as[exe_ext]" status
-    } else {
-       # For non-Windows hosts there may be an executable
-       # without a .exe suffix, so try copying that instead.
-       catch "exec cp ../gas/as-new tmpdir/gas/as[exe_ext]" status
-    }
-    # This may not be needed any more...
-    if {[file isfile ../ld/ld-new[exe_ext]]} then {
-       catch "exec cp ../ld/ld-new[exe_ext] tmpdir/gas/ld[exe_ext]" status
-    } else {
-       catch "exec cp ../ld/ld-new tmpdir/gas/ld[exe_ext]" status
-    }
+if {![file isdirectory tmpdir/gas]} {catch "exec mkdir tmpdir/gas" status}
+
+proc link_or_copy { src dst } {
+    if ![catch "exec ln -sf ../../../$src tmpdir/gas/$dst" status] then {return 0}
+    if ![catch "exec ln -f ../$src tmpdir/gas/$dst" status] then {return 0}
+    catch "exec cp -fpu ../$src tmpdir/gas/$dst" status
+}
+
+if {[file isfile gas/as-new[exe_ext]]} then {
+    link_or_copy gas/as-new[exe_ext] as[exe_ext]
+} else {
+    # For non-Windows hosts there may be an executable
+    # without a .exe suffix, so try copying that instead.
+    link_or_copy gas/as-new as[exe_ext]
+}
+# This may not be needed any more...
+if {[file isfile ld/ld-new[exe_ext]]} then {
+    link_or_copy ld/ld-new[exe_ext] ld[exe_ext]
+} else {
+    link_or_copy ld/ld-new ld[exe_ext]
 }
 set gcc_gas_flag "-B[pwd]/tmpdir/gas/"
 set dlltool_gas_flag "-S [pwd]/tmpdir/gas/as[exe_ext]"