mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-12-03 00:34:21 +08:00
libio changes from Ulrich to help "old linux" systems.
libio changes from Ulrich to help "old linux" systems. See ChangeLog for details. From-SVN: r15741
This commit is contained in:
parent
a7cc7f29f4
commit
d604f4c6a3
@ -1,3 +1,43 @@
|
||||
Fri Sep 26 20:56:41 1997 Ulrich Drepper <drepper@rtl.cygnus.com>
|
||||
|
||||
Based on a patch by H.J. Lu (hjl@gnu.ai.mit.edu).
|
||||
|
||||
* Makefile.in (STDIO_OBJECTS): New. Defined as stdfiles.o.
|
||||
(LIBIO_OBJECTS): Add $(STDIO_OBJECTS).
|
||||
(PICFLAG): New, empty. moved to here from config.shared.
|
||||
|
||||
* config.shared (DISTCLEAN): Add target-mkfrag.
|
||||
(PICFLAG): Removed.
|
||||
|
||||
* configure.in (*-linux-gnulibc1): Remove warning.
|
||||
(*-linux-gnu): Use linux.mt mtsafe.mt.
|
||||
(alpha-*-linux*): Use mh-elfalphapic.
|
||||
|
||||
* gen-params (_G_ullong): Also check unsigned long long int.
|
||||
(_G_llong): Also check long long int.
|
||||
|
||||
* libio.h (_IO_lock_t): Add support for the Linux libc 5.
|
||||
(_IO_peekc): Defined as _IO_peekc_unlocked if _IO_MTSAFE_IO
|
||||
is not defined.
|
||||
|
||||
* iostream.cc (__cvt_double): Fix a typo in declaration.
|
||||
(info): Use expr != 0 to initialize the bit fields. Don't
|
||||
initialize "extra" for the Linux libc 5.
|
||||
|
||||
* streambuf.h (_G_NEED_STDARG_H): Changed from _IO_NEED_STDARG_H.
|
||||
|
||||
* config/linux.mt (STDIO_OBJECTS): New, empty.
|
||||
(MT_CFLAGS): Removed.
|
||||
|
||||
* config/linuxlibc1.mt: Rewrite. it's identical to linux.mt but
|
||||
IO_OBJECTS mentions files not in early libc5 versions.
|
||||
|
||||
* config/mtsafe.mt: New.
|
||||
|
||||
* dbz/Makefile.in (check): Support make -j.
|
||||
|
||||
* tests/tFile.cc (tempfile): Fix a typo.
|
||||
|
||||
Fri Sep 19 11:52:25 1997 Jim Wilson <wilson@cygnus.com>
|
||||
|
||||
* Makefile.in (LIBIO_OBJECTS): Depend on _G_CONFIG_H.
|
||||
|
@ -32,6 +32,8 @@ IO_OBJECTS = filedoalloc.o floatconv.o genops.o fileops.o \
|
||||
outfloat.o strops.o iofclose.o iopopen.o ioungetc.o peekc.o iogetc.o \
|
||||
ioputc.o iofeof.o ioferror.o
|
||||
|
||||
STDIO_OBJECTS = stdfiles.o
|
||||
|
||||
# These emulate stdio functionality, but with a different name (_IO_ungetc
|
||||
# instead of ungetc), and using _IO_FILE instead of FILE.
|
||||
# They are not needed for C++ iostream, nor stdio, though some stdio
|
||||
@ -56,13 +58,16 @@ IOSTREAM_OBJECTS = builtinbuf.o filebuf.o fstream.o \
|
||||
OSPRIM_OBJECTS = ioprims.o iostrerror.o cleanup.o
|
||||
|
||||
LIBIOSTREAM_OBJECTS = $(IO_OBJECTS) $(IOSTREAM_OBJECTS) $(OSPRIM_OBJECTS)
|
||||
LIBIO_OBJECTS = $(IO_OBJECTS) $(STDIO_WRAP_OBJECTS) $(OSPRIM_OBJECTS) stdfiles.o
|
||||
LIBIO_OBJECTS = $(IO_OBJECTS) $(STDIO_WRAP_OBJECTS) $(OSPRIM_OBJECTS) \
|
||||
$(STDIO_OBJECTS)
|
||||
|
||||
LIBIOSTREAM_DEP = $(LIBIOSTREAM_OBJECTS)
|
||||
LIBIOSTREAM_USE = $(LIBIOSTREAM_OBJECTS)
|
||||
|
||||
USER_INCLUDES = *.h
|
||||
|
||||
PICFLAG =
|
||||
|
||||
#### package, host, target, and site dependent Makefile fragments come in here.
|
||||
##
|
||||
|
||||
|
@ -140,7 +140,6 @@ echo 'CFLAGS = -g'
|
||||
echo 'CXXFLAGS = -g -O'
|
||||
echo 'LIBCFLAGS = $(CFLAGS)'
|
||||
echo 'LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates'
|
||||
echo 'PICFLAG ='
|
||||
if [ "${LIBDIR}" = "yes" ]; then
|
||||
echo 'PICDIR = stamp-picdir'
|
||||
else
|
||||
@ -395,7 +394,7 @@ echo '# clean rules'
|
||||
|
||||
MOSTLYCLEAN="${MOSTLYCLEAN-*.o pic stamp-picdir core ${EXTRA_MOSTLYCLEAN}} `if test -n "${TOUCH_ON_COMPILE}"; then echo stamp; else true; fi`"
|
||||
CLEAN="${CLEAN-${TARGETPROG} ${TARGETLIB}}"
|
||||
DISTCLEAN="${DISTCLEAN-config.status Makefile *~ Make.pack multilib.out ${EXTRA_DISTCLEAN-}}"
|
||||
DISTCLEAN="${DISTCLEAN-config.status Makefile *~ Make.pack target-mkfrag multilib.out ${EXTRA_DISTCLEAN-}}"
|
||||
REALCLEAN="${REALCLEAN-depend *.info*}"
|
||||
|
||||
|
||||
|
@ -19,12 +19,10 @@ LIBIO_INCLUDE=
|
||||
IO_OBJECTS=
|
||||
STDIO_WRAP_OBJECTS=
|
||||
OSPRIM_OBJECTS=
|
||||
STDIO_OBJECTS=
|
||||
|
||||
# We have the rest in /usr/include.
|
||||
USER_INCLUDES=PlotFile.h SFile.h builtinbuf.h editbuf.h fstream.h \
|
||||
indstream.h iomanip.h iostream.h istream.h ostream.h \
|
||||
parsestream.h pfstream.h procbuf.h stdiostream.h stream.h \
|
||||
streambuf.h strfile.h strstream.h
|
||||
|
||||
# tell we want the mt-safe version
|
||||
MT_CFLAGS = -D_IO_MTSAFE_IO
|
||||
|
@ -1,26 +1,28 @@
|
||||
# Since the Linux C library has libio, we have to be very careful.
|
||||
# Use the libio which comes with the local libc.
|
||||
|
||||
# By default, we build libio and use it. If someone wants to not
|
||||
# build it, let them go to extra work. The reason is that the user
|
||||
# may want a newer, bug fixed libio, also on a linux 1.0.8 system
|
||||
# things just won't build with the bottom section uncommented.
|
||||
# That is where we keep the g++ header files.
|
||||
gxx_includedir =$(prefix)/include/g++
|
||||
|
||||
# Comment this out to avoid including the stdio functions in libiostream.a:
|
||||
LIBIOSTREAM_OBJECTS = $(IO_OBJECTS) $(IOSTREAM_OBJECTS) $(STDIO_WRAP_OBJECTS) $(OSPRIM_OBJECTS)
|
||||
LIBIOSTREAM_DEP = $(LIBIOSTREAM_OBJECTS) stmp-stdio
|
||||
LIBIOSTREAM_USE = $(LIBIOSTREAM_OBJECTS) `cat stdio.list`
|
||||
# LIBIOSTREAM_OBJECTS = $(IO_OBJECTS) $(IOSTREAM_OBJECTS) $(STDIO_WRAP_OBJECTS) $(OSPRIM_OBJECTS)
|
||||
# LIBIOSTREAM_DEP = $(LIBIOSTREAM_OBJECTS) stdio.list
|
||||
# LIBIOSTREAM_USE = $(LIBIOSTREAM_OBJECTS) `cat stdio.list`
|
||||
|
||||
# Comment the above and uncomment the below to use the code in the Linux libc:
|
||||
# We have _G_config.h in /usr/include.
|
||||
# _G_CONFIG_H=
|
||||
_G_CONFIG_H=
|
||||
|
||||
# We must not see the libio.h file from this library.
|
||||
LIBIO_INCLUDE=
|
||||
|
||||
# We have those in libc.a.
|
||||
# IO_OBJECTS=
|
||||
# STDIO_WRAP_OBJECTS=
|
||||
# OSPRIM_OBJECTS=
|
||||
IO_OBJECTS=iogetc.o ioputc.o iofeof.o ioferror.o
|
||||
STDIO_WRAP_OBJECTS=
|
||||
OSPRIM_OBJECTS=
|
||||
STDIO_OBJECTS=
|
||||
|
||||
# We have the rest in /usr/include.
|
||||
# USER_INCLUDES=PlotFile.h SFile.h builtinbuf.h editbuf.h fstream.h \
|
||||
# indstream.h iomanip.h iostream.h istream.h ostream.h \
|
||||
# parsestream.h pfstream.h procbuf.h stdiostream.h stream.h \
|
||||
# streambuf.h strfile.h strstream.h
|
||||
USER_INCLUDES=PlotFile.h SFile.h builtinbuf.h editbuf.h fstream.h \
|
||||
indstream.h iomanip.h iostream.h istream.h ostream.h \
|
||||
parsestream.h pfstream.h procbuf.h stdiostream.h stream.h \
|
||||
streambuf.h strfile.h strstream.h
|
||||
|
@ -17,12 +17,8 @@ frags=
|
||||
case "${target}" in
|
||||
*-hpux*) frags=hpux.mt ;;
|
||||
*-linux-gnulibc1)
|
||||
echo "WARNING: The I/O implementation in FSF libg++ 2.8.x is not"
|
||||
echo " compatible with Linux libc through 5.2.x."
|
||||
echo " See libg++/README for more information."
|
||||
echo " YOU ARE ON YOUR OWN!"
|
||||
frags=linuxlibc1.mt ;;
|
||||
*-linux-gnu) frags=linux.mt ;;
|
||||
*-linux-gnu) frags="linux.mt mtsafe.mt" ;;
|
||||
*-sco3.2v[45]*) frags=sco4.mt ;;
|
||||
*-isc*) frags=isc.mt ;;
|
||||
*-netware*) frags=netware.mt ;;
|
||||
@ -40,6 +36,8 @@ 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" ;;
|
||||
*) frags="${frags} ../../config/mh-${target_cpu}pic" ;;
|
||||
esac
|
||||
fi
|
||||
|
@ -37,7 +37,8 @@ install:
|
||||
install-info:
|
||||
info:
|
||||
|
||||
check: r rclean
|
||||
check: r
|
||||
$(MAKE) rclean
|
||||
|
||||
bininstall: dbz
|
||||
cp dbz $(NEWSBIN)
|
||||
|
@ -288,6 +288,8 @@ for TYPE in dev_t clock_t fpos_t gid_t ino_t mode_t nlink_t off_t pid_t ptrdiff_
|
||||
for iteration in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do
|
||||
# Search dummy.out for a typedef for X*$t.
|
||||
sed_script="
|
||||
s/unsigned long long int/_G_ullong/g
|
||||
s/long long int/_G_llong/g
|
||||
s/unsigned long long/_G_ullong/g
|
||||
s/long long/_G_llong/g
|
||||
/.*typedef *\\(.*[^ ]\\) *X*$t *;.*/{s||\1|;p;q;}
|
||||
|
@ -44,7 +44,7 @@ extern "C" int __printf_fp (_IO_FILE *, const struct printf_info *,
|
||||
#include "floatio.h"
|
||||
# ifndef _IO_USE_DTOA
|
||||
int __cvt_double(double number, register int prec, int flags, int *signp,
|
||||
int fmtch, char *startp, char *endp)
|
||||
int fmtch, char *startp, char *endp);
|
||||
# endif
|
||||
#endif
|
||||
|
||||
@ -623,14 +623,17 @@ ostream& ostream::operator<<(double n)
|
||||
is_long_double: 0,
|
||||
is_short: 0,
|
||||
is_long: 0,
|
||||
alt: flags() & ios::showpoint,
|
||||
alt: (flags() & ios::showpoint) != 0,
|
||||
space: 0,
|
||||
left: ios::left,
|
||||
showsign: flags() & ios::showpos,
|
||||
left: (flags() & ios::left) != 0,
|
||||
showsign: (flags() & ios::showpos) != 0,
|
||||
group: 0,
|
||||
pad: fill(),
|
||||
extra: 0};
|
||||
const void *ptr = &n;
|
||||
pad: fill()
|
||||
#if defined __GLIBC__ && __GLIBC__ >= 2
|
||||
, extra: 0
|
||||
#endif
|
||||
};
|
||||
const void *ptr = (const void *) &n;
|
||||
if (__printf_fp (rdbuf(), &info, &ptr) < 0)
|
||||
set(ios::badbit|ios::failbit);
|
||||
}
|
||||
@ -723,15 +726,18 @@ ostream& ostream::operator<<(long double n)
|
||||
is_long_double: 1,
|
||||
is_short: 0,
|
||||
is_long: 0,
|
||||
alt: flags() & ios::showpoint,
|
||||
alt: (flags() & ios::showpoint) != 0,
|
||||
space: 0,
|
||||
left: ios::left,
|
||||
showsign: flags() & ios::showpos,
|
||||
left: (flags() & ios::left) != 0,
|
||||
showsign: (flags() & ios::showpos) != 0,
|
||||
group: 0,
|
||||
pad: fill(),
|
||||
extra: 0};
|
||||
pad: fill()
|
||||
#if defined __GLIBC__ && __GLIBC__ >= 2
|
||||
, extra: 0
|
||||
#endif
|
||||
};
|
||||
|
||||
const void *ptr = &n;
|
||||
const void *ptr = (const void *) &n;
|
||||
|
||||
if (__printf_fp (rdbuf(), &info, &ptr) < 0)
|
||||
set (ios::badbit|ios::failbit);
|
||||
|
@ -75,12 +75,6 @@
|
||||
# define _IO_USE_DTOA 1
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
# ifdef _IO_NEED_STDARG_H
|
||||
# include <stdarg.h>
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef EOF
|
||||
# define EOF (-1)
|
||||
#endif
|
||||
@ -155,9 +149,24 @@ struct _IO_jump_t; struct _IO_FILE;
|
||||
|
||||
/* Handle lock. */
|
||||
#ifdef _IO_MTSAFE_IO
|
||||
# include <bits/stdio-lock.h>
|
||||
# if defined __GLIBC__ && __GLIBC__ >= 2
|
||||
# include <bits/stdio-lock.h>
|
||||
# define _IO_LOCK_T _IO_lock_t *
|
||||
# else
|
||||
/*# include <comthread.h>*/
|
||||
# endif
|
||||
#else
|
||||
/* XXX This will go away as soon as comthread is finished. */
|
||||
# ifdef __linux__
|
||||
struct _IO_lock_t {
|
||||
void *ptr;
|
||||
short int field1;
|
||||
short int field2;
|
||||
};
|
||||
# define _IO_LOCK_T struct _IO_lock_t
|
||||
# else
|
||||
typedef void _IO_lock_t;
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
@ -217,7 +226,7 @@ struct _IO_FILE {
|
||||
|
||||
/* char* _save_gptr; char* _save_egptr; */
|
||||
|
||||
_IO_lock_t *_lock;
|
||||
_IO_LOCK_T _lock;
|
||||
};
|
||||
|
||||
#ifndef __cplusplus
|
||||
@ -289,7 +298,10 @@ extern void _IO_flockfile __P ((_IO_FILE *));
|
||||
extern void _IO_funlockfile __P ((_IO_FILE *));
|
||||
extern int _IO_ftrylockfile __P ((_IO_FILE *));
|
||||
|
||||
#ifndef _IO_MTSAFE_IO
|
||||
#ifdef _IO_MTSAFE_IO
|
||||
# define _IO_peekc(_fp) _IO_peekc_locked (_fp)
|
||||
#else
|
||||
# define _IO_peekc(_fp) _IO_peekc_unlocked (_fp)
|
||||
# define _IO_flockfile(_fp) /**/
|
||||
# define _IO_funlockfile(_fp) /**/
|
||||
# define _IO_ftrylockfile(_fp) /**/
|
||||
@ -297,7 +309,6 @@ extern int _IO_ftrylockfile __P ((_IO_FILE *));
|
||||
# define _IO_cleanup_region_end(_Doit) /**/
|
||||
#endif /* !_IO_MTSAFE_IO */
|
||||
|
||||
#define _IO_peekc(_fp) _IO_peekc_locked (_fp)
|
||||
|
||||
extern int _IO_vfscanf __P ((_IO_FILE *, const char *, _IO_va_list, int *));
|
||||
extern int _IO_vfprintf __P ((_IO_FILE *, const char *, _IO_va_list));
|
||||
|
@ -36,7 +36,7 @@ extern "C" {
|
||||
#include <libio.h>
|
||||
}
|
||||
//#include <_G_config.h>
|
||||
#ifdef _IO_NEED_STDARG_H
|
||||
#ifdef _G_NEED_STDARG_H
|
||||
#include <stdarg.h>
|
||||
#endif
|
||||
#ifndef _IO_va_list
|
||||
|
@ -225,7 +225,7 @@ void t4()
|
||||
tf.remove();
|
||||
#else
|
||||
tf.close();
|
||||
unlink("tempfile");
|
||||
unlink(tempfile);
|
||||
#endif
|
||||
assert(!tf.is_open());
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user