Index: gdb/testsuite/gdb.ada/operator_bp.exp |
diff --git a/gdb/testsuite/gdb.ada/operator_bp.exp b/gdb/testsuite/gdb.ada/operator_bp.exp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..18cf46df28655391c345a38941b5cefd26966948 |
--- /dev/null |
+++ b/gdb/testsuite/gdb.ada/operator_bp.exp |
@@ -0,0 +1,91 @@ |
+# Copyright 2012 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/>. |
+ |
+load_lib "ada.exp" |
+ |
+if { [skip_ada_tests] } { return -1 } |
+ |
+set testdir "operator_bp" |
+set testfile "${testdir}/ops_test" |
+set srcfile ${srcdir}/${subdir}/${testfile}.adb |
+set binfile ${objdir}/${subdir}/${testfile} |
+ |
+file mkdir ${objdir}/${subdir}/${testdir} |
+if {[gdb_compile_ada "${srcfile}" "${binfile}" executable {debug}] != ""} { |
+ return -1 |
+} |
+ |
+clean_restart ${testfile} |
+ |
+# This test won't work properly if system debuginfo is installed. |
+gdb_test_no_output "set debug-file-directory" |
+ |
+set bp_location [gdb_get_line_number "BEGIN" ${testdir}/ops_test.adb] |
+runto "ops_test.adb:$bp_location" |
+ |
+# Set breakpoints for all operators, using just the operator name in quotes. |
+ |
+foreach op { "+" "-" } { |
+ set op_re [string_to_regexp $op] |
+ gdb_test "break \"$op\"" \ |
+ "Breakpoint $decimal at $hex: \"$op_re\"\. \\(2 locations\\)" |
+} |
+ |
+foreach op { "*" "/" "mod" "rem" "**" "<" "<=" ">" ">=" "=" "and" "or" "xor" "&" "abs" "not"} { |
+ set op_re [string_to_regexp $op] |
+ gdb_test "break \"$op\"" \ |
+ "Breakpoint $decimal at $hex: file .*ops.adb, line $decimal." |
+} |
+ |
+# Make sure we stop correctly in each operator function. |
+ |
+foreach op { "+" "-" "*" "/" "mod" "rem" "**" "<" "<=" ">" ">=" "=" "and" "or" "xor" "&" "abs" "not"} { |
+ set op_re [string_to_regexp $op] |
+ gdb_test "continue" \ |
+ "Breakpoint $decimal, ops\\.\"$op_re\" .*"\ |
+ "continue to \"$op\"" |
+} |
+ |
+# Perform the same test, but using the qualified name of the operator, |
+# instead of the just the operator name (as in 'break ops."+"'). |
+ |
+clean_restart ${testfile} |
+ |
+runto "ops_test.adb:$bp_location" |
+ |
+# Set breakpoints for all operators, using just the operator name in quotes. |
+ |
+foreach op { "+" "-" } { |
+ set op_re [string_to_regexp $op] |
+ gdb_test "break ops.\"$op\"" \ |
+ "Breakpoint $decimal at $hex: ops\\.\"$op_re\"\. \\(2 locations\\)" |
+} |
+ |
+foreach op { "*" "/" "mod" "rem" "**" "<" "<=" ">" ">=" "=" "and" "or" "xor" "&" "abs" "not"} { |
+ set op_re [string_to_regexp $op] |
+ gdb_test "break ops.\"$op\"" \ |
+ "Breakpoint $decimal at $hex: file .*ops.adb, line $decimal." |
+} |
+ |
+# Make sure we stop correctly in each operator function. |
+ |
+foreach op { "+" "-" "*" "/" "mod" "rem" "**" "<" "<=" ">" ">=" "=" "and" "or" "xor" "&" "abs" "not"} { |
+ set op_re [string_to_regexp $op] |
+ gdb_test "continue" \ |
+ "Breakpoint $decimal, ops\\.\"$op_re\" .*"\ |
+ "continue to ops.\"$op\"" |
+} |
+ |
+ |