Add skip_ada_tests to more Ada testcases
[binutils-gdb.git] / gdb / testsuite / gdb.ada / mi_catch_ex.exp
index 1e15d4735425c82dfd63018aafbf708f5e87d358..63c6984bc664ffb92bdf6d1b00d040de1dfa29d0 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright 2011-2013 Free Software Foundation, Inc.
+# Copyright 2011-2020 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug additional_flags=-gnata ]] != "" } {
@@ -33,7 +35,7 @@ set eol "\[\r\n\]+"
 clean_restart ${testfile}
 
 if ![runto_main] then {
-   fail "Cannot run to main, testcase aborted"
+   fail "cannot run to main, testcase aborted"
    return 0
 }
 
@@ -69,24 +71,49 @@ mi_gdb_load ${binfile}
 # 1. Try catching all exceptions.  #
 ####################################
 
-if ![mi_run_to_main] then {
-   fail "Cannot run to main, testcase aborted"
-   return 0
+with_test_prefix "scenario 1" {
+    if ![mi_run_to_main] then {
+       fail "cannot run to main, testcase aborted"
+       return 0
+    }
 }
 
-mi_gdb_test "catch exception"
+mi_gdb_test "-catch-exception" \
+            "\\^done,bkptno=\"$decimal\",bkpt={.*disp=\"keep\",enabled=\"y\",what=\"all Ada exceptions\",.*}" \
+            "catch all exceptions"
 
-mi_execute_to "exec-continue" \
-              "breakpoint-hit\",disp=\"keep\",bkptno=\"$any_nb\",exception-name=\"CONSTRAINT_ERROR" \
-              "foo" "" ".*" ".*" \
-              ".*" \
-              "continue to exception catchpoint hit"
+# Continue to caught exception.
 
-mi_execute_to "exec-continue" \
-              "breakpoint-hit\",disp=\"keep\",bkptno=\"$any_nb\",exception-name=\"PROGRAM_ERROR" \
-              "foo" "" ".*" ".*" \
-              ".*" \
-              "continue to exception catchpoint hit"
+proc continue_to_exception { exception_name exception_message test } {
+    global hex any_nb
+
+    mi_send_resuming_command "exec-continue" "$test"
+
+    # Match console stream output.
+    gdb_expect {
+       -re " $exception_name\( \\($exception_message\\)\)? at $hex in foo " {
+       }
+       timeout {
+           fail "$test (timeout)"
+           return -1
+       }
+    }
+
+    # Now MI stream output.
+    mi_expect_stop \
+       "breakpoint-hit\",disp=\"keep\",bkptno=\"$any_nb\",exception-name=\"$exception_name\(\",exception-message=\"$exception_message\)?" \
+       "foo" "" ".*" ".*" \
+       ".*" \
+       $test
+}
+
+continue_to_exception \
+    "CONSTRAINT_ERROR" "foo\\.adb:$decimal explicit raise" \
+    "continue until CE caught by all-exceptions catchpoint"
+
+continue_to_exception \
+    "PROGRAM_ERROR" "foo\\.adb:$decimal explicit raise" \
+    "continue until PE caught by all-exceptions catchpoint"
 
 ################################################
 # 2. Try catching only some of the exceptions. #
@@ -102,19 +129,27 @@ mi_execute_to "exec-continue" \
 #  - continue, we should see the unhandled Constrait_Error exception
 #  - continue, the program exits.
 
-if ![mi_run_to_main] then {
-   fail "Cannot run to main, testcase aborted"
-   return 0
+with_test_prefix "scenario 2" {
+    if ![mi_run_to_main] then {
+       fail "cannot run to main, testcase aborted"
+       return 0
+    }
 }
 
-mi_gdb_test "catch exception Program_Error"
+mi_gdb_test "-catch-exception -e Program_Error" \
+            "\\^done,bkptno=\"$decimal\",bkpt={.*disp=\"keep\",enabled=\"y\",what=\"`Program_Error' Ada exception\",.*}" \
+            "catch Program_Error"
 
-mi_gdb_test "catch assert"
+mi_gdb_test "-catch-assert" \
+            "\\^done,bkptno=\"$decimal\",bkpt={.*disp=\"keep\",enabled=\"y\",what=\"failed Ada assertions\",.*}" \
+            "catch assert failures"
 
-mi_gdb_test "catch exception unhandled"
+mi_gdb_test "-catch-exception -u" \
+            "\\^done,bkptno=\"$decimal\",bkpt={.*disp=\"keep\",enabled=\"y\",what=\"unhandled Ada exceptions\",.*}" \
+            "catch unhandled exceptions"
 
 mi_execute_to "exec-continue" \
-              "breakpoint-hit\",disp=\"keep\",bkptno=\"$any_nb\",exception-name=\"PROGRAM_ERROR" \
+              "breakpoint-hit\",disp=\"keep\",bkptno=\"$any_nb\",exception-name=\"PROGRAM_ERROR(\",exception-message=\"foo\\.adb:$decimal explicit raise)?" \
               "foo" "" ".*" ".*" \
               ".*" \
               "continue to exception catchpoint hit"
@@ -123,11 +158,11 @@ mi_execute_to "exec-continue" \
               "breakpoint-hit\",disp=\"keep\",bkptno=\"$any_nb" \
               "foo" "" ".*" ".*" \
               ".*" \
-              "continue to exception catchpoint hit"
+              "continue to assert failure catchpoint hit"
 
 mi_execute_to "exec-continue" \
               "breakpoint-hit\",disp=\"keep\",bkptno=\"$any_nb\",exception-name=\"CONSTRAINT_ERROR" \
               "foo" "" ".*" ".*" \
               ".*" \
-              "continue to exception catchpoint hit"
+              "continue to unhandled exception catchpoint hit"