# Copyright 2013-2018 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 . standard_testfile lspec.cc if {[skip_cplus_tests]} { unsupported "skipping C++ tests" return } set opts {debug c++} set objfile1 [standard_output_file ${testfile}one.o] set objfile2 [standard_output_file ${testfile}two.o] if { [file pathtype $objdir] == "relative" } { untested "objdir $objdir should be absolute" return } set saved_pwd [pwd] cd $srcdir/${subdir}/base/one set err1 [gdb_compile "thefile.cc" $objfile1 object $opts] cd $saved_pwd cd $srcdir/${subdir}/base/two set err2 [gdb_compile "thefile.cc" $objfile2 object $opts] cd $saved_pwd if { $err1 != "" || $err2 != "" } { untested "compilation failed" return -1 } if { [gdb_compile "$srcdir/${subdir}/$srcfile $objfile1 $objfile2" \ $binfile executable $opts] != "" } { return -1 } clean_restart ${testfile} gdb_test_no_output "set multiple-symbols ask" gdb_test_no_output "set filename-display absolute" set cmd "break twodup" set test "break twodup absolute" gdb_test_multiple $cmd $test { -re "^$cmd\r\n\\\[0\\\] cancel\r\n\\\[1\\\] all\r\n\\\[2\\\] \[^\r\n\]+/base/one/thefile\\.cc:twodup\\\(\\\)\r\n\\\[3\\\] \[^\r\n\]+/base/two/thefile\\.cc:twodup\\\(\\\)\r\n> $" { pass $test } } gdb_test "0" "canceled" gdb_test_no_output "set filename-display relative" set cmd "break twodup" set test "break twodup relative" gdb_test_multiple $cmd $test { -re "^$cmd\r\n\\\[0\\\] cancel\r\n\\\[1\\\] all\r\n\\\[2\\\] thefile\\.cc:twodup\\\(\\\)\r\n\\\[3\\\] thefile\\.cc:twodup\\\(\\\)\r\n> $" { pass $test } } gdb_test "2" "^2\r\nBreakpoint \[0-9\]+ at 0x\[0-9a-f\]+: file thefile\\.cc, line \[0-9a-f\]+\\." gdb_breakpoint "body_elsewhere" gdb_run_cmd gdb_test "" "Breakpoint \[0-9\]+, twodup \\(\\) at thefile.cc:\[0-9\]+\r\n.*" "expect breakpoint" gdb_test "info source" "\r\nLocated in \[^\r\n\]+/base/one/thefile\\.cc\r\n.*" gdb_continue_to_breakpoint "body_elsewhere" ".* body_elsewhere marker .*" delete_breakpoints set cmd "break twodup" set test "break twodup relative other" gdb_test_multiple $cmd $test { -re "^$cmd\r\n\\\[0\\\] cancel\r\n\\\[1\\\] all\r\n\\\[2\\\] thefile\\.cc:twodup\\\(\\\)\r\n\\\[3\\\] thefile\\.cc:twodup\\\(\\\)\r\n> $" { pass $test } } gdb_test "3" "^3\r\nBreakpoint \[0-9\]+ at 0x\[0-9a-f\]+: file thefile\\.cc, line \[0-9a-f\]+\\." gdb_breakpoint "body_elsewhere" gdb_run_cmd gdb_test "" "Breakpoint \[0-9\]+, twodup \\(\\) at thefile.cc:\[0-9\]+\r\n.*" "expect breakpoint other" gdb_test "info source" "\r\nLocated in \[^\r\n\]+/base/two/thefile\\.cc\r\n.*" "info source other" gdb_continue_to_breakpoint "body_elsewhere other" ".* body_elsewhere marker .*"