Browse Source
This is the fortran part of the patch, including tests, which are essentially unchanged from Siddhesh's original 2012 submission: https://sourceware.org/ml/gdb-patches/2012-08/msg00562.html There is, however, one large departure. In the above thread, Jan pointed out problems with GCC debuginfo for -m32 builds (filed usptream as gcc/54934). After investigating the issue, I am dropping the hand-tweaked assembler source file to workaround this case. While I would normally do something to accommodate this, in this case, given the ubiquity of 64-bit systems today (where the tests pass) and the apparent lack of urgency on the compiler side (by users), I don't think the additional complexity and maintenance costs are worth it. It will be very routinely tested on 64-bit systems. [For example, at Red Hat, we always test -m64 and -m32 configurations for all GDB releases.] gdb/ChangeLog: From Siddhesh Poyarekar: * f-lang.h (f77_get_upperbound): Return LONGEST. (f77_get_lowerbound): Likewise. * f-typeprint.c (f_type_print_varspec_suffix): Expand UPPER_BOUND and LOWER_BOUND to LONGEST. Use plongest to format print them. (f_type_print_base): Expand UPPER_BOUND to LONGEST. Use plongest to format print it. * f-valprint.c (f77_get_lowerbound): Return LONGEST. (f77_get_upperbound): Likewise. (f77_get_dynamic_length_of_aggregate): Expand UPPER_BOUND, LOWER_BOUND to LONGEST. (f77_create_arrayprint_offset_tbl): Likewise. gdb/testsuite/ChangeLog: * gdb.fortran/array-bounds.exp: New file. * gdb.fortran/array-bounds.f90: New file.binutils-2_33-branch
7 changed files with 110 additions and 13 deletions
@ -0,0 +1,50 @@ |
|||
# Copyright 2012-2019 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 is part of the gdb testsuite. It contains test to ensure that |
|||
# array bounds accept LONGEST. |
|||
|
|||
if { [skip_fortran_tests] } { return -1 } |
|||
|
|||
set testfile "array-bounds" |
|||
standard_testfile .f90 |
|||
|
|||
if {[prepare_for_testing $testfile.exp $testfile $srcfile {f90 debug}]} { |
|||
return -1 |
|||
} |
|||
|
|||
if {![runto MAIN__]} { |
|||
perror "Could not run to breakpoint `MAIN__'." |
|||
continue |
|||
} |
|||
|
|||
# Convenience proc to setup for KFAIL |
|||
proc kfail_if {exp bugid triplet} { |
|||
if {$exp} { |
|||
setup_kfail $bugid $triplet |
|||
} |
|||
} |
|||
|
|||
# GCC outputs incorrect range debug info for -m32. |
|||
set expect_fail false |
|||
if {[is_ilp32_target] && ([istarget "i\[34567\]86-*-linux*"] |
|||
|| [istarget "x86_64-*-linux*"])} { |
|||
set expect_fail true |
|||
} |
|||
|
|||
kfail_if $expect_fail "gcc/54934" "*-*-*" |
|||
gdb_test "print &foo" {.*\(4294967296:4294967297\).*} |
|||
kfail_if $expect_fail "gcc/54934" "*-*-*" |
|||
gdb_test "print &bar" {.*\(-4294967297:-4294967296\).*} |
|||
@ -0,0 +1,26 @@ |
|||
! Copyright 2012-2019 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/>. |
|||
|
|||
dimension foo(4294967296_8:4294967297_8) |
|||
dimension bar(-4294967297_8:-4294967296_8) |
|||
integer(8) :: lb, ub |
|||
bar = 42 |
|||
foo = bar |
|||
lb = lbound (foo, dim = 1, kind = 8) |
|||
ub = ubound (foo, dim = 1, kind = 8) |
|||
print *, 'bounds of foo - ', lb, ':', ub |
|||
stop |
|||
end |
|||
|
|||
Loading…
Reference in new issue