aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/ChangeLog
diff options
context:
space:
mode:
authorAndrew Burgess <andrew.burgess@embecosm.com>2020-07-09 16:26:23 +0100
committerAndrew Burgess <andrew.burgess@embecosm.com>2020-07-25 01:30:20 +0100
commite79eb02f2f09baecffb144bac6804f975065466f (patch)
treee1a92e0b6eb55bb577cb18a2caafab54685ab8d8 /gdb/testsuite/ChangeLog
parent719251fee155d5d4ede91f555e8898460e6b1731 (diff)
downloadgdb-e79eb02f2f09baecffb144bac6804f975065466f.zip
gdb-e79eb02f2f09baecffb144bac6804f975065466f.tar.gz
gdb-e79eb02f2f09baecffb144bac6804f975065466f.tar.bz2
gdb/fortran: resolve dynamic types when readjusting after an indirection
After dereferencing a pointer (in value_ind) or following a reference (in coerce_ref) we call readjust_indirect_value_type to "fixup" the type of the resulting value object. This fixup handles cases relating to the type of the resulting object being different (a sub-class) of the original pointers target type. If we encounter a pointer to a dynamic type then after dereferencing a pointer (in value_ind) the type of the object created will have had its dynamic type resolved. However, in readjust_indirect_value_type, we use the target type of the original pointer to "fixup" the type of the resulting value. In this case, the target type will be a dynamic type, so the resulting value object, once again has a dynamic type. This then triggers an assertion later within GDB. The solution I propose here is that we call resolve_dynamic_type on the pointer's target type (within readjust_indirect_value_type) so that the resulting value is not converted back to a dynamic type. The test case is based on the original test in the bug report. gdb/ChangeLog: PR fortran/23051 PR fortran/26139 * valops.c (value_ind): Pass address to readjust_indirect_value_type. * value.c (readjust_indirect_value_type): Make parameter non-const, and add extra address parameter. Resolve original type before using it. * value.h (readjust_indirect_value_type): Update function signature and comment. gdb/testsuite/ChangeLog: PR fortran/23051 PR fortran/26139 * gdb.fortran/class-allocatable-array.exp: New file. * gdb.fortran/class-allocatable-array.f90: New file. * gdb.fortran/pointer-to-pointer.exp: New file. * gdb.fortran/pointer-to-pointer.f90: New file.
Diffstat (limited to 'gdb/testsuite/ChangeLog')
-rw-r--r--gdb/testsuite/ChangeLog9
1 files changed, 9 insertions, 0 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index e65caaf..98a35cf 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,12 @@
+2020-07-25 Andrew Burgess <andrew.burgess@embecosm.com>
+
+ PR fortran/23051
+ PR fortran/26139
+ * gdb.fortran/class-allocatable-array.exp: New file.
+ * gdb.fortran/class-allocatable-array.f90: New file.
+ * gdb.fortran/pointer-to-pointer.exp: New file.
+ * gdb.fortran/pointer-to-pointer.f90: New file.
+
2020-07-25 Tom de Vries <tdevries@suse.de>
PR symtab/26243