aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerry DeLisle <jvdelisle@gcc.gnu.org>2006-07-24 00:17:52 +0000
committerJerry DeLisle <jvdelisle@gcc.gnu.org>2006-07-24 00:17:52 +0000
commit566ffce8955401e87e86899239f5bb0a6a5b6b0f (patch)
tree64315dd185786aaf77ccb1f7529d4d40de5c511b
parent8a5d9afcd1cbbcef69e2203b34b5fa925a0214d2 (diff)
downloadgcc-566ffce8955401e87e86899239f5bb0a6a5b6b0f.zip
gcc-566ffce8955401e87e86899239f5bb0a6a5b6b0f.tar.gz
gcc-566ffce8955401e87e86899239f5bb0a6a5b6b0f.tar.bz2
re PR libfortran/25289 (Cannot handle record numbers large than huge(0_4))
2006-07-23 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libgfortran/25289 * libgfortran.h: Add conditional definition of GFC_LARGE_IO_INT type. * io/io.h (st_parameter_dt): Define rec as type GFC_LARGE_IO_INT. From-SVN: r115698
-rw-r--r--libgfortran/ChangeLog6
-rw-r--r--libgfortran/io/io.h2
-rw-r--r--libgfortran/libgfortran.h12
3 files changed, 19 insertions, 1 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index c19ac41..58ef0aa 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,9 @@
+2006-07-23 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libgfortran/25289
+ * libgfortran.h: Add conditional definition of GFC_LARGE_IO_INT type.
+ * io/io.h (st_parameter_dt): Define rec as type GFC_LARGE_IO_INT.
+
2006-07-21 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/28339
diff --git a/libgfortran/io/io.h b/libgfortran/io/io.h
index 822930e..e16d4b6 100644
--- a/libgfortran/io/io.h
+++ b/libgfortran/io/io.h
@@ -351,7 +351,7 @@ struct format_data;
typedef struct st_parameter_dt
{
st_parameter_common common;
- GFC_INTEGER_4 rec;
+ GFC_LARGE_IO_INT rec;
GFC_INTEGER_4 *size, *iolength;
gfc_array_char *internal_unit_desc;
CHARACTER1 (format);
diff --git a/libgfortran/libgfortran.h b/libgfortran/libgfortran.h
index 5dd2a51..27abfe8 100644
--- a/libgfortran/libgfortran.h
+++ b/libgfortran/libgfortran.h
@@ -196,6 +196,18 @@ typedef off_t gfc_offset;
#include "kinds.h"
+/* Define the type used for the current record number for large file I/O.
+ The size must be consistent with the size defined on the compiler side. */
+#ifdef HAVE_GFC_INTEGER_8
+typedef GFC_INTEGER_8 GFC_LARGE_IO_INT;
+#else
+#ifdef HAVE_GFC_INTEGER_4
+typedef GFC_INTEGER_4 GFC_LARGE_IO_INT;
+#else
+#error "GFC_INTEGER_4 should be available for the library to compile".
+#endif
+#endif
+
/* The following two definitions must be consistent with the types used
by the compiler. */
/* The type used of array indices, amongst other things. */