gdb/fortran: Don't include module symbols when searching for types
Currently the 'info types' command will return symbols that correspond to Fortran modules. This is because the symbols are created with domain MODULE_DOMAIN and address_class LOC_TYPEDEF. The address_class LOC_TYPEDEF is the same address_class used for type symbols which is why the modules show up when listing types. This commit explicitly prevents symbols in the MODULE_DOMAIN from appearing when we search for symbols in the TYPES_DOMAIN, this prevents the Fortran 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.
This commit is contained in:
parent
1f20c35ea4
commit
d8f27c6018
5 changed files with 26 additions and 2 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
2019-08-28 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||||
|
|
||||||
|
* symtab.c (search_symbols): Don't include MODULE_DOMAIN symbols
|
||||||
|
when searching for types.
|
||||||
|
|
||||||
2019-08-28 Andrew Burgess <andrew.burgess@embecosm.com>
|
2019-08-28 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||||
|
|
||||||
* f-lang.c (f_language_defn): Use f_print_typedef.
|
* f-lang.c (f_language_defn): Use f_print_typedef.
|
||||||
|
|
|
@ -4659,7 +4659,8 @@ search_symbols (const char *regexp, enum search_domain kind,
|
||||||
|| treg_matches_sym_type_name (*treg,
|
|| treg_matches_sym_type_name (*treg,
|
||||||
sym)))
|
sym)))
|
||||||
|| (kind == TYPES_DOMAIN
|
|| (kind == TYPES_DOMAIN
|
||||||
&& SYMBOL_CLASS (sym) == LOC_TYPEDEF))))
|
&& SYMBOL_CLASS (sym) == LOC_TYPEDEF
|
||||||
|
&& SYMBOL_DOMAIN (sym) != MODULE_DOMAIN))))
|
||||||
{
|
{
|
||||||
/* match */
|
/* match */
|
||||||
result.emplace_back (i, sym);
|
result.emplace_back (i, sym);
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2019-08-28 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||||
|
|
||||||
|
* gdb.fortran/info-types.exp: Add module.
|
||||||
|
* gdb.fortran/info-types.f90: Update expected results.
|
||||||
|
|
||||||
2019-08-28 Andrew Burgess <andrew.burgess@embecosm.com>
|
2019-08-28 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||||
|
|
||||||
* gdb.fortran/info-types.exp: New file.
|
* gdb.fortran/info-types.exp: New file.
|
||||||
|
|
|
@ -42,4 +42,6 @@ gdb_test "info types" \
|
||||||
"\[\t \]+${character1}" \
|
"\[\t \]+${character1}" \
|
||||||
"\[\t \]+${integer4}" \
|
"\[\t \]+${integer4}" \
|
||||||
"\[\t \]+${logical4}" \
|
"\[\t \]+${logical4}" \
|
||||||
"16:\[\t \]+Type s1;" ]
|
"20:\[\t \]+Type __vtype_mod1_M1t1;" \
|
||||||
|
"17:\[\t \]+Type m1t1;" \
|
||||||
|
"22:\[\t \]+Type s1;" ]
|
||||||
|
|
|
@ -13,13 +13,24 @@
|
||||||
! You should have received a copy of the GNU General Public License
|
! You should have received a copy of the GNU General Public License
|
||||||
! along with this program. If not, see <http://www.gnu.org/licenses/>.
|
! 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
|
program info_types_test
|
||||||
|
use mod1
|
||||||
|
|
||||||
type :: s1
|
type :: s1
|
||||||
integer :: a
|
integer :: a
|
||||||
end type s1
|
end type s1
|
||||||
|
|
||||||
logical :: l
|
logical :: l
|
||||||
type (s1) :: var_a
|
type (s1) :: var_a
|
||||||
|
type (m1t1) :: var_b
|
||||||
|
|
||||||
var_a%a = 1
|
var_a%a = 1
|
||||||
|
var_b%b = 2
|
||||||
l = .FALSE.
|
l = .FALSE.
|
||||||
end program info_types_test
|
end program info_types_test
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue