[flang] Fix linker test on Windows.
authorMichael Kruse <llvm-project@meinersbur.de>
Wed, 8 Mar 2023 18:56:29 +0000 (12:56 -0600)
committerMichael Kruse <llvm-project@meinersbur.de>
Wed, 8 Mar 2023 22:46:20 +0000 (16:46 -0600)
The linker-flags.f90 test checks for the linker command line. The `-target` indicates cross-compiling, the toolchain executables themselves are still running on the native platform. If it is Windows, the driver will try to fully resolve the path to `ld` which may include an `.exe` suffix.

In my case, it resolves to the MinGW installation (`"C:\\tools\\msys64\\usr\\bin\\ld.exe"`) found in `PATH`. The GNU ld that comes with the MSYS2 distribution does not support `elf64lppc` or MacOS emulation modes (`acosx_version_min`), but the test also does not require executing the linker.

Reviewed By: awarzynski

Differential Revision: https://reviews.llvm.org/D144592

flang/test/Driver/linker-flags.f90

index 90c4a94..e1350b7 100644 (file)
 ! CHECK-SAME:  "-o" "[[object_file:.*\.o]]" {{.*}}Inputs/hello.f90
 
 ! Linker invocation to generate the executable
-! GNU-LABEL:  "{{.*}}ld" 
+! NOTE: Since we are cross-compiling, the host toolchain executables may
+!       run on any other platform, such as Windows that use a .exe
+!       suffix. Clang's driver will try to resolve the path to the ld
+!       executable and may find the GNU linker from MinGW or Cygwin.
+! GNU-LABEL:  "{{.*}}ld{{(\.exe)?}}"
 ! GNU-SAME: "[[object_file]]"
 ! GNU-SAME: -lFortran_main
 ! GNU-SAME: -lFortranRuntime
 ! GNU-SAME: -lFortranDecimal
 ! GNU-SAME: -lm
 
-! DARWIN-LABEL:  "{{.*}}ld
+! DARWIN-LABEL:  "{{.*}}ld{{(\.exe)?}}"
 ! DARWIN-SAME: "[[object_file]]"
 ! DARWIN-SAME: -lFortran_main
 ! DARWIN-SAME: -lFortranRuntime
 ! DARWIN-SAME: -lFortranDecimal
 
-! MINGW-LABEL:  "{{.*}}ld
+! MINGW-LABEL:  "{{.*}}ld{{(\.exe)?}}"
 ! MINGW-SAME: "[[object_file]]"
 ! MINGW-SAME: -lFortran_main
 ! MINGW-SAME: -lFortranRuntime