#   Copyright (C) 2001, 2007 Free Software Foundation, Inc.

# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  

# Please email any bugs, comments, and/or additions to this file to:
# bug-gdb@prep.ai.mit.edu

# Written by Michael Snyder, Red Hat, Inc., 9/20/2001

# This file is part of the gdb testsuite
# Tests for type expressions using const and volatile keywords.

if $tracelevel then {
        strace $tracelevel
        }

#
# test running programs
#
set prms_id 0
set bug_id 0

set testfile "cvexpr"
set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/${testfile}

if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
     untested cvexpr.exp
     return -1
}

gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}

if [target_info exists gdb_stub] {
    gdb_step_for_stub;
}

gdb_test "set print sevenbit-strings" "" ""
gdb_test "set print address off" "" ""
gdb_test "set width 0" "" ""

set ws  "\[ \t\]*"

#
# Test casting a scalar to const
#

gdb_test "whatis (const char) v_char" \
	"type = const char" \
	"(const char)"
gdb_test "whatis (const signed char) v_signed_char" \
	"type = const signed char" \
	"(const signed char)"
gdb_test "whatis (const unsigned char) v_unsigned_char" \
	"type = const (unsigned char|char)" \
	"(const unsigned char)"
gdb_test "whatis (const short) v_short" \
	"type = const (short|short int)" \
	"(const short)"
gdb_test "whatis (const signed short) v_signed_short" \
	"type = const (short|short int|signed short|signed short int)" \
	"(const signed short)"
gdb_test "whatis (const unsigned short) v_unsigned_short" \
	"type = const (unsigned short|short unsigned int)" \
	"(const unsigned short)"
gdb_test "whatis (const int) v_int" \
	"type = const int" \
	"(const int)"
gdb_test "whatis (const signed int) v_signed_int" \
	"type = const (signed int|int)" \
	"(const signed int)"
gdb_test "whatis (const unsigned int) v_unsigned_int" \
	"type = const unsigned int" \
	"(const unsigned int)"
gdb_test "whatis (const long) v_long" \
	"type = const (long|long int)" \
	"(const long)"
gdb_test "whatis (const signed long) v_signed_long" \
	"type = const (signed |)long( int|)" \
	"(const signed long)"
gdb_test "whatis (const unsigned long) v_unsigned_long" \
	"type = const (unsigned long|long unsigned int)" \
	"(const unsigned long)"
gdb_test "whatis (const long long) v_long_long" \
	"type = const long long( int|)" \
	"(const long long)"
gdb_test "whatis (const signed long long) v_signed_long_long" \
	"type = const (signed |)long long( int|)" \
	"(const signed long long)"
gdb_test "whatis (const unsigned long long) v_unsigned_long_long" \
	"type = const (unsigned long long|long long unsigned int)" \
	"(const unsigned long long)"
gdb_test "whatis (const float) v_float" \
	"type = const float" \
	"(const float)"
gdb_test "whatis (const double) v_double" \
	"type = const double" \
	"(const double)"

#
# Test casting a scalar to volatile
#

gdb_test "whatis (volatile char) v_char" \
	"type = volatile char" \
	"(volatile char)"
gdb_test "whatis (volatile signed char) v_signed_char" \
	"type = volatile signed char" \
	"(volatile signed char)"
gdb_test "whatis (volatile unsigned char) v_unsigned_char" \
	"type = volatile (unsigned char|char)" \
	"(volatile unsigned char)"
gdb_test "whatis (volatile short) v_short" \
	"type = volatile (short|short int)" \
	"(volatile short)"
gdb_test "whatis (volatile signed short) v_signed_short" \
	"type = volatile (short|short int|signed short|signed short int)" \
	"(volatile signed short)"
gdb_test "whatis (volatile unsigned short) v_unsigned_short" \
	"type = volatile (unsigned short|short unsigned int)" \
	"(volatile unsigned short)"
gdb_test "whatis (volatile int) v_int" \
	"type = volatile int" \
	"(volatile int)"
