Home | History | Annotate | Line # | Download | only in gdb.ada
      1  1.1.1.4  christos # Copyright 2011-2024 Free Software Foundation, Inc.
      2      1.1  christos #
      3      1.1  christos # This program is free software; you can redistribute it and/or modify
      4      1.1  christos # it under the terms of the GNU General Public License as published by
      5      1.1  christos # the Free Software Foundation; either version 3 of the License, or
      6      1.1  christos # (at your option) any later version.
      7      1.1  christos #
      8      1.1  christos # This program is distributed in the hope that it will be useful,
      9      1.1  christos # but WITHOUT ANY WARRANTY; without even the implied warranty of
     10      1.1  christos # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     11      1.1  christos # GNU General Public License for more details.
     12      1.1  christos #
     13      1.1  christos # You should have received a copy of the GNU General Public License
     14      1.1  christos # along with this program.  If not, see <http://www.gnu.org/licenses/>.
     15      1.1  christos 
     16      1.1  christos load_lib "ada.exp"
     17      1.1  christos 
     18  1.1.1.4  christos require allow_ada_tests gnat_runtime_has_debug_info
     19  1.1.1.2  christos 
     20      1.1  christos standard_ada_testfile bla
     21      1.1  christos 
     22      1.1  christos if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug additional_flags=-gnata ]] != "" } {
     23      1.1  christos   return -1
     24      1.1  christos }
     25      1.1  christos 
     26      1.1  christos load_lib mi-support.exp
     27      1.1  christos set MIFLAGS "-i=mi"
     28      1.1  christos 
     29  1.1.1.3  christos mi_clean_restart $binfile
     30      1.1  christos 
     31      1.1  christos ###################################################
     32      1.1  christos # 2. Try catching conditionnal failed assertion.  #
     33      1.1  christos ###################################################
     34      1.1  christos 
     35      1.1  christos # Here is the scenario:
     36      1.1  christos #  - Restart the debugger from scratch, runto_main
     37      1.1  christos #    We'll catch assertions if Global_Var = 2
     38      1.1  christos #  - continue, we should see the second failed assertion
     39      1.1  christos #  - continue, the program exits.
     40      1.1  christos 
     41  1.1.1.3  christos if {[mi_runto_main] < 0} {
     42      1.1  christos    return 0
     43      1.1  christos }
     44      1.1  christos 
     45      1.1  christos mi_gdb_test "-catch-assert -c \"Global_Var = 2\"" \
     46  1.1.1.2  christos             "\\^done,bkptno=\"$decimal\",bkpt={.*disp=\"keep\",enabled=\"y\",what=\"failed Ada assertions\",.*,cond=\"Global_Var = 2\",.*}" \
     47      1.1  christos             "catch assert failures with condition"
     48      1.1  christos 
     49      1.1  christos set bp_location [gdb_get_line_number "STOP" ${testdir}/bla.adb]
     50      1.1  christos mi_execute_to "exec-continue" \
     51  1.1.1.4  christos               "\"breakpoint-hit\",disp=\"keep\",bkptno=\"$decimal\"" \
     52      1.1  christos               "bla" "" ".*" "$bp_location" \
     53      1.1  christos               ".*" \
     54      1.1  christos               "continue to assert failure catchpoint hit"
     55      1.1  christos 
     56      1.1  christos # Exit the inferior.
     57      1.1  christos mi_send_resuming_command "exec-continue" "continuing to inferior exit"
     58      1.1  christos mi_expect_stop "exited-normally" "" "" "" "" "" "exit normally"
     59