| # Copyright 1999-2021 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/>. |
| |
| # Tests for reference types with short type variables in GDB, based on |
| # gdb.cp/ref-types.exp. |
| |
| if { [skip_cplus_tests] } { continue } |
| |
| standard_testfile .cc |
| |
| if {[prepare_for_testing $testfile.exp $testfile $srcfile \ |
| {debug c++ additional_flags="-std=gnu++11"}]} { |
| return -1 |
| } |
| |
| # |
| # Set it up at a breakpoint so we can play with the variable values. |
| # |
| if {![runto_main]} { |
| return -1 |
| } |
| |
| if {![runto 'marker1']} { |
| return -1 |
| } |
| |
| gdb_test "up" ".*main.*" "up from marker1 1" |
| |
| gdb_test "print rrt" " = \\(short( int)? &&\\) @$hex: -1" "print value of rrt" |
| |
| gdb_test "ptype rrt" "type = short( int)? &&" |
| |
| gdb_test "print *rrpt" ".$decimal = -1" "print value of *rrpt" |
| |
| # gdb had a bug about dereferencing a pointer type |
| # that would lead to wrong results |
| # if we try to examine memory at pointer value. |
| |
| gdb_test "x /hd rrpt" "$hex:\[ \t\]*-1" "examine value at rrpt" |
| |
| gdb_test "ptype rrpt" "type = short( int)? \\*&&" |
| |
| gdb_test "print rrat\[0\]" ".$decimal = 0" "print value of rrat\[0\]" |
| |
| gdb_test "ptype rrat" "type = short( int)? \\\(&&\\\)\\\[4\\\]" |
| |
| gdb_test "print rrat\[1\]" ".$decimal = 1" "print value of rrat\[1\]" |
| gdb_test "print rrat\[2\]" ".$decimal = 2" "print value of rrat\[2\]" |
| gdb_test "print rrat\[3\]" ".$decimal = 3" "print value of rrat\[3\]" |
| |
| |
| if {![runto 'f']} then { |
| perror "couldn't run to f" |
| continue |
| } |
| |
| gdb_test "up" ".main2.*" "up from f" |
| |
| gdb_test "ptype rrC" "type = char &&" |
| |
| gdb_test "ptype rrUC" "type = unsigned char &&" |
| |
| gdb_test "ptype rrS" "type = short( int)? &&" |
| |
| gdb_test "ptype rrUS" "type = unsigned short( int)? &&" |
| |
| gdb_test "ptype rrI" "type = int &&" |
| |
| gdb_test "ptype rrUI" "type = unsigned int &&" |
| |
| gdb_test "ptype rrL" "type = long( int)? &&" |
| |
| gdb_test "ptype rrUL" "type = unsigned long( int)? &&" |
| |
| gdb_test "ptype rrF" "type = float &&" |
| |
| gdb_test "ptype rrD" "type = double &&" |
| |
| gdb_test "print rrC" "$decimal = \\(char &&\\) @$hex: 65 \'A\'" \ |
| "print value of rrC" |
| |
| gdb_test "print rrUC" \ |
| "$decimal = \\(unsigned char &&\\) @$hex: 21 \'.025\'" \ |
| "print value of rrUC" |
| |
| gdb_test "print rrS" "$decimal = \\(short( int)? &&\\) @$hex: -14" \ |
| "print value of rrS" |
| |
| gdb_test "print rrUS" \ |
| "$decimal = \\(unsigned short( int)? &&\\) @$hex: 7" \ |
| "print value of rrUS" |
| |
| gdb_test "print rrI" "$decimal = \\(int &&\\) @$hex: 102" \ |
| "print value of rrI" |
| |
| gdb_test "print rrUI" \ |
| "$decimal = \\(unsigned int &&\\) @$hex: 1002" \ |
| "print value of rrUI" |
| |
| gdb_test "print rrL" \ |
| "$decimal = \\(long( int)? &&\\) @$hex: -234" \ |
| "print value of rrL" |
| |
| gdb_test "print rrUL" \ |
| "$decimal = \\((unsigned long|long unsigned int)? &&\\) @$hex: 234" \ |
| "print value of rrUL" |
| |
| gdb_test "print rrF" \ |
| "$decimal = \\(float &&\\) @$hex: 1.2${decimal}e\\+0?10.*" \ |
| "print value of rrF" |
| |
| gdb_test "print rrD" \ |
| "$decimal = \\(double &&\\) @$hex: -1.375e-123.*" \ |
| "print value of rrD" |