I get an internal error reading a namelist, for details see http://bugs.debian.org/277845 $ gfortran-4.0 -v Reading specs from /usr/lib/gcc/i486-linux/4.0.0/specs Configured with: ../src/configure -v --enable-languages=c,c++,java,f95,objc --prefix=/usr --libexecdir=/usr/lib --with-gxx-include-dir=/usr/include/c++/4.0 --enable-shared --with-system-zlib --enable-nls --enable-threads=posix --without-included-gettext --program-suffix=-4.0 --enable-__cxa_atexit --enable-libstdcxx-allocator=mt --enable-clocale=gnu --enable-libstdcxx-debug --enable-java-gc=boehm --enable-java-awt=gtk i486-linux Thread model: posix gcc version 4.0.0 20040912 (experimental) (Debian 4.0-0pre0)
$ cat namel.inp &foo a= 2.300000 ,/ $ cat namel-tst.f90 program sechs_w implicit none integer, parameter :: dr=selected_real_kind(15) integer, parameter :: nkmax=6 real(kind=dr) :: rb(nkmax) integer :: z real(kind=dr) :: dg real(kind=dr) :: a real(kind=dr) :: da real(kind=dr) :: delta real(kind=dr) :: s,t integer :: nk real(kind=dr) alpha0 real(kind=dr) :: phi, phi0, rad, rex, zk, z0, drdphi, dzdphi namelist /schnecke/ z, dg, a, t, delta, s, nk, rb, alpha0 read (*,schnecke) write (*,schnecke) end program sechs_w $ cat nam.inp &SCHNECKE z=1, dg=58.4, a=48., delta=0.4, s=0.4, nk=6, rb=60, 0, 40, alpha0=20., / $ gfortran-4.0 namel-tst.f90 $ ./a.out < nam.inp At line 22 of file namel-tst.f90 Internal Error: Can not match a namelist variable
Fixed by the recent namelist patch. Will be fixed on 4.0 once it's reopened.
*** Bug 18591 has been marked as a duplicate of this bug. ***
The namelist modifications implemented over the last week have resulted in namelist io that is compliant with the standard and this bug is fixed, as of GCC 4.1.0 20050423.
Subject: Re: [4.0 only] gfortran internal error in namelist read pault at gcc dot gnu dot org writes: > > ------- Additional Comments From pault at gcc dot gnu dot org 2005-04-23 16:16 ------- > The namelist modifications implemented over the last week have resulted in > namelist io that is compliant with the standard and this bug is fixed, as of > GCC 4.1.0 20050423. The bug report is titled "[4.0 only]". Are the changes backported to the 4.0 branch?
Subject: Bug 18122 CVSROOT: /cvs/gcc Module name: gcc Branch: gcc-4_0-branch Changes by: tobi@gcc.gnu.org 2005-06-05 23:33:52 Modified files: gcc/fortran : ChangeLog gfortran.texi trans-io.c gcc/testsuite : ChangeLog gcc/testsuite/gfortran.dg: namelist_1.f90 libgfortran : ChangeLog libgfortran/io : io.h list_read.c lock.c transfer.c write.c Added files: gcc/testsuite/gfortran.dg: namelist_11.f namelist_12.f namelist_13.f90 namelist_14.f90 namelist_15.f90 namelist_16.f90 namelist_17.f90 namelist_18.f90 namelist_19.f90 namelist_2.f90 namelist_20.f90 namelist_3.f90 pr12884.f pr17285.f90 pr17472.f pr18122.f90 pr18210.f90 pr18392.f90 pr19467.f90 pr19657.f Log message: gcc/fortran/ 2005-06-05 Jakub Jelinek <jakub@redhat.com> Backport from the mainline: 2005-04-17 Paul Thomas <pault@gcc.gnu.org> PR fortran/17472 PR fortran/18209 PR fortran/18396 PR fortran/19467 PR fortran/19657 * fortran/trans-io.c (gfc_build_io_library_fndecls): Create declaration for st_set_nml_var and st_set_nml_var_dim. Remove declarations of old namelist functions. (build_dt): Simplified call to transfer_namelist_element. (nml_get_addr_expr): Generates address expression for start of object data. New function. (nml_full_name): Qualified name for derived type components. New function. (transfer_namelist_element): Modified for calls to new functions and improved derived type handling. libgfortran/ 2005-06-05 Jakub Jelinek <jakub@redhat.com> Backport from the mainline: 2005-04-18 Paul Thomas <pault@gcc.gnu.org> Jerry DeLisle <jvdelisle@verizon.net> * io/write.c (nml_write_obj): Provide 1 more byte for ext_name. * io/list_read.c (nml_get_obj_data): Put extra brackets in get_mem call for ext_name. These fix the bug reported by Jerry DeLisle to the fortran list and are based on his suggested fix. 2005-04-18 Paul Thomas <pault@gcc.gnu.org> * io/list_read.c (nml_touch_nodes, nml_read_obj, nml_get_obj_data): Fix memory leaks in code for derived types. 2005-04-17 Paul Thomas <pault@gcc.gnu.org> * io/list_read.c (eat_separator): at_eol = 1 replaced (zapped at some time?). 2005-04-17 Paul Thomas <pault@gcc.gnu.org> PR libgfortran/12884 PR libgfortran/17285 PR libgfortran/18122 PR libgfortran/18210 PR libgfortran/18392 PR libgfortran/18591 PR libgfortran/18879 * io/io.h (nml_ls): Declare. (namelist_info): Modify for arrays. * io/list_read.c (namelist_read): Reduced to call to new functions. (match_namelist_name): Simplified. (nml_query): Handles stdin queries ? and =?. New function. (nml_get_obj_data): Parses object name. New function. (touch_nml_nodes): Marks objects for read. New function. (untouch_nml_nodes): Resets objects. New function. (parse_qualifier): Parses and checks qualifiers. New function (nml_read_object): Reads and stores object data. New function. (eat_separator): No new_record on '/' in namelist. (finish_separator): No new_record on '/' in namelist. (read_logical): Error return for namelist. (read_integer): Error return for namelist. (read_complex): Error return for namelist. (read_real): Error return for namelist. * io/lock.c (library_end): Free extended namelist_info types. * io/transfer.c (st_set_nml_var): Modified for arrays. (st_set_nml_var_dim): Dimension descriptors. New function. * io/write.c (namelist_write): Reduced to call to new functions. (nml_write_obj): Writes output for object. New function. (write_integer): Suppress leading blanks for repeat counts. (write_int): Suppress leading blanks for repeat counts. (write_float): Suppress leading blanks for repeat counts. (output_float): Suppress leading blanks for repeat counts. gcc/testsuite/ 2005-06-05 Jakub Jelinek <jakub@redhat.com> Backport from the mainline: 2005-04-17 Paul Thomas <pault@gcc.gnu.org> PR fortran/17472 PR fortran/18209 PR fortran/18396 PR fortran/19467 PR fortran/19657 * fortran/trans-io.c (gfc_build_io_library_fndecls): Create declaration for st_set_nml_var and st_set_nml_var_dim. Remove declarations of old namelist functions. (build_dt): Simplified call to transfer_namelist_element. (nml_get_addr_expr): Generates address expression for start of object data. New function. (nml_full_name): Qualified name for derived type components. New function. (transfer_namelist_element): Modified for calls to new functions and improved derived type handling. PR libfortran/12884 gfortran.dg/pr12884.f: New test PR libfortran/17285 gfortran.dg/pr17285.f90: New test PR libfortran/17472, 18396, 18209 gfortran.dg/pr17472.f: New test PR libfortran/18122, 18591 gfortran.dg/pr18122.f90: New test PR libfortran/18210 gfortran.dg/pr18210.f90: New test PR libfortran/18392 gfortran.dg/pr18392.f90: New test PR libfortran/19467 gfortran.dg/pr19467.f90: New test PR libfortran/19657 gfortran.dg/pr19657.f90: New test * gfortran.dg/namelist_1.f90: Correct comment (PUBLIC and PRIVATE wrong way round). * gfortran.dg/namelist_2.f90: Variables with INTENT(IN) cannot be in namelists. New test * gfortran.dg/namelist_3.f90: Pointers cannot be in namelists. New test * gfortran.dg/namelist_11.f: Tests reals and qualifiers in namelist. New test * gfortran.dg/namelist_12.f: Tests integers and qualifiers in namelist. New test * gfortran.dg/namelist_13.f90: Tests derived types in namelist. New test * gfortran.dg/namelist_14.f90: Tests trans-io.c namelist support. New test * gfortran.dg/namelist_15.f90: Tests arrays of derived types in namelist. New test * gfortran.dg/namelist_16.f90: Tests complex in namelist. New test * gfortran.dg/namelist_17.f90: Tests logical in namelist. New test * gfortran.dg/namelist_18.f90: Tests charcter delimiters in namelist. New test * gfortran.dg/namelist_19.f90: Tests namelist errors. New test * gfortran.dg/namelist_20.f90: Tests negative bounds for explicit arrays. New test Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.335.2.70&r2=1.335.2.71 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/gfortran.texi.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.10.8.2&r2=1.10.8.3 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/trans-io.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.33.2.2&r2=1.33.2.3 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.5084.2.233&r2=1.5084.2.234 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/namelist_11.f.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/namelist_12.f.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/namelist_13.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/namelist_14.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/namelist_15.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/namelist_16.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/namelist_17.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/namelist_18.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/namelist_19.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/namelist_2.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/namelist_20.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/namelist_3.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/pr12884.f.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/pr17285.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/pr17472.f.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/pr18122.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/pr18210.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/pr18392.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/pr19467.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/pr19657.f.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/namelist_1.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.1&r2=1.1.18.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.163.2.47&r2=1.163.2.48 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/io/io.h.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.16.10.1&r2=1.16.10.2 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/io/list_read.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.14.2.1&r2=1.14.2.2 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/io/lock.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.5&r2=1.5.12.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/io/transfer.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.32.2.4&r2=1.32.2.5 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/io/write.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.23.2.7&r2=1.23.2.8