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 |