# This testcase is part of GDB, the GNU debugger. # Copyright 2007-2020 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 # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Test gdbserver monitor commands. load_lib gdbserver-support.exp standard_testfile server.c if { [skip_gdbserver_tests] } { return 0 } if {[prepare_for_testing "failed to prepare" $testfile $srcfile debug]} { return -1 } # Make sure we're disconnected, in case we're testing with an # extended-remote board, therefore already connected. gdb_test "disconnect" ".*" gdbserver_run "" proc test_file_transfer { filename description } { set up_server up-server set down_server down-server if {![is_remote host] && ![is_remote target]} { set up_server [standard_output_file $up_server] set down_server [standard_output_file $down_server] } gdb_test "remote put \"$filename\" $down_server" \ "Successfully sent .*" "put $description" gdb_test "remote get $down_server $up_server" \ "Successfully fetched .*" "get $description" if { ![is_remote target] } { # If we can check the target copy of the file, do that too. # This should catch symmetric errors in upload and download. set result [remote_exec host "cmp -s $filename $down_server"] if { [lindex $result 0] == 0 } { pass "compare intermediate $description" } else { fail "compare intermediate $description" } } set result [remote_exec host "cmp -s $filename $up_server"] if { [lindex $result 0] == 0 } { pass "compare $description" } else { fail "compare $description" } gdb_test "remote delete $down_server" \ "Successfully deleted .*" "deleted $description" if { ![is_remote target] } { if { ! [remote_file target exists $down_server] } { pass "verified deleted $description" } else { fail "verified deleted $description" } } catch { file delete $up_server } } test_file_transfer "$binfile" "binary file" test_file_transfer "$srcdir/$subdir/transfer.txt" "text file"