OLD | NEW |
1 # Copyright 2006-2012 Free Software Foundation, Inc. | 1 # Copyright 2006-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_cplus_tests] } { continue } | 16 if { [skip_cplus_tests] } { continue } |
17 | 17 |
18 load_lib mi-support.exp | 18 load_lib mi-support.exp |
19 set MIFLAGS "-i=mi" | 19 set MIFLAGS "-i=mi" |
20 | 20 |
21 gdb_exit | 21 gdb_exit |
22 if [mi_gdb_start] { | 22 if [mi_gdb_start] { |
23 continue | 23 continue |
24 } | 24 } |
25 | 25 |
26 set testfile mi-var-cp | 26 standard_testfile .cc |
27 set srcfile "$testfile.cc" | |
28 set binfile $objdir/$subdir/$testfile | |
29 | 27 |
30 if [get_compiler_info ${binfile} "c++"] { | 28 if [get_compiler_info "c++"] { |
31 return -1; | 29 return -1; |
32 } | 30 } |
33 | 31 |
34 if {[gdb_compile $srcdir/$subdir/$srcfile $binfile executable {debug c++}] != ""
} { | 32 if {[gdb_compile $srcdir/$subdir/$srcfile $binfile executable {debug c++}] != ""
} { |
35 untested $testfile.exp | 33 untested $testfile.exp |
36 return -1 | 34 return -1 |
37 } | 35 } |
38 | 36 |
39 mi_gdb_load ${binfile} | 37 mi_gdb_load ${binfile} |
40 | 38 |
41 mi_prepare_inline_tests $srcfile | 39 mi_prepare_inline_tests $srcfile |
42 | 40 |
43 mi_run_inline_test reference_update | 41 mi_run_inline_test reference_update |
44 mi_run_inline_test base_in_reference | 42 mi_run_inline_test base_in_reference |
45 mi_run_inline_test reference_to_pointer | 43 mi_run_inline_test reference_to_pointer |
46 mi_run_inline_test reference_to_struct | 44 mi_run_inline_test reference_to_struct |
47 mi_run_inline_test path_expression | 45 mi_run_inline_test path_expression |
48 | 46 |
| 47 set lineno [gdb_get_line_number "/* anonymous_structs_and_unions */"] |
| 48 mi_create_breakpoint \ |
| 49 "$srcfile:$lineno" {[0-9]+} keep {anonymous_structs_and_unions\(\)} \ |
| 50 ".*mi-var-cp.cc" $lineno $hex "break in anonymous_structs_and_unions" |
| 51 mi_execute_to "exec-continue" "breakpoint-hit" \ |
| 52 "anonymous_structs_and_unions" "" ".*" ".*" {"" "disp=\"keep\""} \ |
| 53 "continue to anonymous_structs breakpoint" |
| 54 |
| 55 set tree { |
| 56 Anonymous a { |
| 57 {} public { |
| 58 anonymous struct { |
| 59 {} public { |
| 60 int b {} |
| 61 } |
| 62 } |
| 63 anonymous struct { |
| 64 {} public { |
| 65 int c {} |
| 66 } |
| 67 } |
| 68 anonymous struct { |
| 69 {} public { |
| 70 int d {} |
| 71 anonymous struct { |
| 72 {} public { |
| 73 int e {} |
| 74 anonymous struct { |
| 75 {} public { |
| 76 int f {} |
| 77 anonymous union { |
| 78 {} public { |
| 79 int g {} |
| 80 char h {} |
| 81 } |
| 82 } |
| 83 } |
| 84 } |
| 85 anonymous union { |
| 86 {} public { |
| 87 int i {} |
| 88 char j {} |
| 89 } |
| 90 } |
| 91 } |
| 92 } |
| 93 } |
| 94 } |
| 95 } |
| 96 } |
| 97 } |
| 98 |
| 99 proc verify_everything {variable_name} { |
| 100 # Test -var-list-children |
| 101 mi_varobj_tree_test_children_callback $variable_name |
| 102 |
| 103 # Bring the variable named by VARIABLE_NAME into the current scope |
| 104 # in VAROBJ. |
| 105 upvar #0 $variable_name varobj |
| 106 |
| 107 # Test -var-info-path-expression |
| 108 mi_gdb_test "-var-info-path-expression $varobj(obj_name)" \ |
| 109 "\\^done,path_expr=\"[string_to_regexp $varobj(path_expr)]\"" \ |
| 110 "path expression for $varobj(obj_name)" |
| 111 |
| 112 # Test -var-info-expression |
| 113 mi_gdb_test "-var-info-expression $varobj(obj_name)" \ |
| 114 "\\^done,lang=\"C\\+\\+\",exp=\"[string_to_regexp $varobj(display_name)]\"
" \ |
| 115 "expression for $varobj(obj_name)" |
| 116 } |
| 117 |
| 118 mi_walk_varobj_tree c++ $tree verify_everything |
| 119 |
49 mi_gdb_exit | 120 mi_gdb_exit |
50 return 0 | 121 return 0 |
OLD | NEW |