| # This testcase is part of GDB, the GNU debugger. |
| |
| # Copyright 2020-2021 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/>. |
| |
| # Test that when setting breakpoints, setting a breakpoint on "foo" |
| # creates locations for all external and static functions called "foo" |
| # in the program, with and without debug info. |
| |
| standard_testfile .c msym-bp-2.c |
| |
| # Run "info breakpoints", and check that we find the two locations, |
| # LOC_A and LOC_B, in either order. |
| proc test_info_break_2 {loc_a loc_b} { |
| set re1 ".*\.1.*${loc_a}\r\n.*\.2.*${loc_b}" |
| set re2 ".*\.1.*${loc_b}\r\n.*\.2.*${loc_a}" |
| gdb_test "info breakpoint" "$re1|$re2" |
| } |
| |
| proc test {debug} { |
| global testfile srcfile srcfile2 |
| global decimal |
| |
| if {$debug} { |
| set options "debug" |
| } else { |
| set options "" |
| } |
| |
| if { [prepare_for_testing "failed to prepare" $testfile-$debug \ |
| [list $srcfile $srcfile2] $options] } { |
| return -1 |
| } |
| |
| # Should find two locations: the static foo in the msym-bp.c file, |
| # and the extern foo in the msym-bp-2.c file. Same result |
| # expected before and after running to main. |
| proc test_break {prefix} { |
| global decimal |
| upvar debug debug |
| |
| with_test_prefix $prefix { |
| gdb_test "break foo" "\\(2 locations\\)" |
| |
| if {$debug} { |
| test_info_break_2 \ |
| "in foo at .*msym-bp.c:$decimal" \ |
| "in foo at .*msym-bp-2.c:$decimal" |
| } else { |
| test_info_break_2 \ |
| "<foo(\\+$decimal)?>" \ |
| "<foo(\\+$decimal)?>" |
| } |
| } |
| } |
| |
| test_break "before run" |
| |
| if ![runto_main] { |
| return |
| } |
| |
| delete_breakpoints |
| |
| test_break "at main" |
| } |
| |
| foreach_with_prefix debug {0 1} { |
| test $debug |
| } |