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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [insight/] [gdb/] [testsuite/] [gdb.base/] [whatis.exp] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 578 markom
#   Copyright 1988, 1990, 1991, 1992, 1994, 1995, 1996, 1997, 1999
2
#   Free Software Foundation, Inc.
3
 
4
# This program is free software; you can redistribute it and/or modify
5
# it under the terms of the GNU General Public License as published by
6
# the Free Software Foundation; either version 2 of the License, or
7
# (at your option) any later version.
8
#
9
# This program is distributed in the hope that it will be useful,
10
# but WITHOUT ANY WARRANTY; without even the implied warranty of
11
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
# GNU General Public License for more details.
13
#
14
# You should have received a copy of the GNU General Public License
15
# along with this program; if not, write to the Free Software
16
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17
 
18
# Please email any bugs, comments, and/or additions to this file to:
19
# bug-gdb@prep.ai.mit.edu
20
 
21
# This file was written by Rob Savoye. (rob@cygnus.com)
22
 
23
if $tracelevel {
24
    strace $tracelevel
25
}
26
 
27
#
28
# test running programs
29
#
30
set prms_id 0
31
set bug_id 0
32
 
33
set testfile whatis
34
set srcfile ${testfile}.c
35
set binfile ${objdir}/${subdir}/${testfile}
36
if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
37
     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
38
}
39
 
40
# Create and source the file that provides information about the compiler
41
# used to compile the test case.
42
if [get_compiler_info ${binfile}] {
43
    return -1;
44
}
45
 
46
# Start with a fresh gdb.
47
 
48
gdb_exit
49
gdb_start
50
gdb_reinitialize_dir $srcdir/$subdir
51
gdb_load $binfile
52
 
53
# Define a procedure to set up an xfail for all targets that put out a
54
# `long' type as an `int' type.
55
# Sun/Ultrix cc have this problem.
56
# It was said that COFF targets can not distinguish int from long either.
57
 
58
proc setup_xfail_on_long_vs_int {} {
59
    global gcc_compiled
60
 
61
    if {!$gcc_compiled} {
62
        setup_xfail "*-sun-sunos4*" "*-*-ultrix*" "i*86-sequent-bsd*"
63
    }
64
}
65
 
66
#
67
# Test whatis command with basic C types
68
#
69
# The name printed now (as of 23 May 1993) is whatever name the compiler
70
# uses in the stabs.  So we need to deal with names both from gcc and
71
# native compilers.
72
#
73
 
74
gdb_test "whatis v_char" \
75
    "type = (unsigned char|char)" \
76
    "whatis char"
77
 
78
# If we did not use the signed keyword when compiling the file, don't
79
# expect GDB to know that char is signed.
80
if { $hp_cc_compiler || $hp_aCC_compiler } {
81
    set signed_keyword_not_used 1
82
}
83
if $signed_keyword_not_used then {
84
    set signed_char "char"
85
} else {
86
    set signed_char "signed char"
87
}
88
setup_xfail "a29k-*-*"
89
if {!$gcc_compiled} then { setup_xfail "mips-sgi-irix*" }
90
gdb_test "whatis v_signed_char" \
91
    "type = $signed_char" \
92
    "whatis signed char"
93
 
94
gdb_test "whatis v_unsigned_char" \
95
    "type = unsigned char" \
96
    "whatis unsigned char"
97
 
98
gdb_test "whatis v_short" \
99
    "type = (short|short int)" \
100
    "whatis short"
101
 
102
gdb_test "whatis v_signed_short" \
103
    "type = (short|short int|signed short|signed short int)" \
104
    "whatis signed short"
105
 
106
gdb_test "whatis v_unsigned_short" \
107
    "type = (unsigned short|short unsigned int)" \
108
    "whatis unsigned short"
109
 
110
gdb_test "whatis v_int" \
111
    "type = int" \
112
    "whatis int"
113
 
114
gdb_test "whatis v_signed_int" \
115
    "type = (signed |)int" \
116
    "whatis signed int"
117
 
118
gdb_test "whatis v_unsigned_int" \
119
    "type = unsigned int" \
120
    "whatis unsigned int"
121
 
122
setup_xfail_on_long_vs_int
123
# AIX xlc gets this wrong and unsigned long right.  Go figure.
124
if {!$gcc_compiled} then {setup_xfail "rs6000-*-aix*"}
125
gdb_test "whatis v_long" \
126
    "type = (long|long int)" \
127
    "whatis long"
128
 
129
setup_xfail_on_long_vs_int
130
# AIX xlc gets this wrong and unsigned long right.  Go figure.
131
if {!$gcc_compiled} then {setup_xfail "rs6000-*-aix*"}
132
gdb_test "whatis v_signed_long" \
133
    "type = (signed |)(long|long int)" \
134
    "whatis signed long"
135
 
136
setup_xfail_on_long_vs_int
137
gdb_test "whatis v_unsigned_long" \
138
    "type = (unsigned long|long unsigned int)" \
139
    "whatis unsigned long"
140
 
141
gdb_test "whatis v_float" \
142
    "type = float" \
143
    "whatis float"
144
 
