This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug libfortran/15235] [gfortran] libgfortran doesn't build on Solaris 10/x86


------- Additional Comments From Tobias dot Schlueter at physik dot uni-muenchen dot de  2004-05-14 18:06 -------
Subject: Re:  [gfortran] libgfortran doesn't build on
 Solaris 10/x86

ro at techfak dot uni-bielefeld dot de wrote:
> no way!  What libgfortran actually should do is detect if the target
> platform has largefile support and use that if available.  But this isn't
> an interface change, just define the appropriate macros.  There's actually
> an autoconf macro for this: AC_SYS_LARGEFILE.  See its documentation for
> details.

Ah, ok.

I attached a cvs diff made in libgfortran/ with the change offset_t -> 
off_t, compiled on i686-pc-linux-gnu. If you could confirm that it works 
I will post this to the lists.

- Tobi


? libdiff
? io/sedtUhMSE
Index: libgfortran.h
===================================================================
RCS file: /cvs/gcc/gcc/libgfortran/libgfortran.h,v
retrieving revision 1.2
diff -u -p -r1.2 libgfortran.h
--- libgfortran.h	13 May 2004 06:40:59 -0000	1.2
+++ libgfortran.h	14 May 2004 18:01:49 -0000
@@ -50,7 +50,6 @@ Boston, MA 02111-1307, USA.  */
 #if HAVE_SYS_TYPES_H
 #include <sys/types.h>
 #endif
-typedef off_t offset_t;
 
 #ifndef NULL
 #define NULL (void *) 0
