From f19c10ceb66780205dd9da0c5c056ee7a911de24 Mon Sep 17 00:00:00 2001 From: Jerry DeLisle Date: Wed, 25 Jan 2006 01:29:14 +0000 Subject: re PR libfortran/25835 (Segfault or Bad Address error on unformatted sequential READ) 2006-01-24 Jerry DeLisle PR fortran/25835 * gfortran.dg/read_eof_1.f90: Rename from read_eof_1.f90. * gfortran.dg/read_eof_2.f90: New test. * gfortran.dg/read_eof_3.f90: New test. From-SVN: r110201 --- gcc/testsuite/ChangeLog | 7 +++++++ gcc/testsuite/gfortran.dg/read_eof_1.f90 | 27 +++++++++++++++++++++++++++ gcc/testsuite/gfortran.dg/read_eof_2.f90 | 21 +++++++++++++++++++++ gcc/testsuite/gfortran.dg/read_eof_3.f90 | 31 +++++++++++++++++++++++++++++++ 4 files changed, 86 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/read_eof_1.f90 create mode 100644 gcc/testsuite/gfortran.dg/read_eof_2.f90 create mode 100644 gcc/testsuite/gfortran.dg/read_eof_3.f90 (limited to 'gcc') diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b44c815..f437418 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2006-01-24 Jerry DeLisle + + PR fortran/25835 + * gfortran.dg/read_eof_1.f90: Rename from read_eof_1.f90. + * gfortran.dg/read_eof_2.f90: New test. + * gfortran.dg/read_eof_3.f90: New test. + 2006-01-24 Andrew Pinski PR tree-opt/25860 diff --git a/gcc/testsuite/gfortran.dg/read_eof_1.f90 b/gcc/testsuite/gfortran.dg/read_eof_1.f90 new file mode 100644 index 0000000..b5c4901 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/read_eof_1.f90 @@ -0,0 +1,27 @@ +! { dg-do run } +! PR25697 Check that reading from a file that is at end-of-file does not +! segfault or give error. Test case derived from example in PR from Dale Ranta. +! Contributed by Jerry DeLisle + integer data(9) + do i = 1,9 + data(i)=-3 + enddo + open(unit=11,status='scratch',form='unformatted') + write(11)data + read(11,end= 1000 )data + call abort() + 1000 continue + backspace 11 + backspace 11 + write(11)data + rewind 11 + data = 0 + read(11,end= 1001 )data + 1001 continue + read(11,end= 1002 )data + call abort + 1002 continue + if (.not. all(data == -3)) call abort() + close(11) + end + diff --git a/gcc/testsuite/gfortran.dg/read_eof_2.f90 b/gcc/testsuite/gfortran.dg/read_eof_2.f90 new file mode 100644 index 0000000..9017548 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/read_eof_2.f90 @@ -0,0 +1,21 @@ +! { dg-do run } +! PR25835 Check that reading from a file that is at end-of-file does not +! segfault or give error. Test case derived from example in PR from Dale Ranta. +! Contributed by Jerry DeLisle + integer data(2045) ! Exceed internal buffer size + data=-1 + open(unit=11,status='scratch', form='unformatted') + write(11)data + read(11,end= 1000 )data + call abort() + 1000 continue + backspace 11 + backspace 11 + data = 0 + read(11)data + if (.not. all(data == -1)) call abort() + read(11,end= 1002 )data + call abort() + 1002 continue + close(11) + end diff --git a/gcc/testsuite/gfortran.dg/read_eof_3.f90 b/gcc/testsuite/gfortran.dg/read_eof_3.f90 new file mode 100644 index 0000000..5cca802 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/read_eof_3.f90 @@ -0,0 +1,31 @@ +! { dg-do run } +! PR25835 Check that reading from a file that is at end-of-file does not +! segfault or give error. Test case derived from example in PR from Dale Ranta. +! Contributed by Jerry DeLisle + integer data(5000) + data=-256 + open(unit=11,status='scratch', form='unformatted') + write(11)data + write(11)data + read(11,end= 1000 )data + call abort() + 1000 continue + backspace 11 + rewind 11 + write(11)data + read(11,end= 1001 )data + call abort() + 1001 continue + data = 0 + backspace 11 + rewind 11 + read(11,end= 1002 )data + if (.not. all(data == -256)) call abort() + 1002 continue + read(11,end= 1003 )data + call abort() + 1003 continue + close(11) + end + + -- cgit v1.1