1# Copyright 1999-2015 Free Software Foundation, Inc. 2 3# This program is free software; you can redistribute it and/or modify 4# it under the terms of the GNU General Public License as published by 5# the Free Software Foundation; either version 3 of the License, or 6# (at your option) any later version. 7# 8# This program is distributed in the hope that it will be useful, 9# but WITHOUT ANY WARRANTY; without even the implied warranty of 10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11# GNU General Public License for more details. 12# 13# You should have received a copy of the GNU General Public License 14# along with this program. If not, see <http://www.gnu.org/licenses/>. 15 16# Test Machine interface (MI) operations 17# 18# Test MI's stepi and nexti equivalent commands. 19# 20# The goal is not to test gdb functionality, which is done by other 21# tests, but to verify the correct output response to MI operations. 22 23load_lib mi-support.exp 24set MIFLAGS "-i=mi" 25 26gdb_exit 27if [mi_gdb_start] { 28 continue 29} 30 31standard_testfile basics.c 32 33if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { 34 untested mi-stepi.exp 35 return -1 36} 37 38proc test_stepi_nexti {} { 39 global mi_gdb_prompt 40 global hex fullname_syntax srcfile 41 42 set line_main_head [gdb_get_line_number "main ("] 43 set line_main_body [expr $line_main_head + 2] 44 set line_main_hello [gdb_get_line_number "Hello, World!"] 45 46 set line [mi_execute_to "exec-step-instruction" "end-stepping-range" "main" "" \ 47 ".*basics.c" "\[0-9\]+" "" "step-instruction at main"] 48 if { $line >= $line_main_body && $line <= $line_main_hello } { 49 pass "step-instruction at main (line check)" 50 } else { 51 fail "step-instruction at main (line check)" 52 } 53 54 set line [mi_execute_to "exec-next-instruction" "end-stepping-range" "main" "" \ 55 ".*basics.c" "\[0-9\]+" "" "next-instruction at main"] 56 if { $line >= $line_main_body && $line <= $line_main_hello } { 57 pass "next-instruction at main (line check)" 58 } else { 59 fail "next-instruction at main (line check)" 60 } 61 62 set line [mi_execute_to "exec-next-instruction" "end-stepping-range" "main" "" \ 63 ".*basics.c" "\[0-9\]+" "" "next-instruction at main 2"] 64 if { $line >= $line_main_body && $line <= $line_main_hello } { 65 pass "next-instruction at main 2 (line check)" 66 } else { 67 fail "next-instruction at main 2 (line check)" 68 } 69} 70 71mi_run_to_main 72test_stepi_nexti 73 74mi_gdb_exit 75return 0 76