+2013-12-19 Keven Boell <keven.boell@intel.com>
+
+ * f-exp.y (yylex): Add domain array to enable lookup
+ in multiple domains. Loop over lookup domains and try
+ to find requested symbol. Add STRUCT_DOMAIN to lookup
+ domains to be able to query for user defined types.
+
2013-12-13 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
* configure.ac: Add user-friendly check for native x86_64-linux
char *tmp = copy_name (yylval.sval);
struct symbol *sym;
struct field_of_this_result is_a_field_of_this;
+ enum domain_enum_tag lookup_domains[] = {STRUCT_DOMAIN, VAR_DOMAIN};
+ int i;
int hextype;
-
- /* Initialize this in case we *don't* use it in this call; that
- way we can refer to it unconditionally below. */
- memset (&is_a_field_of_this, 0, sizeof (is_a_field_of_this));
-
- sym = lookup_symbol (tmp, expression_context_block,
- VAR_DOMAIN,
- parse_language->la_language == language_cplus
- ? &is_a_field_of_this : NULL);
- if (sym && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
+
+ for (i = 0; i < ARRAY_SIZE (lookup_domains); ++i)
{
- yylval.tsym.type = SYMBOL_TYPE (sym);
- return TYPENAME;
+ /* Initialize this in case we *don't* use it in this call; that
+ way we can refer to it unconditionally below. */
+ memset (&is_a_field_of_this, 0, sizeof (is_a_field_of_this));
+
+ sym = lookup_symbol (tmp, expression_context_block,
+ lookup_domains[i],
+ parse_language->la_language == language_cplus
+ ? &is_a_field_of_this : NULL);
+ if (sym && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
+ {
+ yylval.tsym.type = SYMBOL_TYPE (sym);
+ return TYPENAME;
+ }
+
+ if (sym)
+ break;
}
+
yylval.tsym.type
= language_lookup_primitive_type_by_name (parse_language,
parse_gdbarch, tmp);
+2013-12-19 Keven Boell <keven.boell@intel.com>
+
+ * gdb.fortran/type.f90: New file.
+ * gdb.fortran/whatis_type.f90: New file.
+
2013-12-18 Sergio Durigan Junior <sergiodj@redhat.com>
* gdb.base/catch-syscall.c: Include <sys/syscall.h>.
--- /dev/null
+! Copyright 2013 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/>.
+
+program type
+ implicit none
+
+ type :: t1
+ integer :: t1_i
+ real :: t1_r
+ end type t1
+
+ type (t1) :: t1v
+
+ t1v%t1_i = 42
+ t1v%t1_r = 42.24 ! bp1
+end program type
--- /dev/null
+# Copyright 2013 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/>.
+
+if { [skip_fortran_tests] } { continue }
+
+standard_testfile type.f90
+
+if { [prepare_for_testing ${testfile}.exp ${testfile} \
+ ${srcfile} {debug f90}] } {
+ return -1
+}
+
+if ![runto MAIN__] {
+ fail "run to MAIN__"
+ return
+}
+
+gdb_breakpoint [gdb_get_line_number "bp1"]
+gdb_continue_to_breakpoint "bp1"
+
+set t1_i "integer\\\(kind=4\\\) :: t1_i"
+set t1_r "real\\\(kind=4\\\) :: t1_r"
+
+gdb_test "whatis t1" \
+ "type = Type t1\r\n${t1_i}\r\n${t1_r}\r\nEnd Type t1" \
+ "whatis t1"
+gdb_test "whatis t1v" \
+ "type = Type t1\r\n${t1_i}\r\n${t1_r}\r\nEnd Type t1" \
+ "whatis t1v"
+
+gdb_test "ptype t1" \
+ "type = Type t1\r\n ${t1_i}\r\n ${t1_r}\r\nEnd Type t1" \
+ "ptype t1"
+gdb_test "ptype t1v" \
+ "type = Type t1\r\n ${t1_i}\r\n ${t1_r}\r\nEnd Type t1" \
+ "ptype t1v"