OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gdb-7.2/] [gdb/] [testsuite/] [gdb.python/] [py-mi.exp] - Blame information for rev 330

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 330 jeremybenn
# Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
2
 
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.
7
#
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.
12
#
13
# You should have received a copy of the GNU General Public License
14
# along with this program.  If not, see .
15
 
16
# This file is part of the GDB testsuite.  It tests Python-based
17
# pretty-printing for MI.
18
 
19
load_lib mi-support.exp
20
set MIFLAGS "-i=mi2"
21
 
22
gdb_exit
23
if [mi_gdb_start] {
24
    continue
25
}
26
 
27
set testfile "py-prettyprint"
28
set srcfile ${testfile}.c
29
set binfile ${objdir}/${subdir}/py-mi
30
if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DMI}] != "" } {
31
    untested mi2-var-child.exp
32
    return -1
33
}
34
 
35
mi_delete_breakpoints
36
mi_gdb_reinitialize_dir $srcdir/$subdir
37
mi_gdb_load ${binfile}
38
 
39
if {[lsearch -exact [mi_get_features] python] < 0} {
40
    unsupported "python support is disabled"
41
    return -1
42
}
43
 
44
mi_runto main
45
 
46
set remote_python_file [remote_download host ${srcdir}/${subdir}/${testfile}.py]
47
 
48
mi_gdb_test "python execfile ('${remote_python_file}')" ""
49
 
50
mi_continue_to_line [gdb_get_line_number {MI breakpoint here} ${testfile}.c] \
51
  "step to breakpoint"
52
 
53
mi_create_dynamic_varobj container c \
54
  "create container varobj, no pretty-printing"
55
 
56
mi_list_varobj_children container {
57
  { container.name name 1 string }
58
  { container.len len 0 int }
59
  { container.elements elements 1 "int ." }
60
} "examine container children=0, no pretty-printing"
61
 
62
mi_delete_varobj container "delete varobj"
63
 
64
mi_create_dynamic_varobj nscont nstype \
65
  "create nscont varobj, no pretty-printing"
66
 
67
mi_list_varobj_children nscont {
68
  { nscont.len len 0 int }
69
  { nscont.elements elements 1 "int ." }
70
} "examine nscont children=0, no pretty-printing"
71
 
72
mi_delete_varobj nscont "delete varobj"
73
 
74
mi_gdb_test "-enable-pretty-printing" ""
75
 
76
mi_create_varobj_checked string string_1 \
77
    "struct string_repr" \
78
    "create string_1 varobj"
79
 
80
mi_create_varobj_checked lstring estring \
81
    "struct lazystring" \
82
    "create estring varobj"
83
 
84
mi_gdb_test "-data-evaluate-expression \"string_1 = string_2\"" ".*" \
85
    "assign string_1 from string_2"
86
 
87
mi_gdb_test "-var-update string" \
88
    "\\^done,changelist=\\\[{name=\"string\",in_scope=\"true\",type_changed=\"false\",dynamic=\"1\",has_more=\"0\"}\\\]" \
89
    "update string varobj after assignment"
90
 
91
mi_create_dynamic_varobj container c \
92
  "create container varobj"
93
 
94
mi_list_varobj_children container {
95
} "examine container children=0"
96
 
97
mi_next "next over update 1"
98
 
99
mi_varobj_update_dynamic container "varobj update 1" {
100
    type_changed false new_num_children 1 dynamic 1 has_more 0
101
} {
102
} {
103
    { name {container.\[0\]} exp {\[0\]} numchild 0 type int thread-id 1 }
104
}
105
 
106
mi_next "next over update 2"
107
 
108
mi_varobj_update_dynamic container "varobj update 2" {
109
    type_changed false new_num_children 2 dynamic 1 has_more 0
110
} {
111
} {
112
    { name {container.\[1\]} exp {\[1\]} numchild 0 type int thread-id 1 }
113
}
114
 
115
mi_gdb_test "-var-set-visualizer container None" \
116
  "\\^done" \
117
  "clear visualizer"
118
 
119
mi_gdb_test "-var-update container" \
120
  "\\^done,changelist=\\\[\\\]" \
121
  "varobj update after clearing"
122
 
123
mi_gdb_test "-var-set-visualizer container gdb.default_visualizer" \
124
  "\\^done" \
125
  "choose default visualizer"
126
 
127
mi_varobj_update_dynamic container "varobj update after choosing default" {
128
    type_changed false new_num_children 2 dynamic 1 has_more 0
129
} {
130
} {
131
    { name {container.\[0\]} exp {\[0\]} numchild 0 type int thread-id 1 }
132
    { name {container.\[1\]} exp {\[1\]} numchild 0 type int thread-id 1 }
133
}
134
 
135
mi_gdb_test "-var-set-visualizer container ContainerPrinter" \
136
  "\\^done" \
137
  "choose visualizer using expression"
138
 
139
mi_varobj_update_dynamic container \
140
  "varobj update after choosing via expression" {
141
      type_changed false new_num_children 2 dynamic 1 has_more 0
142
  } {
143
  } {
144
      { name {container.\[0\]} exp {\[0\]} numchild 0 type int thread-id 1 }
145
      { name {container.\[1\]} exp {\[1\]} numchild 0 type int thread-id 1 }
146
  }