145
gdb_test "whatis v_double" \
146
    "type = double" \
147
    "whatis double"
148
 
149
 
150
# test whatis command with arrays
151
#
152
# We already tested whether char prints as "char", so here we accept
153
# "unsigned char", "signed char", and other perversions.  No need for more
154
# than one xfail for the same thing.
155
gdb_test "whatis v_char_array" \
156
    "type = (signed |unsigned |)char \\\[2\\\]" \
157
    "whatis char array"
158
 
159
gdb_test "whatis v_signed_char_array" \
160
    "type = (signed |unsigned |)char \\\[2\\\]" \
161
    "whatis signed char array"
162
 
163
gdb_test "whatis v_unsigned_char_array" \
164
    "type = unsigned char \\\[2\\\]" \
165
    "whatis unsigned char array"
166
 
167
gdb_test "whatis v_short_array" \
168
    "type = (short|short int) \\\[2\\\]" \
169
    "whatis short array"
170
 
171
gdb_test "whatis v_signed_short_array" \
172
    "type = (signed |)(short|short int) \\\[2\\\]" \
173
    "whatis signed short array"
174
 
175
gdb_test "whatis v_unsigned_short_array" \
176
    "type = (unsigned short|short unsigned int) \\\[2\\\]" \
177
    "whatis unsigned short array"
178
 
179
gdb_test "whatis v_int_array" \
180
    "type = int \\\[2\\\]" \
181
    "whatis int array"
182
 
183
gdb_test "whatis v_signed_int_array" \
184
    "type = (signed |)int \\\[2\\\]" \
185
    "whatis signed int array"
186
 
187
gdb_test "whatis v_unsigned_int_array" \
188
    "type = unsigned int \\\[2\\\]" \
189
    "whatis unsigned int array"
190
 
191
# We already tested whether long prints as long, so here we accept int
192
# No need for more than one xfail for the same thing.
193
gdb_test "whatis v_long_array" \
194
    "type = (int|long|long int) \\\[2\\\]" \
195
    "whatis long array"
196
 
197
gdb_test "whatis v_signed_long_array" \
198
    "type = (signed |)(int|long|long int) \\\[2\\\]" \
199
    "whatis signed long array"
200
 
201
gdb_test "whatis v_unsigned_long_array" \
202
    "type = (unsigned (int|long|long int)|long unsigned int) \\\[2\\\]" \
203
    "whatis unsigned long array"
204
 
205
gdb_test "whatis v_float_array" \
206
    "type = float \\\[2\\\]" \
207
    "whatis float array"
208
 
209
gdb_test "whatis v_double_array" \
210
    "type = double \\\[2\\\]" \
211
    "whatis double array"
212
 
213
 
214
# test whatis command with pointers
215
#
216
# We already tested whether char prints as char, so accept various perversions
217
# here.  We especially want to make sure we test that it doesn't print as
218
# caddr_t.
219
gdb_test "whatis v_char_pointer" \
220
    "type = (unsigned |signed |)char \\*" \
221
    "whatis char pointer"
222
 
223
gdb_test "whatis v_signed_char_pointer" \
224
    "type = (unsigned |signed |)char \\*" \
225
    "whatis signed char pointer"
226
 
227
gdb_test "whatis v_unsigned_char_pointer" \
228
    "type = unsigned char \\*" \
229
    "whatis unsigned char pointer"
230
 
231
gdb_test "whatis v_short_pointer" \
232
    "type = (short|short int) \\*" \
233
    "whatis short pointer"
234
 
235
gdb_test "whatis v_signed_short_pointer" \
236
    "type = (signed |)(short|short int) \\*" \
237
    "whatis signed short pointer"
238
 
239
gdb_test "whatis v_unsigned_short_pointer" \
240
    "type = (unsigned short|short unsigned int) \\*" \
241
    "whatis unsigned short pointer"
242
 
243
gdb_test "whatis v_int_pointer" \
244
    "type = int \\*" \
245
    "whatis int pointer"
246
 
247
gdb_test "whatis v_signed_int_pointer" \
248
    "type = (signed |)int \\*" \
249
    "whatis signed int pointer"
250
 
251
gdb_test "whatis v_unsigned_int_pointer" \
252
    "type = unsigned int \\*" \
253
    "whatis unsigned int pointer"
254
 
255
# We already tested whether long prints as long, so here we accept int
256
gdb_test "whatis v_long_pointer" \
257
    "type = (long|int|long int) \\*" \
258
    "whatis long pointer"
259
 
260
gdb_test "whatis v_signed_long_pointer" \
261
    "type = (signed |)(long|int|long int) \\*" \
262
    "whatis signed long pointer"
263
 
264
gdb_test "whatis v_unsigned_long_pointer" \
265
    "type = (unsigned (int|long|long int)|long unsigned int) \\*" \
266
    "whatis unsigned long pointer"
267
 
268
gdb_test "whatis v_float_pointer" \
269
    "type = float \\*" \
270
    "whatis float pointer"
271
 
272
gdb_test "whatis v_double_pointer" \
273
    "type = double \\*" \
274
    "whatis double pointer"
275
 
276
 
