# Copyright 1988-2018 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/>.

# This file was written by Rob Savoye. (rob@cygnus.com)

#
# test running programs
#

if [target_info exists no_long_long] {
    set exec_opts [list debug additional_flags=-DNO_LONG_LONG]
} else {
    set exec_opts [list debug]
}

standard_testfile .c

if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable $exec_opts] != "" } {
     untested "failed to compile"
     return -1
}

# Create and source the file that provides information about the compiler
# used to compile the test case.
if [get_compiler_info] {
    return -1
}

# Start with a fresh gdb.

clean_restart $binfile

# Define a procedure to set up an xfail for all targets that put out a
# `long' type as an `int' type.
# Sun cc has this problem.
# It was said that COFF targets can not distinguish int from long either.

proc setup_xfail_on_long_vs_int {} {
    global gcc_compiled

    if {!$gcc_compiled} {
	setup_xfail "*-sun-sunos4*" "i*86-sequent-bsd*"
    }
}

#
# Test whatis command with basic C types
#
# The name printed now (as of 23 May 1993) is whatever name the compiler
# uses in the stabs.  So we need to deal with names both from gcc and
# native compilers.
#

gdb_test "whatis v_char" \
    "type = (unsigned char|char)" \
    "whatis char"

gdb_test "whatis v_signed_char" \
    "type = (signed char|char)" \
    "whatis signed char"

gdb_test "whatis v_unsigned_char" \
    "type = unsigned char" \
    "whatis unsigned char"

gdb_test "whatis v_short" \
    "type = (short|short int)" \
    "whatis short"

gdb_test "whatis v_signed_short" \
    "type = (short|short int|signed short|signed short int)" \
    "whatis signed short"

gdb_test "whatis v_unsigned_short" \
    "type = (unsigned short|short unsigned int)" \
    "whatis unsigned short" 

gdb_test "whatis v_int" \
    "type = int" \
    "whatis int"

gdb_test "whatis v_signed_int" \
    "type = (signed |)int" \
    "whatis signed int"

gdb_test "whatis v_unsigned_int" \
    "type = unsigned int" \
    "whatis unsigned int"

setup_xfail_on_long_vs_int
# AIX xlc gets this wrong and unsigned long right.  Go figure.
if {!$gcc_compiled} then {setup_xfail "rs6000-*-aix*"}
gdb_test "whatis v_long" \
    "type = (long|long int)" \
    "whatis long"

setup_xfail_on_long_vs_int
# AIX xlc gets this wrong and unsigned long right.  Go figure.
if {!$gcc_compiled} then {setup_xfail "rs6000-*-aix*"}
gdb_test "whatis v_signed_long" \
    "type = (signed |)(long|long int)" \
    "whatis signed long"

setup_xfail_on_long_vs_int
gdb_test "whatis v_unsigned_long" \
    "type = (unsigned long|long unsigned int)" \
    "whatis unsigned long"


if ![target_info exists no_long_long] {
    gdb_test "whatis v_unsigned_long_long" \
	"type = (unsigned long long|long long unsigned int)" \
	"whatis unsigned long long"
}

gdb_test "whatis v_float" \
    "type = float" \
    "whatis float"

gdb_test "whatis v_double" \
    "type = double" \
    "whatis double"


# test whatis command with arrays
#
# We already tested whether char prints as "char", so here we accept
# "unsigned char", "signed char", and other perversions.  No need for more
# than one xfail for the same thing.
gdb_test "whatis v_char_array" \
    "type = (signed |unsigned |)char \\\[2\\\]" \
    "whatis char array"

gdb_test "whatis v_signed_char_array" \
    "type = (signed |unsigned |)char \\\[2\\\]" \
    "whatis signed char array"

gdb_test "whatis v_unsigned_char_array" \
    "type = unsigned char \\\[2\\\]" \
    "whatis unsigned char array"

gdb_test "whatis v_short_array" \
    "type = (short|short int) \\\[2\\\]" \
    "whatis short array"

gdb_test "whatis v_signed_short_array" \
    "type = (signed |)(short|short int) \\\[2\\\]" \
    "whatis signed short array"

gdb_test "whatis v_unsigned_short_array" \
    "type = (unsigned short|short unsigned int) \\\[2\\\]" \
    "whatis unsigned short array"

gdb_test "whatis v_int_array" \
    "type = int \\\[2\\\]" \
    "whatis int array"

