xref: /openbsd-src/gnu/usr.bin/binutils/gdb/testsuite/gdb.base/code-expr.exp (revision b725ae7711052a2233e31a66fefb8a752c388d7a)
1*b725ae77Skettenis#   Copyright (C) 2001 Free Software Foundation, Inc.
2*b725ae77Skettenis
3*b725ae77Skettenis# This program is free software; you can redistribute it and/or modify
4*b725ae77Skettenis# it under the terms of the GNU General Public License as published by
5*b725ae77Skettenis# the Free Software Foundation; either version 2 of the License, or
6*b725ae77Skettenis# (at your option) any later version.
7*b725ae77Skettenis#
8*b725ae77Skettenis# This program is distributed in the hope that it will be useful,
9*b725ae77Skettenis# but WITHOUT ANY WARRANTY; without even the implied warranty of
10*b725ae77Skettenis# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11*b725ae77Skettenis# GNU General Public License for more details.
12*b725ae77Skettenis#
13*b725ae77Skettenis# You should have received a copy of the GNU General Public License
14*b725ae77Skettenis# along with this program; if not, write to the Free Software
15*b725ae77Skettenis# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
16*b725ae77Skettenis
17*b725ae77Skettenis# Please email any bugs, comments, and/or additions to this file to:
18*b725ae77Skettenis# bug-gdb@prep.ai.mit.edu
19*b725ae77Skettenis
20*b725ae77Skettenis# Written by Michael Snyder, Red Hat, Inc., 9/20/2001
21*b725ae77Skettenis
22*b725ae77Skettenis# This file is part of the gdb testsuite
23*b725ae77Skettenis# Tests for type expressions using the new "@code" and "@data" modifiers.
24*b725ae77Skettenis
25*b725ae77Skettenisif $tracelevel then {
26*b725ae77Skettenis        strace $tracelevel
27*b725ae77Skettenis        }
28*b725ae77Skettenis
29*b725ae77Skettenis#
30*b725ae77Skettenis# test running programs
31*b725ae77Skettenis#
32*b725ae77Skettenisset prms_id 0
33*b725ae77Skettenisset bug_id 0
34*b725ae77Skettenis
35*b725ae77Skettenisset testfile "cvexpr"
36*b725ae77Skettenisset srcfile ${testfile}.c
37*b725ae77Skettenisset binfile ${objdir}/${subdir}/${testfile}
38*b725ae77Skettenis
39*b725ae77Skettenisif  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
40*b725ae77Skettenis     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
41*b725ae77Skettenis}
42*b725ae77Skettenis
43*b725ae77Skettenisgdb_exit
44*b725ae77Skettenisgdb_start
45*b725ae77Skettenisgdb_reinitialize_dir $srcdir/$subdir
46*b725ae77Skettenisgdb_load ${binfile}
47*b725ae77Skettenis
48*b725ae77Skettenisif [target_info exists gdb_stub] {
49*b725ae77Skettenis    gdb_step_for_stub;
50*b725ae77Skettenis}
51*b725ae77Skettenis
52*b725ae77Skettenisgdb_test "set print sevenbit-strings" "" ""
53*b725ae77Skettenisgdb_test "set print address off" "" ""
54*b725ae77Skettenisgdb_test "set width 0" "" ""
55*b725ae77Skettenis
56*b725ae77Skettenisset ws  "\[ \t\]*"
57*b725ae77Skettenis
58*b725ae77Skettenis#
59*b725ae77Skettenis# Test casting a scalar to const
60*b725ae77Skettenis#
61*b725ae77Skettenis
62*b725ae77Skettenisgdb_test "whatis (@code char) v_char" \
63*b725ae77Skettenis	"type = @code char" \
64*b725ae77Skettenis	"(@code char)"
65*b725ae77Skettenisgdb_test "whatis (@code signed char) v_signed_char" \
66*b725ae77Skettenis	"type = @code signed char" \
67*b725ae77Skettenis	"(@code signed char)"
68*b725ae77Skettenisgdb_test "whatis (@code unsigned char) v_unsigned_char" \
69*b725ae77Skettenis	"type = @code (unsigned char|char)" \
70*b725ae77Skettenis	"(@code unsigned char)"
71*b725ae77Skettenisgdb_test "whatis (@code short) v_short" \
72*b725ae77Skettenis	"type = @code (short|short int)" \
73*b725ae77Skettenis	"(@code short)"
74*b725ae77Skettenisgdb_test "whatis (@code signed short) v_signed_short" \
75*b725ae77Skettenis	"type = @code (short|short int|signed short|signed short int)" \
76*b725ae77Skettenis	"(@code signed short)"
77*b725ae77Skettenisgdb_test "whatis (@code unsigned short) v_unsigned_short" \
78*b725ae77Skettenis	"type = @code (unsigned short|short unsigned int)" \
79*b725ae77Skettenis	"(@code unsigned short)"
80*b725ae77Skettenisgdb_test "whatis (@code int) v_int" \
81*b725ae77Skettenis	"type = @code int" \
82*b725ae77Skettenis	"(@code int)"
83*b725ae77Skettenisgdb_test "whatis (@code signed int) v_signed_int" \
84*b725ae77Skettenis	"type = @code (signed int|int)" \
85*b725ae77Skettenis	"(@code signed int)"
86*b725ae77Skettenisgdb_test "whatis (@code unsigned int) v_unsigned_int" \
87*b725ae77Skettenis	"type = @code unsigned int" \
88*b725ae77Skettenis	"(@code unsigned int)"
89*b725ae77Skettenisgdb_test "whatis (@code long) v_long" \
90*b725ae77Skettenis	"type = @code (long|long int)" \
91*b725ae77Skettenis	"(@code long)"
92*b725ae77Skettenisgdb_test "whatis (@code signed long) v_signed_long" \
93*b725ae77Skettenis	"type = @code (signed |)long( int|)" \
94*b725ae77Skettenis	"(@code signed long)"
95*b725ae77Skettenisgdb_test "whatis (@code unsigned long) v_unsigned_long" \
96*b725ae77Skettenis	"type = @code (unsigned long|long unsigned int)" \
97*b725ae77Skettenis	"(@code unsigned long)"
98*b725ae77Skettenisgdb_test "whatis (@code long long) v_long_long" \
99*b725ae77Skettenis	"type = @code long long( int|)" \
100*b725ae77Skettenis	"(@code long long)"
101*b725ae77Skettenisgdb_test "whatis (@code signed long long) v_signed_long_long" \
102*b725ae77Skettenis	"type = @code (signed |)long long( int|)" \
103*b725ae77Skettenis	"(@code signed long long)"
104*b725ae77Skettenisgdb_test "whatis (@code unsigned long long) v_unsigned_long_long" \
105*b725ae77Skettenis	"type = @code (unsigned long long|long long unsigned int)" \
106*b725ae77Skettenis	"(@code unsigned long long)"
107*b725ae77Skettenisgdb_test "whatis (@code float) v_float" \
108*b725ae77Skettenis	"type = @code float" \
109*b725ae77Skettenis	"(@code float)"
110*b725ae77Skettenisgdb_test "whatis (@code double) v_double" \
111*b725ae77Skettenis	"type = @code double" \
112*b725ae77Skettenis	"(@code double)"
113*b725ae77Skettenis
114*b725ae77Skettenis#
115*b725ae77Skettenis# Test casting a scalar to @data
116*b725ae77Skettenis#
117*b725ae77Skettenis
118*b725ae77Skettenisgdb_test "whatis (@data char) v_char" \
119*b725ae77Skettenis	"type = @data char" \
120*b725ae77Skettenis	"(@data char)"
121*b725ae77Skettenisgdb_test "whatis (@data signed char) v_signed_char" \
122*b725ae77Skettenis	"type = @data signed char" \
123*b725ae77Skettenis	"(@data signed char)"
124*b725ae77Skettenisgdb_test "whatis (@data unsigned char) v_unsigned_char" \
125*b725ae77Skettenis	"type = @data (unsigned char|char)" \
126*b725ae77Skettenis	"(@data unsigned char)"
127*b725ae77Skettenisgdb_test "whatis (@data short) v_short" \
128*b725ae77Skettenis	"type = @data (short|short int)" \
129*b725ae77Skettenis	"(@data short)"
130*b725ae77Skettenisgdb_test "whatis (@data signed short) v_signed_short" \
131*b725ae77Skettenis	"type = @data (short|short int|signed short|signed short int)" \
132*b725ae77Skettenis	"(@data signed short)"
133*b725ae77Skettenisgdb_test "whatis (@data unsigned short) v_unsigned_short" \
134*b725ae77Skettenis	"type = @data (unsigned short|short unsigned int)" \
135*b725ae77Skettenis	"(@data unsigned short)"
136*b725ae77Skettenisgdb_test "whatis (@data int) v_int" \
137*b725ae77Skettenis	"type = @data int" \
138*b725ae77Skettenis	"(@data int)"
139*b725ae77Skettenisgdb_test "whatis (@data signed int) v_signed_int" \
140*b725ae77Skettenis	"type = @data (signed int|int)" \
141*b725ae77Skettenis	"(@data signed int)"
142*b725ae77Skettenisgdb_test "whatis (@data unsigned int) v_unsigned_int" \
143*b725ae77Skettenis	"type = @data unsigned int" \
144*b725ae77Skettenis	"(@data unsigned int)"
145*b725ae77Skettenisgdb_test "whatis (@data long) v_long" \
146*b725ae77Skettenis	"type = @data (long|long int)" \
147*b725ae77Skettenis	"(@data long)"
148*b725ae77Skettenisgdb_test "whatis (@data signed long) v_signed_long" \
149*b725ae77Skettenis	"type = @data (signed |)long( int|)" \
150*b725ae77Skettenis	"(@data signed long)"
151*b725ae77Skettenisgdb_test "whatis (@data unsigned long) v_unsigned_long" \
152*b725ae77Skettenis	"type = @data (unsigned long|long unsigned int)" \
153*b725ae77Skettenis	"(@data unsigned long)"
154*b725ae77Skettenisgdb_test "whatis (@data long long) v_long_long" \
155*b725ae77Skettenis	"type = @data long long( int|)" \
156*b725ae77Skettenis	"(@data long long)"
157*b725ae77Skettenisgdb_test "whatis (@data signed long long) v_signed_long_long" \
158*b725ae77Skettenis	"type = @data (signed |)long long( int|)" \
159*b725ae77Skettenis	"(@data signed long long)"
160*b725ae77Skettenisgdb_test "whatis (@data unsigned long long) v_unsigned_long_long" \
161*b725ae77Skettenis	"type = @data (unsigned long long|long long unsigned int)" \
162*b725ae77Skettenis	"(@data unsigned long long)"
163*b725ae77Skettenisgdb_test "whatis (@data float) v_float" \
164*b725ae77Skettenis	"type = @data float" \
165*b725ae77Skettenis	"(@data float)"
166*b725ae77Skettenisgdb_test "whatis (@data double) v_double" \
167*b725ae77Skettenis	"type = @data double" \
168*b725ae77Skettenis	"(@data double)"
169*b725ae77Skettenis
170*b725ae77Skettenis#
171*b725ae77Skettenis# Now put the '@code' and '@data' keywords after the base type.
172*b725ae77Skettenis#
173*b725ae77Skettenis
174*b725ae77Skettenisgdb_test "whatis (char @code) v_char" \
175*b725ae77Skettenis	"type = @code char" \
176*b725ae77Skettenis	"(char @code)"
177*b725ae77Skettenisgdb_test "whatis (signed char @code) v_signed_char" \
178*b725ae77Skettenis	"type = @code signed char" \
179*b725ae77Skettenis	"(signed char @code)"
180*b725ae77Skettenisgdb_test "whatis (unsigned char @code) v_unsigned_char" \
181*b725ae77Skettenis	"type = @code (unsigned char|char)" \
182*b725ae77Skettenis	"(unsigned char @code)"
183*b725ae77Skettenisgdb_test "whatis (short @code) v_short" \
184*b725ae77Skettenis	"type = @code (short|short int)" \
185*b725ae77Skettenis	"(short @code)"
186*b725ae77Skettenisgdb_test "whatis (signed short @code) v_signed_short" \
187*b725ae77Skettenis	"type = @code (short|short int|signed short|signed short int)" \
188*b725ae77Skettenis	"(signed short @code)"
189*b725ae77Skettenisgdb_test "whatis (unsigned short @code) v_unsigned_short" \
190*b725ae77Skettenis	"type = @code (unsigned short|short unsigned int)" \
191*b725ae77Skettenis	"(unsigned short @code)"
192*b725ae77Skettenisgdb_test "whatis (int @code) v_int" \
193*b725ae77Skettenis	"type = @code int" \
194*b725ae77Skettenis	"(int @code)"
195*b725ae77Skettenisgdb_test "whatis (signed int @code) v_signed_int" \
196*b725ae77Skettenis	"type = @code (signed int|int)" \
197*b725ae77Skettenis	"(signed int @code)"
198*b725ae77Skettenisgdb_test "whatis (unsigned int @code) v_unsigned_int" \
199*b725ae77Skettenis	"type = @code unsigned int" \
200*b725ae77Skettenis	"(unsigned int @code)"
201*b725ae77Skettenisgdb_test "whatis (long @code) v_long" \
202*b725ae77Skettenis	"type = @code (long|long int)" \
203*b725ae77Skettenis	"(long @code)"
204*b725ae77Skettenisgdb_test "whatis (signed long @code) v_signed_long" \
205*b725ae77Skettenis	"type = @code (signed |)long( int|)" \
206*b725ae77Skettenis	"(signed long @code)"
207*b725ae77Skettenisgdb_test "whatis (unsigned long @code) v_unsigned_long" \
208*b725ae77Skettenis	"type = @code (unsigned long|long unsigned int)" \
209*b725ae77Skettenis	"(unsigned long @code)"
210*b725ae77Skettenisgdb_test "whatis (long long @code) v_long_long" \
211*b725ae77Skettenis	"type = @code long long( int|)" \
212*b725ae77Skettenis	"(long long @code)"
213*b725ae77Skettenisgdb_test "whatis (signed long long @code) v_signed_long_long" \
214*b725ae77Skettenis	"type = @code (signed |)long long( int|)" \
215*b725ae77Skettenis	"(signed long long @code)"
216*b725ae77Skettenisgdb_test "whatis (unsigned long long @code) v_unsigned_long_long" \
217*b725ae77Skettenis	"type = @code (unsigned long long|long long unsigned int)" \
218*b725ae77Skettenis	"(unsigned long long @code)"
219*b725ae77Skettenisgdb_test "whatis (float @code) v_float" \
220*b725ae77Skettenis	"type = @code float" \
221*b725ae77Skettenis	"(float @code)"
222*b725ae77Skettenisgdb_test "whatis (double @code) v_double" \
223*b725ae77Skettenis	"type = @code double" \
224*b725ae77Skettenis	"(double @code)"
225*b725ae77Skettenis
226*b725ae77Skettenisgdb_test "whatis (char @data) v_char" \
227*b725ae77Skettenis	"type = @data char" \
228*b725ae77Skettenis	"(char @data)"
229*b725ae77Skettenisgdb_test "whatis (signed char @data) v_signed_char" \
230*b725ae77Skettenis	"type = @data signed char" \
231*b725ae77Skettenis	"(signed char @data)"
232*b725ae77Skettenisgdb_test "whatis (unsigned char @data) v_unsigned_char" \
233*b725ae77Skettenis	"type = @data (unsigned char|char)" \
234*b725ae77Skettenis	"(unsigned char @data)"
235*b725ae77Skettenisgdb_test "whatis (short @data) v_short" \
236*b725ae77Skettenis	"type = @data (short|short int)" \
237*b725ae77Skettenis	"(short @data)"
238*b725ae77Skettenisgdb_test "whatis (signed short @data) v_signed_short" \
239*b725ae77Skettenis	"type = @data (short|short int|signed short|signed short int)" \
240*b725ae77Skettenis	"(signed short @data)"
241*b725ae77Skettenisgdb_test "whatis (unsigned short @data) v_unsigned_short" \
242*b725ae77Skettenis	"type = @data (unsigned short|short unsigned int)" \
243*b725ae77Skettenis	"(unsigned short @data)"
244*b725ae77Skettenisgdb_test "whatis (int @data) v_int" \
245*b725ae77Skettenis	"type = @data int" \
246*b725ae77Skettenis	"(int @data)"
247*b725ae77Skettenisgdb_test "whatis (signed int @data) v_signed_int" \
248*b725ae77Skettenis	"type = @data (signed int|int)" \
249*b725ae77Skettenis	"(signed int @data)"
250*b725ae77Skettenisgdb_test "whatis (unsigned int @data) v_unsigned_int" \
251*b725ae77Skettenis	"type = @data unsigned int" \
252*b725ae77Skettenis	"(unsigned int @data)"
253*b725ae77Skettenisgdb_test "whatis (long @data) v_long" \
254*b725ae77Skettenis	"type = @data (long|long int)" \
255*b725ae77Skettenis	"(long @data)"
256*b725ae77Skettenisgdb_test "whatis (signed long @data) v_signed_long" \
257*b725ae77Skettenis	"type = @data (signed |)long( int|)" \
258*b725ae77Skettenis	"(signed long @data)"
259*b725ae77Skettenisgdb_test "whatis (unsigned long @data) v_unsigned_long" \
260*b725ae77Skettenis	"type = @data (unsigned long|long unsigned int)" \
261*b725ae77Skettenis	"(unsigned long @data)"
262*b725ae77Skettenisgdb_test "whatis (long long @data) v_long_long" \
263*b725ae77Skettenis	"type = @data long long( int|)" \
264*b725ae77Skettenis	"(long long @data)"
265*b725ae77Skettenisgdb_test "whatis (signed long long @data) v_signed_long_long" \
266*b725ae77Skettenis	"type = @data (signed |)long long( int|)" \
267*b725ae77Skettenis	"(signed long long @data)"
268*b725ae77Skettenisgdb_test "whatis (unsigned long long @data) v_unsigned_long_long" \
269*b725ae77Skettenis	"type = @data (unsigned long long|long long unsigned int)" \
270*b725ae77Skettenis	"(unsigned long long @data)"
271*b725ae77Skettenisgdb_test "whatis (float @data) v_float" \
272*b725ae77Skettenis	"type = @data float" \
273*b725ae77Skettenis	"(float @data)"
274*b725ae77Skettenisgdb_test "whatis (double @data) v_double" \
275*b725ae77Skettenis	"type = @data double" \
276*b725ae77Skettenis	"(double @data)"
277*b725ae77Skettenis
278*b725ae77Skettenis#
279*b725ae77Skettenis# enums
280*b725ae77Skettenis#
281*b725ae77Skettenis
282*b725ae77Skettenisgdb_test "whatis (@code enum misordered) v_misordered" \
283*b725ae77Skettenis	"type = @code enum misordered" \
284*b725ae77Skettenis	"(@code enum misordered)"
285*b725ae77Skettenisgdb_test "whatis (enum misordered @code) v_misordered" \
286*b725ae77Skettenis	"type = @code enum misordered" \
287*b725ae77Skettenis	"(enum misordered @code)"
288*b725ae77Skettenisgdb_test "whatis (@data enum misordered) v_misordered" \
289*b725ae77Skettenis	"type = @data enum misordered" \
290*b725ae77Skettenis	"(@data enum misordered)"
291*b725ae77Skettenisgdb_test "whatis (enum misordered @data) v_misordered" \
292*b725ae77Skettenis	"type = @data enum misordered" \
293*b725ae77Skettenis	"(enum misordered @data)"
294*b725ae77Skettenis
295*b725ae77Skettenis#
296*b725ae77Skettenis# Pointers
297*b725ae77Skettenis#
298*b725ae77Skettenis
299*b725ae77Skettenisgdb_test "whatis (@code int *) v_int_pointer" \
300*b725ae77Skettenis	"type = @code int${ws}\\*" \
301*b725ae77Skettenis	"(@code int *)"
302*b725ae77Skettenisgdb_test "whatis (int @code *) v_int_pointer" \
303*b725ae77Skettenis	"type = @code int${ws}\\*" \
304*b725ae77Skettenis	"(int @code *)"
305*b725ae77Skettenisgdb_test "whatis (int * @code) v_int_pointer" \
306*b725ae77Skettenis	"type = int \\*${ws}@code" \
307*b725ae77Skettenis	"(int * @code)"
308*b725ae77Skettenisgdb_test "whatis (@code int * @code) v_int_pointer" \
309*b725ae77Skettenis	"type = @code int${ws}\\*${ws}@code" \
310*b725ae77Skettenis	"(@code int * @code)"
311*b725ae77Skettenisgdb_test "whatis (int @code * @code) v_int_pointer" \
312*b725ae77Skettenis	"type = @code int${ws}\\*${ws}@code" \
313*b725ae77Skettenis	"(int @code * @code)"
314*b725ae77Skettenis
315*b725ae77Skettenisgdb_test "whatis (@code int **) v_int_pointer_pointer" \
316*b725ae77Skettenis	"type = @code int${ws}\\*${ws}\\*" \
317*b725ae77Skettenis	"(@code int **)"
318*b725ae77Skettenisgdb_test "whatis (int @code **) v_int_pointer_pointer" \
319*b725ae77Skettenis	"type = @code int${ws}\\*${ws}\\*" \
320*b725ae77Skettenis	"(int @code **)"
321*b725ae77Skettenisgdb_test "whatis (int ** @code) v_int_pointer_pointer" \
322*b725ae77Skettenis	"type = int \\*${ws}\\*${ws}@code" \
323*b725ae77Skettenis	"(int ** @code)"
324*b725ae77Skettenisgdb_test "whatis (@code int * @code *) v_int_pointer_pointer" \
325*b725ae77Skettenis	"type = @code int${ws}\\*${ws}@code${ws}\\*" \
326*b725ae77Skettenis	"(@code int * @code *)"
327*b725ae77Skettenisgdb_test "whatis (int @code * @code *) v_int_pointer_pointer" \
328*b725ae77Skettenis	"type = @code int${ws}\\*${ws}@code${ws}\\*" \
329*b725ae77Skettenis	"(int @code * @code *)"
330*b725ae77Skettenisgdb_test "whatis (@code int * @code * @code) v_int_pointer_pointer" \
331*b725ae77Skettenis	"type = @code int${ws}\\*${ws}@code${ws}\\*${ws}@code" \
332*b725ae77Skettenis	"(@code int * @code * @code)"
333*b725ae77Skettenisgdb_test "whatis (int @code * @code * @code) v_int_pointer_pointer" \
334*b725ae77Skettenis	"type = @code int${ws}\\*${ws}@code${ws}\\*${ws}@code" \
335*b725ae77Skettenis	"(int @code * @code * @code)"
336*b725ae77Skettenis
337*b725ae77Skettenis#
338*b725ae77Skettenis# Arrays TODO
339*b725ae77Skettenis#
340*b725ae77Skettenis
341*b725ae77Skettenis#
342*b725ae77Skettenis# Pointers to arrays, arrays of pointers TODO
343*b725ae77Skettenis#
344*b725ae77Skettenis
345*b725ae77Skettenis#
346*b725ae77Skettenis# Structs and Unions
347*b725ae77Skettenis#
348*b725ae77Skettenis
349*b725ae77Skettenisgdb_test "whatis (@code struct t_struct) v_struct1" \
350*b725ae77Skettenis	"type = @code struct t_struct" \
351*b725ae77Skettenis	"(@code struct t_struct)"
352*b725ae77Skettenisgdb_test "whatis (@code union t_union) v_union" \
353*b725ae77Skettenis	"type = @code union t_union" \
354*b725ae77Skettenis	"(@code union t_union)"
355*b725ae77Skettenisgdb_test "whatis (struct t_struct @code) v_struct1" \
356*b725ae77Skettenis	"type = @code struct t_struct" \
357*b725ae77Skettenis	"(struct t_struct @code)"
358*b725ae77Skettenisgdb_test "whatis (union t_union @code) v_union" \
359*b725ae77Skettenis	"type = @code union t_union" \
360*b725ae77Skettenis	"(union t_union @code)"
361*b725ae77Skettenisgdb_test "whatis (@code struct t_struct *) &v_struct1" \
362*b725ae77Skettenis	"type = @code struct t_struct${ws}\\*" \
363*b725ae77Skettenis	"(@code struct t_struct *)"
364*b725ae77Skettenisgdb_test "whatis (@code union t_union *) &v_union" \
365*b725ae77Skettenis	"type = @code union t_union${ws}\\*" \
366*b725ae77Skettenis	"(@code union t_union *)"
367*b725ae77Skettenisgdb_test "whatis (struct t_struct @code *) &v_struct1" \
368*b725ae77Skettenis	"type = @code struct t_struct${ws}\\*" \
369*b725ae77Skettenis	"(struct t_struct @code *)"
370*b725ae77Skettenisgdb_test "whatis (union t_union @code *) &v_union" \
371*b725ae77Skettenis	"type = @code union t_union${ws}\\*" \
372*b725ae77Skettenis	"(union t_union @code *)"
373*b725ae77Skettenisgdb_test "whatis (struct t_struct * @code) &v_struct1" \
374*b725ae77Skettenis	"type = struct t_struct${ws}\\*${ws}@code" \
375*b725ae77Skettenis	"(struct t_struct * @code)"
376*b725ae77Skettenisgdb_test "whatis (union t_union * @code) &v_union" \
377*b725ae77Skettenis	"type = union t_union${ws}\\*${ws}@code" \
378*b725ae77Skettenis	"(union t_union * @code)"
379*b725ae77Skettenisgdb_test "whatis (@code struct t_struct * @code) &v_struct1" \
380*b725ae77Skettenis	"type = @code struct t_struct${ws}\\*${ws}@code" \
381*b725ae77Skettenis	"(@code struct t_struct * @code)"
382*b725ae77Skettenisgdb_test "whatis (@code union t_union * @code) &v_union" \
383*b725ae77Skettenis	"type = @code union t_union${ws}\\*${ws}@code" \
384*b725ae77Skettenis	"(@code union t_union * @code)"
385*b725ae77Skettenisgdb_test "whatis (struct t_struct @code * @code) &v_struct1" \
386*b725ae77Skettenis	"type = @code struct t_struct${ws}\\*${ws}@code" \
387*b725ae77Skettenis	"(struct t_struct @code * @code)"
388*b725ae77Skettenisgdb_test "whatis (union t_union @code * @code) &v_union" \
389*b725ae77Skettenis	"type = @code union t_union${ws}\\*${ws}@code" \
390*b725ae77Skettenis	"(union t_union @code * @code)"
391*b725ae77Skettenis
392*b725ae77Skettenis#
393*b725ae77Skettenis# Function pointers TODO
394*b725ae77Skettenis#
395*b725ae77Skettenis
396