277
if { $hp_aCC_compiler } {
278
    set unstruct "unnamed\.struct\..*"
279
    set ununion "unnamed\.union\..*"
280
} else {
281
    set unstruct "\.\.\."
282
    set ununion "\.\.\."
283
}
284
 
285
# test whatis command with structure types
286
gdb_test "whatis v_struct1" \
287
    "type = struct t_struct" \
288
    "whatis named structure"
289
 
290
gdb_test "whatis v_struct2" \
291
    "type = struct \{$unstruct\}" \
292
    "whatis unnamed structure"
293
 
294
 
295
# test whatis command with union types
296
gdb_test "whatis v_union" \
297
    "type = union t_union" \
298
    "whatis named union"
299
 
300
gdb_test "whatis v_union2" \
301
    "type = union \{$ununion\}" \
302
    "whatis unnamed union"
303
 
304
 
305
if { [istarget "hppa*-hp-hpux*"] && $hp_aCC_compiler } {
306
    # HP-UX: HP aCC compiler w/ +objdebug option detects language as
307
    # c++, so we need the 'void' pattern here.
308
    # Without +objdebug compilation option we still need to match ''.
309
    # - guo
310
    set void "(void|)"
311
} else {
312
    set void ""
313
}
314
 
315
# test whatis command with functions return type
316
gdb_test "whatis v_char_func" \
317
    "type = (signed |unsigned |)char \\($void\\)" \
318
    "whatis char function"
319
 
320
gdb_test "whatis v_signed_char_func" \
321
    "type = (signed |unsigned |)char \\($void\\)" \
322
    "whatis signed char function"
323
 
324
gdb_test "whatis v_unsigned_char_func" \
325
    "type = unsigned char \\($void\\)"  \
326
    "whatis unsigned char function"
327
 
328
gdb_test "whatis v_short_func" \
329
    "type = short (int |)\\($void\\)" \
330
    "whatis short function"
331
 
332
gdb_test "whatis v_signed_short_func" \
333
    "type = (signed |)short (int |)\\($void\\)" \
334
    "whatis signed short function"
335
 
336
gdb_test "whatis v_unsigned_short_func" \
337
    "type = (unsigned short|short unsigned int) \\($void\\)" \
338
    "whatis unsigned short function"
339
 
340
gdb_test "whatis v_int_func" \
341
    "type = int \\($void\\)" \
342
    "whatis int function"
343
 
344
gdb_test "whatis v_signed_int_func" \
345
    "type = (signed |)int \\($void\\)" \
346
    "whatis signed int function"
347
 
348
gdb_test "whatis v_unsigned_int_func" \
349
    "type = unsigned int \\($void\\)" \
350
    "whatis unsigned int function"
351
 
352
gdb_test "whatis v_long_func" \
353
    "type = (long|int|long int) \\($void\\)" \
354
    "whatis long function"
355
 
356
gdb_test "whatis v_signed_long_func" \
357
    "type = (signed |)(int|long|long int) \\($void\\)" \
358
    "whatis signed long function"
359
 
360
gdb_test "whatis v_unsigned_long_func" \
361
    "type = (unsigned (int|long|long int)|long unsigned int) \\($void\\)" \
362
    "whatis unsigned long function"
363
 
364
# Sun /bin/cc calls this a function returning double.
365
if {!$gcc_compiled} then {setup_xfail "*-sun-sunos4*"}
366
gdb_test "whatis v_float_func" \
367
    "type = float \\($void\\)" \
368
    "whatis float function"
369
 
370
gdb_test "whatis v_double_func" \
371
    "type = double \\($void\\)" \
372
    "whatis double function" \
373
 
374
 
375
# test whatis command with some misc complicated types
376
gdb_test "whatis s_link" \
377
    "type = struct link \\*" \
378
    "whatis complicated structure"
379
 
380
gdb_test "whatis u_link" \
381
    "type = union tu_link" \
382
    "whatis complicated union"
383
 
384
 
385
# test whatis command with enumerations
386
gdb_test "whatis clunker" \
387
    "type = enum cars" \
388
    "whatis enumeration"
389
 
390
 
391
# test whatis command with nested struct and union
392
gdb_test "whatis nested_su" \
393
    "type = struct outer_struct" \
394
    "whatis outer structure"
395
 
396
gdb_test "whatis nested_su.outer_int" \
397
    "type = int" \
398
    "whatis outer structure member"
399
 
400
if {$hp_aCC_compiler} {
401
    set outer "outer_struct::"
402
} else {
403
    set outer ""
404
}
405
 
406
gdb_test "whatis nested_su.inner_struct_instance" \
407
    "type = struct ${outer}inner_struct" \
408
    "whatis inner structure"
409
 
410
gdb_test "whatis nested_su.inner_struct_instance.inner_int" \
411
    "type = int" \
412
    "whatis inner structure member"
413
 
414
gdb_test "whatis nested_su.inner_union_instance" \
415
    "type = union ${outer}inner_union" \
416
    "whatis inner union"
417
 
418
gdb_test "whatis nested_su.inner_union_instance.inner_union_int" \
419
    "type = int" \
420
    "whatis inner union member"

powered by: WebSVN 2.1.0

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