1 # Copyright
2005-2021 Free Software Foundation
, Inc.
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.
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.
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
/>.
16 # This file was written by Wu Zhou.
(woodzltc@cn.ibm.com
)
18 # This file is part of the gdb testsuite. It contains tests
for type
-printing
19 # and value
-printing Fortran derived types.
21 if { [skip_fortran_tests
] } { return -1 }
23 standard_testfile .f90
24 load_lib
"fortran.exp"
26 if {[prepare_for_testing
"failed to prepare" $testfile $srcfile {debug f90}]} {
30 if ![fortran_runto_main
] then {
31 perror
"couldn't run to main"
35 # Depending
on the compiler being used
, the type names can be printed differently.
36 set int [fortran_int4
]
37 set real
[fortran_real4
]
39 gdb_test
"ptype p" "type = Type bar\r\n *$int :: c\r\n *$real :: d\r\n *End Type bar"
41 set test
"type-printing for derived type"
42 gdb_test_multiple
"ptype q" $test {
43 -re
"type = Type foo\r\n *$real :: a\r\n *Type bar :: x\r\n *character\\*7 :: b\r\n *End Type foo\r\n$gdb_prompt $" {
46 -re
"type = Type foo\r\n *$real :: a\r\n *Type bar :: x\r\n *character :: b\\(7\\)\r\n *End Type foo\r\n$gdb_prompt $" {
47 # Compiler should produce string
, not an array of characters.
53 gdb_breakpoint
[gdb_get_line_number
"print"]
54 gdb_continue_to_breakpoint
"print"
56 gdb_test
"print p" "\\$\[0-9\]+ = \\( c = 1, d = 2\\.375 \\)"
57 gdb_test
"print p%c" "\\$\[0-9\]+ = 1"
58 gdb_test
"print p%d" "\\$\[0-9\]+ = 2\\.375"
59 gdb_test
"print q%a" "\\$\[0-9\]+ = 3\\.125"
62 gdb_test_multiple $test $test
{
63 -re
"\\$\[0-9\]+ = 'abcdefg'\r\n$gdb_prompt $" {
66 -re
"\\$\[0-9\]+ = \\(97 'a', 98 'b', 99 'c', 100 'd', 101 'e', 102 'f', 103 'g'\\)\r\n$gdb_prompt $" {
67 # Compiler should produce string
, not an array of characters.
73 gdb_test
"print q%x%c" "\\$\[0-9\]+ = 1"
74 gdb_test
"print q%x%d" "\\$\[0-9\]+ = 2\\.375"
76 set result_line
"= \\( a = 3.125, x = \\( c = 1, d = 2\\.375 \\),\
77 b
= 'abcdefg' \\)\r\n$gdb_prompt $
"
79 # Used in case compiler generates an array of characters.
80 set result_line_2
" = \\( a = 3.125, x = \\( 1, 2\\.375 \\),\
81 b
= \\('abcdefg'\\) \\)\r\n$gdb_prompt $
"
84 gdb_test_multiple $test $test
{
89 # Compiler should produce string
, not an array of characters.
95 gdb_test
"print this%a" " = 3\\.125"
97 set test
"print this%b"
98 gdb_test_multiple $test $test
{
99 -re
" = 'abcdefg'\r\n$gdb_prompt $" {
108 set test
"print this"
109 gdb_test_multiple $test $test
{