1# Copyright 2003, 2004, 2005, 2007 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 created by Jeff Johnston. (jjohnstn@redhat.com) 17 18if $tracelevel then { 19 strace $tracelevel 20} 21 22# 23# test running programs 24# 25set prms_id 0 26set bug_id 0 27 28if {[skip_shlib_tests]} { 29 return 0 30} 31 32# TODO: Use LoadLibrary on this target instead of dlopen. 33if {[istarget arm*-*-symbianelf*]} { 34 return 0 35} 36 37set testfile "unload" 38set libfile "unloadshr" 39set libname "${libfile}.sl" 40set libsrcfile ${libfile}.c 41set srcfile $srcdir/$subdir/$testfile.c 42set binfile $objdir/$subdir/$testfile 43set shlibdir ${objdir}/${subdir} 44set libsrc $srcdir/$subdir/$libfile.c 45set lib_sl $objdir/$subdir/$libname 46 47if [get_compiler_info ${binfile}] { 48 return -1 49} 50 51set lib_opts debug 52set exec_opts [list debug shlib_load additional_flags=-DSHLIB_NAME\=\"${libname}\"] 53 54if { [gdb_compile_shlib $libsrc $lib_sl $lib_opts] != "" 55 || [gdb_compile $srcfile $binfile executable $exec_opts] != ""} { 56 untested "Couldn't compile $libsrc or $srcfile." 57 return -1 58} 59 60# Start with a fresh gdb. 61 62gdb_exit 63gdb_start 64gdb_reinitialize_dir $srcdir/$subdir 65gdb_load ${binfile} 66gdb_load_shlibs $lib_sl 67 68if [target_info exists gdb_stub] { 69 gdb_step_for_stub; 70} 71 72# 73# Test setting a breakpoint in a dynamically loaded library which is 74# manually loaded and unloaded 75# 76 77gdb_test_multiple "break shrfunc1" "set pending breakpoint" { 78 -re ".*Make breakpoint pending.*y or \\\[n\\\]. $" { 79 gdb_test "y" "Breakpoint.*shrfunc1.*pending." "set pending breakpoint" 80 } 81} 82 83gdb_test "info break" \ 84 "Num Type\[ \]+Disp Enb Address\[ \]+What.* 85\[0-9\]+\[\t \]+breakpoint keep y.*PENDING.*shrfunc1.*" \ 86"single pending breakpoint info" 87 88set unloadshr_line [gdb_get_line_number "unloadshr break" ${libsrcfile}] 89 90gdb_run_cmd 91gdb_test "" \ 92"Breakpoint.*at.* 93Pending breakpoint \"shrfunc1\" resolved.* 94Breakpoint.*, shrfunc1 \\\(x=3\\\).*unloadshr.c:$unloadshr_line.*" \ 95"running program" 96 97gdb_test "continue" \ 98"Continuing.*warning: Temporarily disabling breakpoints for.*unloadshr.sl.*Program exited normally." \ 99"continuing to end of program" 100 101# 102# Try to rerun program and verify that shared breakpoint is reset properly 103# 104 105gdb_run_cmd 106gdb_test "" \ 107".*Breakpoint.*shrfunc1.*at.*unloadshr.c:$unloadshr_line.*" \ 108"rerun to shared library breakpoint" 109 110gdb_test "continue" \ 111"Continuing.*warning: Temporarily disabling breakpoints for.*unloadshr.sl.*Program exited normally." \ 112"continuing to end of program second time" 113 114