| # Copyright 2008-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 homonym_main |
| |
| if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } { |
| return -1 |
| } |
| |
| clean_restart ${testfile} |
| |
| |
| # Do these tests before running, so we are operating in a known |
| # environment. |
| |
| gdb_test "break Get_Value" \ |
| "Breakpoint \[0-9\]+ at $hex: Get_Value. .2 locations." \ |
| "set breakpoint at Get_Value" |
| |
| gdb_test "break homonym.adb:Get_Value" \ |
| "Breakpoint \[0-9\]+ at $hex: homonym.adb:Get_Value. .2 locations." \ |
| "set breakpoint at homonym.adb:Get_Value" |
| |
| gdb_test "break <homonym__get_value>" \ |
| "Breakpoint \[0-9\]+ at $hex: <homonym__get_value>. .2 locations." \ |
| "set breakpoint at <homonym__get_value>" |
| |
| delete_breakpoints |
| |
| set bp_location [gdb_get_line_number "BREAK_1" ${testdir}/homonym.adb] |
| runto "homonym.adb:$bp_location" |
| |
| # Check the variables and types defined inside the current scope. |
| # There are some homonyms in a different scope, so we want to make |
| # sure that the debugger doesn't get mixed up. |
| |
| gdb_test "ptype local_type" \ |
| "type = range -100 \\.\\. 100" \ |
| "ptype local_type at BREAK_1" |
| |
| gdb_test "ptype local_type_subtype" \ |
| "type = range -100 \\.\\. 100" \ |
| "ptype local_type_subtype at BREAK_1" |
| |
| gdb_test "ptype int_type" \ |
| "type = range -100 \\.\\. 100" \ |
| "ptype int_type at BREAK_1" |
| |
| gdb_test "ptype lcl" \ |
| "type = range -100 \\.\\. 100" \ |
| "ptype lcl at BREAK_1" |
| |
| gdb_test "print lcl" \ |
| "= 29" \ |
| "print lcl at BREAK_1" |
| |
| # Now, continue until reaching BREAK_2, and do the same commands |
| # as above. The result should be different since the definitions |
| # in the new scope are different. |
| |
| set bp_location [gdb_get_line_number "BREAK_2" ${testdir}/homonym.adb] |
| gdb_test "break homonym.adb:$bp_location" \ |
| "Breakpoint \[0-9\]+ at 0x\[0-9a-fA-F\]+: file .*homonym\.adb, line \[0-9\]+\." \ |
| "break at BREAK_2" |
| |
| gdb_test "continue" \ |
| ".*Breakpoint \[0-9\]+, homonym\\.get_value \\(\\) at .*homonym\\.adb:.*" \ |
| "continue until BREAK_2" |
| |
| gdb_test "ptype local_type" \ |
| "type = range 1 \\.\\. 19740804" \ |
| "ptype local_type at BREAK_2" |
| |
| gdb_test "ptype local_type_subtype" \ |
| "type = range 1 \\.\\. 19740804" \ |
| "ptype local_type_subtype at BREAK_2" |
| |
| gdb_test "ptype lcl" \ |
| "type = range 1 \\.\\. 19740804" \ |
| "ptype lcl at BREAK_2" |
| |
| gdb_test "print lcl" \ |
| "= 17" \ |
| "print lcl at BREAK_2" |