# Copyright 1988, 1990, 1991, 1992, 1994, 1995, 1996, 1997, 1999, 2002, 2003
# 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

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

if $tracelevel {
    strace $tracelevel
}

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

set testfile whatis
set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/${testfile}
if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}

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

# Start with a fresh gdb.

gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load $binfile

# Define a procedure to set up an xfail for all targets that put out a
# `long' type as an `int' type.
# Sun/Ultrix cc have 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*" "*-*-ultrix*" "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"

# If we did not use the signed keyword when compiling the file, don't
# expect GDB to know that char is signed.
if { $hp_cc_compiler || $hp_aCC_compiler } {
    set signed_keyword_not_used 1
}
if $signed_keyword_not_used then {
    set signed_char "char"
} else {
    set signed_char "signed char"
}
if {!$gcc_compiled} then { setup_xfail "mips-sgi-irix*" }
gdb_test "whatis v_signed_char" \
    "type = $signed_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"

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"

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"

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

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


if { $hp_aCC_compiler } {
    set unstruct "unnamed\.struct\..*"
    set ununion "unnamed\.union\..*"
} else {
    set unstruct "\.\.\."
    set ununion "\.\.\."
}

# test whatis command with structure types
gdb_test "whatis v_struct1" \
    "type = struct t_struct" \
    "whatis named structure"

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


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

gdb_test "whatis v_union2" \
    "type = union \{$ununion\}" \
    "whatis unnamed union"


# HP-UX: HP aCC compiler w/ +objdebug option detects language as
# c++, so we need the 'void' pattern here.
# Without +objdebug compilation option we still need to match ''.
# - guo
# Also, 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"

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


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

if {$hp_aCC_compiler} {
    set outer "outer_struct::"
} else {
    set outer ""
}

gdb_test "whatis nested_su.inner_struct_instance" \
    "type = struct ${outer}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 ${outer}inner_union" \
    "whatis inner union"

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