summaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.mi/mi1-basics.exp
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/testsuite/gdb.mi/mi1-basics.exp')
-rw-r--r--gdb/testsuite/gdb.mi/mi1-basics.exp174
1 files changed, 174 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.mi/mi1-basics.exp b/gdb/testsuite/gdb.mi/mi1-basics.exp
new file mode 100644
index 00000000000..42d022d6861
--- /dev/null
+++ b/gdb/testsuite/gdb.mi/mi1-basics.exp
@@ -0,0 +1,174 @@
+# Copyright 1999, 2000 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
+
+#
+# test basic Machine interface (MI) operations
+#
+# Verify that, using the MI, we can load a program and do
+# other basic things that are used by all test files through mi_gdb_exit,
+# mi_gdb_start, mi_delete_breakpoints, mi_gdb_reinitialize_dir and
+# mi_gdb_load, so we can safely use those.
+#
+# The goal is not to test gdb functionality, which is done by other tests,
+# but the command syntax and correct output response to MI operations.
+#
+
+load_lib mi-support.exp
+set MIFLAGS "-i=mi1"
+
+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}] != "" } {
+ gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
+}
+
+# In this file we want to test if the operations needed by the following
+# procedures work, so it makes no sense using them here.
+
+# mi_delete_breakpoints
+# mi_gdb_reinitialize_dir $srcdir/$subdir
+# mi_gdb_load ${binfile}
+
+# Test if the MI interpreter has been configured
+
+proc test_mi_interpreter_selection {} {
+ global mi_gdb_prompt
+ global gdb_prompt
+
+ # All this test expects is to get the prompt back
+ # with no syntax error message
+ send_gdb "-gdb-version\n"
+ gdb_expect {
+ -re "GNU gdb .*\r\n$mi_gdb_prompt$" \
+ { pass "acceptance of MI operations"
+ return 1}
+ -re ".*\r\n$mi_gdb_prompt$" \
+ { fail "acceptance of MI operations"
+ note "Skipping all other MI tests." }
+ -re "Undefined command.*$gdb_prompt $" \
+ { fail "acceptance of MI operations"
+ note "Skipping all other MI tests." }
+ -re ".*$gdb_prompt $" \
+ { fail "acceptance of MI operations"
+ note "Skipping all other MI tests." }
+ timeout { fail "acceptance of MI operations (timeout)"
+ note "Skipping all other MI tests." }
+ }
+ return 0
+}
+
+proc test_exec_and_symbol_mi_operatons {} {
+ global mi_gdb_prompt
+ global binfile
+
+ # Load symbols and specify executable on a single operation
+ # Tests:
+ # -file-exec-and-symbols
+
+ # Can't use mi_gdb_test as if this doesn't work,
+ # we must give up on the whole test file
+ send_gdb "-file-exec-and-symbols ${binfile}\n"
+ gdb_expect {
+ -re "\[\r\n\]*\\\^done\r\n$mi_gdb_prompt$" \
+ { pass "file-exec-and-symbols operation" }
+ timeout { fail "file-exec-and-symbols operation (timeout)"
+ note "Skipping all other MI tests."
+ return 0}
+ }
+
+ # The following is not used by mi-support.exp, but we test here so
+ # we get done with loading a program basics.
+
+ # Do it again, but now load symbols and specify executable with
+ # two separate operations
+ # Tests:
+ # -file-clear
+ # -file-exec-file
+ # -file-symbol-file
+
+ # FIXME: file-clear is not implemented yet.
+# mi_gdb_test "-file-clear" \
+# "\\\^done" \
+# "file-clear operation"
+
+ mi_gdb_test "-file-exec-file ${binfile}" \
+ "\\\^done" \
+ "file-exec-file operation"
+
+ mi_gdb_test "-file-symbol-file ${binfile}" \
+ "\\\^done" \
+ "file-symbol-file operation"
+
+ # FIXME: if we cannot load we have to skip all other tests.
+}
+
+proc test_breakpoints_deletion {} {
+ global mi_gdb_prompt
+ global srcfile
+
+ # Clear all breakpoints and list to confirm
+ # Tests:
+ # -break-delete (all)
+ # -break-list
+
+ # The all parameter is actually no parameter.
+ mi_gdb_test "200-break-delete" \
+ "\\\^done" \
+ "break-delete (all) operation"
+
+ mi_gdb_test "201-break-list" \
+ ".*\\\^done,BreakpointTable=\\\{.*,body=\\\[\\\]\\\}" \
+ "all breakpoints removed"
+}
+
+proc test_dir_specification {} {
+ global mi_gdb_prompt
+ global srcdir
+ global subdir
+
+ # Clear the search directories, then specify one to be searched
+ # Tests:
+ # -environment-directory
+ # -environment-directory arg
+
+#exp_internal 1
+ mi_gdb_test "202-environment-directory" \
+ "\\\^done" \
+ "environment-directory operation"
+
+ mi_gdb_test "203-environment-directory ${srcdir}/${subdir}" \
+ "\\\^done" \
+ "environment-directory arg operation"
+#exp_internal 0
+}
+
+if [test_mi_interpreter_selection] {
+ test_exec_and_symbol_mi_operatons
+ test_breakpoints_deletion
+ test_dir_specification
+}
+
+mi_gdb_exit
+return 0