# Copyright 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 . # Testing GDB's implementation of ALLOCATED keyword. if {[skip_fortran_tests]} { return -1 } standard_testfile ".f90" load_lib fortran.exp if {[prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} \ {debug f90}]} { return -1 } # Avoid shared lib symbols. gdb_test_no_output "set auto-solib-add off" if ![fortran_runto_main] { return -1 } # Avoid libc symbols, in particular the 'array' type. gdb_test_no_output "nosharedlibrary" # Set all the breakpoints. for { set i 1 } { $i < 6 } { incr i } { gdb_breakpoint [gdb_get_line_number "Breakpoint $i"] } # Run to each test and check GDB calculates the ALLOCATED value of the # array variable correctly. We compare to a value calculated within # the test program itself. for { set i 1 } { $i < 6 } { incr i } { with_test_prefix "Breakpoint $i" { gdb_continue_to_breakpoint "found it" set expected [get_valueof "" "is_allocated" "*unknown*"] set calculated [get_valueof "" "allocated (array)" "*missing*"] gdb_assert { [string eq ${expected} ${calculated}] } \ "expected and calculated results match" } }