147
 
148
mi_list_varobj_children_range container 1 2 2 {
149
    { {container.\[1\]} {\[1\]} 0 int }
150
} "list varobj children after selecting child range"
151
 
152
mi_list_varobj_children_range container -1 -1 2 {
153
    { {container.\[0\]} {\[0\]} 0 int }
154
    { {container.\[1\]} {\[1\]} 0 int }
155
} "list varobj children after resetting child range"
156
 
157
mi_next "next over update 3"
158
 
159
mi_gdb_test "-var-set-update-range container 0 1" \
160
  "\\^done" \
161
  "set update range"
162
 
163
# This should truncate the list.
164
mi_list_varobj_children container {
165
    { {container.\[0\]} {\[0\]} 0 int }
166
} "list children after setting update range"
167
 
168
# This should return just the items in [1,2).
169
mi_list_varobj_children_range container 1 2 2 {
170
    { {container.\[1\]} {\[1\]} 0 int }
171
} "list selected children after setting range"
172
 
173
# This should not be affected by the previous list-children request.
174
mi_list_varobj_children container {
175
    { {container.\[0\]} {\[0\]} 0 int }
176
} "list children after listing selected range"
177
 
178
mi_next "next over update 4"
179
 
180
# This should only show the first child, because the update range has
181
# been set.
182
mi_varobj_update_dynamic container \
183
  "update after next with restricted range" {
184
      type_changed false new_num_children 1 dynamic 1 has_more 1
185
  } {
186
      { name {container.\[0\]} in_scope true type_changed false dynamic 1 has_more 0 }
187
  } {
188
  }
189
 
190
mi_gdb_test "-var-set-update-range container 3 4" \
191
  "\\^done" \
192
  "set update range with non-zero start"
193
 
194
# Elements were updated but should not be reported.
195
mi_varobj_update_dynamic container \
196
  "update varobj with change outside selected range" {
197
      type_changed false new_num_children 3 dynamic 1 has_more 0
198
  } {
199
  } {
200
  }
201
 
202
mi_next "next over update 5"
203
 
204
# Regression test: examine an object that has no children, then update
205
# it to ensure that we don't print the children.
206
mi_create_dynamic_varobj container2 c2 \
207
  "create second container varobj"
208
 
209
mi_gdb_test "-var-update container2" \
210
  "\\^done,changelist=.." \
211
  "update varobj, no children requested"
212
 
213
mi_next "next over update 6"
214
 
215
# Now container2 has an element -- and an update should mention that
216
# it has_more.  But, because we did not request children, we still
217
# should not actually see them.
218
mi_varobj_update_dynamic container2 \
219
    "update varobj 2, no children requested" {
220
        type_changed false dynamic 1 has_more 1
221
    } {} {}
222
 
223
mi_continue_to_line \
224
    [gdb_get_line_number {MI outer breakpoint here} ${testfile}.c] \
225
    "step to outer breakpoint"
226
 
227
mi_create_dynamic_varobj outer outer \
228
  "create outer varobj"
229
 
230
mi_list_varobj_children outer {
231
  { outer.s s 2 "struct substruct" }
232
  { outer.x x 0 "int" }
233
} "list children of outer"
234
 
235
mi_list_varobj_children outer.s {
236
  { outer.s.a a 0 int }
237
  { outer.s.b b 0 int }
238
} "list children of outer.s"
239
 
240
mi_next "next over outer update"
241
 
242
mi_gdb_test "-var-update outer" \
243
  ".done,changelist=.{name=\"outer.s.a\",in_scope=\"true\",type_changed=\"false\",dynamic=\"1\",has_more=\"0\"}." \
244
  "update after updating element of outer"
245
 
246
mi_continue_to_line \
247
    [gdb_get_line_number {Another MI breakpoint} ${testfile}.c] \
248
    "step to second breakpoint"
249
 
250
mi_varobj_update_with_type_change container int 0 "update after type change"
251
 
252
 
253
mi_continue_to_line \
254
    [gdb_get_line_number {break to inspect struct and union} ${testfile}.c] \
255
    "step to outer breakpoint"
256
 
257
mi_create_dynamic_varobj nscont nstype \
258
  "create nstype varobj"
259
 
260
mi_list_varobj_children nscont {
261
    { {nscont.\[0\]} {\[0\]} 0 int }
262
    { {nscont.\[1\]} {\[1\]} 0 int }
263
} "list children after setting update range"
264
 
265
mi_gdb_test "-var-set-visualizer nscont None" \
266
  "\\^done" \
267
  "clear visualizer"
268
 
269
mi_gdb_test "-var-update nscont" \
270
  "\\^done,changelist=\\\[\\\]" \
271
  "varobj update after clearing"
272
 
273
mi_gdb_test "-var-set-visualizer nscont gdb.default_visualizer" \
274
  "\\^done" \
275
  "choose default visualizer"
276
 
277
remote_file host delete ${remote_python_file}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.