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