Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(181)

Side by Side Diff: gdb/testsuite/config/monitor.exp

Issue 124383005: GDB 7.6.50 (Closed) Base URL: http://git.chromium.org/native_client/nacl-gdb.git@upstream
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « gdb/testsuite/config/mn10300-eval.exp ('k') | gdb/testsuite/config/proelf.exp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Test Framework Driver for GDB driving a ROM monitor (via monitor.c). 1 # Test Framework Driver for GDB driving a ROM monitor (via monitor.c).
2 # Copyright 1995-2000, 2007-2012 Free Software Foundation, Inc. 2 # Copyright 1995-2013 Free Software Foundation, Inc.
3 # 3 #
4 # This program is free software; you can redistribute it and/or modify 4 # This program is free software; you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published by 5 # it under the terms of the GNU General Public License as published by
6 # the Free Software Foundation; either version 3 of the License, or 6 # the Free Software Foundation; either version 3 of the License, or
7 # (at your option) any later version. 7 # (at your option) any later version.
8 # 8 #
9 # This program is distributed in the hope that it will be useful, 9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details. 12 # GNU General Public License for more details.
13 # 13 #
14 # You should have received a copy of the GNU General Public License 14 # You should have received a copy of the GNU General Public License
15 # along with this program. If not, see <http://www.gnu.org/licenses/>. 15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
16 16
17 load_lib gdb.exp 17 load_lib gdb.exp
18 # puts "***** DID USE MONITOR ******" 18 # puts "***** DID USE MONITOR ******"
19 19
20 # 20 #
21 # gdb_target_cmd 21 # gdb_target_cmd
22 # Send gdb the "target" command 22 # Send gdb the "target" command
23 # 23 #
24 proc gdb_target_cmd { targetname serialport } { 24 proc gdb_target_cmd { targetname serialport } {
25 global gdb_prompt 25 global gdb_prompt
26 26
27 for {set i 1} {$i <= 3} {incr i} { 27 for {set i 1} {$i <= 3} {incr i} {
28 send_gdb "target $targetname $serialport\n" 28 send_gdb "target $targetname $serialport\n"
29 gdb_expect 60 { 29 gdb_expect 60 {
30 -re "A program is being debugged already.*ill it.*y or n. $" { 30 -re "A program is being debugged already.*ill it.*y or n. $" {
31 » » send_gdb "y\n"; 31 » » send_gdb "y\n"
32 » » exp_continue; 32 » » exp_continue
33 } 33 }
34 -re "Couldn't establish connection to remote.*$gdb_prompt" { 34 -re "Couldn't establish connection to remote.*$gdb_prompt" {
35 » » verbose "Connection failed"; 35 » » verbose "Connection failed"
36 } 36 }
37 -re "Remote MIPS debugging.*$gdb_prompt" { 37 -re "Remote MIPS debugging.*$gdb_prompt" {
38 » » verbose "Set target to $targetname"; 38 » » verbose "Set target to $targetname"
39 » » return 0; 39 » » return 0
40 } 40 }
41 -re "Remote debugging using .*$serialport.*$gdb_prompt" { 41 -re "Remote debugging using .*$serialport.*$gdb_prompt" {
42 » » verbose "Set target to $targetname"; 42 » » verbose "Set target to $targetname"
43 » » return 0; 43 » » return 0
44 } 44 }
45 -re "Remote target $targetname connected to.*$gdb_prompt" { 45 -re "Remote target $targetname connected to.*$gdb_prompt" {
46 » » verbose "Set target to $targetname"; 46 » » verbose "Set target to $targetname"
47 » » return 0; 47 » » return 0
48 } 48 }
49 -re "Connected to.*$gdb_prompt" { 49 -re "Connected to.*$gdb_prompt" {
50 » » verbose "Set target to $targetname"; 50 » » verbose "Set target to $targetname"
51 » » return 0; 51 » » return 0
52 } 52 }
53 -re "Ending remote.*$gdb_prompt" { } 53 -re "Ending remote.*$gdb_prompt" { }
54 -re "Connection refused.*$gdb_prompt" { 54 -re "Connection refused.*$gdb_prompt" {
55 verbose "Connection refused by remote target. Pausing, and tryi ng again." 55 verbose "Connection refused by remote target. Pausing, and tryi ng again."
56 sleep 30 56 sleep 30
57 continue 57 continue
58 } 58 }
59 -re "Timeout reading from remote system.*$gdb_prompt" { 59 -re "Timeout reading from remote system.*$gdb_prompt" {
60 » » verbose "Got timeout error from gdb."; 60 » » verbose "Got timeout error from gdb."
61 } 61 }
62 timeout { 62 timeout {
63 » » send_gdb ""; 63 » » send_gdb ""
64 break 64 break
65 } 65 }
66 } 66 }
67 } 67 }
68 return 1 68 return 1
69 } 69 }
70 70
71 71
72 72
73 # 73 #
74 # gdb_target_monitor 74 # gdb_target_monitor
75 # Set gdb to target the monitor 75 # Set gdb to target the monitor
76 # 76 #
77 proc gdb_target_monitor { exec_file } { 77 proc gdb_target_monitor { exec_file } {
78 global gdb_prompt 78 global gdb_prompt
79 global exit_status 79 global exit_status
80 global timeout 80 global timeout
81 81
82 if [target_info exists gdb_protocol] { 82 if [target_info exists gdb_protocol] {
83 set targetname "[target_info gdb_protocol]" 83 set targetname "[target_info gdb_protocol]"
84 } else { 84 } else {
85 » perror "No protocol specified for [target_info name]."; 85 » perror "No protocol specified for [target_info name]."
86 » return -1; 86 » return -1
87 } 87 }
88 if [target_info exists baud] { 88 if [target_info exists baud] {
89 gdb_test "set remotebaud [target_info baud]" "" "" 89 gdb_test "set remotebaud [target_info baud]" "" ""
90 } 90 }
91 if [target_info exists binarydownload] { 91 if [target_info exists binarydownload] {
92 gdb_test "set remotebinarydownload [target_info binarydownload]" "" "" 92 gdb_test "set remotebinarydownload [target_info binarydownload]" "" ""
93 } 93 }
94 if { [ target_info exists disable_x_packet ] } { 94 if { [ target_info exists disable_x_packet ] } {
95 gdb_test "set remote X-packet disable" "" 95 gdb_test "set remote X-packet disable" ""
96 } 96 }
97 if { [ target_info exists disable_z_packet ] } { 97 if { [ target_info exists disable_z_packet ] } {
98 gdb_test "set remote Z-packet disable" "" 98 gdb_test "set remote Z-packet disable" ""
99 } 99 }
100 if [target_info exists gdb_serial] { 100 if [target_info exists gdb_serial] {
101 set serialport "[target_info gdb_serial]"; 101 set serialport "[target_info gdb_serial]"
102 } elseif [target_info exists netport] { 102 } elseif [target_info exists netport] {
103 set serialport "[target_info netport]" 103 set serialport "[target_info netport]"
104 } else { 104 } else {
105 set serialport "[target_info serial]" 105 set serialport "[target_info serial]"
106 } 106 }
107 107
108 for {set j 1} {$j <= 2} {incr j} { 108 for {set j 1} {$j <= 2} {incr j} {
109 » if [gdb_file_cmd $exec_file] { return -1; } 109 » if [gdb_file_cmd $exec_file] { return -1 }
110 110
111 » if ![gdb_target_cmd $targetname $serialport] { return 0; } 111 » if ![gdb_target_cmd $targetname $serialport] { return 0 }
112 112
113 » gdb_target_exec; 113 » gdb_target_exec
114 114
115 if { $j == 1 && ![reboot_target] } { 115 if { $j == 1 && ![reboot_target] } {
116 » break; 116 » break
117 } 117 }
118 } 118 }
119 119
120 perror "Couldn't set target for $targetname, port is $serialport."; 120 perror "Couldn't set target for $targetname, port is $serialport."
121 return -1; 121 return -1
122 } 122 }
123 123
124 proc gdb_target_exec { } { 124 proc gdb_target_exec { } {
125 gdb_test "target exec" "No executable file now." "" ".*Kill it.*y or n.*" "y " 125 gdb_test "target exec" "No executable file now." "" ".*Kill it.*y or n.*" "y "
126 126
127 } 127 }
128 # 128 #
129 # gdb_load -- load a file into the debugger. 129 # gdb_load -- load a file into the debugger.
130 # return a -1 if anything goes wrong. 130 # return a -1 if anything goes wrong.
131 # 131 #
132 proc gdb_load { arg } { 132 proc gdb_load { arg } {
133 global verbose 133 global verbose
134 global loadpath 134 global loadpath
135 global loadfile 135 global loadfile
136 global GDB 136 global GDB
137 global gdb_prompt 137 global gdb_prompt
138 global timeout 138 global timeout
139 global last_gdb_file; 139 global last_gdb_file
140 140
141 if { $arg == "" } { 141 if { $arg == "" } {
142 if [info exists last_gdb_file] { 142 if [info exists last_gdb_file] {
143 » set arg $last_gdb_file; 143 » set arg $last_gdb_file
144 } else { 144 } else {
145 » send_gdb "info files\n"; 145 » send_gdb "info files\n"
146 gdb_expect 30 { 146 gdb_expect 30 {
147 -re "Symbols from \"(\[^\"\]+)\"" { 147 -re "Symbols from \"(\[^\"\]+)\"" {
148 » » set arg $expect_out(1,string); 148 » » set arg $expect_out(1,string)
149 » » exp_continue; 149 » » exp_continue
150 } 150 }
151 -re "Local exec file:\[\r\n\]+\[ \t\]*`(\[^'\]+)'," { 151 -re "Local exec file:\[\r\n\]+\[ \t\]*`(\[^'\]+)'," {
152 » » set arg $expect_out(1,string); 152 » » set arg $expect_out(1,string)
153 » » exp_continue; 153 » » exp_continue
154 } 154 }
155 -re "$gdb_prompt $" { } 155 -re "$gdb_prompt $" { }
156 } 156 }
157 } 157 }
158 } 158 }
159 159
160 set last_gdb_file $arg; 160 set last_gdb_file $arg
161 161
162 for { set j 1; } { $j <= 2 } {incr j; } { 162 for { set j 1 } { $j <= 2 } {incr j } {
163 if [target_info exists gdb,use_standard_load] { 163 if [target_info exists gdb,use_standard_load] {
164 » gdb_target_exec; 164 » gdb_target_exec
165 if ![target_info exists gdb,no_push_conn] { 165 if ![target_info exists gdb,no_push_conn] {
166 » » remote_push_conn host; 166 » » remote_push_conn host
167 } 167 }
168 » set state [remote_ld target $arg]; 168 » set state [remote_ld target $arg]
169 if ![target_info exists gdb,no_push_conn] { 169 if ![target_info exists gdb,no_push_conn] {
170 » » remote_close target; 170 » » remote_close target
171 » » remote_pop_conn host; 171 » » remote_pop_conn host
172 } 172 }
173 if { $state == "pass" } { 173 if { $state == "pass" } {
174 » » if [gdb_target_monitor $arg] { return -1; } 174 » » if [gdb_target_monitor $arg] { return -1 }
175 gdb_test "list main" ".*" "" 175 gdb_test "list main" ".*" ""
176 » » verbose "Loaded $arg into $GDB\n"; 176 » » verbose "Loaded $arg into $GDB\n"
177 » » return 0; 177 » » return 0
178 } 178 }
179 } else { 179 } else {
180 180
181 if [gdb_target_monitor $arg] { return -1 } 181 if [gdb_target_monitor $arg] { return -1 }
182 182
183 if [is_remote host] { 183 if [is_remote host] {
184 # FIXME: Multiple downloads. bleah. 184 # FIXME: Multiple downloads. bleah.
185 » » set farg [remote_download host $arg]; 185 » » set farg [remote_download host $arg]
186 } else { 186 } else {
187 » » set farg $arg; 187 » » set farg $arg
188 } 188 }
189 189
190 if { $arg != "" && [target_info exists gdb_sect_offset] } { 190 if { $arg != "" && [target_info exists gdb_sect_offset] } {
191 » » set textoff [target_info gdb_sect_offset]; 191 » » set textoff [target_info gdb_sect_offset]
192 » » send_gdb "sect .text $textoff\n"; 192 » » send_gdb "sect .text $textoff\n"
193 gdb_expect 30 { 193 gdb_expect 30 {
194 -re "(0x\[0-9a-z]+) - 0x\[0-9a-z\]+ is \\.data" { 194 -re "(0x\[0-9a-z]+) - 0x\[0-9a-z\]+ is \\.data" {
195 » » » set dataoff $expect_out(1,string); 195 » » » set dataoff $expect_out(1,string)
196 » » » exp_continue; 196 » » » exp_continue
197 } 197 }
198 -re "(0x\[0-9a-z\]+) - 0x\[0-9a-z\]+ is \\.bss" { 198 -re "(0x\[0-9a-z\]+) - 0x\[0-9a-z\]+ is \\.bss" {
199 » » » set bssoff $expect_out(1,string); 199 » » » set bssoff $expect_out(1,string)
200 » » » exp_continue; 200 » » » exp_continue
201 } 201 }
202 -re "$gdb_prompt" { } 202 -re "$gdb_prompt" { }
203 } 203 }
204 » » set dataoff [format 0x%x [expr $dataoff + $textoff]]; 204 » » set dataoff [format 0x%x [expr $dataoff + $textoff]]
205 » » set bssoff [format 0x%x [expr $bssoff + $textoff]]; 205 » » set bssoff [format 0x%x [expr $bssoff + $textoff]]
206 » » send_gdb "sect .data $dataoff\n"; 206 » » send_gdb "sect .data $dataoff\n"
207 gdb_expect 30 { 207 gdb_expect 30 {
208 -re "$gdb_prompt" { } 208 -re "$gdb_prompt" { }
209 } 209 }
210 » » send_gdb "sect .bss $bssoff\n"; 210 » » send_gdb "sect .bss $bssoff\n"
211 gdb_expect 30 { 211 gdb_expect 30 {
212 -re "$gdb_prompt" { } 212 -re "$gdb_prompt" { }
213 } 213 }
214 } 214 }
215 215
216 verbose "Loading $farg" 216 verbose "Loading $farg"
217 if [target_info exists gdb_load_offset] { 217 if [target_info exists gdb_load_offset] {
218 » » set command "load $farg [target_info gdb_load_offset]\n"; 218 » » set command "load $farg [target_info gdb_load_offset]\n"
219 } else { 219 } else {
220 » » set command "load $farg\n"; 220 » » set command "load $farg\n"
221 } 221 }
222 if [target_info exists gdb_load_timeout] { 222 if [target_info exists gdb_load_timeout] {
223 set loadtimeout [target_info gdb_load_timeout] 223 set loadtimeout [target_info gdb_load_timeout]
224 } else { 224 } else {
225 set loadtimeout 1600 225 set loadtimeout 1600
226 } 226 }
227 227
228 if [is_remote target] { 228 if [is_remote target] {
229 set oldremotetimeout [get_remotetimeout] 229 set oldremotetimeout [get_remotetimeout]
230 set_remotetimeout $loadtimeout 230 set_remotetimeout $loadtimeout
231 } 231 }
232 232
233 set load_ok 0 233 set load_ok 0
234 » send_gdb $command; 234 » send_gdb $command
235 gdb_expect $loadtimeout { 235 gdb_expect $loadtimeout {
236 -re "\[Ff\]ailed.*$gdb_prompt $" { 236 -re "\[Ff\]ailed.*$gdb_prompt $" {
237 » » verbose "load failed"; 237 » » verbose "load failed"
238 } 238 }
239 -re "Timeout reading from remote.*$gdb_prompt" { 239 -re "Timeout reading from remote.*$gdb_prompt" {
240 } 240 }
241 -re "$gdb_prompt $" { 241 -re "$gdb_prompt $" {
242 verbose "Loaded $farg into $GDB\n" 242 verbose "Loaded $farg into $GDB\n"
243 set load_ok 1 243 set load_ok 1
244 } 244 }
245 timeout { 245 timeout {
246 if { $verbose > 1 } { 246 if { $verbose > 1 } {
247 perror "Timed out trying to load $farg." 247 perror "Timed out trying to load $farg."
248 } 248 }
249 } 249 }
250 } 250 }
251 251
252 if [is_remote target] { 252 if [is_remote target] {
253 set_remotetimeout $oldremotetimeout 253 set_remotetimeout $oldremotetimeout
254 } 254 }
255 255
256 if { $load_ok == 1 } { 256 if { $load_ok == 1 } {
257 » » return 0; 257 » » return 0
258 } 258 }
259 } 259 }
260 260
261 # Make sure we don't have an open connection to the target. 261 # Make sure we don't have an open connection to the target.
262 » gdb_target_exec; 262 » gdb_target_exec
263 263
264 if { $j == 1 } { 264 if { $j == 1 } {
265 if { ![reboot_target] } { 265 if { ![reboot_target] } {
266 » » break; 266 » » break
267 } 267 }
268 } 268 }
269 } 269 }
270 perror "Couldn't load file into GDB."; 270 perror "Couldn't load file into GDB."
271 return -1; 271 return -1
272 } 272 }
OLDNEW
« no previous file with comments | « gdb/testsuite/config/mn10300-eval.exp ('k') | gdb/testsuite/config/proelf.exp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698