Commit | Line | Data |
---|---|---|
88b9d363 | 1 | # Copyright 2010-2022 Free Software Foundation, Inc. |
ce4b0682 SDJ |
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 | |
0ecee54c | 5 | # the Free Software Foundation; either version 3 of the License, or |
ce4b0682 SDJ |
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 | |
1cc75e92 | 14 | # along with this program. If not, see <http://www.gnu.org/licenses/>. |
ce4b0682 SDJ |
15 | |
16 | # This file was written by Jan Kratochvil <jan.kratochvil@redhat.com>. | |
17 | ||
cf09b3e4 | 18 | standard_testfile .f90 |
86cd6bc8 | 19 | load_lib fortran.exp |
ce4b0682 | 20 | |
a54a7f13 PA |
21 | if {[skip_fortran_tests]} { return -1 } |
22 | ||
5b362f04 | 23 | if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug f90 quiet}]} { |
ce4b0682 SDJ |
24 | return -1 |
25 | } | |
26 | ||
86cd6bc8 AKS |
27 | if { ![fortran_runto_main] } { |
28 | perror "Could not run to main." | |
ce4b0682 SDJ |
29 | continue |
30 | } | |
31 | ||
32 | gdb_breakpoint [gdb_get_line_number "stop-here"] | |
33 | gdb_continue_to_breakpoint "stop-here" ".*stop-here.*" | |
34 | gdb_test "p l" " = \\.TRUE\\." | |
35 | gdb_test "p l1" " = \\.TRUE\\." | |
36 | gdb_test "p l2" " = \\.TRUE\\." | |
37 | gdb_test "p l4" " = \\.TRUE\\." | |
38 | gdb_test "p l8" " = \\.TRUE\\." | |
5e5d66b6 AB |
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. | |
43 | foreach_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" { | |
44f41bb7 | 49 | gdb_test_no_output "set *((character *) ${addr}) = 0xff" \ |
5e5d66b6 AB |
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 | } |