gdb_test "whatis (volatile signed int) v_signed_int" \
	"type = volatile (signed int|int)" \
	"(volatile signed int)"
gdb_test "whatis (volatile unsigned int) v_unsigned_int" \
	"type = volatile unsigned int" \
	"(volatile unsigned int)"
gdb_test "whatis (volatile long) v_long" \
	"type = volatile (long|long int)" \
	"(volatile long)"
gdb_test "whatis (volatile signed long) v_signed_long" \
	"type = volatile (signed |)long( int|)" \
	"(volatile signed long)"
gdb_test "whatis (volatile unsigned long) v_unsigned_long" \
	"type = volatile (unsigned long|long unsigned int)" \
	"(volatile unsigned long)"
gdb_test "whatis (volatile long long) v_long_long" \
	"type = volatile long long( int|)" \
	"(volatile long long)"
gdb_test "whatis (volatile signed long long) v_signed_long_long" \
	"type = volatile (signed |)long long( int|)" \
	"(volatile signed long long)"
gdb_test "whatis (volatile unsigned long long) v_unsigned_long_long" \
	"type = volatile (unsigned long long|long long unsigned int)" \
	"(volatile unsigned long long)"
gdb_test "whatis (volatile float) v_float" \
	"type = volatile float" \
	"(volatile float)"
gdb_test "whatis (volatile double) v_double" \
	"type = volatile double" \
	"(volatile double)"

#
# Combine const and volatile
#

gdb_test "whatis (const volatile int) v_int" \
	"type = const volatile int" \
	"(const volatile int)"
gdb_test "whatis (volatile const int) v_int" \
	"type = const volatile int" \
	"(volatile const int)"
gdb_test "whatis (const int volatile) v_int" \
	"type = const volatile int" \
	"(const int volatile)"
gdb_test "whatis (volatile int const) v_int" \
	"type = const volatile int" \
	"(volatile int const)"
gdb_test "whatis (int const volatile) v_int" \
	"type = const volatile int" \
	"(int const volatile)"
gdb_test "whatis (int volatile const) v_int" \
	"type = const volatile int" \
	"(int volatile const)"

gdb_test "whatis (const volatile int *) v_int_pointer" \
	"type = const volatile int${ws}\\*" \
	"(const volatile int *)"
gdb_test "whatis (volatile const int *) v_int_pointer" \
	"type = const volatile int${ws}\\*" \
	"(volatile const int *)"
gdb_test "whatis (const int volatile *) v_int_pointer" \
	"type = const volatile int${ws}\\*" \
	"(const int volatile)"
gdb_test "whatis (volatile int const *) v_int_pointer" \
	"type = const volatile int${ws}\\*" \
	"(volatile int const *)"
gdb_test "whatis (int const volatile *) v_int_pointer" \
	"type = const volatile int${ws}\\*" \
	"(int const volatile *)"
gdb_test "whatis (int volatile const *) v_int_pointer" \
	"type = const volatile int${ws}\\*" \
	"(int volatile const *)"
gdb_test "whatis (int * const volatile) v_int_pointer" \
	"type = int${ws}\\*${ws}const volatile" \
	"(int * const volatile)"
gdb_test "whatis (int * volatile const) v_int_pointer" \
	"type = int${ws}\\*${ws}const volatile" \
	"(int * volatile const)"


#
# Put 'signed' and 'unsigned' before const/volatile (FIXME)
#

