1# Copyright 2010-2019 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 16load_lib "ada.exp" 17 18standard_ada_testfile a 19 20set cfile "foo" 21set csrcfile ${srcdir}/${subdir}/${testdir}/${cfile}.c 22set cobject [standard_output_file ${cfile}.o] 23 24gdb_compile "${csrcfile}" "${cobject}" object [list debug] 25if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } { 26 return -1 27} 28 29clean_restart ${testfile} 30 31# Run to c_function an verify that the language automatically gets set to C. 32runto c_function 33gdb_test "show lang" \ 34 "The current source language is \"auto; currently c\"\\." 35 36# Now, insert a breakpoint inside an Ada unit, using a condition written 37# in Ada. Even though the current language is "auto; currently c", we 38# expect the debugger to parse the expression using Ada, because the 39# current language mode is auto, and the breakpoint is inside Ada code. 40set bp_location [gdb_get_line_number "STOP" ${testdir}/mixed.adb] 41gdb_test "break mixed.adb:${bp_location} if light = green" \ 42 "Breakpoint \[0-9\]* at .*: file (.*/)?mixed.adb, line \[0-9\]*\\." 43 44# Now, continue until we hit the breakpoint. If the condition is 45# evaluated correctly, the first hit will be ignored, and the debugger 46# will stop at the second hit only, when the "light" argument is equal 47# to green. 48gdb_test "continue" \ 49 "Breakpoint \[0-9\]*, mixed\\.break_me \\(light=green\\) at .*" 50 51 52