diff options
Diffstat (limited to 'gdb/testsuite/gdb.base/ctf-whatis.exp')
-rw-r--r-- | gdb/testsuite/gdb.base/ctf-whatis.exp | 414 |
1 files changed, 0 insertions, 414 deletions
diff --git a/gdb/testsuite/gdb.base/ctf-whatis.exp b/gdb/testsuite/gdb.base/ctf-whatis.exp deleted file mode 100644 index 626aecb..0000000 --- a/gdb/testsuite/gdb.base/ctf-whatis.exp +++ /dev/null @@ -1,414 +0,0 @@ -# Copyright 2019 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 is a subset of whatis.exp written by Rob Savoye. (rob@cygnus.com) - -if [skip_ctf_tests] { - unsupported "no ctf debug format support" - return 0 -} - -standard_testfile .c - -# Using `-gt` generates full-fledged CTF debug information. -set opts "additional_flags=-gt" -if { [prepare_for_testing "failed to prepare" ${testfile} \ - [list $srcfile] [list $opts nowarnings]] } { - return 0 -} - -# 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_struct_ptr1" \ - "type = struct t_struct \\*" - -gdb_test "whatis &v_struct_ptr1" \ - "type = struct t_struct \\*\\*" - -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_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 union t_union" \ - "type = union t_union" \ - "whatis named union using type name" - -gdb_test "whatis v_union_ptr" \ - "type = union t_union \\*" - -gdb_test "whatis &v_union_ptr" \ - "type = union t_union \\*\\*" - -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_ptr->v_char_member)" \ - "type = char \\*" - -gdb_test "whatis &(v_union_ptr2->v_char_member)" \ - "type = char \\*" - -# 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" - -# Using stabs we will mark these functions as prototyped. This -# is harmless but causes an extra VOID to be printed. -set void "(void|)" - -# 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" |