| # Copyright 2010-2016 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" |
| |
| standard_ada_testfile a |
| |
| set cfile "foo" |
| set csrcfile ${srcdir}/${subdir}/${testdir}/${cfile}.c |
| set cobject [standard_output_file ${cfile}.o] |
| |
| gdb_compile "${csrcfile}" "${cobject}" object [list debug] |
| if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } { |
| return -1 |
| } |
| |
| clean_restart ${testfile} |
| |
| # Run to c_function an verify that the language automatically gets set to C. |
| runto c_function |
| gdb_test "show lang" \ |
| "The current source language is \"auto; currently c\"\\." |
| |
| # Now, insert a breakpoint inside an Ada unit, using a condition written |
| # in Ada. Even though the current language is "auto; currently c", we |
| # expect the debugger to parse the expression using Ada, because the |
| # current language mode is auto, and the breakpoint is inside Ada code. |
| set bp_location [gdb_get_line_number "STOP" ${testdir}/mixed.adb] |
| gdb_test "break mixed.adb:${bp_location} if light = green" \ |
| "Breakpoint \[0-9\]* at .*: file (.*/)?mixed.adb, line \[0-9\]*\\." |
| |
| # Now, continue until we hit the breakpoint. If the condition is |
| # evaluated correctly, the first hit will be ignored, and the debugger |
| # will stop at the second hit only, when the "light" argument is equal |
| # to green. |
| gdb_test "continue" \ |
| "Breakpoint \[0-9\]*, mixed\\.break_me \\(light=green\\) at .*" |
| |
| |