This is the mail archive of the gcc-patches@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]

System-specific notes: patch for GCC 2.95.2/glibc 2.1.9x+


On Nov  2, 2000, Jakub Jelinek <jakub@redhat.com> wrote:

> Here is a patch for gcc-2.95.2 build on glibc 2.2 systems:

Thanks, Jakub!

Is this ok to install?

Index: install/glibc-2.2.patch
===================================================================
RCS file: glibc-2.2.patch
diff -N glibc-2.2.patch
--- /dev/null	Tue May  5 13:32:27 1998
+++ install/glibc-2.2.patch Thu Nov 2 09:06:34 2000
@@ -0,0 +1,282 @@
+2000-10-11  Jakub Jelinek  <jakub@redhat.com>
+
+	* iostream.cc (ostream::operator<<(double n)) [__GLIBC_MINOR__ >= 2]:
+	Initialize new fields wide and i18n of struct printf_info.
+	(ostream::operator<<(long double n)) [__GLIBC_MINOR__ >= 2]:
+	Likewise.
+
+2000-09-23  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>
+
+	* stdstreams.cc: Include <libio.h>, not "libio.h".
+	* iolibio.h: Likewise.
+	(_IO_pos_BAD): Use _IO_off_t instead of _IO_fpos_t.
+	* libio.h (_IO_USER_LOCK): Define.
+
+1999-12-13  Jakub Jelinek  <jakub@redhat.com>
+
+	* libio.h (_IO_cookie_io_functions_t): Use _IO_off_t instead of
+	_IO_fpos_t.
+	(_IO_seekoff, _IO_seekpos): Likewise. Use _IO_off64_t instead of
+	_IO_fpos64_t.
+	* libioP.h (_IO_seekoff_t, _IO_seekpos_t, _IO_seek_t): Likewise.
+	(_IO_seekoff, _IO_seekpos): Likewise.
+	(_IO_default_seekoff, _IO_default_seekpos): Likewise.
+	(_IO_default_seek): Likewise.
+	(_IO_file_seekoff, _IO_file_seek, _IO_str_seekoff): Likewise.
+	* streambuf.h (streampos): Typedef to _IO_off_t resp. _IO_off64_t.
+	* parsestream.h (class parsebuf::pos_at_line_start): Change type
+	to _IO_off_t.
+
+--- gcc-2.95.2/libio/libio.h.jj	Mon Jun 29 20:06:26 1998
++++ gcc-2.95.2/libio/libio.h	Thu Nov  2 17:33:00 2000
+@@ -136,6 +136,7 @@
+ #define _IO_IS_APPENDING 0x1000
+ #define _IO_IS_FILEBUF 0x2000
+ #define _IO_BAD_SEEN 0x4000
++#define _IO_USER_LOCK 0x8000
+ 
+ /* These are "formatting flags" matching the iostream fmtflags enum values. */
+ #define _IO_SKIPWS 01
+@@ -277,7 +278,7 @@ typedef struct
+ {
+   _IO_ssize_t (*read) __PMT ((struct _IO_FILE *, void *, _IO_ssize_t));
+   _IO_ssize_t (*write) __PMT ((struct _IO_FILE *, const void *, _IO_ssize_t));
+-  _IO_fpos_t (*seek) __PMT ((struct _IO_FILE *, _IO_off_t, int));
++  _IO_off_t (*seek) __PMT ((struct _IO_FILE *, _IO_off_t, int));
+   int (*close) __PMT ((struct _IO_FILE *));
+ } _IO_cookie_io_functions_t;
+ 
+@@ -348,11 +349,11 @@ extern _IO_ssize_t _IO_padn __P ((_IO_FI
+ extern _IO_size_t _IO_sgetn __P ((_IO_FILE *, void *, _IO_size_t));
+ 
+ #if defined(_G_IO_IO_FILE_VERSION) && _G_IO_IO_FILE_VERSION == 0x20001
+-extern _IO_fpos64_t _IO_seekoff __P ((_IO_FILE *, _IO_off64_t, int, int));
+-extern _IO_fpos64_t _IO_seekpos __P ((_IO_FILE *, _IO_fpos64_t, int));
++extern _IO_off64_t _IO_seekoff __P ((_IO_FILE *, _IO_off64_t, int, int));
++extern _IO_off64_t _IO_seekpos __P ((_IO_FILE *, _IO_off64_t, int));
+ #else
+-extern _IO_fpos_t _IO_seekoff __P ((_IO_FILE *, _IO_off_t, int, int));
+-extern _IO_fpos_t _IO_seekpos __P ((_IO_FILE *, _IO_fpos_t, int));
++extern _IO_off_t _IO_seekoff __P ((_IO_FILE *, _IO_off_t, int, int));
++extern _IO_off_t _IO_seekpos __P ((_IO_FILE *, _IO_off_t, int));
+ #endif
+ 
+ extern void _IO_free_backup_area __P ((_IO_FILE *));
+--- gcc-2.95.2/libio/libioP.h.jj	Tue May 18 00:58:56 1999
++++ gcc-2.95.2/libio/libioP.h	Tue Oct 10 11:40:57 2000
+@@ -146,10 +146,10 @@ typedef _IO_size_t (*_IO_xsgetn_t) __PMT
+    It matches the streambuf::seekoff virtual function.
+    It is also used for the ANSI fseek function. */
+ #if defined(_G_IO_IO_FILE_VERSION) && _G_IO_IO_FILE_VERSION == 0x20001
+-typedef _IO_fpos64_t (*_IO_seekoff_t) __PMT ((_IO_FILE *FP, _IO_off64_t OFF,
++typedef _IO_off64_t (*_IO_seekoff_t) __PMT ((_IO_FILE *FP, _IO_off64_t OFF,
+ 					  int DIR, int MODE));
+ #else
+-typedef _IO_fpos_t (*_IO_seekoff_t) __PMT ((_IO_FILE *FP, _IO_off_t OFF,
++typedef _IO_off_t (*_IO_seekoff_t) __PMT ((_IO_FILE *FP, _IO_off_t OFF,
+ 					  int DIR, int MODE));
+ #endif
+ #define _IO_SEEKOFF(FP, OFF, DIR, MODE) JUMP3 (__seekoff, FP, OFF, DIR, MODE)
+@@ -160,9 +160,9 @@ typedef _IO_fpos_t (*_IO_seekoff_t) __PM
+    It is also used for the ANSI fgetpos and fsetpos functions.  */
+ /* The _IO_seek_cur and _IO_seek_end options are not allowed. */
+ #if defined(_G_IO_IO_FILE_VERSION) && _G_IO_IO_FILE_VERSION == 0x20001
+-typedef _IO_fpos64_t (*_IO_seekpos_t) __PMT ((_IO_FILE *, _IO_fpos64_t, int));
++typedef _IO_off64_t (*_IO_seekpos_t) __PMT ((_IO_FILE *, _IO_off64_t, int));
+ #else
+-typedef _IO_fpos_t (*_IO_seekpos_t) __PMT ((_IO_FILE *, _IO_fpos_t, int));
++typedef _IO_off_t (*_IO_seekpos_t) __PMT ((_IO_FILE *, _IO_off_t, int));
+ #endif
+ #define _IO_SEEKPOS(FP, POS, FLAGS) JUMP2 (__seekpos, FP, POS, FLAGS)
+ 
+@@ -213,9 +213,9 @@ typedef _IO_ssize_t (*_IO_write_t) __PMT
+    It matches the streambuf::sys_seek virtual function, which is
+    specific to this implementation. */
+ #if defined(_G_IO_IO_FILE_VERSION) && _G_IO_IO_FILE_VERSION == 0x20001
+-typedef _IO_fpos64_t (*_IO_seek_t) __PMT ((_IO_FILE *, _IO_off64_t, int));
++typedef _IO_off64_t (*_IO_seek_t) __PMT ((_IO_FILE *, _IO_off64_t, int));
+ #else
+-typedef _IO_fpos_t (*_IO_seek_t) __PMT ((_IO_FILE *, _IO_off_t, int));
++typedef _IO_off_t (*_IO_seek_t) __PMT ((_IO_FILE *, _IO_off_t, int));
+ #endif
+ #define _IO_SYSSEEK(FP, OFFSET, MODE) JUMP2 (__seek, FP, OFFSET, MODE)
+ 
+@@ -298,11 +298,11 @@ struct _IO_FILE_plus
+ /* Generic functions */
+ 
+ #if defined(_G_IO_IO_FILE_VERSION) && _G_IO_IO_FILE_VERSION == 0x20001
+-extern _IO_fpos64_t _IO_seekoff __P ((_IO_FILE *, _IO_off64_t, int, int));
+-extern _IO_fpos64_t _IO_seekpos __P ((_IO_FILE *, _IO_fpos64_t, int));
++extern _IO_off64_t _IO_seekoff __P ((_IO_FILE *, _IO_off64_t, int, int));
++extern _IO_off64_t _IO_seekpos __P ((_IO_FILE *, _IO_off64_t, int));
+ #else
+-extern _IO_fpos_t _IO_seekoff __P ((_IO_FILE *, _IO_off_t, int, int));
+-extern _IO_fpos_t _IO_seekpos __P ((_IO_FILE *, _IO_fpos_t, int));
++extern _IO_off_t _IO_seekoff __P ((_IO_FILE *, _IO_off_t, int, int));
++extern _IO_off_t _IO_seekpos __P ((_IO_FILE *, _IO_off_t, int));
+ #endif
+ 
+ extern void _IO_switch_to_main_get_area __P ((_IO_FILE *));
+@@ -340,22 +340,22 @@ extern _IO_size_t _IO_default_xsputn __P
+ 					   _IO_size_t));
+ extern _IO_size_t _IO_default_xsgetn __P ((_IO_FILE *, void *, _IO_size_t));
+ #if defined(_G_IO_IO_FILE_VERSION) && _G_IO_IO_FILE_VERSION == 0x20001
+-extern _IO_fpos64_t _IO_default_seekoff __P ((_IO_FILE *,
++extern _IO_off64_t _IO_default_seekoff __P ((_IO_FILE *,
+ 					      _IO_off64_t, int, int));
+-extern _IO_fpos64_t _IO_default_seekpos __P ((_IO_FILE *,
+-					      _IO_fpos64_t, int));
++extern _IO_off64_t _IO_default_seekpos __P ((_IO_FILE *,
++					      _IO_off64_t, int));
+ #else
+-extern _IO_fpos_t _IO_default_seekoff __P ((_IO_FILE *, _IO_off_t, int, int));
+-extern _IO_fpos_t _IO_default_seekpos __P ((_IO_FILE *, _IO_fpos_t, int));
++extern _IO_off_t _IO_default_seekoff __P ((_IO_FILE *, _IO_off_t, int, int));
++extern _IO_off_t _IO_default_seekpos __P ((_IO_FILE *, _IO_off_t, int));
+ #endif
+ extern _IO_ssize_t _IO_default_write __P ((_IO_FILE *, const void *,
+ 					   _IO_ssize_t));
+ extern _IO_ssize_t _IO_default_read __P ((_IO_FILE *, void *, _IO_ssize_t));
+ extern int _IO_default_stat __P ((_IO_FILE *, void *));
+ #if defined(_G_IO_IO_FILE_VERSION) && _G_IO_IO_FILE_VERSION == 0x20001
+-extern _IO_fpos64_t _IO_default_seek __P ((_IO_FILE *, _IO_off64_t, int));
++extern _IO_off64_t _IO_default_seek __P ((_IO_FILE *, _IO_off64_t, int));
+ #else
+-extern _IO_fpos_t _IO_default_seek __P ((_IO_FILE *, _IO_off_t, int));
++extern _IO_off_t _IO_default_seek __P ((_IO_FILE *, _IO_off_t, int));
+ #endif
+ extern int _IO_default_sync __P ((_IO_FILE *));
+ #define _IO_default_close ((_IO_close_t) _IO_default_sync)
+@@ -389,11 +389,11 @@ extern void _IO_flush_all_linebuffered _
+ extern int _IO_file_doallocate __P ((_IO_FILE *));
+ extern _IO_FILE* _IO_file_setbuf __P ((_IO_FILE *, char *, _IO_ssize_t));
+ #if defined(_G_IO_IO_FILE_VERSION) && _G_IO_IO_FILE_VERSION == 0x20001
+-extern _IO_fpos64_t _IO_file_seekoff __P ((_IO_FILE *, _IO_off64_t, int, int));
+-extern _IO_fpos64_t _IO_file_seek __P ((_IO_FILE *, _IO_off64_t, int));
++extern _IO_off64_t _IO_file_seekoff __P ((_IO_FILE *, _IO_off64_t, int, int));
++extern _IO_off64_t _IO_file_seek __P ((_IO_FILE *, _IO_off64_t, int));
+ #else
+-extern _IO_fpos_t _IO_file_seekoff __P ((_IO_FILE *, _IO_off_t, int, int));
+-extern _IO_fpos_t _IO_file_seek __P ((_IO_FILE *, _IO_off_t, int));
++extern _IO_off_t _IO_file_seekoff __P ((_IO_FILE *, _IO_off_t, int, int));
++extern _IO_off_t _IO_file_seek __P ((_IO_FILE *, _IO_off_t, int));
+ #endif
+ extern _IO_size_t _IO_file_xsputn __P ((_IO_FILE *, const void *, _IO_size_t));
+ extern int _IO_file_stat __P ((_IO_FILE *, void *));
+@@ -427,9 +427,9 @@ extern int _IO_str_underflow __P ((_IO_F
+ extern int _IO_str_overflow __P ((_IO_FILE *, int));
+ extern int _IO_str_pbackfail __P ((_IO_FILE *, int));
+ #if defined(_G_IO_IO_FILE_VERSION) && _G_IO_IO_FILE_VERSION == 0x20001
+-extern _IO_fpos64_t _IO_str_seekoff __P ((_IO_FILE *, _IO_off64_t, int, int));
++extern _IO_off64_t _IO_str_seekoff __P ((_IO_FILE *, _IO_off64_t, int, int));
+ #else
+-extern _IO_fpos_t _IO_str_seekoff __P ((_IO_FILE *, _IO_off_t, int, int));
++extern _IO_off_t _IO_str_seekoff __P ((_IO_FILE *, _IO_off_t, int, int));
+ #endif
+ extern void _IO_str_finish __P ((_IO_FILE *, int));
+ 
+@@ -544,12 +544,12 @@ extern int _IO_vscanf __P ((const char *
+    where an _IO_fpos_t is a struct.
+    Note that _IO_off_t must be an integral type. */
+ 
+-/* _IO_pos_BAD is an _IO_fpos_t value indicating error, unknown, or EOF. */
++/* _IO_pos_BAD is an _IO_off_t value indicating error, unknown, or EOF. */
+ #ifndef _IO_pos_BAD
+ # if defined(_G_IO_IO_FILE_VERSION) && _G_IO_IO_FILE_VERSION == 0x20001
+-#  define _IO_pos_BAD ((_IO_fpos64_t) -1)
++#  define _IO_pos_BAD ((_IO_off64_t) -1)
+ # else
+-#  define _IO_pos_BAD ((_IO_fpos_t) -1)
++#  define _IO_pos_BAD ((_IO_off_t) -1)
+ # endif
+ #endif
+ /* _IO_pos_as_off converts an _IO_fpos_t value to an _IO_off_t value. */
+--- gcc-2.95.2/libio/streambuf.h.jj	Mon Aug  9 02:07:01 1999
++++ gcc-2.95.2/libio/streambuf.h	Tue Oct 10 11:40:57 2000
+@@ -72,10 +72,10 @@ class ostream; class streambuf;
+ 
+ #if defined(_G_IO_IO_FILE_VERSION) && _G_IO_IO_FILE_VERSION == 0x20001
+ typedef _IO_off64_t streamoff;
+-typedef _IO_fpos64_t streampos;
++typedef _IO_off64_t streampos;
+ #else
+ typedef _IO_off_t streamoff;
+-typedef _IO_fpos_t streampos;
++typedef _IO_off_t streampos;
+ #endif
+ typedef _IO_ssize_t streamsize;
+ 
+--- gcc-2.95.2/libio/parsestream.h.jj	Fri Aug 22 00:58:20 1997
++++ gcc-2.95.2/libio/parsestream.h	Tue Oct 10 11:40:57 2000
+@@ -42,7 +42,7 @@ extern "C++" {
+ 
+ class parsebuf : public streambuf {
+   protected:
+-    _IO_fpos_t pos_at_line_start;
++    _IO_off_t pos_at_line_start;
+     long _line_length;
+     unsigned long __line_number;
+     char *buf_start;
+--- gcc-2.95.2/libio/iostream.cc.jj	Sat Aug  7 08:01:46 1999
++++ gcc-2.95.2/libio/iostream.cc	Thu Nov  2 17:33:00 2000
+@@ -1,5 +1,5 @@
+ /* This is part of libio/iostream, providing -*- C++ -*- input/output.
+-   Copyright (C) 1993, 1997 Free Software Foundation, Inc.
++   Copyright (C) 1993, 1997, 2000 Free Software Foundation, Inc.
+ 
+    This file is part of the GNU IO Library.  This library is free
+    software; you can redistribute it and/or modify it under the
+@@ -687,6 +687,10 @@ ostream& ostream::operator<<(double n)
+ 				      /* extra: */ 0,
+ #if __GLIBC_MINOR__ >= 1
+ 				      /* is_char: */ 0,
++#if __GLIBC_MINOR__ >= 2
++				      /* wide: */ 0,
++				      /* i18n: */ 0,
++#endif
+ #endif
+ #endif
+ 				      /* pad: */ fill()
+@@ -793,6 +797,10 @@ ostream& ostream::operator<<(long double
+ 				  /* extra: */ 0,
+ #if __GLIBC_MINOR__ >= 1
+ 				  /* is_char: */ 0,
++#if __GLIBC_MINOR__ >= 2
++				  /* wide: */ 0,
++				  /* i18n: */ 0,
++#endif
+ #endif
+ #endif
+ 				  /* pad: */ fill()
+--- gcc-2.95.2/libio/iolibio.h.jj	Tue Feb 24 21:09:50 1998
++++ gcc-2.95.2/libio/iolibio.h	Thu Nov  2 17:33:00 2000
+@@ -1,4 +1,4 @@
+-#include "libio.h"
++#include <libio.h>
+ 
+ /* These emulate stdio functionality, but with a different name
+    (_IO_ungetc instead of ungetc), and using _IO_FILE instead of FILE. */
+@@ -38,7 +38,11 @@ extern int _IO_obstack_vprintf __P ((str
+                                     _IO_va_list));
+ extern int _IO_obstack_printf __P ((struct obstack *, const char *, ...));
+ #ifndef _IO_pos_BAD
+-#define _IO_pos_BAD ((_IO_fpos_t)(-1))
++# if defined(_G_IO_IO_FILE_VERSION) && _G_IO_IO_FILE_VERSION == 0x20001
++#  define _IO_pos_BAD ((_IO_off64_t) -1)
++# else
++#  define _IO_pos_BAD ((_IO_off_t) -1)
++# endif
+ #endif
+ #define _IO_clearerr(FP) ((FP)->_flags &= ~(_IO_ERR_SEEN|_IO_EOF_SEEN))
+ #define _IO_fseek(__fp, __offset, __whence) \
+--- gcc-2.95.2/libio/stdstreams.cc.jj	Fri Aug 22 00:58:21 1997
++++ gcc-2.95.2/libio/stdstreams.cc	Thu Nov  2 17:33:00 2000
+@@ -36,7 +36,7 @@ the executable file might be covered by 
+ // then we don't need to, since in that case stdin/stdout/stderr
+ // are identical to _IO_stdin/_IO_stdout/_IO_stderr.
+ 
+-#include "libio.h"
++#include <libio.h>
+ 
+ #ifdef _STDIO_USES_IOSTREAM
+ #define CIN_SBUF _IO_stdin_
Index: install/specific.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/install/specific.html,v
retrieving revision 1.66
diff -u -p -r1.66 specific.html
--- install/specific.html 2000/10/18 06:45:24 1.66
+++ install/specific.html 2000/11/02 17:06:34
@@ -154,6 +154,12 @@ bootstrap</code>'.</p>
 
 <hr>
 <h3><a name="ix86-*-linux*">i?86-*-linux*</a></h3>
+
+<p>If you have glibc 2.2 (or 2.1.9x), GCC 2.95.2 won't install
+out-of-the-box.  You'll get compile errors while building libstdc++.
+The patch <a href="glibc-2.2.patch">glibc-2.2.patch</a>, that is to be
+applied in the GCC source tree, fixes the compatibility problems.</p>
+
 <p>You will need binutils-2.9.1.0.15 or newer for exception handling to work.</p>
 
 <p>If you receive Signal 11 errors when building on GNU/Linux, then it is

-- 
Alexandre Oliva   Enjoy Guarana', see http://www.ic.unicamp.br/~oliva/
Red Hat GCC Developer                  aoliva@{cygnus.com, redhat.com}
CS PhD student at IC-Unicamp        oliva@{lsd.ic.unicamp.br, gnu.org}
Free Software Evangelist    *Please* write to mailing lists, not to me

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