| OLD | NEW |
| 1 # Copyright 2010-2012 Free Software Foundation, Inc. | 1 # Copyright 2010-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 {[skip_shlib_tests]} { | 16 if {[skip_shlib_tests]} { |
| 17 return 0 | 17 return 0 |
| 18 } | 18 } |
| 19 | 19 |
| 20 if [get_compiler_info not-used] { | 20 if [get_compiler_info] { |
| 21 return -1 | 21 return -1 |
| 22 } | 22 } |
| 23 | 23 |
| 24 set testfile "infcall-dlopen" | 24 standard_testfile .cc infcall-dlopen-lib.cc |
| 25 set srcmainfile ${testfile}.cc | 25 set libfile [standard_output_file ${testfile}.so] |
| 26 set srclibfile ${testfile}-lib.cc | 26 set lib_dlopen [shlib_target_file ${testfile}.so] |
| 27 set executable ${testfile} | |
| 28 set libfile ${objdir}/${subdir}/${executable}.so | |
| 29 set binfile ${objdir}/${subdir}/${executable} | |
| 30 set lib_dlopen [shlib_target_file ${executable}.so] | |
| 31 | 27 |
| 32 # Use completely arbitrary file for $libfile source. | 28 # Use completely arbitrary file for $libfile source. |
| 33 if { [gdb_compile_shlib ${srcdir}/${subdir}/${srclibfile} ${libfile} {debug c++}
] != "" | 29 if { [gdb_compile_shlib ${srcdir}/${subdir}/${srcfile2} ${libfile} {debug c++}]
!= "" |
| 34 || [prepare_for_testing ${testfile}.exp ${executable} ${srcmainfile} {debug
c++ shlib_load}] } { | 30 || [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} {debug c++ s
hlib_load}] } { |
| 35 return -1 | 31 return -1 |
| 36 } | 32 } |
| 37 | 33 |
| 38 gdb_load_shlibs $libfile | 34 gdb_load_shlibs $libfile |
| 39 | 35 |
| 40 if { ![runto_main] } { | 36 if { ![runto_main] } { |
| 41 return -1 | 37 return -1 |
| 42 } | 38 } |
| 43 | 39 |
| 44 for {set i 0} {$i < 10} {incr i} { | 40 for {set i 0} {$i < 10} {incr i} { |
| 45 gdb_test "p openlib (\"${lib_dlopen}\")" " = 1" "test $i" | 41 gdb_test "p openlib (\"${lib_dlopen}\")" " = 1" "test $i" |
| 46 # Try to exploit the GDB trashed memory. | 42 # Try to exploit the GDB trashed memory. |
| 47 gdb_test "b openlib" {Breakpoint [0-9]+ at .*} "test $i stub 1" | 43 gdb_test "b openlib" {Breakpoint [0-9]+ at .*} "test $i stub 1" |
| 48 gdb_test_no_output {delete $bpnum} "test $i stub 2" | 44 gdb_test_no_output {delete $bpnum} "test $i stub 2" |
| 49 } | 45 } |
| OLD | NEW |