DejaGNU uses in lib/target.exp's
   proc default_target_compile {source destfile type options}
uses the following.

When running locally, $source is simply used
as argument. However, when run remotely, it is tried to be uploaded
on the remote host – and otherwise skipped. That's fine if the
argument is an actual file – but not if it is a flag.

Hence, flags should be passed as $options not as $source.
Quoting now from DejaGNU's default_target_compile#:

    set sources ""
    if {[isremote host]} {
        foreach x $source {
            set file [remote_download host $x]
            if { $file eq "" } {
                warning "Unable to download $x to host."
                return "Unable to download $x to host."
            } else {
                append sources " $file"
            }
        }
    } else {
        set sources $source
    }

 * * *

FIRST, I think that affects the following calls, but I have not
checked. — I assume that moving it from the first to the last
argument should work and fix the "isremote" issue.

gcc/testsuite/gcc.target/arm/multilib.exp:    set gcc_output [${tool}_target_compile "--print-multi-directory 
$gcc_opts" "" "none" ""]
gcc/testsuite/lib/target-supports.exp:    set gcc_output [${tool}_target_compile "-v" "" 
"none" ""]
gcc/testsuite/lib/target-supports.exp:  set gcc_ld [lindex [${tool}_target_compile "-print-prog-name=ld" 
"" "none" ""] 0]
gcc/testsuite/lib/target-supports.exp:  set gcc_as [lindex [${tool}_target_compile "-print-prog-name=as" 
"" "none" ""] 0]
gcc/testsuite/lib/target-supports.exp:  set gcc_ld [lindex [${tool}_target_compile "-print-prog-name=ld" 
"" "none" ""] 0]

TODO: One should probably change this.


SECONDLY: I hit a very similar issue in libgomp, which I actually did debug.

In check_effective_target_offload_target_nvptx, one has something similar, 
namely:
  set gcc_output [libgomp_target_compile "-v $options" "" "none" ""]
This currently tries (w/o success) to upload the flags to the remote host and 
then
fails as the required "-v" flag fails (i.e. no input).

However, using "-v" as options argument does not work as seemingly only 
additional_flags=
arguments are passed on. Additionally, if one does not only want to pass on the 
first
argument, curly braces are needed.

PATCH: The attached patch does this – and have successfully tested it both with 
local
runs and with remote runs. (RUNTESTFLAGS="-v -v -v" did help a lot for studying 
the
behavior in both cases.)

OK for the trunk?

Cheers,

Tobias

	libgomp/
	* testsuite/lib/libgomp.exp
	(check_effective_target_offload_target_nvptx): Pass flags as 'options'
	and not as 'source' argument to libgomp_target_compile.

diff --git a/libgomp/testsuite/lib/libgomp.exp b/libgomp/testsuite/lib/libgomp.exp
index 7e94527c7ca..cb7757b6a91 100644
--- a/libgomp/testsuite/lib/libgomp.exp
+++ b/libgomp/testsuite/lib/libgomp.exp
@@ -346,11 +346,11 @@ proc check_effective_target_offload_target_nvptx { } {
     # files; in particular, '-foffload', 'libgomp.oacc-*/*.exp'), which don't
     # get passed on to 'check_effective_target_*' functions.  (Not caching the
     # result due to that.)
-    set options [current_compiler_flags]
+    set options [concat "{additional_flags=-v" [current_compiler_flags] "}"]
     # Instead of inspecting command-line options, look what the compiler driver
     # decides.  This is somewhat modelled after
     # 'gcc/testsuite/lib/target-supports.exp:check_configured_with'.
-    set gcc_output [libgomp_target_compile "-v $options" "" "none" ""]
+    set gcc_output [libgomp_target_compile "" "" "none" $options]
     if [regexp "(?n)^OFFLOAD_TARGET_NAMES=(.*)" $gcc_output dummy offload_targets] {
 	verbose "compiling for offload targets: $offload_targets"
 	return [string match "*:nvptx*:*" ":$offload_targets:"]

Reply via email to