#   Copyright (C) 2001, 2007, 2008, 2009 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 3 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, see <http://www.gnu.org/licenses/>.

# 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
#

