From 84656b55b6e25e30322dc903a05de53706361d3d Mon Sep 17 00:00:00 2001 From: obrien Date: Sat, 16 Oct 1999 03:54:25 +0000 Subject: Virgin import of GCC 2.95.1's libio -- the C++ iostream facility. --- contrib/libio/ChangeLog | 156 ++++++++++++++++++++++++++++++++---- contrib/libio/Makefile.in | 7 +- contrib/libio/config.shared | 13 +-- contrib/libio/configure.in | 73 +++++++++++++---- contrib/libio/dbz/Makefile.in | 2 +- contrib/libio/depend | 39 +++++++-- contrib/libio/filedoalloc.c | 3 - contrib/libio/fileops.c | 3 - contrib/libio/gen-params | 17 ++-- contrib/libio/iomanip.h | 16 ++-- contrib/libio/iopopen.c | 3 - contrib/libio/iostream.cc | 65 +++++++++++++-- contrib/libio/iostream.h | 1 + contrib/libio/isgetline.cc | 12 +++ contrib/libio/isgetsb.cc | 4 + contrib/libio/isscan.cc | 10 +++ contrib/libio/libioP.h | 19 +++-- contrib/libio/procbuf.cc | 1 - contrib/libio/stdio/ChangeLog | 12 ++- contrib/libio/stdiostream.cc | 2 +- contrib/libio/streambuf.h | 6 +- contrib/libio/tests/ChangeLog | 12 ++- contrib/libio/tests/Makefile.in | 3 +- contrib/libio/testsuite/ChangeLog | 21 ++++- contrib/libio/testsuite/Makefile.in | 11 +-- 25 files changed, 418 insertions(+), 93 deletions(-) (limited to 'contrib') diff --git a/contrib/libio/ChangeLog b/contrib/libio/ChangeLog index e8f7c95..5996c04 100644 --- a/contrib/libio/ChangeLog +++ b/contrib/libio/ChangeLog @@ -1,31 +1,155 @@ -Sun Mar 14 02:38:07 PST 1999 Jeff Law (law@cygnus.com) +Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com) - * egcs-1.1.2 Released. + * gcc-2.95.1 Released. -Fri Mar 5 01:13:45 1999 H.J. Lu (hjl@gnu.org) +1999-08-08 Alexandre Oliva - * config/linuxlibc1.mt (MT_CFLAGS): Add -D_G_STDIO_USES_LIBIO - -D_G_HAVE_WEAK_SYMBOL. + * streambuf.h (ios::streamsize): Declare as _IO_ssize_t, as in the + global scope. - * genops.c: Add the proper weak alias if _G_STDIO_USES_LIBIO - and _G_HAVE_WEAK_SYMBOL are defined. - * iofclose.c: Likewise. - * iofeof.c: Likewise. - * ioferror.c: Likewise. - * iogetc.c: Likewise. - * ioputc.c: Likewise. - * iovsprintf.c: Likewise. - * iovsscanf.c: Likewise. +1999-08-07 Andreas Schwab + + * iostream.cc: Add missing calls to isfx and setup a cleanup + region for the locked stream. + * iostream.h: Likewise. + * isgetline.cc: Likewise. + * isgetsb.cc: Likewise. + * isscan.cc: Likewise. + +Wed Jul 28 21:39:31 PDT 1999 Jeff Law (law@cygnus.com) + + * gcc-2.95 Released. + +Sun Jul 25 23:40:51 PDT 1999 Jeff Law (law@cygnus.com) + + * gcc-2.95 Released. + +Mon Jun 28 09:25:23 1999 Hans-Peter Nilsson + + * configure.in (post-target): Use "$(topsrcdir)", not "$(srcdir)/..". + +1999-05-20 Angela Marie Thomas + + * configure.in: Test for ${compiler_name}.exe as well. + +1999-05-17 Mark Kettenis + + * libioP.h: Only include libc-lock.h if _IO_MTSAFE_IO is defined. + +1999-05-12 Jason Merrill + + * configure.in (compiler_name): Don't do the skip-this-dir thing + if we're reconfiguring. + +1999-04-29 Nathan Sidwell + + * streambuf.h (ios::~ios): Use operator delete[] to remove _arrays. + +Mon Apr 12 19:22:44 1999 Mumit Khan + + * filedoalloc.c (_POSIX_SOURCE): Remove definition. + * fileops.c (_POSIX_SOURCE): Likewise. + * iopopen.c (_POSIX_SOURCE): Likewise. + * procbuf.cc (_POSIX_SOURCE): Likewise. + * libioP.h (_POSIX_SOURCE): And define it here. + * stdiostream.cc: Include libioP.h before others. + +Fri Apr 2 15:11:58 1999 H.J. Lu (hjl@gnu.org) + + * libio/configure.in (gxx_include_dir): Handle it. + * libio/Makefile.in: Likewise. + +Wed Mar 24 22:36:45 1999 Mumit Khan + + * configure.in (EXEEXT): Define. + (compiler_name): Use. + +1999-03-24 Alexandre Oliva -Mon Nov 23 09:44:26 1998 Richard Henderson + * gen-params (CONFIG_NM): `test ... -o ...' is not portable. - * configure.in: Append mh-ppcpic and mh-elfalphapic as appropriate. +Thu Mar 11 01:07:55 1999 Franz Sirl + + * configure.in: Cleanup and add mh-*pic handling for arm, powerpc + +Fri Mar 5 01:15:15 1999 H.J. Lu (hjl@gnu.org) + + * config/linuxlibc1.mt (MT_CFLAGS): Add -D_G_STDIO_USES_LIBIO + -D_G_HAVE_WEAK_SYMBOL. + + * genops.c: Add the proper weak alias if _G_STDIO_USES_LIBIO + and _G_HAVE_WEAK_SYMBOL are defined. + * iofclose.c: Likewise. + * iofeof.c: Likewise. + * ioferror.c: Likewise. + * iogetc.c: Likewise. + * ioputc.c: Likewise. + * iovsprintf.c: Likewise. + * iovsscanf.c: Likewise. + +Sun Feb 28 22:39:17 1999 Geoffrey Noer + + * configure.in: Check cygwin*, not cygwin32*. + +Wed Feb 10 09:25:48 1999 Mumit Khan + + * gen-params (VTABLE_LABEL_PREFIX): Handle windows32. + +Wed Feb 3 22:05:41 1999 H.J. Lu (hjl@gnu.org) + Jeffrey A Law (law@cygnus.com) + + * Makefile.in (iostream.list): Remove dependency on + stamp-picdir. + ($(LIBIOSTREAM_DEP)): Depend on stamp-picdir. + ($(LIBIO_FILES)): Similarly. + + * config.shared (all): Make $(PICDIR) concurrent. + +1998-11-26 Manfred Hollstein + + * configure.in (compiler_name): Add check to detect if this + language's compiler has been built. + +1998-10-12 Alexandre Oliva + + * config.shared (depend.new): Delete libc-lock.h from + dependencies, and fix _G_config.h -> $(_G_CONFIG_H) rule. + * depend: Rebuilt. + +Sun Oct 11 01:51:42 1998 Jeffrey A Law (law@cygnus.com) + + * config.shared (depend.new): Fix typo. + * depend: Rebuilt. + +1998-09-09 Manfred Hollstein + + * configure.in (INSTALLDIR): Fix comment about changing INSTALLDIR's + value; don't change its value if --enable-version-specific-runtime-libs + has been specified. + +Wed Sep 2 21:05:39 1998 H.J. Lu (hjl@gnu.org) + + * configure.in: Fix INSTALLDIR replacement for cross-compile. + +Sun Aug 30 22:27:02 1998 Lutz Wohlrab + + * dbz/Makefile.in: Avoid assumptions about "tr" behaves when + LANG is set to something other than English. + +Sun Aug 30 22:17:00 1998 H.J. Lu (hjl@gnu.org) + + * config.shared: Set libsubdir. 1998-08-25 14:34 Ulrich Drepper * libio/iogetline.c (_IO_getline_info): Don't read anything for N == 0. Patch by HJ Lu. +1998-08-23 Mark Mitchell + + * iomanip.h: Use __extension__ for `extern' explicit template + instantiations. + 1998-08-17 Ulrich Drepper * strfile.h: Define __PMT if not already defined. diff --git a/contrib/libio/Makefile.in b/contrib/libio/Makefile.in index 724372a..1d4123b 100644 --- a/contrib/libio/Makefile.in +++ b/contrib/libio/Makefile.in @@ -22,6 +22,7 @@ VERSION = 2.8.0 _G_CONFIG_H=_G_config.h tooldir = $(exec_prefix)/$(target) INSTALLDIR = $(libdir) +gxx_include_dir=${includedir}/g++ IO_OBJECTS = filedoalloc.o floatconv.o genops.o fileops.o \ iovfprintf.o \ @@ -88,9 +89,13 @@ test: test.o libio.a tpipe: tpipe.o libio.a $(CC) $(CFLAGS) -o tpipe tpipe.o libio.a -iostream.list: stamp-picdir $(_G_CONFIG_H) $(LIBIOSTREAM_DEP) +iostream.list: $(_G_CONFIG_H) $(LIBIOSTREAM_DEP) @echo "$(LIBIOSTREAM_USE)"> iostream.list +# The "pic" subdir must be created before we can put any object +# files into it. +$(LIBIOSTREAM_DEP) $(LIBIO_OBJECTS): stamp-picdir + stmp-stdio: @rootme=`pwd`/ ; export rootme; cd stdio ; \ $(MAKE) $(FLAGS_TO_PASS) stdio.list diff --git a/contrib/libio/config.shared b/contrib/libio/config.shared index 011263a..6cda566 100644 --- a/contrib/libio/config.shared +++ b/contrib/libio/config.shared @@ -13,7 +13,8 @@ # # You should have received a copy of the GNU General Public License # along with GNU CC; see the file COPYING. If not, write to -# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +# the Free Software Foundation, 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. */ # File descriptor usage: # 1: All macros which need to be re-definable by any target fragments @@ -79,6 +80,7 @@ echo "exec_prefix = ${exec_prefix-'${prefix}'}" echo 'bindir = $(exec_prefix)/bin' echo 'libdir = $(exec_prefix)/lib' +echo 'libsubdir = $(libdir)/gcc-lib/$(target_alias)/$(gcc_version)' echo 'datadir = $(prefix)/lib' echo 'mandir = $(prefix)/man' @@ -179,13 +181,14 @@ if [ -z "${ALL}" ] ; then fi fi -ALL='$(PICDIR)'" ${ALL}" - echo >&2 "all: ${ALL} multi-all" if [ "${SUBDIRS}" != "" ] ; then echo >&2 ' @rootme=`pwd`/; export rootme; \' echo >&2 ' $(MAKE) "DODIRS=$(SUBDIRS)" DO=all $(FLAGS_TO_PASS) subdir_do' fi +if [ "${LIBDIR}" = "yes" ]; then + echo >&2 "${ALL} "'multi-all: $(PICDIR)' +fi echo >&2 '.PHONY: all' echo >&2 '' @@ -473,8 +476,8 @@ depend.new: >depend.new $(CXX) -M $(CXXINCLUDES) $(DEPEND_SOURCES) \ | sed -e 's|$(srcdir)/|$$(srcdir)/|g' \ - -e 's| [^ ]_G_config.h| $$(_G_CONFIG_H)|g \ - -e 's| /[^ ]*||g' \ + -e 's| [^ ]*_G_config.h| $$(_G_CONFIG_H)|g' \ + -e 's| /[^ ]*||g' -e 's| libc-lock\.h||' \ -e '/^[ ]*\\$$/d' -e 's/^[ ]*$$//' \ | sed -e 's|$$(srcdir)/[.][.]|$$(srcdir)/$$(MULTISRCTOP)..|g' \ -e 's|$$(srcdir)/\([^/]*[.]c\)|\1|' \ diff --git a/contrib/libio/configure.in b/contrib/libio/configure.in index 5cb091d..ac49429 100644 --- a/contrib/libio/configure.in +++ b/contrib/libio/configure.in @@ -2,6 +2,25 @@ # necessary for a configure script to process the program in # this directory. For more information, look at ../configure. +# If the language specific compiler does not exist, but the "gcc" directory +# does, we do not build anything. Note, $r is set by the top-level Makefile. +# Note that when we look for the compiler, we search both with and without +# extension to handle cross and canadian cross builds. +# Note that if $norecursion is set we're being called from config.status, +# so don't check for the compiler; we might be doing a make clean. +compiler_name=cc1plus +rm -f skip-this-dir +if test -n "$r" && [ -z "$norecursion" ] ; then + if test -d "$r"/gcc; then + if test -f "$r"/gcc/$compiler_name \ + || test -f "$r"/gcc/$compiler_name.exe; then + true + else + echo "rm -f multilib.out" > skip-this-dir + fi + fi +fi + if [ "${srcdir}" = "." ] ; then if [ "${with_target_subdir}" != "." ] ; then topsrcdir=${with_multisrctop}../.. @@ -53,15 +72,13 @@ esac if [ "${shared}" = "yes" ]; then case "${target}" in - hppa*-*) frags="${frags} ../../config/mh-papic" ;; - i[3456]86-*) frags="${frags} ../../config/mh-x86pic" ;; - alpha*-*-linux*) frags="${frags} ../../config/mh-elfalphapic" ;; - - # There doesn't seem to be a simpler way to say all-ppc except AIX - *-*-aix*) ;; - powerpc*-* | ppc*-*) frags="${frags} ../../config/mh-ppcpic" ;; - - *) frags="${frags} ../../config/mh-${target_cpu}pic" ;; + alpha*-*-linux*) frags="${frags} ../../config/mh-elfalphapic" ;; + arm*-*-*) frags="${frags} ../../config/mh-armpic" ;; + hppa*-*-*) frags="${frags} ../../config/mh-papic" ;; + i[3456]86-*-*) frags="${frags} ../../config/mh-x86pic" ;; + powerpc*-*-aix*) ;; + powerpc*-*-*) frags="${frags} ../../config/mh-ppcpic" ;; + *-*-*) frags="${frags} ../../config/mh-${target_cpu}pic" ;; esac fi @@ -120,7 +137,7 @@ LIBDIR=yes TO_TOPDIR=../ ALL='$(_G_CONFIG_H) libio.a libiostream.a iostream.list' case "${target}" in - *-*-cygwin32*) + *-*-cygwin*) XCINCLUDES='-I. -I$(srcdir) -I$(srcdir)/../winsup/include' XCXXINCLUDES='-I. -I$(srcdir) -I$(srcdir)/../winsup/include' ;; @@ -140,15 +157,43 @@ fi # post-target: -# If cross-compiling, don't build gperf or the utils. They -# will get built by the target compiler, which is confusing. -# We cannot test the installation. We install in $(tooldir). +# If cross-compiling, we install in $(tooldir)/lib or in $(libsubdir) +# depending on --enable-version-specific-runtime-libs. if [ -n "${with_cross_host}" ] ; then rm -f Makefile.tem sed \ - -e 's|INSTALLDIR.*=.*$|INSTALLDIR = $(tooldir)/lib|' \ + -e 's|\(^[ ]*INSTALLDIR[ ]*=[ ]*\)\$(libdir)|\1$(tooldir)/lib|' \ Makefile >Makefile.tem mv -f Makefile.tem Makefile fi . ${topsrcdir}/config-ml.in + +gxx_include_dir= +# Specify the g++ header file directory +# Check whether --with-gxx-include-dir or --without-gxx-include-dir was given. +if test "${with_gxx_include_dir+set}" = set; then + withval="$with_gxx_include_dir" + case "${withval}" in + yes) + echo "configure.in: error: bad value ${withval} given for g++ include directory" 1>&2 + exit 1 + ;; + no) ;; + *) gxx_include_dir=$with_gxx_include_dir ;; + esac +fi + +if test x${gxx_include_dir} = x; then + if test x${enable_version_specific_runtime_libs} = xyes; then + gxx_include_dir='${libsubdir}/include/g++' + else + . ${topsrcdir}/config.if + gxx_include_dir='${prefix}/include/g++'-${libstdcxx_interface} + fi +fi + +rm -f Makefile.tem +sed -e "s%^gxx_include_dir[ ]*=.*$%gxx_include_dir=${gxx_include_dir}%" \ + Makefile >Makefile.tem +mv -f Makefile.tem Makefile diff --git a/contrib/libio/dbz/Makefile.in b/contrib/libio/dbz/Makefile.in index 6d6dc28..0fd9564 100644 --- a/contrib/libio/dbz/Makefile.in +++ b/contrib/libio/dbz/Makefile.in @@ -168,7 +168,7 @@ stamp-r5: stamp-r4 stamp-r6: stamp-r5 : try it without tags, case-insensitive, with case perversions ./rdbz -E 1000 -0 -p '0 b 1' dbase2 - tr '[A-M][n-z]' '[a-m][N-Z]' dbase.ick + tr 'ABCDEFGHIJKLMnopqrstuvwxyz' 'abcdefghijklmNOPQRSTUVWXYZ' dbase.ick ./rdbz -E 1000 -x dbase2 dbase.ick >dbase.temp cmp dbase.used dbase.temp rm -f dbase.temp dbase.ick diff --git a/contrib/libio/depend b/contrib/libio/depend index b7335fd..15888c4 100644 --- a/contrib/libio/depend +++ b/contrib/libio/depend @@ -26,7 +26,7 @@ editbuf.o: editbuf.cc \ $(srcdir)/editbuf.h \ $(srcdir)/fstream.h \ $(srcdir)/iostream.h \ - $(srcdir)/streambuf.h + $(srcdir)/streambuf.h filebuf.o: filebuf.cc \ $(srcdir)/iostreamP.h \ $(srcdir)/streambuf.h \ @@ -85,13 +85,13 @@ isscan.o: isscan.cc \ $(srcdir)/iolibio.h \ $(srcdir)/libio.h $(_G_CONFIG_H) \ $(srcdir)/iostream.h \ - $(srcdir)/streambuf.h + $(srcdir)/streambuf.h osform.o: osform.cc \ $(srcdir)/libioP.h \ $(srcdir)/iolibio.h \ $(srcdir)/libio.h $(_G_CONFIG_H) \ $(srcdir)/iostream.h \ - $(srcdir)/streambuf.h + $(srcdir)/streambuf.h parsestream.o: parsestream.cc \ $(srcdir)/libioP.h \ $(srcdir)/iolibio.h \ @@ -117,7 +117,7 @@ sbform.o: sbform.cc \ $(srcdir)/libioP.h \ $(srcdir)/iolibio.h \ $(srcdir)/libio.h $(_G_CONFIG_H) \ - $(srcdir)/streambuf.h + $(srcdir)/streambuf.h sbgetline.o: sbgetline.cc \ $(srcdir)/libioP.h \ $(srcdir)/iolibio.h \ @@ -127,7 +127,7 @@ sbscan.o: sbscan.cc \ $(srcdir)/libioP.h \ $(srcdir)/iolibio.h \ $(srcdir)/libio.h $(_G_CONFIG_H) \ - $(srcdir)/streambuf.h + $(srcdir)/streambuf.h stdiostream.o: stdiostream.cc \ $(srcdir)/stdiostream.h \ $(srcdir)/iostream.h \ @@ -138,7 +138,10 @@ stdiostream.o: stdiostream.cc \ stdstrbufs.o: stdstrbufs.cc \ $(srcdir)/libioP.h \ $(srcdir)/iolibio.h \ - $(srcdir)/libio.h $(_G_CONFIG_H) + $(srcdir)/libio.h $(_G_CONFIG_H) \ + $(srcdir)/stdiostream.h \ + $(srcdir)/iostream.h \ + $(srcdir)/streambuf.h stdstreams.o: stdstreams.cc \ $(srcdir)/libioP.h \ $(srcdir)/iolibio.h \ @@ -197,10 +200,22 @@ iofdopen.o: iofdopen.c \ $(srcdir)/libioP.h \ $(srcdir)/iolibio.h \ $(srcdir)/libio.h $(_G_CONFIG_H) +iofeof.o: iofeof.c \ + $(srcdir)/libioP.h \ + $(srcdir)/iolibio.h \ + $(srcdir)/libio.h $(_G_CONFIG_H) +ioferror.o: ioferror.c \ + $(srcdir)/libioP.h \ + $(srcdir)/iolibio.h \ + $(srcdir)/libio.h $(_G_CONFIG_H) iofflush.o: iofflush.c \ $(srcdir)/libioP.h \ $(srcdir)/iolibio.h \ $(srcdir)/libio.h $(_G_CONFIG_H) +iofflush_u.o: iofflush_u.c \ + $(srcdir)/libioP.h \ + $(srcdir)/iolibio.h \ + $(srcdir)/libio.h $(_G_CONFIG_H) iofgetpos.o: iofgetpos.c \ $(srcdir)/libioP.h \ $(srcdir)/iolibio.h \ @@ -241,6 +256,10 @@ iofwrite.o: iofwrite.c \ $(srcdir)/libioP.h \ $(srcdir)/iolibio.h \ $(srcdir)/libio.h $(_G_CONFIG_H) +iogetc.o: iogetc.c \ + $(srcdir)/libioP.h \ + $(srcdir)/iolibio.h \ + $(srcdir)/libio.h $(_G_CONFIG_H) iogetdelim.o: iogetdelim.c \ $(srcdir)/libioP.h \ $(srcdir)/iolibio.h \ @@ -277,6 +296,10 @@ ioprintf.o: ioprintf.c \ $(srcdir)/libioP.h \ $(srcdir)/iolibio.h \ $(srcdir)/libio.h $(_G_CONFIG_H) +ioputc.o: ioputc.c \ + $(srcdir)/libioP.h \ + $(srcdir)/iolibio.h \ + $(srcdir)/libio.h $(_G_CONFIG_H) ioputs.o: ioputs.c \ $(srcdir)/libioP.h \ $(srcdir)/iolibio.h \ @@ -341,6 +364,10 @@ outfloat.o: outfloat.c \ $(srcdir)/libioP.h \ $(srcdir)/iolibio.h \ $(srcdir)/libio.h $(_G_CONFIG_H) +peekc.o: peekc.c \ + $(srcdir)/libioP.h \ + $(srcdir)/iolibio.h \ + $(srcdir)/libio.h $(_G_CONFIG_H) stdfiles.o: stdfiles.c \ $(srcdir)/libioP.h \ $(srcdir)/iolibio.h \ diff --git a/contrib/libio/filedoalloc.c b/contrib/libio/filedoalloc.c index 5c62280..52b5544 100644 --- a/contrib/libio/filedoalloc.c +++ b/contrib/libio/filedoalloc.c @@ -42,9 +42,6 @@ /* Modified for GNU iostream by Per Bothner 1991, 1992. */ -#ifndef _POSIX_SOURCE -# define _POSIX_SOURCE -#endif #include "libioP.h" #include #include diff --git a/contrib/libio/fileops.c b/contrib/libio/fileops.c index c440634..54e13d3 100644 --- a/contrib/libio/fileops.c +++ b/contrib/libio/fileops.c @@ -25,9 +25,6 @@ General Public License. */ -#ifndef _POSIX_SOURCE -# define _POSIX_SOURCE -#endif #include "libioP.h" #include #include diff --git a/contrib/libio/gen-params b/contrib/libio/gen-params index 37ee742..afb8f3b 100755 --- a/contrib/libio/gen-params +++ b/contrib/libio/gen-params @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright (C) 1992, 1993, 1994 Free Software Foundation +# Copyright (C) 1992, 1993, 1994, 1997, 1998, 1999 Free Software Foundation # # This file is part of the GNU IO Library. This library is free # software; you can redistribute it and/or modify it under the @@ -72,8 +72,9 @@ fi # This program is used to test if the compiler prepends '_' before identifiers. # It is also used to check the g++ uses '$' or '.' various places. -if test -z "${NAMES_HAVE_UNDERSCORE}" -o -z "${DOLLAR_IN_LABEL}" \ - -o -z "${VTABLE_LABEL_PREFIX}"; then +if test -z "${NAMES_HAVE_UNDERSCORE}" \ + || test -z "${DOLLAR_IN_LABEL}" \ + || test -z "${VTABLE_LABEL_PREFIX}"; then cat >dummy.h <>dummy.out # Now we get rid of the <>, and any other junk on the nm output line. # (We get rid of in case nm included debugging output for - # class filebuf itself.) Finally, we select the first line of - # the result, and hope that's what we wanted! - vtab_name=`${SED} -n -e '//d' -e 's/^.*<\(.*\)>.*$/\1/p' \ + # class filebuf itself.) On windows32, we also need to delete the + # unique sections (.data$_vt$*), otherwise we get the wrong result. + # Finally, we select the first line of the result, and hope that's + # what we wanted! + vtab_name=`${SED} -n -e '//d' \ + -e '/\.data[$_.]<_vt\$7filebuf>/d' \ + -e 's/^.*<\(.*\)>.*$/\1/p' \ ; -extern template class smanip; +__extension__ extern template class smanip; +__extension__ extern template class smanip; #endif template @@ -81,10 +81,14 @@ inline ostream& operator<<(ostream& o, const smanip& m) { (*m._f)(o, m._a); return o;} #ifdef __GNUG__ -extern template istream& operator>>(istream&, const smanip&); -extern template istream& operator>>(istream&, const smanip&); -extern template ostream& operator<<(ostream&, const smanip&); -extern template ostream& operator<<(ostream&, const smanip&); +__extension__ extern +template istream& operator>>(istream&, const smanip&); +__extension__ extern +template istream& operator>>(istream&, const smanip&); +__extension__ extern +template ostream& operator<<(ostream&, const smanip&); +__extension__ extern +template ostream& operator<<(ostream&, const smanip&); #endif //----------------------------------------------------------------------------- diff --git a/contrib/libio/iopopen.c b/contrib/libio/iopopen.c index 59d4fc3..58f9749 100644 --- a/contrib/libio/iopopen.c +++ b/contrib/libio/iopopen.c @@ -24,9 +24,6 @@ other reasons why the executable file might be covered by the GNU General Public License. */ -#ifndef _POSIX_SOURCE -# define _POSIX_SOURCE -#endif #include "libioP.h" #if _IO_HAVE_SYS_WAIT #include diff --git a/contrib/libio/iostream.cc b/contrib/libio/iostream.cc index 4b1d9d8..4b75fca 100644 --- a/contrib/libio/iostream.cc +++ b/contrib/libio/iostream.cc @@ -71,6 +71,8 @@ int skip_ws(streambuf* sb) istream& istream::get(char& c) { if (ipfx1()) { + _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, + _strbuf); int ch = _strbuf->sbumpc(); if (ch == EOF) { set(ios::eofbit|ios::failbit); @@ -80,6 +82,8 @@ istream& istream::get(char& c) c = (char)ch; _gcount = 1; } + isfx(); + _IO_cleanup_region_end (0); } else _gcount = 0; @@ -102,10 +106,12 @@ istream& istream::ignore(int n /* = 1 */, int delim /* = EOF */) { _gcount = 0; if (ipfx1()) { + _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, + _strbuf); register streambuf* sb = _strbuf; if (delim == EOF) { _gcount = sb->ignore(n); - return *this; + goto unlock; } for (;;) { #if 0 @@ -122,6 +128,9 @@ istream& istream::ignore(int n /* = 1 */, int delim /* = EOF */) if (ch == delim) break; } + unlock: + isfx(); + _IO_cleanup_region_end (0); } return *this; } @@ -129,9 +138,13 @@ istream& istream::ignore(int n /* = 1 */, int delim /* = EOF */) istream& istream::read(char *s, streamsize n) { if (ipfx1()) { + _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, + _strbuf); _gcount = _strbuf->sgetn(s, n); if (_gcount != n) set(ios::failbit|ios::eofbit); + isfx(); + _IO_cleanup_region_end (0); } else _gcount = 0; @@ -184,11 +197,15 @@ streampos istream::tellg() istream& istream::operator>>(char& c) { if (ipfx0()) { + _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, + _strbuf); int ch = _strbuf->sbumpc(); if (ch == EOF) set(ios::eofbit|ios::failbit); else c = (char)ch; + isfx(); + _IO_cleanup_region_end (0); } return *this; } @@ -200,6 +217,8 @@ istream::operator>> (char* ptr) int w = width(0); if (ipfx0()) { + _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, + _strbuf); register streambuf* sb = _strbuf; for (;;) { @@ -219,6 +238,8 @@ istream::operator>> (char* ptr) } if (p == ptr) set(ios::failbit); + isfx(); + _IO_cleanup_region_end (0); } *p = '\0'; return *this; @@ -234,6 +255,9 @@ static int read_int(istream& stream, unsigned LONGEST& val, int& neg) { if (!stream.ipfx0()) return 0; + int retval; + _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, + stream._strbuf); register streambuf* sb = stream.rdbuf(); int base = 10; int ndigits = 0; @@ -254,7 +278,7 @@ static int read_int(istream& stream, unsigned LONGEST& val, int& neg) ch = sb->sbumpc(); if (ch == EOF) { val = 0; - return 1; + goto unlock; } if (ch == 'x' || ch == 'X') { base = 16; @@ -290,19 +314,26 @@ static int read_int(istream& stream, unsigned LONGEST& val, int& neg) if (ndigits == 0) goto fail; else - return 1; + goto unlock; } ndigits++; val = base * val + digit; ch = sb->sbumpc(); } - return 1; + unlock: + retval = 1; + goto out; fail: stream.set(ios::failbit); - return 0; + retval = 0; + goto out; eof_fail: stream.set(ios::failbit|ios::eofbit); - return 0; + retval = 0; + out: + stream.isfx(); + _IO_cleanup_region_end (0); + return retval; } #define READ_INT(TYPE) \ @@ -334,6 +365,8 @@ istream& istream::operator>>(long double& x) { if (ipfx0()) { + _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, + _strbuf); #if _G_HAVE_LONG_DOUBLE_IO scan("%Lg", &x); #else @@ -341,6 +374,8 @@ istream& istream::operator>>(long double& x) scan("%lg", &y); x = y; #endif + isfx(); + _IO_cleanup_region_end (0); } return *this; } @@ -348,20 +383,34 @@ istream& istream::operator>>(long double& x) istream& istream::operator>>(double& x) { if (ipfx0()) + { + _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, + _strbuf); scan("%lg", &x); + isfx(); + _IO_cleanup_region_end (0); + } return *this; } istream& istream::operator>>(float& x) { if (ipfx0()) + { + _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, + _strbuf); scan("%g", &x); + isfx(); + _IO_cleanup_region_end (0); + } return *this; } istream& istream::operator>>(register streambuf* sbuf) { if (ipfx0()) { + _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, + _strbuf); register streambuf* inbuf = rdbuf(); // FIXME: Should optimize! for (;;) { @@ -375,6 +424,8 @@ istream& istream::operator>>(register streambuf* sbuf) break; } } + isfx(); + _IO_cleanup_region_end (0); } return *this; } @@ -789,8 +840,8 @@ ostream& ostream::operator<<(const char *s) if (flags() & ios::left && padding > 0) // Left adjustment. if (_IO_padn(sbuf, fill_char, padding) != padding) set(ios::badbit); - osfx(); failed: + osfx(); _IO_cleanup_region_end (0); } return *this; diff --git a/contrib/libio/iostream.h b/contrib/libio/iostream.h index f3de363..19fbf8a 100644 --- a/contrib/libio/iostream.h +++ b/contrib/libio/iostream.h @@ -173,6 +173,7 @@ protected: int get() { if (!ipfx1()) return EOF; else { int ch = _strbuf->sbumpc(); if (ch == EOF) set(ios::eofbit); + isfx(); return ch; } } int peek(); diff --git a/contrib/libio/isgetline.cc b/contrib/libio/isgetline.cc index 02b3492..5e48a00 100644 --- a/contrib/libio/isgetline.cc +++ b/contrib/libio/isgetline.cc @@ -37,6 +37,8 @@ istream& istream::getline(char* buf, int len, char delim) int ch; if (ipfx1()) { + _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, + _strbuf); streambuf *sb = rdbuf(); _gcount = _IO_getline_info(sb, buf, len - 1, delim, -1, &ch); if (ch != EOF) @@ -48,6 +50,8 @@ istream& istream::getline(char* buf, int len, char delim) set(ios::failbit); sb->sungetc(); // Leave delimiter unread. } + isfx(); + _IO_cleanup_region_end (0); } else ch = EOF; @@ -67,11 +71,15 @@ istream& istream::get(char* buf, int len, char delim) } if (ipfx1()) { + _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, + _strbuf); streambuf *sbuf = rdbuf(); int ch; _gcount = _IO_getline_info(sbuf, buf, len - 1, delim, -1, &ch); if (_gcount == 0 && ch == EOF) set(ios::failbit|ios::eofbit); + isfx(); + _IO_cleanup_region_end (0); } buf[_gcount] = '\0'; return *this; @@ -123,6 +131,8 @@ char *_sb_readline (streambuf *sb, long& total, char terminator) istream& istream::gets(char **s, char delim /* = '\n' */) { if (ipfx1()) { + _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, + _strbuf); long size = 0; streambuf *sb = rdbuf(); *s = _sb_readline (sb, size, delim); @@ -132,6 +142,8 @@ istream& istream::gets(char **s, char delim /* = '\n' */) if (_gcount == 0) set(ios::failbit); } + isfx(); + _IO_cleanup_region_end (0); } else { _gcount = 0; diff --git a/contrib/libio/isgetsb.cc b/contrib/libio/isgetsb.cc index 55617e6..655c972 100644 --- a/contrib/libio/isgetsb.cc +++ b/contrib/libio/isgetsb.cc @@ -31,6 +31,8 @@ istream& istream::get(streambuf& sb, char delim /* = '\n' */) _gcount = 0; if (ipfx1()) { + _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, + _strbuf); register streambuf* isb = rdbuf(); for (;;) { @@ -54,6 +56,8 @@ istream& istream::get(streambuf& sb, char delim /* = '\n' */) if (delimp != NULL) break; } + isfx(); + _IO_cleanup_region_end (0); } return *this; } diff --git a/contrib/libio/isscan.cc b/contrib/libio/isscan.cc index 64d4bc6..977559c 100644 --- a/contrib/libio/isscan.cc +++ b/contrib/libio/isscan.cc @@ -29,10 +29,14 @@ the executable file might be covered by the GNU General Public License. */ istream& istream::scan(const char *format ...) { if (ipfx0()) { + _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, + _strbuf); va_list ap; va_start(ap, format); _strbuf->vscan(format, ap, this); va_end(ap); + isfx(); + _IO_cleanup_region_end (0); } return *this; } @@ -40,6 +44,12 @@ istream& istream::scan(const char *format ...) istream& istream::vscan(const char *format, _IO_va_list args) { if (ipfx0()) + { + _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, + _strbuf); _strbuf->vscan(format, args, this); + isfx(); + _IO_cleanup_region_end (0); + } return *this; } diff --git a/contrib/libio/libioP.h b/contrib/libio/libioP.h index d41c466..629e4fd 100644 --- a/contrib/libio/libioP.h +++ b/contrib/libio/libioP.h @@ -23,18 +23,25 @@ other reasons why the executable file might be covered by the GNU General Public License. */ +#ifndef _POSIX_SOURCE +# define _POSIX_SOURCE +#endif + #include #ifndef __set_errno # define __set_errno(Val) errno = (Val) #endif -#if defined __GLIBC__ && __GLIBC__ >= 2 -# if __GLIBC_MINOR__ > 0 -# include + +#ifdef _IO_MTSAFE_IO +# if defined __GLIBC__ && __GLIBC__ >= 2 +# if __GLIBC_MINOR__ > 0 +# include +# else +# include +# endif # else -# include -# endif -#else /*# include */ +# endif #endif #include "iolibio.h" diff --git a/contrib/libio/procbuf.cc b/contrib/libio/procbuf.cc index 1c79ce4..eb6d50e 100644 --- a/contrib/libio/procbuf.cc +++ b/contrib/libio/procbuf.cc @@ -28,7 +28,6 @@ the executable file might be covered by the GNU General Public License. */ #pragma implementation #endif -#define _POSIX_SOURCE #include "libioP.h" #include "procbuf.h" diff --git a/contrib/libio/stdio/ChangeLog b/contrib/libio/stdio/ChangeLog index 1e2975d..e4a185f 100644 --- a/contrib/libio/stdio/ChangeLog +++ b/contrib/libio/stdio/ChangeLog @@ -1,6 +1,14 @@ -Sun Mar 14 02:38:07 PST 1999 Jeff Law (law@cygnus.com) +Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com) - * egcs-1.1.2 Released. + * gcc-2.95.1 Released. + +Wed Jul 28 21:39:31 PDT 1999 Jeff Law (law@cygnus.com) + + * gcc-2.95 Released. + +Sun Jul 25 23:40:51 PDT 1999 Jeff Law (law@cygnus.com) + + * gcc-2.95 Released. 1997-09-04 16:11 Ulrich Drepper diff --git a/contrib/libio/stdiostream.cc b/contrib/libio/stdiostream.cc index bc9bef0..ee0907b 100644 --- a/contrib/libio/stdiostream.cc +++ b/contrib/libio/stdiostream.cc @@ -28,8 +28,8 @@ the executable file might be covered by the GNU General Public License. */ #pragma implementation #endif -#include #include "libioP.h" +#include // A stdiobuf is "tied" to a FILE object (as used by the stdio package). // Thus a stdiobuf is always synchronized with the corresponding FILE, diff --git a/contrib/libio/streambuf.h b/contrib/libio/streambuf.h index bc734bc..8785d96 100644 --- a/contrib/libio/streambuf.h +++ b/contrib/libio/streambuf.h @@ -130,7 +130,7 @@ class ios : public _ios_fields { typedef __fmtflags fmtflags; typedef int iostate; typedef int openmode; - typedef int streamsize; + typedef _IO_ssize_t streamsize; enum io_state { goodbit = _IOS_GOOD, eofbit = _IOS_EOF, @@ -482,7 +482,9 @@ inline ios::~ios() { #ifndef _IO_NEW_STREAMS if (!(_flags & (unsigned int)ios::dont_close)) delete rdbuf(); #endif - if (_arrays) delete [] _arrays; + // It is safe to use naked operator delete[] as we know elements have no + // dtor, and g++ does not add a new[] cookie for such cases. + operator delete[] (_arrays); } } // extern "C++" #endif /* _STREAMBUF_H */ diff --git a/contrib/libio/tests/ChangeLog b/contrib/libio/tests/ChangeLog index 1ea7bb1..324137d 100644 --- a/contrib/libio/tests/ChangeLog +++ b/contrib/libio/tests/ChangeLog @@ -1,6 +1,14 @@ -Sun Mar 14 02:38:07 PST 1999 Jeff Law (law@cygnus.com) +Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com) - * egcs-1.1.2 Released. + * gcc-2.95.1 Released. + +Wed Jul 28 21:39:31 PDT 1999 Jeff Law (law@cygnus.com) + + * gcc-2.95 Released. + +Sun Jul 25 23:40:51 PDT 1999 Jeff Law (law@cygnus.com) + + * gcc-2.95 Released. 1997-10-31 Brendan Kehoe diff --git a/contrib/libio/tests/Makefile.in b/contrib/libio/tests/Makefile.in index f93b300..b70639a 100644 --- a/contrib/libio/tests/Makefile.in +++ b/contrib/libio/tests/Makefile.in @@ -13,7 +13,8 @@ # # You should have received a copy of the GNU General Public License # along with GNU CC; see the file COPYING. If not, write to -# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +# the Free Software Foundation, 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. */ srcdir = . diff --git a/contrib/libio/testsuite/ChangeLog b/contrib/libio/testsuite/ChangeLog index c7c1fcf..497b141 100644 --- a/contrib/libio/testsuite/ChangeLog +++ b/contrib/libio/testsuite/ChangeLog @@ -1,12 +1,29 @@ -Sun Mar 14 02:38:07 PST 1999 Jeff Law (law@cygnus.com) +Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com) - * egcs-1.1.2 Released. + * gcc-2.95.1 Released. + +Wed Jul 28 21:39:31 PDT 1999 Jeff Law (law@cygnus.com) + + * gcc-2.95 Released. + +Sun Jul 25 23:40:51 PDT 1999 Jeff Law (law@cygnus.com) + + * gcc-2.95 Released. + +Wed Nov 25 01:00:07 1998 Marc Espie + + * Makefile.in (just-check): Ignore errors. Sat Jun 27 23:59:35 1998 Carlo Wood * lib/libio.exp (test_libio): Reset ld_library_path before appending the same path(s) again. +Tue Jun 9 11:23:42 1998 Gavin Koch + + * Makefile.in (EXPECT) : Look for "expect" in the correct + place. + Sat Sep 6 00:49:31 1997 Brendan Kehoe * lib/libio.exp (test_libio): Lose -L.. before -lio, may as well diff --git a/contrib/libio/testsuite/Makefile.in b/contrib/libio/testsuite/Makefile.in index 7546524..d1795d0 100644 --- a/contrib/libio/testsuite/Makefile.in +++ b/contrib/libio/testsuite/Makefile.in @@ -13,7 +13,8 @@ # # You should have received a copy of the GNU General Public License # along with GNU CC; see the file COPYING. If not, write to -# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +# the Free Software Foundation, 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. */ srcdir = libio.tests @@ -23,8 +24,8 @@ CXXFLAGS = -g CC = gcc CXX = gcc -EXPECT = `if [ -f $${rootme}/../../expect/expect ] ; then \ - echo $${rootme}/../../expect/expect ; \ +EXPECT = `if [ -f $${rootme}/../../../expect/expect ] ; then \ + echo $${rootme}/../../../expect/expect ; \ else echo expect ; fi` RUNTEST = $(RUNTEST_FOR_TARGET) @@ -80,10 +81,10 @@ site.exp: ./config.status Makefile -@rm -f ./tmp? just-check: site.exp - rootme=`pwd`; export rootme; \ + -rootme=`pwd`; export rootme; \ srcdir=${srcdir} ; export srcdir ; \ EXPECT=${EXPECT} ; export EXPECT ; \ - if [ -f $${rootme}/../../expect/expect ] ; then \ + if [ -f $${rootme}/../../../expect/expect ] ; then \ TCL_LIBRARY=$${srcdir}/../../tcl/library ; \ export TCL_LIBRARY ; fi ; \ $(RUNTEST) $(RUNTESTFLAGS) -- cgit v1.1