Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Andrew Burgess <andrew.burgess@embecosm.com>
To: gdb-patches@sourceware.org
Cc: Richard Bunt <Richard.Bunt@arm.com>,
	Andrew Burgess <andrew.burgess@embecosm.com>
Subject: [PATCH 5/7] gdb/fortran: Don't include module symbols when searching for types
Date: Sat, 27 Jul 2019 16:23:00 -0000	[thread overview]
Message-ID: <5184ae288c08432d0e873fd48b8c56619e3d2699.1564243858.git.andrew.burgess@embecosm.com> (raw)
In-Reply-To: <cover.1564243858.git.andrew.burgess@embecosm.com>
In-Reply-To: <cover.1564243858.git.andrew.burgess@embecosm.com>

Currently the 'info types' command will return symbols that correspond
to Fortran modules.  This because the symbols are created with domain
MODULE_DOMAIN, but address_class LOC_TYPEDEF, which is the same
address_class as type symbols.

This commit explicitly prevents MODULE_DOMAIN symbols from appearing
when we search for symbols in the TYPES_DOMAIN, this prevents the
module symbols from appearing in the output of 'info types'.

gdb/ChangeLog:

	* symtab.c (search_symbols): Don't include MODULE_DOMAIN symbols
	when searching for types.

gdb/testsuite/ChangeLog:

	* gdb.fortran/info-types.exp: Add module.
	* gdb.fortran/info-types.f90: Update expected results.
---
 gdb/ChangeLog                            |  5 +++++
 gdb/symtab.c                             |  3 ++-
 gdb/testsuite/ChangeLog                  |  5 +++++
 gdb/testsuite/gdb.fortran/info-types.exp |  4 +++-
 gdb/testsuite/gdb.fortran/info-types.f90 | 11 +++++++++++
 5 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/gdb/symtab.c b/gdb/symtab.c
index 84038d15dff..d3a209608b7 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -4539,7 +4539,8 @@ search_symbols (const char *regexp, enum search_domain kind,
 				      || treg_matches_sym_type_name (*treg,
 								     sym)))
 			      || (kind == TYPES_DOMAIN
-				  && SYMBOL_CLASS (sym) == LOC_TYPEDEF))))
+				  && SYMBOL_CLASS (sym) == LOC_TYPEDEF
+				  && SYMBOL_DOMAIN (sym) != MODULE_DOMAIN))))
 		    {
 		      /* match */
 		      result.emplace_back (i, sym);
diff --git a/gdb/testsuite/gdb.fortran/info-types.exp b/gdb/testsuite/gdb.fortran/info-types.exp
index 9571dc45593..81e67395e8a 100644
--- a/gdb/testsuite/gdb.fortran/info-types.exp
+++ b/gdb/testsuite/gdb.fortran/info-types.exp
@@ -42,4 +42,6 @@ gdb_test "info types" \
 	 "\[\t \]+${character1}" \
 	 "\[\t \]+${integer4}" \
 	 "\[\t \]+${logical4}" \
-	 "16:\[\t \]+Type s1;" ]
+	 "20:\[\t \]+Type __vtype_mod1_M1t1;" \
+	 "17:\[\t \]+Type m1t1;" \
+	 "22:\[\t \]+Type s1;" ]
diff --git a/gdb/testsuite/gdb.fortran/info-types.f90 b/gdb/testsuite/gdb.fortran/info-types.f90
index 21c9d9df63c..0e27e1ddf08 100644
--- a/gdb/testsuite/gdb.fortran/info-types.f90
+++ b/gdb/testsuite/gdb.fortran/info-types.f90
@@ -13,13 +13,24 @@
 ! You should have received a copy of the GNU General Public License
 ! along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+module mod1
+  type :: m1t1
+     integer :: b
+  end type m1t1
+end module mod1
+
 program info_types_test
+  use mod1
+
   type :: s1
      integer :: a
   end type s1
 
   logical :: l
   type (s1) :: var_a
+  type (m1t1) :: var_b
+
   var_a%a = 1
+  var_b%b = 2
   l = .FALSE.
 end program info_types_test
-- 
2.14.5


  parent reply	other threads:[~2019-07-27 16:23 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-27 16:22 [PATCH 0/7] Fortran info types, info modules, info module Andrew Burgess
2019-07-27 16:22 ` [PATCH 3/7] gdb/fortran: Include module variables in 'info variables' output Andrew Burgess
2019-07-27 16:22 ` [PATCH 2/7] gdb: Add an is_declaration field to each symbol Andrew Burgess
2019-07-29 20:21   ` Tom Tromey
2019-07-30 21:00     ` Andrew Burgess
2019-07-27 16:23 ` [PATCH 1/7] gdb: Add new -n flag to some info commands Andrew Burgess
2019-07-27 16:41   ` Eli Zaretskii
2019-07-30 21:02     ` Andrew Burgess
2019-07-31 14:51       ` Eli Zaretskii
2019-08-26 15:52         ` Andrew Burgess
2019-08-26 16:19           ` Eli Zaretskii
2019-08-27 15:27             ` Andrew Burgess
2019-08-28 15:13               ` [committed][gdb/testsuite] Fix info-var.exp for debug info from other files Tom de Vries
2019-07-29 20:23   ` [PATCH 1/7] gdb: Add new -n flag to some info commands Tom Tromey
2019-07-27 16:23 ` [PATCH 6/7] gdb/fortran: Add new 'info modules' command Andrew Burgess
2019-07-27 16:45   ` Eli Zaretskii
2019-07-29 20:30   ` Tom Tromey
2019-07-27 16:23 ` [PATCH 7/7] gdb: Add new commands to list module variables and functions Andrew Burgess
2019-07-27 17:06   ` Eli Zaretskii
2019-07-27 16:23 ` [PATCH 4/7] gdb/fortran: Implement la_print_typedef for Fortran Andrew Burgess
2019-08-28 12:37   ` Andrew Burgess
2019-07-27 16:23 ` Andrew Burgess [this message]
2019-08-28 12:37   ` [PATCH 5/7] gdb/fortran: Don't include module symbols when searching for types Andrew Burgess
2019-08-29  9:09     ` Tom de Vries
2019-08-29 11:45       ` Tom de Vries
2019-08-29 12:47     ` [committed][gdb/testsuite] Fix gdb.fortran/info-types.exp regexp Tom de Vries

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=5184ae288c08432d0e873fd48b8c56619e3d2699.1564243858.git.andrew.burgess@embecosm.com \
    --to=andrew.burgess@embecosm.com \
    --cc=Richard.Bunt@arm.com \
    --cc=gdb-patches@sourceware.org \
    /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