Index: io/backspace.c
===================================================================
RCS file: /cvs/gcc/gcc/libgfortran/io/backspace.c,v
retrieving revision 1.2
diff -u -p -r1.2 backspace.c
--- io/backspace.c	13 May 2004 06:41:02 -0000	1.2
+++ io/backspace.c	14 May 2004 18:01:49 -0000
@@ -34,7 +34,7 @@ Boston, MA 02111-1307, USA.  */
 static void
 formatted_backspace (void)
 {
-  offset_t base;
+  off_t base;
   char *p;
   int n;
 
@@ -92,12 +92,12 @@ io_error:
 static void
 unformatted_backspace (void)
 {
-  offset_t *p, new;
+  off_t *p, new;
   int length;
 
-  length = sizeof (offset_t);
+  length = sizeof (off_t);
 
-  p = (offset_t *) salloc_r_at (current_unit->s, &length,
+  p = (off_t *) salloc_r_at (current_unit->s, &length,
 				file_position (current_unit->s) - length);
   if (p == NULL)
     goto io_error;
Index: io/io.h
===================================================================
RCS file: /cvs/gcc/gcc/libgfortran/io/io.h,v
retrieving revision 1.2
diff -u -p -r1.2 io.h
--- io/io.h	13 May 2004 06:41:02 -0000	1.2
+++ io/io.h	14 May 2004 18:01:50 -0000
@@ -42,11 +42,11 @@ try;
 
 typedef struct stream
 {
-  char *(*alloc_w_at) (struct stream *, int *, offset_t);
-  char *(*alloc_r_at) (struct stream *, int *, offset_t);
+  char *(*alloc_w_at) (struct stream *, int *, off_t);
+  char *(*alloc_r_at) (struct stream *, int *, off_t);
     try (*sfree) (struct stream *);
     try (*close) (struct stream *);
-    try (*seek) (struct stream *, offset_t);
+    try (*seek) (struct stream *, off_t);
     try (*truncate) (struct stream *);
 }
 stream;
@@ -269,7 +269,7 @@ typedef struct unit_t
   endfile;
 
   unit_flags flags;
-  offset_t recl, last_record, maxrec, bytes_left;
+  off_t recl, last_record, maxrec, bytes_left;
 
   /* recl           -- Record length of the file.
      last_record    -- Last record number read or written
@@ -288,7 +288,7 @@ typedef struct
 {
   int in_library;       /* Nonzero if a library call is being processed.  */
   int size;	/* Bytes processed by the current data-transfer statement.  */
-  offset_t max_offset;	/* Maximum file offset.  */
+  off_t max_offset;	/* Maximum file offset.  */
   int item_count;	/* Item number in a formatted data transfer.  */
   int reversion_flag;	/* Format reversion has occurred.  */
   int first_item;
@@ -445,10 +445,10 @@ const char *inquire_write (const char *,
 const char *inquire_readwrite (const char *, int);
 
 #define file_length prefix(file_length)
-offset_t file_length (stream *);
+off_t file_length (stream *);
 
 #define file_position prefix(file_position)
-offset_t file_position (stream *);
+off_t file_position (stream *);
 
 #define is_seekable prefix(is_seekable)
 int is_seekable (stream *);
Index: io/transfer.c
===================================================================
RCS file: /cvs/gcc/gcc/libgfortran/io/transfer.c,v
retrieving revision 1.2
diff -u -p -r1.2 transfer.c
--- io/transfer.c	13 May 2004 06:41:02 -0000	1.2
+++ io/transfer.c	14 May 2004 18:01:53 -0000
@@ -792,13 +792,13 @@ transfer_complex (void *p, int kind)
 static void
 us_read (void)
 {
-  offset_t *p;
+  off_t *p;
   int n;
 
-  n = sizeof (offset_t);
-  p = (offset_t *) salloc_r (current_unit->s, &n);
+  n = sizeof (off_t);
+  p = (off_t *) salloc_r (current_unit->s, &n);
 
-  if (p == NULL || n != sizeof (offset_t))
+  if (p == NULL || n != sizeof (off_t))
     {
       generate_error (ERROR_BAD_US, NULL);
       return;
@@ -815,11 +815,11 @@ us_read (void)
 static void
 us_write (void)
 {
-  offset_t *p;
+  off_t *p;
   int length;
 
-  length = sizeof (offset_t);
-  p = (offset_t *) salloc_w (current_unit->s, &length);
+  length = sizeof (off_t);
+  p = (off_t *) salloc_w (current_unit->s, &length);
 
   if (p == NULL)
     {
@@ -1111,13 +1111,13 @@ static void
 next_record_r (int done)
 {
   int rlength, length;
-  offset_t new;
+  off_t new;
   char *p;
 
   switch (current_mode ())
     {
     case UNFORMATTED_SEQUENTIAL:
-      current_unit->bytes_left += sizeof (offset_t);	/* Skip over tail */
+      current_unit->bytes_left += sizeof (off_t);	/* Skip over tail */
 
       /* Fall through */
 
@@ -1198,7 +1198,7 @@ next_record_r (int done)
 static void
 next_record_w (int done)
 {
-  offset_t c, m;
+  off_t c, m;
   int length;
   char *p;
 
@@ -1225,7 +1225,7 @@ next_record_w (int done)
       m = current_unit->recl - current_unit->bytes_left; /* Bytes written */
       c = file_position (current_unit->s);
 
-      length = sizeof (offset_t);
+      length = sizeof (off_t);
 
       /* Write the length tail */
 
@@ -1233,7 +1233,7 @@ next_record_w (int done)
       if (p == NULL)
 	goto io_error;
 
-      *((offset_t *) p) = m;
+      *((off_t *) p) = m;
       if (sfree (current_unit->s) == FAILURE)
 	goto io_error;
 
@@ -1243,13 +1243,13 @@ next_record_w (int done)
       if (p == NULL)
 	generate_error (ERROR_OS, NULL);
 
-      *((offset_t *) p) = m;
+      *((off_t *) p) = m;
       if (sfree (current_unit->s) == FAILURE)
 	goto io_error;
 
       /* Seek past the end of the current record */
 
-      if (sseek (current_unit->s, c + sizeof (offset_t)) == FAILURE)
+      if (sseek (current_unit->s, c + sizeof (off_t)) == FAILURE)
 	goto io_error;
 
       break;
Index: io/unit.c
===================================================================
RCS file: /cvs/gcc/gcc/libgfortran/io/unit.c,v
retrieving revision 1.2
diff -u -p -r1.2 unit.c
--- io/unit.c	13 May 2004 06:41:02 -0000	1.2
+++ io/unit.c	14 May 2004 18:01:53 -0000
@@ -289,7 +289,7 @@ is_internal_unit ()
 void
 init_units (void)
 {
-  offset_t m, n;
+  off_t m, n;
   unit_t *u;
   int i;
 
@@ -336,13 +336,13 @@ init_units (void)
     }
 
   /* Calculate the maximum file offset in a portable manner.
-   * max will be the largest signed number for the type offset_t.
+   * max will be the largest signed number for the type off_t.
    *
    * set a 1 in the LSB and keep a running sum, stopping at MSB-1 bit. */
 
   g.max_offset = 0;
   for (i=0; i < sizeof(g.max_offset) * 8 - 1; i++)
-    g.max_offset = g.max_offset + ((offset_t) 1 << i);
+    g.max_offset = g.max_offset + ((off_t) 1 << i);
 
 }
 
Index: io/unix.c
===================================================================
RCS file: /cvs/gcc/gcc/libgfortran/io/unix.c,v
retrieving revision 1.2
diff -u -p -r1.2 unix.c
--- io/unix.c	13 May 2004 06:41:02 -0000	1.2
+++ io/unix.c	14 May 2004 18:01:53 -0000
@@ -86,11 +86,11 @@ typedef struct
   stream st;
 
   int fd;
-  offset_t buffer_offset;	/* File offset of the start of the buffer */
-  offset_t physical_offset;	/* Current physical file offset */
-  offset_t logical_offset;	/* Current logical file offset */
-  offset_t dirty_offset;	/* Start of modified bytes in buffer */
-  offset_t file_length;		/* Length of the file, -1 if not seekable. */
+  off_t buffer_offset;	/* File offset of the start of the buffer */
+  off_t physical_offset;	/* Current physical file offset */
+  off_t logical_offset;	/* Current logical file offset */
+  off_t dirty_offset;	/* Start of modified bytes in buffer */
+  off_t file_length;		/* Length of the file, -1 if not seekable. */
 
   char *buffer;
   int len;			/* Physical length of the current buffer */
@@ -293,7 +293,7 @@ fd_flush (unix_stream * s)
  * to come next. */
 
 static void
-fd_alloc (unix_stream * s, offset_t where, int *len)
+fd_alloc (unix_stream * s, off_t where, int *len)
 {
   char *new_buffer;
   int n, read_len;
@@ -344,9 +344,9 @@ fd_alloc (unix_stream * s, offset_t wher
  * NULL on I/O error. */
 
 static char *
-fd_alloc_r_at (unix_stream * s, int *len, offset_t where)
+fd_alloc_r_at (unix_stream * s, int *len, off_t where)
 {
-  offset_t m;
+  off_t m;
   int n;
 
   if (where == -1)
@@ -389,9 +389,9 @@ fd_alloc_r_at (unix_stream * s, int *len
  * we've already buffered the data or we need to load it. */
 
 static char *
-fd_alloc_w_at (unix_stream * s, int *len, offset_t where)
+fd_alloc_w_at (unix_stream * s, int *len, off_t where)
 {
-  offset_t n;
+  off_t n;
 
   if (where == -1)
     where = s->logical_offset;
@@ -444,7 +444,7 @@ fd_sfree (unix_stream * s)
 
 
 static int
-fd_seek (unix_stream * s, offset_t offset)
+fd_seek (unix_stream * s, off_t offset)
 {
 
   s->physical_offset = s->logical_offset = offset;
@@ -551,9 +551,9 @@ mmap_flush (unix_stream * s)
  * guaranteed to be mappable. */
 
 static try
-mmap_alloc (unix_stream * s, offset_t where, int *len)
+mmap_alloc (unix_stream * s, off_t where, int *len)
 {
-  offset_t offset;
+  off_t offset;
   int length;
   char *p;
 
@@ -578,9 +578,9 @@ mmap_alloc (unix_stream * s, offset_t wh
 
 
 static char *
-mmap_alloc_r_at (unix_stream * s, int *len, offset_t where)
+mmap_alloc_r_at (unix_stream * s, int *len, off_t where)
 {
-  offset_t m;
+  off_t m;
 
   if (where == -1)
     where = s->logical_offset;
@@ -605,7 +605,7 @@ mmap_alloc_r_at (unix_stream * s, int *l
 
 
 static char *
-mmap_alloc_w_at (unix_stream * s, int *len, offset_t where)
+mmap_alloc_w_at (unix_stream * s, int *len, off_t where)
 {
   if (where == -1)
     where = s->logical_offset;
@@ -632,7 +632,7 @@ mmap_alloc_w_at (unix_stream * s, int *l
 
 
 static int
-mmap_seek (unix_stream * s, offset_t offset)
+mmap_seek (unix_stream * s, off_t offset)
 {
 
   s->logical_offset = offset;
@@ -719,9 +719,9 @@ mmap_open (unix_stream * s)
 
 
 static char *
-mem_alloc_r_at (unix_stream * s, int *len, offset_t where)
+mem_alloc_r_at (unix_stream * s, int *len, off_t where)
 {
-  offset_t n;
+  off_t n;
 
   if (where == -1)
     where = s->logical_offset;
@@ -743,9 +743,9 @@ mem_alloc_r_at (unix_stream * s, int *le
 
 
 static char *
-mem_alloc_w_at (unix_stream * s, int *len, offset_t where)
+mem_alloc_w_at (unix_stream * s, int *len, off_t where)
 {
-  offset_t m;
+  off_t m;
 
   if (where == -1)
     where = s->logical_offset;
@@ -762,7 +762,7 @@ mem_alloc_w_at (unix_stream * s, int *le
 
 
 static int
-mem_seek (unix_stream * s, offset_t offset)
+mem_seek (unix_stream * s, off_t offset)
 {
 
   if (offset > s->file_length)
@@ -1366,7 +1366,7 @@ inquire_readwrite (const char *string, i
 
 /* file_length()-- Return the file length in bytes, -1 if unknown */
 
-offset_t
+off_t
 file_length (stream * s)
 {
 
@@ -1376,7 +1376,7 @@ file_length (stream * s)
 
 /* file_position()-- Return the current position of the file */
 
-offset_t
+off_t
 file_position (stream * s)
 {
 


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15235


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]