gdb_test "whatis v_signed_int_array" \
    "type = (signed |)int \\\[2\\\]" \
    "whatis signed int array"

gdb_test "whatis v_unsigned_int_array" \
    "type = unsigned int \\\[2\\\]" \
    "whatis unsigned int array"

# We already tested whether long prints as long, so here we accept int
# No need for more than one xfail for the same thing.
gdb_test "whatis v_long_array" \
    "type = (int|long|long int) \\\[2\\\]" \
    "whatis long array"

gdb_test "whatis v_signed_long_array" \
    "type = (signed |)(int|long|long int) \\\[2\\\]" \
    "whatis signed long array"

gdb_test "whatis v_unsigned_long_array" \
    "type = (unsigned (int|long|long int)|long unsigned int) \\\[2\\\]" \
    "whatis unsigned long array"

if ![target_info exists no_long_long] {
    gdb_test "whatis v_unsigned_long_long_array" \
	"type = (unsigned long long|long long unsigned int) \\\[2\\\]" \
	"whatis unsigned long array"
}

gdb_test "whatis v_float_array" \
    "type = float \\\[2\\\]" \
    "whatis float array"

gdb_test "whatis v_double_array" \
    "type = double \\\[2\\\]" \
    "whatis double array"


# test whatis command with pointers
#
# We already tested whether char prints as char, so accept various perversions
# here.  We especially want to make sure we test that it doesn't print as
# caddr_t.
gdb_test "whatis v_char_pointer" \
    "type = (unsigned |signed |)char \\*" \
    "whatis char pointer"

gdb_test "whatis v_signed_char_pointer" \
    "type = (unsigned |signed |)char \\*" \
    "whatis signed char pointer"

gdb_test "whatis v_unsigned_char_pointer" \
    "type = unsigned char \\*" \
    "whatis unsigned char pointer"

gdb_test "whatis v_short_pointer" \
    "type = (short|short int) \\*" \
    "whatis short pointer"

gdb_test "whatis v_signed_short_pointer" \
    "type = (signed |)(short|short int) \\*" \
    "whatis signed short pointer"

gdb_test "whatis v_unsigned_short_pointer" \
    "type = (unsigned short|short unsigned int) \\*" \
    "whatis unsigned short pointer"

gdb_test "whatis v_int_pointer" \
    "type = int \\*" \
    "whatis int pointer"

gdb_test "whatis v_signed_int_pointer" \
    "type = (signed |)int \\*" \
    "whatis signed int pointer"

gdb_test "whatis v_unsigned_int_pointer" \
    "type = unsigned int \\*" \
    "whatis unsigned int pointer"

# We already tested whether long prints as long, so here we accept int
gdb_test "whatis v_long_pointer" \
    "type = (long|int|long int) \\*" \
    "whatis long pointer"

gdb_test "whatis v_signed_long_pointer" \
    "type = (signed |)(long|int|long int) \\*" \
    "whatis signed long pointer"

gdb_test "whatis v_unsigned_long_pointer" \
    "type = (unsigned (int|long|long int)|long unsigned int) \\*" \
    "whatis unsigned long pointer"

if ![target_info exists no_long_long] {
    gdb_test "whatis v_long_long_pointer" \
	"type = long long(| int) \\*" \
	"whatis long long pointer"

    gdb_test "whatis v_signed_long_long_pointer" \
	"type = (signed |)long long(| int) \\*" \
	"whatis signed long long pointer"

    gdb_test "whatis v_unsigned_long_long_pointer" \
	"type = (unsigned long long|long long unsigned int) \\*" \
	"whatis unsigned long long pointer"
}

gdb_test "whatis v_float_pointer" \
    "type = float \\*" \
    "whatis float pointer"

gdb_test "whatis v_double_pointer" \
    "type = double \\*" \
    "whatis double pointer"


# test whatis command with structure types

# First with a type argument, with both "set print object" set to "on"
# and "off", ending with "off" for the following tests.
foreach_with_prefix print_object {"on" "off"} {
    gdb_test_no_output "set print object $print_object"

    gdb_test "whatis struct t_struct" \
	"type = struct t_struct" \
	"whatis named structure using type name"

    gdb_test "whatis struct t_struct *" \
	"type = struct t_struct \\*" \
	"whatis named structure using type name and pointer"

    gdb_test "whatis struct t_struct &" \
	"type = struct t_struct &" \
	"whatis named structure using type name and reference"
}

# Now with an expression argument.

gdb_test "whatis v_struct1" \
    "type = struct t_struct" \
    "whatis named structure"

