1*b725ae77Skettenis# Copyright 1999 2*b725ae77Skettenis# Free Software Foundation, Inc. 3*b725ae77Skettenis 4*b725ae77Skettenis# This program is free software; you can redistribute it and/or modify 5*b725ae77Skettenis# it under the terms of the GNU General Public License as published by 6*b725ae77Skettenis# the Free Software Foundation; either version 2 of the License, or 7*b725ae77Skettenis# (at your option) any later version. 8*b725ae77Skettenis# 9*b725ae77Skettenis# This program is distributed in the hope that it will be useful, 10*b725ae77Skettenis# but WITHOUT ANY WARRANTY; without even the implied warranty of 11*b725ae77Skettenis# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12*b725ae77Skettenis# GNU General Public License for more details. 13*b725ae77Skettenis# 14*b725ae77Skettenis# You should have received a copy of the GNU General Public License 15*b725ae77Skettenis# along with this program; if not, write to the Free Software 16*b725ae77Skettenis# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17*b725ae77Skettenis 18*b725ae77Skettenis# Please email any bugs, comments, and/or additions to this file to: 19*b725ae77Skettenis# bug-gdb@prep.ai.mit.edu 20*b725ae77Skettenis 21*b725ae77Skettenis 22*b725ae77Skettenisif $tracelevel then { 23*b725ae77Skettenis strace $tracelevel 24*b725ae77Skettenis} 25*b725ae77Skettenis 26*b725ae77Skettenis# 27*b725ae77Skettenis# test running programs 28*b725ae77Skettenis# 29*b725ae77Skettenisset prms_id 0 30*b725ae77Skettenisset bug_id 0 31*b725ae77Skettenis 32*b725ae77Skettenisset testfile "async" 33*b725ae77Skettenisset srcfile ${testfile}.c 34*b725ae77Skettenisset binfile ${objdir}/${subdir}/${testfile} 35*b725ae77Skettenis 36*b725ae77Skettenisif { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-w}] != "" } { 37*b725ae77Skettenis gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." 38*b725ae77Skettenis} 39*b725ae77Skettenis 40*b725ae77Skettenisif [get_compiler_info ${binfile}] { 41*b725ae77Skettenis return -1 42*b725ae77Skettenis} 43*b725ae77Skettenis 44*b725ae77Skettenis######################################## 45*b725ae77Skettenis## 46*b725ae77Skettenis## Don't do any of these tests until we reach consensus on this file. 47*b725ae77Skettenis## 48*b725ae77Skettenisreturn 0 49*b725ae77Skettenis######################################## 50*b725ae77Skettenis 51*b725ae77Skettenisset board [target_info name] 52*b725ae77Skettenisset current_target [target_info gdb_protocol] 53*b725ae77Skettenisif { $current_target == "remote" } { 54*b725ae77Skettenis unset_board_info "gdb_protocol" 55*b725ae77Skettenis set_board_info "gdb_protocol" "async" 56*b725ae77Skettenis } else { 57*b725ae77Skettenis return 0 58*b725ae77Skettenis } 59*b725ae77Skettenis 60*b725ae77Skettenisgdb_exit 61*b725ae77Skettenisgdb_start 62*b725ae77Skettenisgdb_reinitialize_dir $srcdir/$subdir 63*b725ae77Skettenisgdb_load ${binfile} 64*b725ae77Skettenisif [target_info exists gdb_stub] { 65*b725ae77Skettenis gdb_step_for_stub; 66*b725ae77Skettenis} 67*b725ae77Skettenis 68*b725ae77Skettenis# 69*b725ae77Skettenis# set it up at a breakpoint so we can play with it 70*b725ae77Skettenis# 71*b725ae77Skettenisif ![runto_main] then { 72*b725ae77Skettenis perror "couldn't run to breakpoint" 73*b725ae77Skettenis continue 74*b725ae77Skettenis} 75*b725ae77Skettenis 76*b725ae77Skettenisgdb_test "break baz" "" "" 77*b725ae77Skettenis 78*b725ae77Skettenis# 79*b725ae77Skettenis# Make sure we get a 'completed' message when the target is done. 80*b725ae77Skettenis# 81*b725ae77Skettenisgdb_test "set display-exec-done on" "" "" 82*b725ae77Skettenis 83*b725ae77Skettenis 84*b725ae77Skettenissend_gdb "next&\n" 85*b725ae77Skettenisgdb_expect { 86*b725ae77Skettenis -re "^next&\r\n$gdb_prompt.*z = 9.*completed\.\r\n" { pass "next &" } 87*b725ae77Skettenis -re "$gdb_prompt.*completed\.$" { fail "next &" } 88*b725ae77Skettenis timeout { fail "(timeout) next &" } 89*b725ae77Skettenis} 90*b725ae77Skettenis 91*b725ae77Skettenissend_gdb "step&\n" 92*b725ae77Skettenisgdb_expect { 93*b725ae77Skettenis -re "^step&\r\n$gdb_prompt.*y = foo \\(\\).*completed\.\r\n" { pass "step &" } 94*b725ae77Skettenis -re "$gdb_prompt.*completed\.$" { fail "step &" } 95*b725ae77Skettenis timeout { fail "(timeout) step &" } 96*b725ae77Skettenis} 97*b725ae77Skettenis 98*b725ae77Skettenissend_gdb "step&\n" 99*b725ae77Skettenisgdb_expect { 100*b725ae77Skettenis -re "^step&\r\n$gdb_prompt foo \\(\\) at .*async.c.*x = 5.*completed\.\r\n" \ 101*b725ae77Skettenis { pass "step &" } 102*b725ae77Skettenis -re "$gdb_prompt.*completed\.$" { fail "step &" } 103*b725ae77Skettenis timeout { fail "(timeout) step &" } 104*b725ae77Skettenis} 105*b725ae77Skettenis 106*b725ae77Skettenissend_gdb "stepi&\n" 107*b725ae77Skettenisgdb_expect { 108*b725ae77Skettenis -re "^stepi&\r\n$gdb_prompt.*$hex.*x = 5.*completed\.\r\n" { pass "stepi &" } 109*b725ae77Skettenis -re "$gdb_prompt.*completed\.$" { fail "stepi &" } 110*b725ae77Skettenis timeout { fail "(timeout) stepi &" } 111*b725ae77Skettenis} 112*b725ae77Skettenis 113*b725ae77Skettenissend_gdb "nexti&\n" 114*b725ae77Skettenisgdb_expect { 115*b725ae77Skettenis -re "^nexti&\r\n$gdb_prompt.*y = 3.*completed\.\r\n" { pass "nexti &" } 116*b725ae77Skettenis -re "$gdb_prompt.*completed\.$" { fail "nexti &" } 117*b725ae77Skettenis timeout { fail "(timeout) nexti &" } 118*b725ae77Skettenis} 119*b725ae77Skettenis 120*b725ae77Skettenissend_gdb "finish&\n" 121*b725ae77Skettenisgdb_expect { 122*b725ae77Skettenis -re "^finish&\r\nRun till exit from #0 foo \\(\\) at.*async.c.*\r\n$gdb_prompt.*$hex in main \\(\\) at.*async.c.*y = foo \\(\\).*Value returned is.*= 8.*completed\.\r\n" \ 123*b725ae77Skettenis { pass "finish &" } 124*b725ae77Skettenis -re "$gdb_prompt.*completed\.$" { fail "finish &" } 125*b725ae77Skettenis timeout { fail "(timeout) finish &" } 126*b725ae77Skettenis} 127*b725ae77Skettenis 128*b725ae77Skettenissend_gdb "jump 33&\n" 129*b725ae77Skettenisgdb_expect { 130*b725ae77Skettenis -re "^jump 33&.*Continuing at $hex.*$gdb_prompt.*Breakpoint 2, baz \\(\\) at.*async.c.*return 5.*completed\.\r\n" \ 131*b725ae77Skettenis { pass "jump &" } 132*b725ae77Skettenis -re ".*$gdb_prompt.*completed\.$" { fail "jump &" } 133*b725ae77Skettenis timeout { fail "(timeout) jump &" } 134*b725ae77Skettenis} 135*b725ae77Skettenis 136*b725ae77Skettenissend_gdb "until 35&\n" 137*b725ae77Skettenisgdb_expect { 138*b725ae77Skettenis -re "^until 35&.*$gdb_prompt.*$hex in main \\(\\) at.*async.c.*y = baz \\(\\).*completed\.\r\n" \ 139*b725ae77Skettenis { pass "until &" } 140*b725ae77Skettenis -re "$gdb_prompt.*completed\.$" { fail "until &" } 141*b725ae77Skettenis timeout { fail "(timeout) until &" } 142*b725ae77Skettenis} 143*b725ae77Skettenis 144*b725ae77Skettenisgdb_test "set display-exec-done off" "" "" 145*b725ae77Skettenis 146*b725ae77Skettenisunset_board_info "gdb_protocol" 147*b725ae77Skettenisset_board_info "gdb_protocol" "remote" 148*b725ae77Skettenis 149*b725ae77Skettenis 150*b725ae77Skettenis 151*b725ae77Skettenis 152*b725ae77Skettenis 153*b725ae77Skettenis 154