1# Copyright 2001-2019 Free Software Foundation, Inc. 2 3# This program is free software; you can redistribute it and/or modify 4# it under the terms of the GNU General Public License as published by 5# the Free Software Foundation; either version 3 of the License, or 6# (at your option) any later version. 7# 8# This program is distributed in the hope that it will be useful, 9# but WITHOUT ANY WARRANTY; without even the implied warranty of 10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11# GNU General Public License for more details. 12# 13# You should have received a copy of the GNU General Public License 14# along with this program. If not, see <http://www.gnu.org/licenses/>. 15 16# This file was written by Michael Snyder. (msnyder@redhat.com) 17 18# 19# Test breakpoints at consecutive instruction addresses. 20# 21 22 23standard_testfile 24 25if [get_compiler_info] { 26 return -1 27} 28 29if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug nowarnings}]} { 30 return -1 31} 32 33if ![runto_main] then { 34 perror "couldn't run to breakpoint" 35 continue 36} 37 38set nl "\[\r\n\]+" 39 40gdb_breakpoint foo 41gdb_test "continue" "Breakpoint $decimal, foo .*" \ 42 "continue to breakpoint in foo" 43 44set bp_addr 0 45set stop_addr 0 46 47gdb_test_multiple "x /2i \$pc" "get breakpoint address for foo" { 48 -re "=> $hex.*${nl} ($hex).*$gdb_prompt $" { 49 set bp_addr $expect_out(1,string) 50 pass "get breakpoint address for foo" 51 } 52} 53 54gdb_test "break \*$bp_addr" "Breakpoint $decimal at $bp_addr: file .*" \ 55 "set bp, 2nd instr" 56 57gdb_test_multiple "step" "stopped at bp, 2nd instr" { 58 -re "Breakpoint $decimal, ($hex) in foo.*$gdb_prompt $" { 59 set stop_addr $expect_out(1,string) 60 if [eval expr "$bp_addr == $stop_addr"] then { 61 pass "stopped at bp, 2nd instr" 62 } else { 63 fail "stopped at bp, 2nd instr (wrong address)" 64 } 65 } 66} 67 68