1# Copyright 2010-2020 Free Software Foundation, Inc. 2 3# This program is free software; you can redistribute it and/or modify 4# it under the terms of the GNU General Public License as published by 5# the Free Software Foundation; either version 3 of the License, or 6# (at your option) any later version. 7# 8# This program is distributed in the hope that it will be useful, 9# but WITHOUT ANY WARRANTY; without even the implied warranty of 10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11# GNU General Public License for more details. 12# 13# You should have received a copy of the GNU General Public License 14# along with this program. If not, see <http://www.gnu.org/licenses/>. 15 16# This file was written by Jan Kratochvil <jan.kratochvil@redhat.com>. 17 18standard_testfile .f90 19load_lib fortran.exp 20 21if {[skip_fortran_tests]} { return -1 } 22 23if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug f90 quiet}]} { 24 return -1 25} 26 27if { ![fortran_runto_main] } { 28 perror "Could not run to main." 29 continue 30} 31 32gdb_breakpoint [gdb_get_line_number "stop-here"] 33gdb_continue_to_breakpoint "stop-here" ".*stop-here.*" 34gdb_test "p l" " = \\.TRUE\\." 35gdb_test "p l1" " = \\.TRUE\\." 36gdb_test "p l2" " = \\.TRUE\\." 37gdb_test "p l4" " = \\.TRUE\\." 38gdb_test "p l8" " = \\.TRUE\\." 39 40# Different Fortran compilers use different values for logical true. 41# Check how GDB handles this by modifying the underlying value for our 42# logical variables and check they still print as true. 43foreach_with_prefix var { l l1 l2 l4 l8 } { 44 set len [get_integer_valueof "sizeof (${var})" "get sizeof ${var}"] 45 set addr [get_hexadecimal_valueof "&l" "get address of ${var}"] 46 47 for { set i 0 } { $i < $len } { incr i } { 48 with_test_prefix "byte $i" { 49 gdb_test_no_output "set *((character *) ${addr}) = 0xff" \ 50 "set contents of byte at offset $i" 51 gdb_test "p l" " = \\.TRUE\\." 52 incr addr 53 set addr [format "0x%x" $addr] 54 } 55 } 56} 57