1# Copyright 2004, 2007, 2008, 2009, 2010, 2011 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# Test stepping into and continuing on from a function in 17# a shared library (PR gdb/1555, was PR shlib/1280, shlib/1237). 18# Tested on ppc-yellowdog-linux (Yellow Dog Linux 3.0 3.2.2-2a) 19 20if $tracelevel then { 21 strace $tracelevel 22} 23 24if {[skip_shlib_tests]} { 25 return 0 26} 27 28set testfile gdb1555-main 29set libfile gdb1555 30set srcfile ${testfile}.c 31set binfile ${objdir}/${subdir}/${testfile} 32 33set libsrc "${srcdir}/${subdir}/${libfile}.c" 34set libobj "${objdir}/${subdir}/${libfile}.so" 35set execsrc "${srcdir}/${subdir}/${srcfile}" 36 37remote_exec build "rm -f ${binfile}" 38 39# get the value of gcc_compiled 40if [get_compiler_info ${binfile}] { 41 return -1 42} 43 44if { [gdb_compile_shlib $libsrc $libobj {debug}] != "" 45 || [gdb_compile $execsrc ${binfile} executable \ 46 [list debug shlib=${libobj}]] != "" } { 47 return -1 48} 49 50gdb_exit 51gdb_start 52gdb_reinitialize_dir $srcdir/$subdir 53gdb_load ${binfile} 54gdb_load_shlibs $libobj 55 56if ![runto_main] then { 57 fail "Can't run to main" 58 return 0 59} 60 61# PR/1555 (was shlib 1280) 62set name "Step into shared lib function" 63gdb_test_multiple "s" $name \ 64{ 65 -re "hithere2 \\(\\) at.*${libfile}.c:\[0-9\]+\r\n\[0-9\]+.*a = 21;.*$gdb_prompt $" { 66 pass $name 67 } 68 -re "0x\[0-9a-f\]+ in .* \\(\\) from /lib/ld.so.1.*$gdb_prompt $" { 69 kfail "gdb/1555" $name 70 } 71} 72 73# PR/1555 (was shlib 1237) 74set name "Next while in a shared lib function" 75gdb_test_multiple "n" $name \ 76{ 77 -re "\[0-9\]+.*return a;.*$gdb_prompt $" { 78 pass $name 79 } 80 -re "Single stepping until exit from function .*, \r\nwhich has no line number information.\r\n\r\n$inferior_exited_re normally.*$gdb_prompt $" { 81 kfail "gdb/1555" $name 82 } 83} 84 85