aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/cp-namespace.c5
-rw-r--r--gdb/testsuite/ChangeLog8
-rw-r--r--gdb/testsuite/gdb.fortran/derived-type.exp35
-rw-r--r--gdb/testsuite/gdb.fortran/derived-type.f907
5 files changed, 57 insertions, 4 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 6a9ebbd..2d3e5ed 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2016-07-07 Walfred Tedeschi <walfred.tedeschi@intel.com>
+
+ * cp-namespace.c (cp_lookup_bare_symbol): Use language passed as
+ parameter to look for the symbol "this".
+
+
2016-07-06 John Baldwin <jhb@FreeBSD.org>
* h8300-tdep.c (h8300_print_register): Remove extraneous parentheses.
diff --git a/gdb/cp-namespace.c b/gdb/cp-namespace.c
index 016a42f..f34e383 100644
--- a/gdb/cp-namespace.c
+++ b/gdb/cp-namespace.c
@@ -206,10 +206,13 @@ cp_lookup_bare_symbol (const struct language_defn *langdef,
struct block_symbol lang_this;
struct type *type;
- lang_this = lookup_language_this (language_def (language_cplus), block);
+ if (langdef != NULL)
+ lang_this = lookup_language_this (langdef, block);
+
if (lang_this.symbol == NULL)
return null_block_symbol;
+
type = check_typedef (TYPE_TARGET_TYPE (SYMBOL_TYPE (lang_this.symbol)));
/* If TYPE_NAME is NULL, abandon trying to find this symbol.
This can happen for lambda functions compiled with clang++,
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index b0e6c2a..b6f21d7 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2016-07-07 Walfred Tedeschi <walfred.tedeschi@intel.com>
+
+ * gdb.fortran/derived-types.exp (result_line, result_line_2):
+ New variables.
+ (print this%a, print this%b, print this): New tests.
+ * gdb.fortran/derived-types.f90 (this): New object and
+ initialization.
+
2016-07-06 Simon Marchi <simon.marchi@ericsson.com>
* gdb.ada/arraydim.exp: Remove extra directory level in build
diff --git a/gdb/testsuite/gdb.fortran/derived-type.exp b/gdb/testsuite/gdb.fortran/derived-type.exp
index 32431bc..2781850 100644
--- a/gdb/testsuite/gdb.fortran/derived-type.exp
+++ b/gdb/testsuite/gdb.fortran/derived-type.exp
@@ -73,14 +73,45 @@ gdb_test_multiple $test $test {
gdb_test "print q%x%c" "\\$\[0-9\]+ = 1"
gdb_test "print q%x%d" "\\$\[0-9\]+ = 2\\.375"
+set result_line "= \\( a = 3.125, x = \\( c = 1, d = 2\\.375 \\),\
+b = 'abcdefg' \\)\r\n$gdb_prompt $"
+
+# Used in case compiler generates an array of characters.
+set result_line_2 " = \\( a = 3.125, x = \\( 1, 2\\.375 \\),\
+b = \\('abcdefg'\\) \\)\r\n$gdb_prompt $"
+
set test "print q"
gdb_test_multiple $test $test {
- -re "\\$\[0-9\]+ = \\( a = 3.125, x = \\( c = 1, d = 2\\.375 \\), b = 'abcdefg' \\)\r\n$gdb_prompt $" {
+ -re $result_line {
pass $test
}
- -re "\\$\[0-9\]+ = \\( a = 3.125, x = \\( 1, 2\\.375 \\), b = \\('abcdefg'\\) \\)\r\n$gdb_prompt $" {
+ -re $result_line_2 {
# Compiler should produce string, not an array of characters.
setup_xfail "*-*-*"
fail $test
}
}
+
+gdb_test "print this%a" " = 3\\.125"
+
+set test "print this%b"
+gdb_test_multiple $test $test {
+ -re " = 'abcdefg'\r\n$gdb_prompt $" {
+ pass $test
+ }
+ -re $result_line_2 {
+ setup_xfail "*-*-*"
+ fail $test
+ }
+}
+
+set test "print this"
+gdb_test_multiple $test $test {
+ -re $result_line {
+ pass $test
+ }
+ -re $result_line_2 {
+ setup_xfail "*-*-*"
+ fail $test
+ }
+}
diff --git a/gdb/testsuite/gdb.fortran/derived-type.f90 b/gdb/testsuite/gdb.fortran/derived-type.f90
index 2cb2339..aad1553 100644
--- a/gdb/testsuite/gdb.fortran/derived-type.f90
+++ b/gdb/testsuite/gdb.fortran/derived-type.f90
@@ -29,12 +29,17 @@ program main
end type foo
type(foo) :: q
type(bar) :: p
+ type(foo) :: this
p = bar(1, 2.375)
q%a = 3.125
q%b = "abcdefg"
q%x%c = 1
q%x%d = 2.375
- print *,p,q
+ this%a = 3.125
+ this%b = "abcdefg"
+ this%x%c = 1
+ this%x%d = 2.375
+ print *,p,q,this
end program main