# This testcase is part of GDB, the GNU debugger. # Copyright 2007-2012 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 set testfile "server" set srcfile ${testfile}.c set binfile ${objdir}/${subdir}/file-transfer${EXEEXT} if { [skip_gdbserver_tests] } { return 0 } if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { untested file-transfer.exp return -1 } gdb_exit gdb_start gdb_load $binfile gdb_reinitialize_dir $srcdir/$subdir # 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 } { 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"