xfail "clang/14553, this test is just too flakey"
return -1
# 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 <http://www.gnu.org/licenses/>.

# Test gdbserver monitor commands.

load_lib gdbserver-support.exp

standard_testfile server.c

if { [skip_gdbserver_tests] } {
    return 0
}

if {[prepare_for_testing $testfile.exp $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 } {
    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"
