Run argv0-symlink.exp only on native target and local host.
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.base / argv0-symlink.exp
index 0e0202dcf013687e0b8ddae8aed5502f8e6e9d9b..33301bd7c33f33ede463196df04bb94a421b05d9 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright 2013-2014 Free Software Foundation, Inc.
+# Copyright 2013-2019 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+# This testcase was originally for PR gdb/15415, a problem with the "run"
+# command expanding symlinks in the name of the program being run.
+# This test uses pathnames on build to create symbolic links on host and
+# expects the test program running on target to see those symbolic links.
+# Therefore, it can't work reliably on anything other than configurations 
+# where build/host/target are all the same.
+
+if { ![isnative] } {
+    unsupported "argv0-symlink.exp not supported on non-native target"
+    return -1
+}
+
+if { [is_remote host] } {
+    unsupported "argv0-symlink.exp not supported on remote host"
+    return -1
+}
+
 standard_testfile
 
+set has_argv0 [gdb_has_argv0]
+
 if { [build_executable ${testfile}.exp ${testfile} ${srcfile}] == -1 } {
     return -1
 }
@@ -36,7 +55,14 @@ if ![runto_main] {
     return -1
 }
 
-gdb_test {print argv[0]} "/$filelink\"" $test
+gdb_test_no_output "set print repeats 10000"
+gdb_test_no_output "set print elements 10000"
+
+if { $has_argv0 } {
+    gdb_test {print argv[0]} "/$filelink\"" $test
+} else {
+    unsupported $test
+}
 
 # For a link named /PATH/TO/DIR/LINK, we want to check the output
 # against "/DIR/LINK", but computed in a way that doesn't make
@@ -67,9 +93,18 @@ if ![runto_main] {
     return -1
 }
 
-# gdbserver does not have this issue.
-if ![is_remote target] {
-    setup_kfail "*-*-*" gdb/15934
+gdb_test_no_output "set print repeats 10000"
+gdb_test_no_output "set print elements 10000"
+
+if { $has_argv0 } {
+    # gdbserver in extended-remote mode does not have this issue.
+    # Plain remote does, however.
+    if {[target_info gdb_protocol] != "extended-remote" || ![target_is_gdbserver]} {
+       setup_kfail "*-*-*" gdb/15934
+    }
+    gdb_test {print argv[0]} "/$dirlink/$filelink\"" $test
+} else {
+    unsupported $test
 }
-gdb_test {print argv[0]} "/$dirlink/$filelink\"" $test
+
 gdb_test "info inferiors" "/$lastdir/$filelink *" "$test for info inferiors"
This page took 0.026529 seconds and 4 git commands to generate.