gdb_test "whatis v_struct2" \
    "type = struct \{\.\.\.\}" \
    "whatis unnamed structure"

gdb_test "whatis &v_struct1" \
    "type = struct t_struct \\*"

gdb_test "whatis &v_struct2" \
    "type = struct {\\.\\.\\.} \\*"

gdb_test "whatis v_struct_ptr1" \
    "type = struct t_struct \\*"

gdb_test "whatis v_struct_ptr2" \
    "type = struct {\\.\\.\\.} \\*"

gdb_test "whatis &v_struct_ptr1" \
    "type = struct t_struct \\*\\*"

gdb_test "whatis &v_struct_ptr2" \
    "type = struct {\\.\\.\\.} \\*\\*"

gdb_test "whatis v_struct1.v_char_member" \
    "type = char"

gdb_test "whatis v_struct2.v_char_member" \
    "type = char"

gdb_test "whatis v_struct_ptr1->v_char_member" \
    "type = char"

gdb_test "whatis v_struct_ptr2->v_char_member" \
    "type = char"

gdb_test "whatis &(v_struct1.v_char_member)" \
    "type = char \\*"

gdb_test "whatis &(v_struct2.v_char_member)" \
    "type = char \\*"

gdb_test "whatis &(v_struct_ptr1->v_char_member)" \
    "type = char \\*"

gdb_test "whatis &(v_struct_ptr2->v_char_member)" \
    "type = char \\*"

# test whatis command with union types
gdb_test "whatis v_union" \
    "type = union t_union" \
    "whatis named union"

gdb_test "whatis union t_union" \
    "type = union t_union" \
    "whatis named union using type name"

gdb_test "whatis v_union2" \
    "type = union \{\.\.\.\}" \
    "whatis unnamed union"

gdb_test "whatis &v_union" \
    "type = union t_union \\*"

gdb_test "whatis &v_union2" \
    "type = union {\\.\\.\\.} \\*"

gdb_test "whatis v_union_ptr" \
    "type = union t_union \\*"

gdb_test "whatis v_union_ptr2" \
    "type = union {\\.\\.\\.} \\*"

gdb_test "whatis &v_union_ptr" \
    "type = union t_union \\*\\*"

gdb_test "whatis &v_union_ptr2" \
    "type = union {\\.\\.\\.} \\*\\*"

gdb_test "whatis v_union.v_char_member" \
    "type = char"

gdb_test "whatis v_union2.v_char_member" \
    "type = char"

gdb_test "whatis v_union_ptr->v_char_member" \
    "type = char"

gdb_test "whatis v_union_ptr2->v_char_member" \
    "type = char"

gdb_test "whatis &(v_union.v_char_member)" \
    "type = char \\*"

gdb_test "whatis &(v_union2.v_char_member)" \
    "type = char \\*"

gdb_test "whatis &(v_union_ptr->v_char_member)" \
    "type = char \\*"

gdb_test "whatis &(v_union_ptr2->v_char_member)" \
    "type = char \\*"


# Using stabs we will mark these functions as prototyped.  This
# is harmless but causes an extra VOID to be printed.
set void "(void|)"

# test whatis command with functions return type
gdb_test "whatis v_char_func" \
    "type = (signed |unsigned |)char \\($void\\)" \
    "whatis char function"

gdb_test "whatis v_signed_char_func" \
    "type = (signed |unsigned |)char \\($void\\)" \
    "whatis signed char function"

gdb_test "whatis v_unsigned_char_func" \
    "type = unsigned char \\($void\\)"	\
    "whatis unsigned char function"

gdb_test "whatis v_short_func" \
    "type = short (int |)\\($void\\)" \
    "whatis short function"

gdb_test "whatis v_signed_short_func" \
    "type = (signed |)short (int |)\\($void\\)" \
    "whatis signed short function"

gdb_test "whatis v_unsigned_short_func" \
    "type = (unsigned short|short unsigned int) \\($void\\)" \
    "whatis unsigned short function"

gdb_test "whatis v_int_func" \
    "type = int \\($void\\)" \
    "whatis int function"

gdb_test "whatis v_signed_int_func" \
    "type = (signed |)int \\($void\\)" \
    "whatis signed int function"

gdb_test "whatis v_unsigned_int_func" \
    "type = unsigned int \\($void\\)" \
    "whatis unsigned int function"

gdb_test "whatis v_long_func" \
    "type = (long|int|long int) \\($void\\)" \
    "whatis long function"

