e22f8b7c8c
Switch the license of all .f and .f90 files to GPLv3. Switch the license of all .s and .S files to GPLv3.
161 lines
7.5 KiB
Text
161 lines
7.5 KiB
Text
# Copyright 1999, 2001, 2003, 2004, 2006, 2007 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 essential Machine interface (MI) operations
|
|
#
|
|
# Verify that, using the MI, we can run a simple program and perform basic
|
|
# debugging activities like: insert breakpoints, run the program,
|
|
# step, next, continue until it ends and, last but not least, quit.
|
|
#
|
|
# The goal is not to test gdb functionality, which is done by other tests,
|
|
# but to verify the correct output response to MI operations.
|
|
#
|
|
|
|
load_lib mi-support.exp
|
|
set MIFLAGS "-i=mi2"
|
|
|
|
gdb_exit
|
|
if [mi_gdb_start] {
|
|
continue
|
|
}
|
|
|
|
set testfile "basics"
|
|
set srcfile ${testfile}.c
|
|
set binfile ${objdir}/${subdir}/${testfile}
|
|
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
|
|
untested mi2-break.exp
|
|
return -1
|
|
}
|
|
|
|
mi_delete_breakpoints
|
|
mi_gdb_reinitialize_dir $srcdir/$subdir
|
|
mi_gdb_load ${binfile}
|
|
|
|
# Locate line numbers in basics.c.
|
|
set line_callee4_head [gdb_get_line_number "callee4 ("]
|
|
set line_callee4_body [expr $line_callee4_head + 2]
|
|
set line_callee3_head [gdb_get_line_number "callee3 ("]
|
|
set line_callee3_body [expr $line_callee3_head + 2]
|
|
set line_callee2_head [gdb_get_line_number "callee2 ("]
|
|
set line_callee2_body [expr $line_callee2_head + 2]
|
|
set line_callee1_head [gdb_get_line_number "callee1 ("]
|
|
set line_callee1_body [expr $line_callee1_head + 2]
|
|
set line_main_head [gdb_get_line_number "main ("]
|
|
set line_main_body [expr $line_main_head + 2]
|
|
|
|
set fullname "fullname=\"${fullname_syntax}${srcfile}\""
|
|
|
|
proc test_tbreak_creation_and_listing {} {
|
|
global mi_gdb_prompt
|
|
global srcfile
|
|
global hex
|
|
global line_callee4_head line_callee4_body
|
|
global line_callee3_head line_callee3_body
|
|
global line_callee2_head line_callee2_body
|
|
global line_callee1_head line_callee1_body
|
|
global line_main_head line_main_body
|
|
global fullname
|
|
|
|
# Insert some breakpoints and list them
|
|
# Also, disable some so they do not interfere with other tests
|
|
# Tests:
|
|
# -break-insert -t main
|
|
# -break-insert -t basics.c:callee2
|
|
# -break-insert -t basics.c:$line_callee3_head
|
|
# -break-insert -t srcfile:$line_callee4_head
|
|
# -break-list
|
|
|
|
mi_gdb_test "222-break-insert -t main" \
|
|
"222\\^done,bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",${fullname},line=\"$line_main_body\",times=\"0\"\}" \
|
|
"break-insert -t operation"
|
|
|
|
mi_gdb_test "333-break-insert -t basics.c:callee2" \
|
|
"333\\^done,bkpt=\{number=\"2\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee2\",file=\".*basics.c\",${fullname},line=\"$line_callee2_body\",times=\"0\"\}" \
|
|
"insert temp breakpoint at basics.c:callee2"
|
|
|
|
mi_gdb_test "444-break-insert -t basics.c:$line_callee3_head" \
|
|
"444\\^done,bkpt=\{number=\"3\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee3\",file=\".*basics.c\",${fullname},line=\"$line_callee3_head\",times=\"0\"\}" \
|
|
"insert temp breakpoint at basics.c:\$line_callee3_body"
|
|
|
|
# Getting the quoting right is tricky. That is "\"<file>\":$line_callee4_head"
|
|
mi_gdb_test "555-break-insert -t \"\\\"${srcfile}\\\":$line_callee4_head\"" \
|
|
"555\\^done,bkpt=\{number=\"4\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"callee4\",file=\".*basics.c\",${fullname},line=\"$line_callee4_head\",times=\"0\"\}" \
|
|
"insert temp breakpoint at \"<fullfilename>\":\$line_callee4_head"
|
|
|
|
mi_gdb_test "666-break-list" \
|
|
"666\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",${fullname},line=\"$line_main_body\",times=\"0\"\}.*\\\]\}" \
|
|
"list of breakpoints"
|
|
|
|
mi_gdb_test "777-break-delete" \
|
|
"777\\^done" \
|
|
"delete temp breakpoints"
|
|
}
|
|
|
|
proc test_rbreak_creation_and_listing {} {
|
|
global mi_gdb_prompt
|
|
global srcfile
|
|
global hex
|
|
global line_callee4_head line_callee4_body
|
|
global line_callee3_head line_callee3_body
|
|
global line_callee2_head line_callee2_body
|
|
global line_callee1_head line_callee1_body
|
|
global line_main_head line_main_body
|
|
global fullname
|
|
|
|
# Insert some breakpoints and list them
|
|
# Also, disable some so they do not interfere with other tests
|
|
# Tests:
|
|
# -break-insert -r main
|
|
# -break-insert -r callee2
|
|
# -break-insert -r callee
|
|
# -break-insert -r .*llee
|
|
# -break-list
|
|
|
|
setup_xfail "*-*-*"
|
|
mi_gdb_test "122-break-insert -r main" \
|
|
"122\\^done,bkpt=\{number=\"5\",addr=\"$hex\",file=\".*basics.c\",${fullname},line=\"$line_main_body\"\}" \
|
|
"break-insert -r operation"
|
|
|
|
setup_xfail "*-*-*"
|
|
mi_gdb_test "133-break-insert -r callee2" \
|
|
"133\\^done,bkpt=\{number=\"6\",addr=\"$hex\",file=\".*basics.c\",${fullname},line=\"$line_callee2_body\"\}" \
|
|
"insert breakpoint with regexp callee2"
|
|
|
|
setup_xfail "*-*-*"
|
|
mi_gdb_test "144-break-insert -r callee" \
|
|
"144\\^done,bkpt=\{number=\"7\",addr=\"$hex\",file=\".*basics.c\",${fullname},line=\"$line_callee1_body\"\},bkpt=\{number=\"8\",addr=\"$hex\",file=\".*basics.c\",${fullname},line=\"$line_callee2_body\"\},bkpt=\{number=\"9\",addr=\"$hex\",file=\".*basics.c\",${fullname},line=\"$line_callee3_body\"\},bkpt=\{number=\"10\",addr=\"$hex\",file=\".*basics.c\",${fullname},line=\"$line_callee4_body\"\}" \
|
|
"insert breakpoint with regexp callee"
|
|
|
|
setup_xfail "*-*-*"
|
|
mi_gdb_test "155-break-insert -r \.\*llee" \
|
|
"155\\^done,bkpt=\{number=\"11\",addr=\"$hex\",file=\".*basics.c\",${fullname},line=\"$line_callee1_body\"\},bkpt=\{number=\"12\",addr=\"$hex\",file=\".*basics.c\",${fullname},line=\"$line_callee2_body\"\},bkpt=\{number=\"13\",addr=\"$hex\",file=\".*basics.c\",${fullname},line=\"$line_callee3_body\"\},bkpt=\{number=\"14\",addr=\"$hex\",file=\".*basics.c\",${fullname},line=\"$line_callee4_body\"\}" \
|
|
"insert breakpoint with regexp .*llee"
|
|
|
|
setup_xfail "*-*-*"
|
|
mi_gdb_test "166-break-list" \
|
|
"1\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"5\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"main\",file=\".*basics.c\",${fullname},line=\"$line_main_body\",times=\"0\"\},.*\}\\\]\}" \
|
|
"list of breakpoints"
|
|
|
|
mi_gdb_test "177-break-delete" \
|
|
"177\\^done" \
|
|
"delete temp breakpoints"
|
|
}
|
|
|
|
test_tbreak_creation_and_listing
|
|
test_rbreak_creation_and_listing
|
|
|
|
mi_gdb_exit
|
|
return 0
|