aboutsummaryrefslogtreecommitdiff
path: root/libgfortran
diff options
context:
space:
mode:
authorJerry DeLisle <jvdelisle@gcc.gnu.org>2016-10-24 21:42:29 +0000
committerJerry DeLisle <jvdelisle@gcc.gnu.org>2016-10-24 21:42:29 +0000
commit13926b249f974bcb0428e4379f0338da45bbcd70 (patch)
treecf05fdc76f680d7d48536813516af7143972b359 /libgfortran
parentc708217135607d42ff3926164f0472ef6aa66719 (diff)
downloadgcc-13926b249f974bcb0428e4379f0338da45bbcd70.zip
gcc-13926b249f974bcb0428e4379f0338da45bbcd70.tar.gz
gcc-13926b249f974bcb0428e4379f0338da45bbcd70.tar.bz2
re PR libfortran/77828 (Linking gfortran-7 compiled program with libgfortran of 5.x allowed but crashes when containing write to string)
2016-10-24 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR fortran/77828 * io/io.h (st_parameter_dt): Reorder for readability and sanity. * io/transfer.c (data_transfer_init): Remove TODO and enable the runtime error message, rec= specifier not allowed in STREAM access. * libtool-version: Bump major version of libgfortran to 4. * ioparm.def: Reorder dt parameters to match libgfortran. * libgfortran.h: Swap definitions of GFC_INTERNAL_UNIT and GFC_INTERNAL_UNIT4. From-SVN: r241497
Diffstat (limited to 'libgfortran')
-rw-r--r--libgfortran/ChangeLog9
-rw-r--r--libgfortran/io/io.h24
-rw-r--r--libgfortran/io/transfer.c9
-rw-r--r--libgfortran/libtool-version2
4 files changed, 23 insertions, 21 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 167a0f9..2e3056f 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,12 @@
+2016-10-24 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR fortran/77828
+ * io/io.h (st_parameter_dt): Reorder for readability and sanity.
+ * io/transfer.c (data_transfer_init): Remove TODO and enable the
+ runtime error message, rec= specifier not allowed in STREAM
+ access.
+ * libtool-version: Bump major version of libgfortran to 4.
+
2016-10-21 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libfortran/78055
diff --git a/libgfortran/io/io.h b/libgfortran/io/io.h
index 8b20389..8c6caef 100644
--- a/libgfortran/io/io.h
+++ b/libgfortran/io/io.h
@@ -424,6 +424,15 @@ typedef struct st_parameter_dt
CHARACTER2 (advance);
CHARACTER1 (internal_unit);
CHARACTER2 (namelist_name);
+ GFC_INTEGER_4 *id;
+ GFC_IO_INT pos;
+ CHARACTER1 (asynchronous);
+ CHARACTER2 (blank);
+ CHARACTER1 (decimal);
+ CHARACTER2 (delim);
+ CHARACTER1 (pad);
+ CHARACTER2 (round);
+ CHARACTER1 (sign);
/* Private part of the structure. The compiler just needs
to reserve enough space. */
union
@@ -440,7 +449,8 @@ typedef struct st_parameter_dt
unit_blank blank_status;
unit_sign sign_status;
int scale_factor;
- int max_pos; /* Maximum righthand column written to. */
+ /* Maximum righthand column written to. */
+ int max_pos;
/* Number of skips + spaces to be done for T and X-editing. */
int skips;
/* Number of spaces to be done for T and X-editing. */
@@ -494,8 +504,7 @@ typedef struct st_parameter_dt
are an unsigned char, EOF, or EOF - 1 used to mark the
field as not valid. */
int last_char; /* No longer used, moved to gfc_unit. */
- char nml_delim;
-
+ int nml_delim;
int repeat_count;
int saved_length;
int saved_used;
@@ -523,15 +532,6 @@ typedef struct st_parameter_dt
must be smaller or equal to this array. */
char pad[16 * sizeof (char *) + 32 * sizeof (int)];
} u;
- GFC_INTEGER_4 *id;
- GFC_IO_INT pos;
- CHARACTER1 (asynchronous);
- CHARACTER2 (blank);
- CHARACTER1 (decimal);
- CHARACTER2 (delim);
- CHARACTER1 (pad);
- CHARACTER2 (round);
- CHARACTER1 (sign);
}
st_parameter_dt;
diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c
index 0879ca7..e3f75b6 100644
--- a/libgfortran/io/transfer.c
+++ b/libgfortran/io/transfer.c
@@ -3026,20 +3026,13 @@ data_transfer_init (st_parameter_dt *dtp, int read_flag)
return;
}
- /* TODO: This is required to maintain compatibility between
- 4.3 and 4.4 runtime. Remove when ABI changes from 4.3 */
-
- if (is_stream_io (dtp))
- dtp->u.p.current_unit->strm_pos = dtp->rec;
-
- /* TODO: Un-comment this code when ABI changes from 4.3.
if (dtp->u.p.current_unit->flags.access == ACCESS_STREAM)
{
generate_error (&dtp->common, LIBERROR_OPTION_CONFLICT,
"Record number not allowed for stream access "
"data transfer");
return;
- } */
+ }
}
/* Bugware for badly written mixed C-Fortran I/O. */
diff --git a/libgfortran/libtool-version b/libgfortran/libtool-version
index f787e37..7121990 100644
--- a/libgfortran/libtool-version
+++ b/libgfortran/libtool-version
@@ -3,4 +3,4 @@
# This is a separate file so that version updates don't involve re-running
# automake.
# CURRENT:REVISION:AGE
-3:0:0
+4:0:0