gdb_test "whatis v_signed_long_func" \
    "type = (signed |)(int|long|long int) \\($void\\)" \
    "whatis signed long function"

gdb_test "whatis v_unsigned_long_func" \
    "type = (unsigned (int|long|long int)|long unsigned int) \\($void\\)" \
    "whatis unsigned long function"

if ![target_info exists no_long_long] {
    gdb_test "whatis v_long_long_func" \
	"type = long long(| int) \\($void\\)" \
	"whatis long long function"

    gdb_test "whatis v_signed_long_long_func" \
	"type = (signed |)long long(| int) \\($void\\)" \
	"whatis signed long long function"

    gdb_test "whatis v_unsigned_long_long_func" \
	"type = (unsigned long long(| int)|long long unsigned int) \\($void\\)" \
	"whatis unsigned long long function"
}

# Sun /bin/cc calls this a function returning double.
if {!$gcc_compiled} then {setup_xfail "*-sun-sunos4*"}
gdb_test "whatis v_float_func" \
    "type = float \\($void\\)" \
    "whatis float function"

gdb_test "whatis v_double_func" \
    "type = double \\($void\\)" \
    "whatis double function" \


# test whatis command with some misc complicated types
gdb_test "whatis s_link" \
    "type = struct link \\*" \
    "whatis complicated structure"

gdb_test "whatis u_link" \
    "type = union tu_link" \
    "whatis complicated union"


# test whatis command with enumerations
gdb_test "whatis clunker" \
    "type = enum cars" \
    "whatis enumeration"

gdb_test "whatis enum cars" \
    "type = enum cars" \
    "whatis enumeration using type name"


# test whatis command with nested struct and union
gdb_test "whatis nested_su" \
    "type = struct outer_struct" \
    "whatis outer structure"

gdb_test "whatis nested_su.outer_int" \
    "type = int" \
    "whatis outer structure member"

gdb_test "whatis nested_su.inner_struct_instance" \
    "type = struct inner_struct" \
    "whatis inner structure"

gdb_test "whatis nested_su.inner_struct_instance.inner_int" \
    "type = int" \
    "whatis inner structure member"

gdb_test "whatis nested_su.inner_union_instance" \
    "type = union inner_union" \
    "whatis inner union"

gdb_test "whatis nested_su.inner_union_instance.inner_union_int" \
    "type = int" \
    "whatis inner union member"

# test whatis command with typedefs

gdb_test "whatis char_addr" \
    "type = char \\*" \
    "whatis using typedef type name"

gdb_test "whatis a_char_addr" \
    "type = char_addr" \
    "whatis applied to variable defined by typedef"

# Regression tests for PR 9514.

gdb_test "whatis void (**)()" \
  "type = void \\(\\*\\*\\)\\(\\)" \
  "whatis applied to pointer to pointer to function"

gdb_test "whatis void (** const)()" \
  "type = void \\(\\*\\* const\\)\\(\\)" \
  "whatis applied to const pointer to pointer to function"

gdb_test "whatis void (* const *)()" \
  "type = void \\(\\* const \\*\\)\\(\\)" \
  "whatis applied to pointer to const pointer to function"

gdb_test "whatis int *(*)()" \
    "type = int \\*\\(\\*\\)\\(\\)" \
    "whatis applied to pointer to function returning pointer to int"

gdb_test "whatis int *(**)()" \
    "type = int \\*\\(\\*\\*\\)\\(\\)" \
    "whatis applied to pointer to pointer to function returning pointer to int"

gdb_test "whatis char (*(*)())\[23\]" \
    "type = char \\(\\*\\(\\*\\)\\(\\)\\)\\\[23\\\]" \
    "whatis applied to pointer to function returning pointer to array"

gdb_test "whatis int (*)(int, int)" \
    "type = int \\(\\*\\)\\(int, int\\)" \
    "whatis applied to pointer to function taking int,int and returning int"

gdb_test "whatis int (*)(const int *, ...)" \
    "type = int \\(\\*\\)\\(const int \\*, \\.\\.\\.\\)" \
    "whatis applied to pointer to function taking const int ptr and varargs and returning int"

gdb_test "whatis int (*)(void, int, int)" \
    "parameter types following 'void'" \
    "whatis applied to function with types trailing 'void'"

gdb_test "whatis int (*)(int, void, int)" \
    "'void' invalid as parameter type" \
    "whatis applied to function with 'void' parameter type"
