Home | History | Annotate | Line # | Download | only in gdb.ada
      1 # Copyright 2023-2024 Free Software Foundation, Inc.
      2 
      3 # This program is free software; you can redistribute it and/or modify
      4 # it under the terms of the GNU General Public License as published by
      5 # the Free Software Foundation; either version 3 of the License, or
      6 # (at your option) any later version.
      7 #
      8 # This program is distributed in the hope that it will be useful,
      9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
     10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     11 # GNU General Public License for more details.
     12 #
     13 # You should have received a copy of the GNU General Public License
     14 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
     15 
     16 load_lib "ada.exp"
     17 
     18 require allow_ada_tests
     19 
     20 # This testcase verifies the behavior of the `start' command, which
     21 # does not work when we use the gdb stub...
     22 require !use_gdb_stub
     23 
     24 standard_ada_testfile first
     25 
     26 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable {debug}] != ""} {
     27     return -1
     28 }
     29 
     30 # Build the second test program
     31 set srcfile2 ${srcdir}/${subdir}/${testdir}/second.adb
     32 set binfile2 [standard_output_file second]
     33 
     34 if {[gdb_compile_ada "${srcfile2}" "${binfile2}" executable {debug}] != ""} {
     35     return -1
     36 }
     37 
     38 foreach_with_prefix scenario {kill no-kill} {
     39     clean_restart $binfile
     40 
     41     # Start the program, we should land in the program main procedure
     42     if {[gdb_start_cmd] < 0} {
     43 	fail start
     44 	return -1
     45     }
     46 
     47     gdb_test "" \
     48 	"first \\(\\) at .*first.adb.*" \
     49 	"start first"
     50 
     51     gdb_test_no_output "set confirm off"
     52 
     53     set result [gdb_file_cmd $binfile2 [expr {$scenario == "kill"}]]
     54     gdb_assert {$result == 0} "switch to second executable"
     55 
     56     # Start the program a second time, GDB should land in procedure
     57     # Second this time.
     58     if {[gdb_start_cmd] < 0} {
     59 	fail "start second"
     60     } else {
     61 	gdb_test "" \
     62 	    "second \\(\\) at .*second.adb.*" \
     63 	    "start second"
     64     }
     65 }
     66