aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.base/remote.exp
blob: 70e97cfc8b38dc6873af1a4b0b43706a2f47f48e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#   Copyright (C) 1999 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  

# Please email any bugs, comments, and/or additions to this file to:
# bug-gdb@prep.ai.mit.edu

if $tracelevel then {
    strace $tracelevel
}

set prms_id 0
set bug_id 0


# test only on a remote target board
if {! [is_remote target]} {
    return
}


set testfile "remote"
set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/${testfile}

gdb_start

set result [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}]
if {$result != "" } then {
    gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}


#
# Part ONE: Check the down load commands
#

gdb_test "show download-write-size" \
	"The write size used when downloading a program is 512." \
	"download limit default"

gdb_test "set download-write-size" "Argument required.*"

gdb_test "set download-write-size 0" ""
gdb_test "show download-write-size" \
	"The write size used when downloading a program is unlimited." \
	"set download limit - unlimited"

gdb_test "show remote memory-write-packet-size" \
	"The memory-write-packet-size is 0. Packets are limited to \[0-9\]+ bytes." \
	"write-packet default"

gdb_test "set remote memory-write-packet-size" \
	"Argument required .integer, `fixed' or `limited'.\." \
	"set write-packet - NULL"

gdb_test "set remote memory-write-packet-size 16" ""
gdb_test "show remote memory-write-packet-size" \
	"The memory-write-packet-size is 16. Packets are limited to 16 bytes." \
	"set write-packet - small"

gdb_test "set remote memory-write-packet-size 1" ""
gdb_test "show remote memory-write-packet-size" \
	"The memory-write-packet-size is 1. Packets are limited to 16 bytes." \
	"set write-packet - very-small"

#
# Part TWO: Check the download behavour
#

proc gdb_load_timed {executable downloadsize class writesize} {
    global test gdb_prompt
    set test "timed download `[file tail $executable]' - $downloadsize, $class, $writesize"

    if {$writesize != ""} then {
	gdb_test "set remote memory-write-packet-size $writesize" \
		"" "$test - set packet size"
    }

    if {$downloadsize != ""} then {
	gdb_test "set download-write-size $downloadsize" \
		"" "$test - set download size"
    }

    if {$downloadsize != ""} then {
	send_gdb "set remote memory-write-packet-size $class\n"
	gdb_expect 5 {
	    -re ".*Change the packet size.*$" {
		send_gdb "y\n"
		gdb_expect 5 {
		    -re ".*$gdb_prompt $" {
			pass "$test - set write size class"
		    }
		    timeout {
			fail "$test - set write size class"
			return
		    }
		}
	    }
	    -re ".*$gdb_prompt $" { }
	    timeout {
		fail "$test - set write size class"
		return
	    }
	}
    }

    set load_begin_time [clock clicks]
    set result [gdb_load $executable]
    set load_end_time [clock clicks]
    if {$result < 0} then { fail "$test - loading executable"; return }
    verbose "$test - time [expr ($load_end_time - $load_begin_time) / 1000] ms"
    pass $test
}



gdb_load_timed $binfile {} "" {}

# Typically about 400 bytes can be downloaded
gdb_load_timed $binfile 0 "limit" 399
gdb_load_timed $binfile 0 "limit" 401

# fall back to the default
gdb_load_timed $binfile 0 "limit" 0

# Absolute max is 16384
gdb_load_timed $binfile 0 "fixed" 0
gdb_load_timed $binfile 0 "fixed" 16385

gdb_exit