1 # Copyright
2007-2015 Free Software Foundation
, Inc.
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.
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.
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
/>.
16 # When gdb resolves type information
for class
"derived" from objfile
17 # gdb2384
, it use to fill in the TYPE_VPTR_BASETYPE field with class
"base"
18 # from objfile gdb2384
-base.so. When the
program is rerun the type
19 # information
for base
-in
-so
-base.so is discarded leaving
20 # TYPE_VPTR_BASETYPE dangling.
24 if { [skip_cplus_tests
] } { continue }
25 if { [skip_shlib_tests
] } { continue }
27 standard_testfile .cc gdb2384
-base.cc
29 set sofile
[standard_output_file gdb2384
-base.so
]
31 # Create and source the file that provides information about the compiler
32 # used to
compile the test case.
33 if [get_compiler_info
"c++"] {
37 if { [gdb_compile_shlib $srcdir
/$subdir
/$srcfile2 $sofile
{debug c
++}] != ""
38 ||
[gdb_compile $srcdir
/$subdir
/$srcfile $binfile executable
[list debug
"c++" shlib=${sofile}]] != ""} {
43 clean_restart $
{binfile
}
44 gdb_load_shlibs $
{sofile
}
47 if ![runto_main
] then {
48 perror
"couldn't run to breakpoint"
52 gdb_breakpoint
[gdb_get_line_number
"set breakpoint here"]
53 gdb_continue_to_breakpoint
"set breakpoint here"
55 gdb_test
"print d1.meth ()" \
59 # Now try again. gdb
's without the fix will hopefully segv here
62 gdb_breakpoint [gdb_get_line_number "set breakpoint here"]
63 gdb_continue_to_breakpoint "set breakpoint here"
64 gdb_test "print d1.meth ()" \
71 gdb_breakpoint [gdb_get_line_number "set breakpoint here (second)"]
72 gdb_continue_to_breakpoint "set breakpoint here (second)"
73 gdb_test "print d2.meth ()" \
78 gdb_breakpoint [gdb_get_line_number "set breakpoint here (second)"]
79 gdb_continue_to_breakpoint "set breakpoint here (second)"
80 gdb_test "print d2.meth ()" \