#gdb_test "whatis (signed const char) v_signed_char" \
#	"type = const char" \
#	"(signed const char)"
#gdb_test "whatis (unsigned const char) v_unsigned_char" \
#	"type = const (unsigned char|char)" \
#	"(unsigned const char)"
#gdb_test "whatis (signed const short) v_signed_short" \
#	"type = const (short|short int|signed short|signed short int)" \
#	"(signed const short)"
#gdb_test "whatis (unsigned const short) v_unsigned_short" \
#	"type = const (unsigned short|short unsigned int)" \
#	"(unsigned const short)"
#gdb_test "whatis (signed const int) v_signed_int" \
#	"type = const (signed int|int)" \
#	"(signed const int)"
#gdb_test "whatis (unsigned const int) v_unsigned_int" \
#	"type = const unsigned int" \
#	"(unsigned const int)"
#gdb_test "whatis (signed const long) v_signed_long" \
#	"type = const (signed |)long( int|)" \
#	"(signed const long)"
#gdb_test "whatis (unsigned const long) v_unsigned_long" \
#	"type = const (unsigned long|long unsigned int)" \
#	"(unsigned const long)"
#gdb_test "whatis (signed const long long) v_signed_long_long" \
#	"type = const (signed |)long long( int|)" \
#	"(signed const long long)"
#gdb_test "whatis (unsigned const long long) v_unsigned_long_long" \
#	"type = const (unsigned long long|long long unsigned int)" \
#	"(const unsigned long long)"

#gdb_test "whatis (signed volatile char) v_signed_char" \
#	"type = volatile char" \
#	"(signed volatile char)"
#gdb_test "whatis (unsigned volatile char) v_unsigned_char" \
#	"type = volatile (unsigned char|char)" \
#	"(unsigned volatile char)"
#gdb_test "whatis (signed volatile short) v_signed_short" \
#	"type = volatile (short|short int|signed short|signed short int)" \
#	"(signed volatile short)"
#gdb_test "whatis (unsigned volatile short) v_unsigned_short" \
#	"type = volatile (unsigned short|short unsigned int)" \
#	"(unsigned volatile short)"
#gdb_test "whatis (signed volatile int) v_signed_int" \
#	"type = volatile (signed int|int)" \
#	"(signed volatile int)"
#gdb_test "whatis (unsigned volatile int) v_unsigned_int" \
#	"type = volatile unsigned int" \
#	"(unsigned volatile int)"
#gdb_test "whatis (signed volatile long) v_signed_long" \
#	"type = volatile (signed |)long( int|)" \
#	"(signed volatile long)"
#gdb_test "whatis (unsigned volatile long) v_unsigned_long" \
#	"type = volatile (unsigned long|long unsigned int)" \
#	"(unsigned volatile long)"
#gdb_test "whatis (signed volatile long long) v_signed_long_long" \
#	"type = volatile (signed |)long long( int|)" \
#	"(signed volatile long long)"
#gdb_test "whatis (unsigned volatile long long) v_unsigned_long_long" \
#	"type = volatile (unsigned long long|long long unsigned int)" \
#	"(unsigned volatile long long)"

#
# Now put the 'const' and 'volatile' keywords after the base type.
#

gdb_test "whatis (char const) v_char" \
	"type = const char" \
	"(char const)"
gdb_test "whatis (signed char const) v_signed_char" \
	"type = const signed char" \
	"(signed char const)"
gdb_test "whatis (unsigned char const) v_unsigned_char" \
	"type = const (unsigned char|char)" \
	"(unsigned char const)"
gdb_test "whatis (short const) v_short" \
	"type = const (short|short int)" \
	"(short const)"
gdb_test "whatis (signed short const) v_signed_short" \
	"type = const (short|short int|signed short|signed short int)" \
	"(signed short const)"
gdb_test "whatis (unsigned short const) v_unsigned_short" \
	"type = const (unsigned short|short unsigned int)" \
	"(unsigned short const)"
gdb_test "whatis (int const) v_int" \
	"type = const int" \
	"(int const)"
gdb_test "whatis (signed int const) v_signed_int" \
	"type = const (signed int|int)" \
	"(signed int const)"
gdb_test "whatis (unsigned int const) v_unsigned_int" \
	"type = const unsigned int" \
	"(unsigned int const)"
gdb_test "whatis (long const) v_long" \
	"type = const (long|long int)" \
	"(long const)"
