diff options
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/cp-namespace.c | 5 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 8 | ||||
-rw-r--r-- | gdb/testsuite/gdb.fortran/derived-type.exp | 35 | ||||
-rw-r--r-- | gdb/testsuite/gdb.fortran/derived-type.f90 | 7 |
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 |