# 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 . # 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 \ "" \ "" } } } test_break "before run" if ![runto_main] { fail "can't run to main" return } delete_breakpoints test_break "at main" } foreach_with_prefix debug {0 1} { test $debug }