diff options
author | Tom Tromey <tom@tromey.com> | 2022-02-24 09:01:42 -0700 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2022-02-24 14:38:08 -0700 |
commit | 4c937052c13b13053559a5aa2b1345545a185ca5 (patch) | |
tree | da1c7680fef3345636fffc45b22592a59150f0f4 /gdb/testsuite/gdb.dwarf2/fortran-var-string.c | |
parent | 7124770976d3f051532faf864013b76ab36249bf (diff) | |
download | binutils-4c937052c13b13053559a5aa2b1345545a185ca5.zip binutils-4c937052c13b13053559a5aa2b1345545a185ca5.tar.gz binutils-4c937052c13b13053559a5aa2b1345545a185ca5.tar.bz2 |
Fix crash in Fortran code
PR fortran/28801 points out a gdb crash that can be provoked by
certain Fortran code. The bug is that f77_get_upperbound assumes the
property is either a constant or undefined, but in this case it is
PROP_LOCEXPR.
This patch fixes the crash by making this function (and the
lower-bound one as well) do the correct check before calling
'const_val'.
Thanks to Andrew for writing the test case.
Co-authored-by: Andrew Burgess <aburgess@redhat.com>
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=28801
Diffstat (limited to 'gdb/testsuite/gdb.dwarf2/fortran-var-string.c')
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/fortran-var-string.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.dwarf2/fortran-var-string.c b/gdb/testsuite/gdb.dwarf2/fortran-var-string.c new file mode 100644 index 0000000..a677b7e --- /dev/null +++ b/gdb/testsuite/gdb.dwarf2/fortran-var-string.c @@ -0,0 +1,31 @@ +/* Copyright 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/>. */ + +/* In the generated DWARF, we'll pretend that ARG is a string with dynamic + length. */ +int +main_helper (void *arg) +{ + asm ("main_helper_label: .globl main_helper_label"); + return 0; +} + +int +main (void) +{ + asm ("main_label: .globl main_label"); + main_helper (0); + return 0; +} |