This may be a gdb bug, but anyway... cat type.f90 program main type foo real :: a integer :: b end type foo type(foo) :: q q = foo(3.14, 42) print *,q end program main $ gfortran -g type.f90 $ gdb ./a.out GNU gdb 6.3-debian Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-linux"...Using host libthread_db library "/lib/tls/libthread_db.so.1". (gdb) b type.f90:7 Breakpoint 1 at 0x8048624: file type.f90, line 7. (gdb) r Starting program: /home/ig25/Krempel/Gdb/a.out Breakpoint 1, MAIN__ () at type.f90:7 7 q = foo(3.14, 42) Current language: auto; currently fortran (gdb) p q $1 = Invalid F77 type code 3 in symbol table. (gdb) q The program is running. Exit anyway? (y or n) y
Confirmed. This is a gdb bug as if I do: "set lang c" it works. Oh, I think there is a dup around somewhere too.
Yes. I agree that it is more like a gdb bug. But I would rather say that it is an enhancement request for gdb, because GDB never says that it supports complete Fortran-95 syntax. The support for Fortrn 77 is also not deemed as complete. I coded a patch in gdb for that. The link is http://sourceware.org/ml/gdb-patches/2005-10/msg00208.html
The patch in http://sourceware.org/ml/gdb-patches/2005-11/msg00217.html implements this quite nicely AFAICT. I'll try and take care of the rest.
This works with the patch I mentioned in comment #3. That patch is in the GDB source tree since 2006-02-24, so this is "fixed" in GDB 6.5. On the GCC side we seem to do the right thing for scalar components. For array components obviously we don't but there is a separate bug about that. So I'm calling this FIXED.