gdb_test "whatis (signed long const) v_signed_long" \
	"type = const (signed |)long( int|)" \
	"(signed long const)"
gdb_test "whatis (unsigned long const) v_unsigned_long" \
	"type = const (unsigned long|long unsigned int)" \
	"(unsigned long const)"
gdb_test "whatis (long long const) v_long_long" \
	"type = const long long( int|)" \
	"(long long const)"
gdb_test "whatis (signed long long const) v_signed_long_long" \
	"type = const (signed |)long long( int|)" \
	"(signed long long const)"
gdb_test "whatis (unsigned long long const) v_unsigned_long_long" \
	"type = const (unsigned long long|long long unsigned int)" \
	"(unsigned long long const)"
gdb_test "whatis (float const) v_float" \
	"type = const float" \
	"(float const)"
gdb_test "whatis (double const) v_double" \
	"type = const double" \
	"(double const)"

gdb_test "whatis (char volatile) v_char" \
	"type = volatile char" \
	"(char volatile)"
gdb_test "whatis (signed char volatile) v_signed_char" \
	"type = volatile signed char" \
	"(signed char volatile)"
gdb_test "whatis (unsigned char volatile) v_unsigned_char" \
	"type = volatile (unsigned char|char)" \
	"(unsigned char volatile)"
gdb_test "whatis (short volatile) v_short" \
	"type = volatile (short|short int)" \
	"(short volatile)"
gdb_test "whatis (signed short volatile) v_signed_short" \
	"type = volatile (short|short int|signed short|signed short int)" \
	"(signed short volatile)"
gdb_test "whatis (unsigned short volatile) v_unsigned_short" \
	"type = volatile (unsigned short|short unsigned int)" \
	"(unsigned short volatile)"
gdb_test "whatis (int volatile) v_int" \
	"type = volatile int" \
	"(int volatile)"
gdb_test "whatis (signed int volatile) v_signed_int" \
	"type = volatile (signed int|int)" \
	"(signed int volatile)"
gdb_test "whatis (unsigned int volatile) v_unsigned_int" \
	"type = volatile unsigned int" \
	"(unsigned int volatile)"
gdb_test "whatis (long volatile) v_long" \
	"type = volatile (long|long int)" \
	"(long volatile)"
gdb_test "whatis (signed long volatile) v_signed_long" \
	"type = volatile (signed |)long( int|)" \
	"(signed long volatile)"
gdb_test "whatis (unsigned long volatile) v_unsigned_long" \
	"type = volatile (unsigned long|long unsigned int)" \
	"(unsigned long volatile)"
gdb_test "whatis (long long volatile) v_long_long" \
	"type = volatile long long( int|)" \
	"(long long volatile)"
gdb_test "whatis (signed long long volatile) v_signed_long_long" \
	"type = volatile (signed |)long long( int|)" \
	"(signed long long volatile)"
gdb_test "whatis (unsigned long long volatile) v_unsigned_long_long" \
	"type = volatile (unsigned long long|long long unsigned int)" \
	"(unsigned long long volatile)"
gdb_test "whatis (float volatile) v_float" \
	"type = volatile float" \
	"(float volatile)"
gdb_test "whatis (double volatile) v_double" \
	"type = volatile double" \
	"(double volatile)"

#
# enums
#

gdb_test "whatis (const enum misordered) v_misordered" \
	"type = const enum misordered" \
	"(const enum misordered)"
gdb_test "whatis (enum misordered const) v_misordered" \
	"type = const enum misordered" \
	"(enum misordered const)"
gdb_test "whatis (volatile enum misordered) v_misordered" \
	"type = volatile enum misordered" \
	"(volatile enum misordered)"
gdb_test "whatis (enum misordered volatile) v_misordered" \
	"type = volatile enum misordered" \
	"(enum misordered volatile)"

# 
# Pointers
#

gdb_test "whatis (const int *) v_int_pointer" \
	"type = const int${ws}\\*" \
	"(const int *)"
