]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Testsuite: allow non-installed testing on darwin
authorIain Sandoe <iain@sandoe.co.uk>
Fri, 16 Apr 2021 19:01:40 +0000 (20:01 +0100)
committerIain Sandoe <iain@sandoe.co.uk>
Sun, 22 Oct 2023 18:30:54 +0000 (19:30 +0100)
DYLD_LIBRARY_PATH is now removed from the environment for all system
tools, including the shell. Adapt the testsuite and pass the right
options to allow testing, even when the compiler and libraries have not
been installed.

gcc/ChangeLog:

* Makefile.in: set ENABLE_DARWIN_AT_RPATH in site.tmp.

gcc/testsuite/ChangeLog:

* gfortran.dg/coarray/caf.exp: Correctly set
libatomic flags.
* gfortran.dg/dg.exp: Likewise.
* lib/asan-dg.exp: Set correct -B flags.
* lib/atomic-dg.exp: Likewise.
* lib/target-libpath.exp: Handle ENABLE_DARWIN_AT_RPATH.

libatomic/ChangeLog:

* testsuite/lib/libatomic.exp: Pass correct flags on darwin.

libffi/ChangeLog:

* testsuite/lib/libffi.exp: Likewise.

libitm/ChangeLog:

* testsuite/lib/libitm.exp: Likewise.
* testsuite/libitm.c++/c++.exp: Likewise.

gcc/Makefile.in
gcc/testsuite/gfortran.dg/coarray/caf.exp
gcc/testsuite/gfortran.dg/dg.exp
gcc/testsuite/lib/asan-dg.exp
gcc/testsuite/lib/atomic-dg.exp
gcc/testsuite/lib/target-libpath.exp
libatomic/testsuite/lib/libatomic.exp
libffi/testsuite/lib/libffi.exp
libitm/testsuite/lib/libitm.exp
libitm/testsuite/libitm.c++/c++.exp

index bc6a76f8644c857131079e9188eb4336662df4f5..7b7a4ff789af6382ba1632b49ff82aa2539c3dae 100644 (file)
@@ -4245,6 +4245,9 @@ site.exp: ./config.status Makefile
          echo "set COMPAT_OPTIONS \"$(COMPAT_OPTIONS)\"" >> ./site.tmp; \
        else true; \
        fi
+       @if test "x@enable_darwin_at_rpath@" = "xyes" ; then \
+         echo "set ENABLE_DARWIN_AT_RPATH 1" >> ./site.tmp; \
+       fi
        @echo "## All variables above are generated by configure. Do Not Edit ##" >> ./site.tmp
        @cat ./site.tmp > site.exp
        @cat site.bak | sed \
index d232be2fa909e0002e579053e58fe3fe314ac625..a10b17a78d058875a99837487426100ec824e07b 100644 (file)
@@ -28,6 +28,7 @@
 
 # Load procedures from common libraries. 
 load_lib gfortran-dg.exp
+load_lib atomic-dg.exp
 
 # If a testcase doesn't have special options, use these.
 global DEFAULT_FFLAGS
@@ -47,6 +48,7 @@ global gfortran_test_path
 global gfortran_aux_module_flags
 set gfortran_test_path $srcdir/$subdir
 set gfortran_aux_module_flags $DEFAULT_FFLAGS
