From: Andrew Burgess <andrew.burgess@embecosm.com>
To: Pawel Wodkowski <pwodkowski@pl.sii.eu>
Cc: gdb-patches@sourceware.org, murbanski@pl.sii.eu,
sbasierski@pl.sii.eu, tim.wiederhake@intel.com,
dragos.carciumaru@intel.com,
Bernhard Heckel <bernhard.heckel@intel.com>
Subject: Re: [PATCH v2 1/7] DWARF: Don't add nameless modules to partial symbol table.
Date: Tue, 27 Nov 2018 21:42:00 -0000 [thread overview]
Message-ID: <20181127214211.GB18841@embecosm.com> (raw)
In-Reply-To: <1542663530-140490-1-git-send-email-pwodkowski@pl.sii.eu>
* Pawel Wodkowski <pwodkowski@pl.sii.eu> [2018-11-19 22:38:44 +0100]:
> From: Bernhard Heckel <bernhard.heckel@intel.com>
>
> A name for BLOCK DATA in Fortran is optional. If no
> name has been assigned, GDB will crash during read-in of DWARF
> when BLOCK DATA is represented via DW_TAG_module.
> BLOCK DATA is used for one-time initialization of
> non-pointer variables in named common blocks.
Thanks for this.
Locally I have:
GNU Fortran (GCC) 7.3.1 20180712 (Red Hat 7.3.1-6)
For me at least this test passes with and without the change to GDB.
Can you confirm which Fortran compiler you see the issue with? It
probably should be documented in the commit message and in comment
around the check in dwarf2read.c. It could also be useful to include
examples of the problem DWARF in the commit message in cases like
this.
>
> 2016-06-15 Bernhard Heckel <bernhard.heckel@intel.com>
>
> gdb/Changelog:
> * dwarf2read.c (add_partial_symbol): Skip nameless modules.
>
> gdb/Testsuite/Changelog:
It's 'testsuite' all the patches in this series :)
> * gdb.fortran/block-data.f: New.
> * gdb.fortran/block-data.exp: New.
> ---
> gdb/dwarf2read.c | 13 ++++---
> gdb/testsuite/gdb.fortran/block-data.exp | 51 ++++++++++++++++++++++++++++
> gdb/testsuite/gdb.fortran/block-data.f | 58 ++++++++++++++++++++++++++++++++
> 3 files changed, 117 insertions(+), 5 deletions(-)
> create mode 100644 gdb/testsuite/gdb.fortran/block-data.exp
> create mode 100644 gdb/testsuite/gdb.fortran/block-data.f
>
> diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
> index d2a8cd44f9a5..89fd4ae15e80 100644
> --- a/gdb/dwarf2read.c
> +++ b/gdb/dwarf2read.c
> @@ -8995,11 +8995,14 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
> 0, cu->language, objfile);
> break;
> case DW_TAG_module:
> - add_psymbol_to_list (actual_name, strlen (actual_name),
> - built_actual_name != NULL,
> - MODULE_DOMAIN, LOC_TYPEDEF, -1,
> - &objfile->global_psymbols,
> - 0, cu->language, objfile);
> + /* In Fortran 77 there might be a "BLOCK DATA" module available wihout
> + any name. If so, we skip the module as it doesn't bring any value */
You need a full-stop and two spaces at the end, like "...any value. */".
> + if (actual_name != nullptr)
> + add_psymbol_to_list (actual_name, strlen (actual_name),
> + built_actual_name != nullptr,
> + MODULE_DOMAIN, LOC_TYPEDEF, -1,
> + &objfile->global_psymbols,
> + 0, cu->language, objfile);
> break;
> case DW_TAG_class_type:
> case DW_TAG_interface_type:
> diff --git a/gdb/testsuite/gdb.fortran/block-data.exp b/gdb/testsuite/gdb.fortran/block-data.exp
> new file mode 100644
> index 000000000000..2af250ad3886
> --- /dev/null
> +++ b/gdb/testsuite/gdb.fortran/block-data.exp
> @@ -0,0 +1,51 @@
> +# Copyright 2018 Free Software Foundation, Inc.
> +#
> +# Contributed by Intel Corp. <bernhard.heckel@intel.com>
Someone else might correct me, but I think "Contributed by..." lines
are not supposed to be added to GDB source..
> +#
> +# 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 test is supposed to test anonymous block-data statement.
> +
> +if { [skip_fortran_tests] } { return -1 }
> +
> +standard_testfile .f
> +load_lib "fortran.exp"
> +
> +if {[prepare_for_testing $testfile.exp $testfile $srcfile {debug f90}]} {
> + return -1
> +}
> +
> +if ![runto MAIN__] then {
> + untested "couldn't run to breakpoint MAIN__"
> + return -1
> +}
> +
> +gdb_test "print doub1" "= 1.11\\d+" "print doub1, default values"
> +gdb_test "print doub2" "= 2.22\\d+" "print doub2, default values"
> +gdb_test "print char1" "= 'abcdef'" "print char1, default values"
> +gdb_test "print char2" "= 'ghijkl'" "print char2, default values"
> +
> +gdb_breakpoint [gdb_get_line_number "! BP_BEFORE_SUB"]
> +gdb_continue_to_breakpoint "! BP_BEFORE_SUB" ".*! BP_BEFORE_SUB.*"
> +gdb_test "print doub1" "= 11.11\\d+" "print doub1, before sub"
> +gdb_test "print doub2" "= 22.22\\d+" "print doub2, before sub"
> +gdb_test "print char1" "= 'ABCDEF'" "print char1, before sub"
> +gdb_test "print char2" "= 'GHIJKL'" "print char2, before sub"
> +
> +gdb_breakpoint [gdb_get_line_number "! BP_SUB"]
> +gdb_continue_to_breakpoint "! BP_SUB" ".*! BP_SUB.*"
> +gdb_test "print doub1" "= 11.11\\d+" "print char1, in sub"
> +gdb_test "print doub2" "= 22.22\\d+" "print doub2, in sub"
> +gdb_test "print char1" "= 'ABCDEF'" "print char1, in sub"
> +gdb_test "print char2" "= 'GHIJKL'" "print char2, in sub"
> diff --git a/gdb/testsuite/gdb.fortran/block-data.f b/gdb/testsuite/gdb.fortran/block-data.f
> new file mode 100644
> index 000000000000..a28e687ec885
> --- /dev/null
> +++ b/gdb/testsuite/gdb.fortran/block-data.f
> @@ -0,0 +1,58 @@
> +! Copyright 2018 Free Software Foundation, Inc.
> +!
> +! Contributed by Intel Corp. <bernhard.heckel@intel.com>
> +!
> +! 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/>.
> +!
> +! Test if GDB can handle block data without global name
> +!
> +! MAIN
> + PROGRAM bdata
> + DOUBLE PRECISION doub1, doub2
> + CHARACTER*6 char1, char2
> +
> + COMMON /BLK1/ doub1, char1
> + COMMON /BLK2/ doub2, char2
> +
> + doub1 = 11.111
> + doub2 = 22.222
> + char1 = 'ABCDEF'
> + char2 = 'GHIJKL'
> + CALL sub_block_data ! BP_BEFORE_SUB
> + STOP
> + END
> +
> +! BLOCK DATA
> + BLOCK DATA
> +
> + DOUBLE PRECISION doub1, doub2
> + CHARACTER*6 char1, char2
> +
> + COMMON /BLK1/ doub1, char1
> + COMMON /BLK2/ doub2, char2
> + DATA doub1, doub2 /1.111, 2.222/
> + DATA char1, char2 /'abcdef', 'ghijkl'/
> + END
> +
> +! SUBROUTINE
> + SUBROUTINE sub_block_data
> +
> + DOUBLE PRECISION doub1, doub2
> + CHARACTER*6 char1, char2
> +
> + COMMON /BLK1/ doub1, char1
> + COMMON /BLK2/ doub2, char2
> +
> + char1 = char2; ! BP_SUB
> + END
> --
> 2.7.4
>
next prev parent reply other threads:[~2018-11-27 21:42 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-19 21:40 Pawel Wodkowski
2018-11-19 21:40 ` [PATCH v2 4/7] Fortran: Ptype, print type extension Pawel Wodkowski
2019-02-01 13:06 ` Andrew Burgess
2018-11-19 21:40 ` [PATCH v2 7/7] Fortran: Document scope operator Pawel Wodkowski
2018-11-20 5:01 ` Eli Zaretskii
2018-11-22 16:14 ` Paweł Wódkowski
2018-11-23 10:31 ` Eli Zaretskii
2018-11-19 21:40 ` [PATCH v2 3/7] Fortran: Accessing fields of inherited types via fully qualified name Pawel Wodkowski
[not found] ` <88ec6786-8834-7da2-207a-7392fd657e41@arm.com>
[not found] ` <53cac622aea64147b2c1cd25feb16bdd@pl.sii.eu>
2018-12-06 15:03 ` Richard Bunt
2018-12-09 20:41 ` Paweł Wódkowski
2019-01-16 11:11 ` Richard Bunt
2019-01-18 8:33 ` Paweł Wódkowski
[not found] ` <9c1d974d-d5f3-93f7-12b0-0c95ac264cde@arm.com>
2019-02-06 12:39 ` Paweł Wódkowski
2018-11-19 21:40 ` [PATCH v2 6/7] Fortran: Nested functions, add scope parameter Pawel Wodkowski
2018-11-19 21:40 ` [PATCH v2 5/7] Fortran: Enable setting breakpoint on nested functions Pawel Wodkowski
2018-11-28 10:32 ` Richard Bunt
2018-12-02 22:16 ` Paweł Wódkowski
2018-11-19 21:40 ` [PATCH v2 2/7] Dwarf: Fortran, support DW_TAG_entry_point Pawel Wodkowski
2018-11-27 22:09 ` Andrew Burgess
2018-12-02 21:32 ` Paweł Wódkowski
2018-11-27 19:35 ` PING Re: [PATCH v2 1/7] DWARF: Don't add nameless modules to partial symbol table Pawel Wodkowski
2018-11-27 20:29 ` Simon Marchi
2018-11-27 21:42 ` Andrew Burgess [this message]
2018-12-02 21:01 ` Paweł Wódkowski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181127214211.GB18841@embecosm.com \
--to=andrew.burgess@embecosm.com \
--cc=bernhard.heckel@intel.com \
--cc=dragos.carciumaru@intel.com \
--cc=gdb-patches@sourceware.org \
--cc=murbanski@pl.sii.eu \
--cc=pwodkowski@pl.sii.eu \
--cc=sbasierski@pl.sii.eu \
--cc=tim.wiederhake@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox