| OLD | NEW |
| 1 # Copyright 2007, 2009-2012 Free Software Foundation, Inc. | 1 # Copyright 2007, 2009-2012 Free Software Foundation, Inc. |
| 2 | 2 |
| 3 # This program is free software; you can redistribute it and/or modify | 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 | 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 | 5 # the Free Software Foundation; either version 3 of the License, or |
| 6 # (at your option) any later version. | 6 # (at your option) any later version. |
| 7 # | 7 # |
| 8 # This program is distributed in the hope that it will be useful, | 8 # This program is distributed in the hope that it will be useful, |
| 9 # but WITHOUT ANY WARRANTY; without even the implied warranty of | 9 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 11 # GNU General Public License for more details. | 11 # GNU General Public License for more details. |
| 12 # | 12 # |
| 13 # You should have received a copy of the GNU General Public License | 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/>. | 14 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 15 | 15 |
| 16 if $tracelevel then { | |
| 17 strace $tracelevel | |
| 18 } | |
| 19 | |
| 20 # | 16 # |
| 21 # test running programs | 17 # test running programs |
| 22 # | 18 # |
| 23 | 19 |
| 24 if {[skip_shlib_tests]} { | 20 if {[skip_shlib_tests]} { |
| 25 return 0 | 21 return 0 |
| 26 } | 22 } |
| 27 | 23 |
| 28 set testfile "watchpoint-solib" | 24 set testfile "watchpoint-solib" |
| 29 set libfile "watchpoint-solib-shr" | 25 set libfile "watchpoint-solib-shr" |
| 30 set libname "${libfile}.sl" | 26 set libname "${libfile}.sl" |
| 31 set libsrcfile ${libfile}.c | 27 set libsrcfile ${libfile}.c |
| 32 set srcfile $srcdir/$subdir/$testfile.c | 28 set srcfile $srcdir/$subdir/$testfile.c |
| 33 set binfile $objdir/$subdir/$testfile | 29 set binfile $objdir/$subdir/$testfile |
| 34 set shlibdir ${objdir}/${subdir} | 30 set shlibdir ${objdir}/${subdir} |
| 35 set libsrc $srcdir/$subdir/$libfile.c | 31 set libsrc $srcdir/$subdir/$libfile.c |
| 36 set lib_sl $objdir/$subdir/$libname | 32 set lib_sl $objdir/$subdir/$libname |
| 37 set lib_dlopen [shlib_target_file ${libname}] | 33 set lib_dlopen [shlib_target_file ${libname}] |
| 38 set lib_syms [shlib_symbol_file ${libname}] | 34 set lib_syms [shlib_symbol_file ${libname}] |
| 39 | 35 |
| 40 if [get_compiler_info ${binfile}] { | 36 if [get_compiler_info] { |
| 41 return -1 | 37 return -1 |
| 42 } | 38 } |
| 43 | 39 |
| 44 set lib_opts debug | 40 set lib_opts debug |
| 45 set exec_opts [list debug shlib_load additional_flags=-DSHLIB_NAME\=\"${lib_dlop
en}\"] | 41 set exec_opts [list debug shlib_load additional_flags=-DSHLIB_NAME\=\"${lib_dlop
en}\"] |
| 46 | 42 |
| 47 if { [gdb_compile_shlib $libsrc $lib_sl $lib_opts] != "" | 43 if { [gdb_compile_shlib $libsrc $lib_sl $lib_opts] != "" |
| 48 || [gdb_compile $srcfile $binfile executable $exec_opts] != ""} { | 44 || [gdb_compile $srcfile $binfile executable $exec_opts] != ""} { |
| 49 untested "Couldn't compile $libsrc or $srcfile." | 45 untested "Couldn't compile $libsrc or $srcfile." |
| 50 return -1 | 46 return -1 |
| 51 } | 47 } |
| 52 | 48 |
| 53 # Start with a fresh gdb. | 49 # Start with a fresh gdb. |
| 54 | 50 |
| 55 gdb_exit | 51 gdb_exit |
| 56 gdb_start | 52 gdb_start |
| 57 gdb_reinitialize_dir $srcdir/$subdir | 53 gdb_reinitialize_dir $srcdir/$subdir |
| 58 gdb_load ${binfile} | 54 gdb_load ${binfile} |
| 59 gdb_load_shlibs $lib_sl | 55 gdb_load_shlibs $lib_sl |
| 60 | 56 |
| 61 if [target_info exists gdb_stub] { | |
| 62 gdb_step_for_stub; | |
| 63 } | |
| 64 | |
| 65 runto_main | 57 runto_main |
| 66 | 58 |
| 67 # Disable hardware watchpoints if necessary. | 59 # Disable hardware watchpoints if necessary. |
| 68 if [target_info exists gdb,no_hardware_watchpoints] { | 60 if [target_info exists gdb,no_hardware_watchpoints] { |
| 69 gdb_test_no_output "set can-use-hw-watchpoints 0" "" | 61 gdb_test_no_output "set can-use-hw-watchpoints 0" "" |
| 70 } | 62 } |
| 71 | 63 |
| 72 # Test that if we set a watchpoint on a global variable | 64 # Test that if we set a watchpoint on a global variable |
| 73 # in a explicitly loaded shared library, and then | 65 # in a explicitly loaded shared library, and then |
| 74 # re-run the application, gdb does not crash. | 66 # re-run the application, gdb does not crash. |
| 75 gdb_test_multiple "break foo" "set pending breakpoint" { | 67 gdb_test_multiple "break foo" "set pending breakpoint" { |
| 76 -re ".*Make breakpoint pending.*y or \\\[n\\\]. $" { | 68 -re ".*Make breakpoint pending.*y or \\\[n\\\]. $" { |
| 77 gdb_test "y" "Breakpoint.*foo.*pending." "set pending breakpoint" | 69 gdb_test "y" "Breakpoint.*foo.*pending." "set pending breakpoint" |
| 78 } | 70 } |
| 79 } | 71 } |
| 80 | 72 |
| 81 set prev_timeout $timeout | 73 set prev_timeout $timeout |
| 82 set timeout 120 | 74 set timeout 120 |
| 83 | 75 |
| 84 gdb_test "continue" ".*Breakpoint 2.*foo.*" "continue to foo" | 76 gdb_test "continue" ".*Breakpoint 2.*foo.*" "continue to foo" |
| 85 gdb_test "watch g" "atchpoint 3: g" "set watchpoint on g" | 77 gdb_test "watch g" "atchpoint 3: g" "set watchpoint on g" |
| 86 gdb_test "continue" ".*New value = 1.*" "continue to watchpoint hit" | 78 gdb_test "continue" ".*New value = 1.*" "continue to watchpoint hit" |
| 87 rerun_to_main | 79 rerun_to_main |
| 88 gdb_test "continue" ".*Breakpoint 2.*foo.*" "continue to foo again" | 80 gdb_test "continue" ".*Breakpoint 2.*foo.*" "continue to foo again" |
| 89 gdb_test "continue" ".*New value = 1.*" "continue to watchpoint hit again" | 81 gdb_test "continue" ".*New value = 1.*" "continue to watchpoint hit again" |
| 90 | 82 |
| 91 set timeout $prev_timeout | 83 set timeout $prev_timeout |
| OLD | NEW |