mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-27 04:52:05 +08:00
ebad7c6613
The order in which the variables in info common and info locals are displayed is compiler (and dwarf) dependent. While all symbols should be displayed the order is not fixed. I added a gdb_test_multiple that lets ifx and ifort pass in cases where only the order differs.
132 lines
5.1 KiB
Plaintext
132 lines
5.1 KiB
Plaintext
# Copyright 2008-2022 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 <http://www.gnu.org/licenses/>.
|
|
|
|
# This file was written by Jan Kratochvil <jan.kratochvil@redhat.com>.
|
|
|
|
if {[skip_fortran_tests]} {
|
|
return 0
|
|
}
|
|
|
|
standard_testfile .f90
|
|
load_lib "fortran.exp"
|
|
|
|
if {[prepare_for_testing "failed to prepare" ${testfile} \
|
|
$srcfile {debug f90 quiet}]} {
|
|
return -1
|
|
}
|
|
|
|
if ![fortran_runto_main] then {
|
|
perror "couldn't run to main"
|
|
return
|
|
}
|
|
|
|
gdb_breakpoint [gdb_get_line_number "stop-here-out"]
|
|
gdb_continue_to_breakpoint "stop-here-out"
|
|
|
|
# Common block naming with source name /foo/:
|
|
# .symtab DW_TAG_common_block's DW_AT_name
|
|
# Intel Fortran foo_ foo_
|
|
# GNU Fortran foo_ foo
|
|
#set suffix "_"
|
|
set suffix ""
|
|
|
|
# Depending on the compiler being used, the type names can be printed differently.
|
|
set int4 [fortran_int4]
|
|
set real4 [fortran_real4]
|
|
set real8 [fortran_real8]
|
|
|
|
gdb_test "whatis foo$suffix" "No symbol \"foo$suffix\" in current context."
|
|
gdb_test "ptype foo$suffix" "No symbol \"foo$suffix\" in current context."
|
|
gdb_test "p foo$suffix" "No symbol \"foo$suffix\" in current context."
|
|
gdb_test "whatis fo_o$suffix" "No symbol \"fo_o$suffix\" in current context."
|
|
gdb_test "ptype fo_o$suffix" "No symbol \"fo_o$suffix\" in current context."
|
|
gdb_test "p fo_o$suffix" "No symbol \"fo_o$suffix\" in current context."
|
|
|
|
gdb_test_multiple "info locals" "info locals out" {
|
|
# gfortran
|
|
-re -wrap "ix_x = 11\r\niy_y = 22\r\niz_z = 33\r\nix = 1\r\niy = 2\r\niz = 3" {
|
|
pass $gdb_test_name
|
|
}
|
|
# ifx/ifort/flang
|
|
-re -wrap "ix = 1\r\niy = 2\r\niz = 3\r\nix_x = 11\r\niy_y = 22\r\niz_z = 33" {
|
|
pass $gdb_test_name
|
|
}
|
|
}
|
|
|
|
gdb_test_multiple "info common" "info common out" {
|
|
# gfortran
|
|
-re -wrap "Contents of F77 COMMON block 'fo_o':\r\nix_x = 11\r\niy_y = 22\r\niz_z = 33\r\n\r\nContents of F77 COMMON block 'foo':\r\nix = 1\r\niy = 2\r\niz = 3" {
|
|
pass $gdb_test_name
|
|
}
|
|
# ifx/ifort/flang
|
|
-re -wrap "Contents of F77 COMMON block 'foo_?':\r\nix = 1\r\niy = 2\r\niz = 3\r\n\r\nContents of F77 COMMON block 'fo_o_?':\r\nix_x = 11\r\niy_y = 22\r\niz_z = 33" {
|
|
pass $gdb_test_name
|
|
}
|
|
}
|
|
|
|
gdb_test "ptype ix" "type = $int4" "ptype ix out"
|
|
gdb_test "ptype iy" "type = $real4" "ptype iy out"
|
|
gdb_test "ptype iz" "type = $real8" "ptype iz out"
|
|
gdb_test "ptype ix_x" "type = $int4" "ptype ix_x out"
|
|
gdb_test "ptype iy_y" "type = $real4" "ptype iy_y out"
|
|
gdb_test "ptype iz_z" "type = $real8" "ptype iz_z out"
|
|
|
|
gdb_test "p ix" " = 1 *" "p ix out"
|
|
gdb_test "p iy" " = 2 *" "p iy out"
|
|
gdb_test "p iz" " = 3 *" "p iz out"
|
|
gdb_test "p ix_x" " = 11 *" "p ix_x out"
|
|
gdb_test "p iy_y" " = 22 *" "p iy_y out"
|
|
gdb_test "p iz_z" " = 33 *" "p iz_z out"
|
|
|
|
gdb_breakpoint [gdb_get_line_number "stop-here-in"]
|
|
gdb_continue_to_breakpoint "stop-here-in"
|
|
|
|
gdb_test "whatis foo$suffix" "No symbol \"foo$suffix\" in current context." "whatis foo$suffix in"
|
|
gdb_test "ptype foo$suffix" "No symbol \"foo$suffix\" in current context." "ptype foo$suffix in"
|
|
gdb_test "p foo$suffix" "No symbol \"foo$suffix\" in current context." "p foo$suffix in"
|
|
gdb_test "whatis fo_o$suffix" "No symbol \"fo_o$suffix\" in current context." "whatis fo_o$suffix in"
|
|
gdb_test "ptype fo_o$suffix" "No symbol \"fo_o$suffix\" in current context." "ptype fo_o$suffix in"
|
|
gdb_test "p fo_o$suffix" "No symbol \"fo_o$suffix\" in current context." "p fo_o$suffix in"
|
|
|
|
gdb_test_multiple "info locals" "info locals in" {
|
|
# gfortran
|
|
-re -wrap "ix = 11\r\niy2 = 22\r\niz = 33\r\nix_x = 1\r\niy_y = 2\r\niz_z2 = 3\r\niy = 5\r\niz_z = 55" {
|
|
pass $gdb_test_name
|
|
}
|
|
# ifx
|
|
-re -wrap "ix = 11\r\niy2 = 22\r\niz = 33\r\nix_x = 1\r\niy_y = 2\r\niz_z2 = 3\r\niz_z = 55\r\niy = 5" {
|
|
pass $gdb_test_name
|
|
}
|
|
# ifort
|
|
-re -wrap "iz_z = 55\r\niy = 5\r\nix = 11\r\niy2 = 22\r\niz = 33\r\nix_x = 1\r\niy_y = 2\r\niz_z2 = 3" {
|
|
pass $gdb_test_name
|
|
}
|
|
}
|
|
gdb_test "info common" "Contents of F77 COMMON block 'fo_o':\r\nix = 11\r\niy2 = 22\r\niz = 33\r\n\r\nContents of F77 COMMON block 'foo':\r\nix_x = 1\r\niy_y = 2\r\niz_z2 = 3" "info common in"
|
|
|
|
gdb_test "ptype ix" "type = $int4" "ptype ix in"
|
|
gdb_test "ptype iy2" "type = $real4" "ptype iy2 in"
|
|
gdb_test "ptype iz" "type = $real8" "ptype iz in"
|
|
gdb_test "ptype ix_x" "type = $int4" "ptype ix_x in"
|
|
gdb_test "ptype iy_y" "type = $real4" "ptype iy_y in"
|
|
gdb_test "ptype iz_z2" "type = $real8" "ptype iz_z2 in"
|
|
|
|
gdb_test "p ix" " = 11 *" "p ix in"
|
|
gdb_test "p iy2" " = 22 *" "p iy2 in"
|
|
gdb_test "p iz" " = 33 *" "p iz in"
|
|
gdb_test "p ix_x" " = 1 *" "p ix_x in"
|
|
gdb_test "p iy_y" " = 2 *" "p iy_y in"
|
|
gdb_test "p iz_z2" " = 3 *" "p iz_z2 in"
|