Allow really large fortran array bounds: fortran type/value printers
authorKeith Seitz <keiths@redhat.com>
Fri, 29 Mar 2019 17:15:38 +0000 (10:15 -0700)
committerKeith Seitz <keiths@redhat.com>
Fri, 29 Mar 2019 17:35:19 +0000 (10:35 -0700)
commit2880242dd0b8538b68aece7d9e8b1678dcdfd0ab
tree2014f6a0ef950c8dada827fb19ab7001f029ae01
parentcc1defb1dcb5f1ca23a82bca233a48ab2657de6c
Allow really large fortran array bounds: fortran type/value printers

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.
gdb/ChangeLog
gdb/f-lang.h
gdb/f-typeprint.c
gdb/f-valprint.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.fortran/array-bounds.exp [new file with mode: 0644]
gdb/testsuite/gdb.fortran/array-bounds.f90 [new file with mode: 0644]