1# Copyright 2013-2015 Free Software Foundation, Inc. 2 3# This program is free software; you can redistribute it and/or modify 4# it under the terms of the GNU General Public License as published by 5# the Free Software Foundation; either version 3 of the License, or 6# (at your option) any later version. 7# 8# This program is distributed in the hope that it will be useful, 9# but WITHOUT ANY WARRANTY; without even the implied warranty of 10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11# GNU General Public License for more details. 12# 13# You should have received a copy of the GNU General Public License 14# along with this program. If not, see <http://www.gnu.org/licenses/>. 15 16standard_testfile 17 18set has_argv0 [gdb_has_argv0] 19 20if { [build_executable ${testfile}.exp ${testfile} ${srcfile}] == -1 } { 21 return -1 22} 23 24set test "kept file symbolic link name" 25set filelink "${testfile}-filelink" 26 27remote_file host delete [standard_output_file $filelink] 28set status [remote_exec host "ln -sf ${testfile} [standard_output_file $filelink]"] 29if {[lindex $status 0] != 0} { 30 unsupported "$test (host does not support symbolic links)" 31 return 0 32} 33 34clean_restart "$filelink" 35 36if ![runto_main] { 37 untested "could not run to main" 38 return -1 39} 40 41gdb_test_no_output "set print repeats 10000" 42gdb_test_no_output "set print elements 10000" 43 44if { $has_argv0 } { 45 gdb_test {print argv[0]} "/$filelink\"" $test 46} else { 47 unsupported $test 48} 49 50# For a link named /PATH/TO/DIR/LINK, we want to check the output 51# against "/DIR/LINK", but computed in a way that doesn't make 52# assumptions about the test directory layout. 53set full_filelink [standard_output_file $filelink] 54set lastdir [file tail [file dirname $full_filelink]] 55 56gdb_test "info inferiors" "/$lastdir/$filelink *" "$test for info inferiors" 57 58 59set test "kept directory symbolic link name" 60set dirlink "${testfile}-dirlink" 61 62# 'ln -sf' does not overwrite symbol link to a directory. 63# 'remote_file host delete' uses stat (not lstat), therefore it refuses to 64# delete a directory. 65remote_exec host "rm -f [standard_output_file $dirlink]" 66set status [remote_exec host "ln -sf . [standard_output_file $dirlink]"] 67if {[lindex $status 0] != 0} { 68 unsupported "$test (host does not support symbolic links)" 69 return 0 70} 71 72clean_restart "$dirlink/$filelink" 73 74if ![runto_main] { 75 untested "could not run to main" 76 return -1 77} 78 79gdb_test_no_output "set print repeats 10000" 80gdb_test_no_output "set print elements 10000" 81 82if { $has_argv0 } { 83 # gdbserver does not have this issue. 84 if ![is_remote target] { 85 setup_kfail "*-*-*" gdb/15934 86 } 87 gdb_test {print argv[0]} "/$dirlink/$filelink\"" $test 88} else { 89 unsupported $test 90} 91 92gdb_test "info inferiors" "/$lastdir/$filelink *" "$test for info inferiors" 93