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