1# Copyright 2006-2013 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# The intent of this testcase is to assure that backtrace works while 17# single-stepping the instructions that prepare to call a function. 18 19 20set testfile step-bt 21set srcfile ${testfile}.c 22set binfile ${objdir}/${subdir}/${testfile} 23if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { 24 untested "Couldn't compile test program" 25 return -1 26} 27 28# Get things started. 29 30gdb_exit 31gdb_start 32gdb_reinitialize_dir $srcdir/$subdir 33gdb_load ${binfile} 34 35gdb_test "break *hello" \ 36 "Breakpoint.*at.* file .*$srcfile, line .*" \ 37 "breakpoint at first instruction of hello()" 38 39gdb_run_cmd 40gdb_expect { 41 -re ".*Breakpoint.* hello .* at .*$srcfile:.*$gdb_prompt $" { 42 pass "run to hello()" 43 } 44 -re ".*$gdb_prompt $" { 45 fail "run to hello()" 46 return -1 47 } 48 timeout { 49 fail "run to hello() (timeout)" 50 return -1 51 } 52} 53 54gdb_test "stepi" \ 55 ".*" \ 56 "step first instruction" 57 58gdb_test "bt" \ 59 "#0 +(0x\[0-9a-z\]+ in )?hello .*#1 +(0x\[0-9a-z\]* in )?main.*" \ 60 "backtrace after first instruction step" 61 62gdb_test "stepi" \ 63 ".*" \ 64 "step second instruction" 65 66gdb_test "bt" \ 67 "#0 +(0x\[0-9a-z\]+ in )?hello .*#1 +(0x\[0-9a-z\]* in )?main.*" \ 68 "backtrace after second instruction step" 69 70