+
 proc dg-compile-aux-modules { args } {
     global gfortran_test_path
     global gfortran_aux_module_flags
@@ -71,7 +73,15 @@ proc dg-compile-aux-modules { args } {
 # Add -latomic only where supported.  Assume built-in support elsewhere.
 set maybe_atomic_lib ""
 if [check_effective_target_libatomic_available] {
-    set maybe_atomic_lib "-latomic"
+    if ![is_remote host] {
+       if [info exists TOOL_OPTIONS] {
+           set maybe_atomic_lib "[atomic_link_flags [get_multilibs ${TOOL_OPTIONS}]]"
+       } else {
+           set maybe_atomic_lib "[atomic_link_flags [get_multilibs]]"
+       }
+    }
+    set t [get_multilibs]
+    puts "maybe al $maybe_atomic_lib ml $t"
 }
 
 # Main loop.
@@ -97,14 +107,14 @@ foreach test [lsort [glob -nocomplain $srcdir/$subdir/*.\[fF\]{,90,95,03,08} ]]
     foreach flags $option_list {
        verbose "Testing $nshort (single), $flags" 1
         set gfortran_aux_module_flags "-fcoarray=single $flags"
-       dg-test $test "-fcoarray=single $flags $maybe_atomic_lib" "" 
+       dg-test $test "-fcoarray=single $flags" $maybe_atomic_lib
        cleanup-modules ""
     }
 
     foreach flags $option_list {
        verbose "Testing $nshort (libcaf_single), $flags" 1
         set gfortran_aux_module_flags "-fcoarray=lib $flags -lcaf_single"
-       dg-test $test "-fcoarray=lib $flags -lcaf_single $maybe_atomic_lib" ""
+       dg-test $test "-fcoarray=lib $flags -lcaf_single" $maybe_atomic_lib
        cleanup-modules ""
     }
 }
index ee2760327dcf1c1d3802cda32a26ad15f89a7c6c..73541ea7301e92c257e529b1789b4019d0427cf8 100644 (file)
@@ -18,6 +18,7 @@
 
 # Load support procs.
 load_lib gfortran-dg.exp
+load_lib atomic-dg.exp
 
 # If a testcase doesn't have special options, use these.
 global DEFAULT_FFLAGS
@@ -53,13 +54,38 @@ proc dg-compile-aux-modules { args } {
     }
 }
 
+# coarray tests might need libatomic.  Assume that it is either not needed or
+# provided by builtins if it's not available.
+set maybe_atomic_lib ""
+if [check_effective_target_libatomic_available] {
+    if ![is_remote host] {
+       if [info exists TOOL_OPTIONS] {
+           set maybe_atomic_lib "[atomic_link_flags [get_multilibs ${TOOL_OPTIONS}]]"
+       } else {
+           set maybe_atomic_lib "[atomic_link_flags [get_multilibs]]"
+       }
+    } else {
+        set maybe_atomic_lib ""
+    }
+  set t [get_multilibs]
+  puts "dg set al $maybe_atomic_lib ml $t"
+}
+
+set all_flags $DEFAULT_FFLAGS
+if { $maybe_atomic_lib != "" } {
+   foreach f $maybe_atomic_lib {
+     lappend all_flags $f
+   }
+}
+
+puts "revised FFLAGS $all_flags"
+
 # Main loop.
 gfortran-dg-runtest [lsort \
-       [glob -nocomplain $srcdir/$subdir/*.\[fF\]{,90,95,03,08} ] ] "" $DEFAULT_FFLAGS
+       [glob -nocomplain $srcdir/$subdir/*.\[fF\]{,90,95,03,08} ] ] "" $all_flags
 
 gfortran-dg-runtest [lsort \
-       [glob -nocomplain $srcdir/$subdir/g77/*.\[fF\] ] ] "" $DEFAULT_FFLAGS
-
+       [glob -nocomplain $srcdir/$subdir/g77/*.\[fF\] ] ] "" $all_flags
 
 # All done.
 dg-finish
index 35e60eaaed53d993f2333166e05f1cc32f0b92e3..157b60908d692aa8900a286aae009775d8550d75 100644 (file)
@@ -78,7 +78,7 @@ proc asan_link_flags_1 { paths lib } {
           || [file exists "${gccpath}/libsanitizer/${lib}/.libs/lib${lib}.${shlib_ext}"] } {
          append flags " -B${gccpath}/libsanitizer/ "
          append flags " -B${gccpath}/libsanitizer/${lib}/ "
-         append flags " -L${gccpath}/libsanitizer/${lib}/.libs "
+         append flags " -B${gccpath}/libsanitizer/${lib}/.libs "
          append ld_library_path ":${gccpath}/libsanitizer/${lib}/.libs"
       }
     } else {
index 1589acd8eaf807455735950b997799de5dd078f5..ce1799cef2d8490c38a03b539388f814e3ec17ae 100644 (file)
@@ -33,7 +33,7 @@ proc atomic_link_flags { paths } {
       if { [file exists "${gccpath}/libatomic/.libs/libatomic.a"]
           || [file exists "${gccpath}/libatomic/.libs/libatomic.${shlib_ext}"] } {
          append flags " -B${gccpath}/libatomic/ "
-         append flags " -L${gccpath}/libatomic/.libs"
+         append flags " -B${gccpath}/libatomic/.libs"
          append ld_library_path ":${gccpath}/libatomic/.libs"
       }
     } else {
index 6d530fb4af67b6f00acbb3320f4827ad720f1600..36b64dd45501814ac22ffa02ecb41af31b585049 100644 (file)
@@ -67,6 +67,7 @@ proc set_ld_library_path_env_vars { } {
   global orig_dyld_library_path
   global orig_path
   global orig_gcc_exec_prefix
+  global ENABLE_DARWIN_AT_RPATH
   global env
 
   # Save the original GCC_EXEC_PREFIX.
@@ -133,6 +134,7 @@ proc set_ld_library_path_env_vars { } {
   #
   # Doing this is somewhat of a hack as ld_library_path gets repeated in
   # SHLIB_PATH and LD_LIBRARY_PATH when unix_load sets these variables.
+  if { ![istarget *-*-darwin*] } {
   if { $orig_ld_library_path_saved } {
     setenv LD_LIBRARY_PATH "$ld_library_path:$orig_ld_library_path"
   } else {
@@ -166,10 +168,22 @@ proc set_ld_library_path_env_vars { } {
   } else {
     setenv LD_LIBRARY_PATH_64 "$ld_library_path"
   }
-  if { $orig_dyld_library_path_saved } {
-    setenv DYLD_LIBRARY_PATH "$ld_library_path:$orig_dyld_library_path"
-  } else {
-    setenv DYLD_LIBRARY_PATH "$ld_library_path"
+  }
+  if { [istarget *-*-darwin*] } {
+    if { [info exists ENABLE_DARWIN_AT_RPATH] || [istarget *-*-darwin1\[5-9\]*]
+         || [istarget *-*-darwin20*] } {
+      # Either we are not using DYLD_LIBRARY_PATH or we're on a version of the
+      # OS for which it is not passed through system exes.
+      if [info exists env(DYLD_LIBRARY_PATH)] {
+        unsetenv DYLD_LIBRARY_PATH
+      }
+    } else {
+      if { $orig_dyld_library_path_saved } {
+        setenv DYLD_LIBRARY_PATH "$ld_library_path:$orig_dyld_library_path"
+      } else {
+        setenv DYLD_LIBRARY_PATH "$ld_library_path"
+      }
+    }
   }
   if { [istarget *-*-cygwin*] || [istarget *-*-mingw*] } {
     if { $orig_path_saved } {
@@ -179,6 +193,7 @@ proc set_ld_library_path_env_vars { } {
     }
   }
 
+  verbose -log "set paths"
   verbose -log "LD_LIBRARY_PATH=[getenv LD_LIBRARY_PATH]"
   verbose -log "LD_RUN_PATH=[getenv LD_RUN_PATH]"
   verbose -log "SHLIB_PATH=[getenv SHLIB_PATH]"
index 10f38475bc89ca01009280c8a9ada100f7746138..c6d645e9ae3a917d1c66a3f283b790eef3062b23 100644 (file)
@@ -148,11 +148,15 @@ proc libatomic_init { args } {
     if { $blddir != "" } {
        lappend ALWAYS_CFLAGS "additional_flags=-B${blddir}/"
        lappend ALWAYS_CFLAGS "additional_flags=-I${blddir}"
-       lappend ALWAYS_CFLAGS "ldflags=-L${blddir}/.libs"
+        if [istarget *-*-darwin*] {
+            lappend ALWAYS_CFLAGS "additional_flags=-B${blddir}/.libs"
+       } else {
+           lappend ALWAYS_CFLAGS "ldflags=-L${blddir}/.libs"
+       }
     }
     lappend ALWAYS_CFLAGS "additional_flags=-I${srcdir}/.."
 
-    if [istarget *-*-darwin*] {
+    if [istarget *-*-darwin\[89\]*] {
        lappend ALWAYS_CFLAGS "additional_flags=-shared-libgcc"
     }
 
index 15d3d5ebd7399cdd15a9985a4723b99cbcf02d43..611f5177c7a7be30e658b42b45b8425e2039b94e 100644 (file)
@@ -337,8 +337,13 @@ proc libffi-init { args } {
     verbose "libffi_dir $libffi_dir"
     if { $libffi_dir != "" } {
        set libffi_dir [file dirname ${libffi_dir}]
-       set libffi_link_flags "-L${libffi_dir}/.libs"
-       lappend libffi_link_flags "-L${blddircxx}/src/.libs"
+        if [istarget *-*-darwin*] {
+            set libffi_link_flags "-B${libffi_dir}/.libs"
+           lappend libffi_link_flags "-B${blddircxx}/src/.libs"
+       } else {
+           set libffi_link_flags "-L${libffi_dir}/.libs"
+           lappend libffi_link_flags "-L${blddircxx}/src/.libs"
+       }
     }
 
     set_ld_library_path_env_vars
@@ -382,7 +387,7 @@ proc libffi_target_compile { source dest type options } {
     # Darwin needs a stack execution allowed flag.
 
     if { [istarget "*-*-darwin9*"] || [istarget "*-*-darwin1*"]
-        || [istarget "*-*-darwin2*"] } {
+        || [istarget "x86_64-*-darwin2*"] } {
        lappend options "additional_flags=-Wl,-allow_stack_execute"
        lappend options "additional_flags=-Wl,-search_paths_first"
     }
index da918d1ee8d1a4e12f34887c111131934e548a6d..61bbfa0c92303a7148169e28f2f72fbb8504fbc9 100644 (file)
@@ -159,6 +159,7 @@ proc libitm_init { args } {
     }
 
     if [istarget *-*-darwin*] {
+       lappend ALWAYS_CFLAGS "additional_flags=-B${blddir}/.libs"
        lappend ALWAYS_CFLAGS "additional_flags=-shared-libgcc"
     }
 
index de45e7e54806d89eda069fa4079d6dc0da8f996a..1b0ead05feef10616cf11b793799a18db571ae87 100644 (file)
@@ -56,8 +56,10 @@ if { $lang_test_file_found } {
     # Gather a list of all tests.
     set tests [lsort [glob -nocomplain $srcdir/$subdir/*.C]]
 
+    set stdcxxadder ""
     if { $blddir != "" } {
        set ld_library_path "$always_ld_library_path:${blddir}/${lang_library_path}"
+       set stdcxxadder "-B ${blddir}/${lang_library_path}"
     } else {
        set ld_library_path "$always_ld_library_path"
     }
@@ -72,7 +74,7 @@ if { $lang_test_file_found } {
     }
 
     # Main loop.
-    dg-runtest $tests "" $libstdcxx_includes
+    dg-runtest $tests $stdcxxadder $libstdcxx_includes
 }
 
 # All done.