gdb_test "whatis (int const *) v_int_pointer" \
	"type = const int${ws}\\*" \
	"(int const *)"
gdb_test "whatis (int * const) v_int_pointer" \
	"type = int \\*${ws}const" \
	"(int * const)"
gdb_test "whatis (const int * const) v_int_pointer" \
	"type = const int${ws}\\*${ws}const" \
	"(const int * const)"
gdb_test "whatis (int const * const) v_int_pointer" \
	"type = const int${ws}\\*${ws}const" \
	"(int const * const)"

gdb_test "whatis (const int **) v_int_pointer_pointer" \
	"type = const int${ws}\\*${ws}\\*" \
	"(const int **)"
gdb_test "whatis (int const **) v_int_pointer_pointer" \
	"type = const int${ws}\\*${ws}\\*" \
	"(int const **)"
gdb_test "whatis (int ** const) v_int_pointer_pointer" \
	"type = int \\*${ws}\\*${ws}const" \
	"(int ** const)"
gdb_test "whatis (const int * const *) v_int_pointer_pointer" \
	"type = const int${ws}\\*${ws}const${ws}\\*" \
	"(const int * const *)"
gdb_test "whatis (int const * const *) v_int_pointer_pointer" \
	"type = const int${ws}\\*${ws}const${ws}\\*" \
	"(int const * const *)"
gdb_test "whatis (const int * const * const) v_int_pointer_pointer" \
	"type = const int${ws}\\*${ws}const${ws}\\*${ws}const" \
	"(const int * const * const)"
gdb_test "whatis (int const * const * const) v_int_pointer_pointer" \
	"type = const int${ws}\\*${ws}const${ws}\\*${ws}const" \
	"(int const * const * const)"

#
# Arrays TODO
#

#
# Pointers to arrays, arrays of pointers TODO
#

#
# Structs and Unions
#

gdb_test "whatis (const struct t_struct) v_struct1" \
	"type = const struct t_struct" \
	"(const struct t_struct)"
gdb_test "whatis (const union t_union) v_union" \
	"type = const union t_union" \
	"(const union t_union)"
gdb_test "whatis (struct t_struct const) v_struct1" \
	"type = const struct t_struct" \
	"(struct t_struct const)"
gdb_test "whatis (union t_union const) v_union" \
	"type = const union t_union" \
	"(union t_union const)"
gdb_test "whatis (const struct t_struct *) &v_struct1" \
	"type = const struct t_struct${ws}\\*" \
	"(const struct t_struct *)"
gdb_test "whatis (const union t_union *) &v_union" \
	"type = const union t_union${ws}\\*" \
	"(const union t_union *)"
gdb_test "whatis (struct t_struct const *) &v_struct1" \
	"type = const struct t_struct${ws}\\*" \
	"(struct t_struct const *)"
gdb_test "whatis (union t_union const *) &v_union" \
	"type = const union t_union${ws}\\*" \
	"(union t_union const *)"
gdb_test "whatis (struct t_struct * const) &v_struct1" \
	"type = struct t_struct${ws}\\*${ws}const" \
	"(struct t_struct * const)"
gdb_test "whatis (union t_union * const) &v_union" \
	"type = union t_union${ws}\\*${ws}const" \
	"(union t_union * const)"
gdb_test "whatis (const struct t_struct * const) &v_struct1" \
	"type = const struct t_struct${ws}\\*${ws}const" \
	"(const struct t_struct * const)"
gdb_test "whatis (const union t_union * const) &v_union" \
	"type = const union t_union${ws}\\*${ws}const" \
	"(const union t_union * const)"
gdb_test "whatis (struct t_struct const * const) &v_struct1" \
	"type = const struct t_struct${ws}\\*${ws}const" \
	"(struct t_struct const * const)"
gdb_test "whatis (union t_union const * const) &v_union" \
	"type = const union t_union${ws}\\*${ws}const" \
	"(union t_union const * const)"

#
# Function pointers TODO
#

