# Copyright 2011-2014 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 . # This file is part of the gdb testsuite. It contains tests for evaluating # Fortran subarray expression. if { [skip_fortran_tests] } { return -1 } standard_testfile .f90 if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} {debug f90}] } { return -1 } if ![runto MAIN__] { perror "Couldn't run to MAIN__" continue } # Depending on the compiler version being used, the name of the 4-byte integer # and real types can be printed differently. For instance, gfortran-4.1 uses # "int4" whereas gfortran-4.3 uses "int(kind=4)". set int4 "(int4|integer\\(kind=4\\))" gdb_breakpoint [gdb_get_line_number "break-static"] gdb_continue_to_breakpoint "break-static" ".*break-static.*" gdb_test "print foo(2,3,4)" \ " = 20" \ "print valid static array element" gdb_test "print foo(0,0,0)" \ "no such vector element" \ "print an invalid array index (0,0,0)" gdb_test "print foo(2,3,5)" \ "no such vector element" \ "print an invalid array index (2,3,5)" gdb_test "print foo(2,4,4)" \ "no such vector element" \ "print an invalid array index (2,4,4)" gdb_test "print foo(3,3,4)" \ "no such vector element" \ "print an invalid array index (3,3,4)" gdb_test "print foo" \ { = \(\( \( 10, 10\) \( 10, 10\) \( 10, 10\) \) \( \( 10, 10\) \( 10, 10\) \( 10, 10\) \) \( \( 10, 10\) \( 10, 10\) \( 10, 10\) \) \( \( 10, 10\) \( 10, 10\) \( 10, 20\) \) \)} \ "print full contents of the array" gdb_breakpoint [gdb_get_line_number "break-variable"] gdb_continue_to_breakpoint "break-variable" ".*break-variable.*" gdb_test "print varbound(4)" \ " = 2" \ "print valid variable bound array element" gdb_test "ptype unbound" \ "type = $int4 \\(\\*\\)" \ "print type of unbound array" gdb_test "print unbound(4)" \ " = 2" \ "print valid unbound array element"