diff -uNr /usr1/rtems/work-tools/original/newlib-1.8.2/newlib/ChangeLog newlib-1.8.2/newlib/ChangeLog
--- /usr1/rtems/work-tools/original/newlib-1.8.2/newlib/ChangeLog	Sat Nov 20 15:47:43 1999
+++ newlib-1.8.2/newlib/ChangeLog	Tue Jun  6 09:48:30 2000
@@ -1,3 +1,14 @@
+Mon Jan 31 13:37:20 CST 2000  Jay Kulpinski <jskulpin@eng01.gdds.com>
+
+	* libc/stdio/vfprintf.c: Minor modification to avoid requiring
+	a floating point register unless really printing a floating
+	point number.
+
+Mon Jan 31 09:36:56 CST 2000  Keith Outwater <vac4050@cae597.rsc.raytheon.com>
+
+	* libc/include/sys/errno.h: Added comments on many error numbers.
+	* libc/tring/strerror.c: Added some more strings.
+
 Tue Nov 09 12:19:21 1999  Jeff Johnston <jjohnstn@cygnus.com>
 
 	* libc/machine/i386/strchr.S: Fixed alignment test.
diff -uNr /usr1/rtems/work-tools/original/newlib-1.8.2/newlib/Makefile.am newlib-1.8.2/newlib/Makefile.am
--- /usr1/rtems/work-tools/original/newlib-1.8.2/newlib/Makefile.am	Thu Jun  3 16:34:54 1999
+++ newlib-1.8.2/newlib/Makefile.am	Tue Jun  6 09:48:30 2000
@@ -19,10 +19,6 @@
 	"CFLAGS=$(CFLAGS)" \
 	"CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
 	"CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \
-	"INSTALL=$(INSTALL)" \
-	"INSTALL_DATA=$(INSTALL_DATA)" \
-	"INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
-	"INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
 	"LDFLAGS=$(LDFLAGS)" \
 	"LIBCFLAGS=$(LIBCFLAGS)" \
 	"LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \
@@ -49,6 +45,8 @@
 	"RANLIB=$(RANLIB)" \
 	"DESTDIR=$(DESTDIR)"
 
+FLAGS_TO_PASS=$(AM_MAKEFLAGS)
+
 if HAVE_DOC
 DOCDIR = doc
 endif
@@ -109,6 +107,21 @@
 stmp-targ-include: config.status
 	-rm -rf targ-include stmp-targ-include
 	mkdir targ-include targ-include/sys targ-include/machine
+	-for i in $(srcdir)/libc/include/*.h; do \
+	    if [ -f $$i ]; then \
+	      cp $$i targ-include/`basename $$i`; \
+	    else true; fi ; \
+	  done
+	-for i in $(srcdir)/libc/include/sys/*.h; do \
+	    if [ -f $$i ]; then \
+	      cp $$i targ-include/sys/`basename $$i`; \
+	    else true; fi ; \
+	  done
+	-for i in $(srcdir)/libc/include/machine/*.h; do \
+	    if [ -f $$i ]; then \
+	      cp $$i targ-include/machine/`basename $$i`; \
+	    else true; fi ; \
+	  done
 	-for i in $(srcdir)/libc/machine/$(machine_dir)/machine/*.h; do \
 	    if [ -f $$i ]; then \
 	      cp $$i targ-include/machine/`basename $$i`; \
@@ -129,32 +142,35 @@
 CLEANFILES = targ-include stmp-targ-include
 
 install-data-local: install-toollibLIBRARIES
-	rm -f $(toollibdir)/libg.a
-	ln $(toollibdir)/libc.a $(toollibdir)/libg.a
+	rm -f $(DESTDIR)$(toollibdir)/libg.a
+	ln $(DESTDIR)$(toollibdir)/libc.a $(DESTDIR)$(toollibdir)/libg.a
 	$(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do
 	-if [ -z "$(MULTISUBDIR)" ]; then \
+	  $(mkinstalldirs) $(DESTDIR)$(tooldir)/include; \
 	  for i in $(srcdir)/libc/include/*.h; do \
-	    $(INSTALL_DATA) $$i $(tooldir)/include/`basename $$i`; \
+	    $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include; \
 	  done; \
+	  $(mkinstalldirs) $(DESTDIR)$(tooldir)/include/machine; \
 	  for i in $(srcdir)/libc/include/machine/*.h; do \
-	    $(INSTALL_DATA) $$i $(tooldir)/include/machine/`basename $$i`; \
+	    $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/machine; \
 	  done; \
 	  for i in $(srcdir)/libc/machine/$(machine_dir)/machine/*.h; do \
 	    if [ -f $$i ]; then \
-	      $(INSTALL_DATA) $$i $(tooldir)/include/machine/`basename $$i`; \
+	      $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/machine; \
 	    else true; fi ; \
 	  done; \
+	  $(mkinstalldirs) $(DESTDIR)$(tooldir)/include/sys; \
 	  for i in $(srcdir)/libc/include/sys/*.h; do \
-	    $(INSTALL_DATA) $$i $(tooldir)/include/sys/`basename $$i`; \
+	    $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/sys; \
 	  done; \
 	  for i in $(srcdir)/libc/sys/$(sys_dir)/sys/*.h; do \
 	    if [ -f $$i ]; then \
-	      $(INSTALL_DATA) $$i $(tooldir)/include/sys/`basename $$i`; \
+	      $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/sys; \
 	    else true; fi ; \
 	  done ; \
 	  for i in $(srcdir)/libc/sys/$(sys_dir)/include/*.h; do \
 	    if [ -f $$i ]; then \
-	      $(INSTALL_DATA) $$i $(tooldir)/include/`basename $$i`; \
+	      $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include; \
 	    else true; fi ; \
 	  done ; \
 	else true; fi
diff -uNr /usr1/rtems/work-tools/original/newlib-1.8.2/newlib/Makefile.in newlib-1.8.2/newlib/Makefile.in
--- /usr1/rtems/work-tools/original/newlib-1.8.2/newlib/Makefile.in	Sat Nov 20 15:55:32 1999
+++ newlib-1.8.2/newlib/Makefile.in	Tue Jun  6 09:48:30 2000
@@ -71,7 +71,7 @@
 NEWLIB_CFLAGS = @NEWLIB_CFLAGS@
 PACKAGE = @PACKAGE@
 RANLIB = @RANLIB@
-VERSION = 1.8.2
+VERSION = @VERSION@
 machine_dir = @machine_dir@
 newlib_basedir = @newlib_basedir@
 sys_dir = @sys_dir@
@@ -89,45 +89,12 @@
 # Work around what appears to be a GNU make bug handling MAKEFLAGS
 # values defined in terms of make variables, as is the case for CC and
 # friends when we are called from the top level Makefile.
-AM_MAKEFLAGS = \
-	"AR_FLAGS=$(AR_FLAGS)" \
-	"CC_FOR_BUILD=$(CC_FOR_BUILD)" \
-	"CFLAGS=$(CFLAGS)" \
-	"CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
-	"CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \
-	"INSTALL=$(INSTALL)" \
-	"INSTALL_DATA=$(INSTALL_DATA)" \
-	"INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
-	"INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
-	"LDFLAGS=$(LDFLAGS)" \
-	"LIBCFLAGS=$(LIBCFLAGS)" \
-	"LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \
-	"MAKE=$(MAKE)" \
-	"MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \
-	"PICFLAG=$(PICFLAG)" \
-	"PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \
-	"SHELL=$(SHELL)" \
-	"EXPECT=$(EXPECT)" \
-	"RUNTEST=$(RUNTEST)" \
-	"RUNTESTFLAGS=$(RUNTESTFLAGS)" \
-	"exec_prefix=$(exec_prefix)" \
-	"infodir=$(infodir)" \
-	"libdir=$(libdir)" \
-	"prefix=$(prefix)" \
-	"tooldir=$(tooldir)" \
-	"AR=$(AR)" \
-	"AS=$(AS)" \
-	"CC=$(CC)" \
-	"LD=$(LD)" \
-	"LIBCFLAGS=$(LIBCFLAGS)" \
-	"NM=$(NM)" \
-	"PICFLAG=$(PICFLAG)" \
-	"RANLIB=$(RANLIB)" \
-	"DESTDIR=$(DESTDIR)"
+AM_MAKEFLAGS =  	"AR_FLAGS=$(AR_FLAGS)" 	"CC_FOR_BUILD=$(CC_FOR_BUILD)" 	"CFLAGS=$(CFLAGS)" 	"CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" 	"CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" 	"LDFLAGS=$(LDFLAGS)" 	"LIBCFLAGS=$(LIBCFLAGS)" 	"LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" 	"MAKE=$(MAKE)" 	"MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" 	"PICFLAG=$(PICFLAG)" 	"PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" 	"SHELL=$(SHELL)" 	"EXPECT=$(EXPECT)" 	"RUNTEST=$(RUNTEST)" 	"RUNTESTFLAGS=$(RUNTESTFLAGS)" 	"exec_prefix=$(exec_prefix)" 	"infodir=$(infodir)" 	"libdir=$(libdir)" 	"prefix=$(prefix)" 	"tooldir=$(tooldir)" 	"AR=$(AR)" 	"AS=$(AS)" 	"CC=$(CC)" 	"LD=$(LD)" 	"LIBCFLAGS=$(LIBCFLAGS)" 	"NM=$(NM)" 	"PICFLAG=$(PICFLAG)" 	"RANLIB=$(RANLIB)" 	"DESTDIR=$(DESTDIR)"
 
 
-@HAVE_DOC_TRUE@DOCDIR = \
-@HAVE_DOC_TRUE@doc
+FLAGS_TO_PASS = $(AM_MAKEFLAGS)
+
+@HAVE_DOC_TRUE@DOCDIR = doc
 
 SUBDIRS = libc libm $(DOCDIR) .
 
@@ -143,13 +110,7 @@
 # The functions ldexp, frexp and modf are traditionally supplied in
 # both libc.a and libm.a.  We build them in libm.a and copy them over,
 # along with some required supporting routines.
-MATHOBJS_IN_LIBC = \
-	s_isinf.o sf_isinf.o \
-	s_isnan.o sf_isnan.o \
-	s_ldexp.o sf_ldexp.o \
-	s_frexp.o sf_frexp.o s_modf.o sf_modf.o \
-	s_scalbn.o sf_scalbn.o s_finite.o sf_finite.o \
-	s_copysign.o sf_copysign.o s_infconst.o
+MATHOBJS_IN_LIBC =  	s_isinf.o sf_isinf.o 	s_isnan.o sf_isnan.o 	s_ldexp.o sf_ldexp.o 	s_frexp.o sf_frexp.o s_modf.o sf_modf.o 	s_scalbn.o sf_scalbn.o s_finite.o sf_finite.o 	s_copysign.o sf_copysign.o s_infconst.o
 
 
 CLEANFILES = targ-include stmp-targ-include
@@ -545,6 +506,21 @@
 stmp-targ-include: config.status
 	-rm -rf targ-include stmp-targ-include
 	mkdir targ-include targ-include/sys targ-include/machine
+	-for i in $(srcdir)/libc/include/*.h; do \
+	    if [ -f $$i ]; then \
+	      cp $$i targ-include/`basename $$i`; \
+	    else true; fi ; \
+	  done
+	-for i in $(srcdir)/libc/include/sys/*.h; do \
+	    if [ -f $$i ]; then \
+	      cp $$i targ-include/sys/`basename $$i`; \
+	    else true; fi ; \
+	  done
+	-for i in $(srcdir)/libc/include/machine/*.h; do \
+	    if [ -f $$i ]; then \
+	      cp $$i targ-include/machine/`basename $$i`; \
+	    else true; fi ; \
+	  done
 	-for i in $(srcdir)/libc/machine/$(machine_dir)/machine/*.h; do \
 	    if [ -f $$i ]; then \
 	      cp $$i targ-include/machine/`basename $$i`; \
@@ -563,32 +539,35 @@
 	touch $@
 
 install-data-local: install-toollibLIBRARIES
-	rm -f $(toollibdir)/libg.a
-	ln $(toollibdir)/libc.a $(toollibdir)/libg.a
+	rm -f $(DESTDIR)$(toollibdir)/libg.a
+	ln $(DESTDIR)$(toollibdir)/libc.a $(DESTDIR)$(toollibdir)/libg.a
 	$(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do
 	-if [ -z "$(MULTISUBDIR)" ]; then \
+	  $(mkinstalldirs) $(DESTDIR)$(tooldir)/include; \
 	  for i in $(srcdir)/libc/include/*.h; do \
-	    $(INSTALL_DATA) $$i $(tooldir)/include/`basename $$i`; \
+	    $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include; \
 	  done; \
+	  $(mkinstalldirs) $(DESTDIR)$(tooldir)/include/machine; \
 	  for i in $(srcdir)/libc/include/machine/*.h; do \
-	    $(INSTALL_DATA) $$i $(tooldir)/include/machine/`basename $$i`; \
+	    $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/machine; \
 	  done; \
 	  for i in $(srcdir)/libc/machine/$(machine_dir)/machine/*.h; do \
 	    if [ -f $$i ]; then \
-	      $(INSTALL_DATA) $$i $(tooldir)/include/machine/`basename $$i`; \
+	      $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/machine; \
 	    else true; fi ; \
 	  done; \
+	  $(mkinstalldirs) $(DESTDIR)$(tooldir)/include/sys; \
 	  for i in $(srcdir)/libc/include/sys/*.h; do \
-	    $(INSTALL_DATA) $$i $(tooldir)/include/sys/`basename $$i`; \
+	    $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/sys; \
 	  done; \
 	  for i in $(srcdir)/libc/sys/$(sys_dir)/sys/*.h; do \
 	    if [ -f $$i ]; then \
-	      $(INSTALL_DATA) $$i $(tooldir)/include/sys/`basename $$i`; \
+	      $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/sys; \
 	    else true; fi ; \
 	  done ; \
 	  for i in $(srcdir)/libc/sys/$(sys_dir)/include/*.h; do \
 	    if [ -f $$i ]; then \
-	      $(INSTALL_DATA) $$i $(tooldir)/include/`basename $$i`; \
+	      $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include; \
 	    else true; fi ; \
 	  done ; \
 	else true; fi
diff -uNr /usr1/rtems/work-tools/original/newlib-1.8.2/newlib/configure.host newlib-1.8.2/newlib/configure.host
--- /usr1/rtems/work-tools/original/newlib-1.8.2/newlib/configure.host	Sat Nov 20 15:47:53 1999
+++ newlib-1.8.2/newlib/configure.host	Tue Jun  6 09:48:30 2000
@@ -152,15 +152,18 @@
 	;;
   v850)
 	machine_dir=v850
-	newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED -mv850 -mno-app-regs -msmall-sld"
+	#newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED -mv850 -mno-app-regs -msmall-sld"
+	newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED -mv850"
 	;;
   v850e)
 	machine_dir=v850
-	newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED -mv850 -mno-app-regs -msmall-sld"
+	#newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED -mv850 -mno-app-regs -msmall-sld"
+	newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED -mv850"
 	;;
   v850ea)
 	machine_dir=v850
-	newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED -mv850 -mno-app-regs -msmall-sld"
+	#newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED -mv850 -mno-app-regs -msmall-sld"
+	newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED -mv850"
 	;;
   w65*)
 	machine_dir=w65
diff -uNr /usr1/rtems/work-tools/original/newlib-1.8.2/newlib/libc/include/locale.h newlib-1.8.2/newlib/libc/include/locale.h
--- /usr1/rtems/work-tools/original/newlib-1.8.2/newlib/libc/include/locale.h	Wed May 11 11:26:04 1994
+++ newlib-1.8.2/newlib/libc/include/locale.h	Tue Jun  6 09:48:30 2000
@@ -13,7 +13,7 @@
 #include "_ansi.h"
 
 #ifndef NULL
-#define NULL    0L
+#define NULL    0
 #endif
 
 #define LC_ALL	    0
diff -uNr /usr1/rtems/work-tools/original/newlib-1.8.2/newlib/libc/include/sys/errno.h newlib-1.8.2/newlib/libc/include/sys/errno.h
--- /usr1/rtems/work-tools/original/newlib-1.8.2/newlib/libc/include/sys/errno.h	Sat Jan 30 01:38:37 1999
+++ newlib-1.8.2/newlib/libc/include/sys/errno.h	Tue Jun  6 09:48:30 2000
@@ -112,35 +112,35 @@
 #define EPFNOSUPPORT 96 /* Protocol family not supported */
 #define ECONNRESET 104  /* Connection reset by peer */
 #define ENOBUFS 105	/* No buffer space available */
-#define EAFNOSUPPORT 106
-#define EPROTOTYPE 107
-#define ENOTSOCK 108
-#define ENOPROTOOPT 109
-#define ESHUTDOWN 110
+#define EAFNOSUPPORT 106 /* Address family not supported by protocol family */
+#define EPROTOTYPE 107	/* Protocol wrong type for socket */
+#define ENOTSOCK 108	/* Socket operation on non-socket */
+#define ENOPROTOOPT 109	/* Protocol not available */
+#define ESHUTDOWN 110	/* Can't send after socket shutdown */
 #define ECONNREFUSED 111	/* Connection refused */
 #define EADDRINUSE 112		/* Address already in use */
-#define ECONNABORTED 113	/* Connection aborted */
-#define ENETUNREACH 114
-#define ENETDOWN 115
-#define ETIMEDOUT 116
-#define EHOSTDOWN 117
-#define EHOSTUNREACH 118
-#define EINPROGRESS 119
-#define EALREADY 120
-#define EDESTADDRREQ 121
-#define EMSGSIZE 122
-#define EPROTONOSUPPORT 123
-#define ESOCKTNOSUPPORT 124
-#define EADDRNOTAVAIL 125
+#define ECONNABORTED 113	/* Software caused connection abort */
+#define ENETUNREACH 114		/* Network is unreachable */
+#define ENETDOWN 115		/* Network interface is not configured */
+#define ETIMEDOUT 116		/* Connection timed out */
+#define EHOSTDOWN 117		/* Host is down */
+#define EHOSTUNREACH 118	/* Host is unreachable */
+#define EINPROGRESS 119		/* Connection already in progress */
+#define EALREADY 120		/* Socket already connected */
+#define EDESTADDRREQ 121	/* Destination address required */
+#define EMSGSIZE 122		/* Message too long */
+#define EPROTONOSUPPORT 123	/* Unknown protocol */
+#define ESOCKTNOSUPPORT 124	/* Socket type not supported */
+#define EADDRNOTAVAIL 125	/* Address not available */
 #define ENETRESET 126
-#define EISCONN 127
-#define ENOTCONN 128
+#define EISCONN 127		/* Socket is already connected */
+#define ENOTCONN 128		/* Socket is not connected */
 #define ETOOMANYREFS 129
 #define EPROCLIM 130
 #define EUSERS 131
 #define EDQUOT 132
 #define ESTALE 133
-#define ENOTSUP 134
+#define ENOTSUP 134		/* Not supported */
 #define ENOMEDIUM 135
 
 /* From cygwin32.  */
diff -uNr /usr1/rtems/work-tools/original/newlib-1.8.2/newlib/libc/include/sys/stat.h newlib-1.8.2/newlib/libc/include/sys/stat.h
--- /usr1/rtems/work-tools/original/newlib-1.8.2/newlib/libc/include/sys/stat.h	Thu Nov 18 16:34:25 1999
+++ newlib-1.8.2/newlib/libc/include/sys/stat.h	Tue Jun  6 09:48:30 2000
@@ -126,6 +126,7 @@
 
 #if defined(__rtems__)
 int	_EXFUN(mknod,( const char *_path, mode_t _mode, dev_t dev ));
+int	_EXFUN(lstat,( const char *__path, struct stat *__buf ));
 #endif
 
 /* Provide prototypes for most of the _<systemcall> names that are
diff -uNr /usr1/rtems/work-tools/original/newlib-1.8.2/newlib/libc/include/sys/types.h newlib-1.8.2/newlib/libc/include/sys/types.h
--- /usr1/rtems/work-tools/original/newlib-1.8.2/newlib/libc/include/sys/types.h	Mon May 17 21:02:37 1999
+++ newlib-1.8.2/newlib/libc/include/sys/types.h	Tue Jun  6 09:48:30 2000
@@ -164,7 +164,7 @@
 #  define	FD_SET(n, p)	((p)->fds_bits[(n)/NFDBITS] |= (1L << ((n) % NFDBITS)))
 #  define	FD_CLR(n, p)	((p)->fds_bits[(n)/NFDBITS] &= ~(1L << ((n) % NFDBITS)))
 #  define	FD_ISSET(n, p)	((p)->fds_bits[(n)/NFDBITS] & (1L << ((n) % NFDBITS)))
-#  define	FD_ZERO(p)	bzero((caddr_t)(p), sizeof (*(p)))
+#  define	FD_ZERO(p)	(void) memset((caddr_t)(p), 0, sizeof (*(p)))
 
 # endif	/* ! defined (_POSIX_SOURCE) && ! defined (_WINSOCK_H) */
 
diff -uNr /usr1/rtems/work-tools/original/newlib-1.8.2/newlib/libc/machine/i960/setjmp.S newlib-1.8.2/newlib/libc/machine/i960/setjmp.S
--- /usr1/rtems/work-tools/original/newlib-1.8.2/newlib/libc/machine/i960/setjmp.S	Thu Nov 18 16:34:25 1999
+++ newlib-1.8.2/newlib/libc/machine/i960/setjmp.S	Tue Jun  6 09:48:30 2000
@@ -35,7 +35,7 @@
 /******************************************************************************/
 	.file "setjmp.as"
 	.text
-	?* .link_pix */
+	/* .link_pix */
 
 	.align	4
 	.globl	_setjmp
diff -uNr /usr1/rtems/work-tools/original/newlib-1.8.2/newlib/libc/stdio/vfprintf.c newlib-1.8.2/newlib/libc/stdio/vfprintf.c
--- /usr1/rtems/work-tools/original/newlib-1.8.2/newlib/libc/stdio/vfprintf.c	Mon Jul  5 13:51:05 1999
+++ newlib-1.8.2/newlib/libc/stdio/vfprintf.c	Tue Jun  6 09:48:30 2000
@@ -300,7 +300,21 @@
 #ifdef FLOATING_POINT
 	char *decimal_point = localeconv()->decimal_point;
 	char softsign;		/* temporary negative sign for floats */
+	/*
+	 * Although it is natural to declare this double here, the 
+	 * declaration causes gcc to save FP registers even when not
+	 * printing an FP number.  This results in surprising use
+	 * of FP registers to print integers or strings on at least the
+	 * PowerPC.  A more proper solution would be to move FP printing
+	 * to another file, but this does seem to work.
+	 */
+#if 0
 	double _double;		/* double precision arguments %[eEfgG] */
+#else
+			        /* double precision arguments %[eEfgG] */
+	union { int i; double d; } _double_ = {0};
+#define _double (_double_.d)
+#endif
 	int expt;		/* integer value of exponent */
 	int expsize;		/* character count for expstr */
 	int ndig;		/* actual number of digits returned by cvt */
diff -uNr /usr1/rtems/work-tools/original/newlib-1.8.2/newlib/libc/stdlib/envlock.c newlib-1.8.2/newlib/libc/stdlib/envlock.c
--- /usr1/rtems/work-tools/original/newlib-1.8.2/newlib/libc/stdlib/envlock.c	Fri May 28 16:23:57 1999
+++ newlib-1.8.2/newlib/libc/stdlib/envlock.c	Tue Jun  6 09:48:30 2000
@@ -20,7 +20,7 @@
 	char *<[reent]>;
 
 DESCRIPTION
-The <<stenv>> family of routines call these functions when they need
+The <<setenv>> family of routines call these functions when they need
 to modify the environ variable.  The version of these routines supplied
 in the library does not do anything.  If multiple threads of execution
 can call <<setenv>>, or if <<setenv>> can be called reentrantly, then
diff -uNr /usr1/rtems/work-tools/original/newlib-1.8.2/newlib/libc/string/strerror.c newlib-1.8.2/newlib/libc/string/strerror.c
--- /usr1/rtems/work-tools/original/newlib-1.8.2/newlib/libc/string/strerror.c	Tue Sep  7 16:18:35 1999
+++ newlib-1.8.2/newlib/libc/string/strerror.c	Tue Jun  6 09:48:30 2000
@@ -37,12 +37,21 @@
 o EACCES
 Permission denied
 
+o EADDRINUSE
+Address already in use
+
 o EADV
 Advertise error
 
+o EAFNOSUPPORT
+Address family not supported by protocol family
+
 o EAGAIN
 No more processes
 
+o EALREADY
+Socket already connected
+
 o EBADF
 Bad file number
 
@@ -58,9 +67,18 @@
 o ECOMM
 Communication error
 
+o ECONNABORTED
+Software caused connection abort
+
+o ECONNREFUSED
+Connection refused
+
 o EDEADLK
 Deadlock
 
+o EDESTADDRREQ
+Destination address required
+
 o EEXIST
 File exists
 
@@ -73,9 +91,18 @@
 o EFBIG
 File too large
 
+o EHOSTDOWN
+Host is down
+
+o EHOSTUNREACH
+Host is unreachable
+
 o EIDRM
 Identifier removed
 
+o EINPROGRESS
+Connection already in progress
+
 o EINTR
 Interrupted system call
 
@@ -85,6 +112,9 @@
 o EIO
 I/O error
 
+o EISCONN
+Socket is already connected
+
 o EISDIR
 Is a directory
 
@@ -109,12 +139,21 @@
 o EMLINK
 Too many links
 
+o EMSGSIZE
+Message too long
+
 o EMULTIHOP
 Multihop attempted
 
 o ENAMETOOLONG
 File or path name too long
 
+o ENETDOWN
+Network interface not configured
+
+o ENETUNREACH
+Network is unreachable
+
 o ENFILE
 Too many open files in system
 
@@ -145,6 +184,9 @@
 o ENOPKG
 No package
 
+o ENOPROTOOPT
+Protocol not available
+
 o ENOSPC
 No space left on device
 
@@ -160,12 +202,21 @@
 o ENOTBLK
 Block device required
 
+o ENOTCONN
+Socket is not connected
+
 o ENOTDIR
 Not a directory
 
 o ENOTEMPTY
 Directory not empty
 
+o ENOTSOCK
+Socket operation on non-socket
+
+o ENOTSUP
+Not supported
+
 o ENOTTY
 Not a character device
 
@@ -181,6 +232,12 @@
 o EPROTO
 Protocol error
 
+o EPROTOTYPE
+Protocol wrong type for socket
+
+o EPROTONOSUPPORT
+Unknown protocol
+
 o ERANGE
 Result too large
 
@@ -190,6 +247,12 @@
 o EROFS
 Read-only file system
 
+o ESHUTDOWN
+Can't send after socket shutdown
+
+o ESOCKTNOSUPPORT
+Socket type not supported
+
 o ESPIPE
 Illegal seek
 
@@ -202,6 +265,9 @@
 o ETIME
 Stream ioctl timeout
 
+o ETIMEDOUT
+Connection timed out
+
 o ETXTBSY
 Text file busy
 
@@ -295,6 +361,11 @@
       error = "Exec format error";
       break;
 #endif
+#ifdef EALREADY
+    case EALREADY:
+      error = "Socket already connected";
+      break;
+#endif
 #ifdef EBADF
     case EBADF:
       error = "Bad file number";
@@ -305,6 +376,11 @@
       error = "No children";
       break;
 #endif
+#ifdef EDESTADDRREQ
+    case EDESTADDRREQ:
+      error = "Destination address required";
+      break;
+#endif
 #ifdef EAGAIN
     case EAGAIN:
       error = "No more processes";
@@ -355,6 +431,16 @@
       error = "Not a directory";
       break;
 #endif
+#ifdef EHOSTDOWN
+    case EHOSTDOWN:
+      error = "Host is down";
+      break;
+#endif
+#ifdef EINPROGRESS 
+    case EINPROGRESS:
+      error = "Connection already in progress";
+      break;
+#endif
 #ifdef EISDIR
     case EISDIR:
       error = "Is a directory";
@@ -365,6 +451,11 @@
       error = "Invalid argument";
       break;
 #endif
+#ifdef ENETDOWN
+    case ENETDOWN:
+      error = "Network interface is not configured";
+      break;
+#endif
 #ifdef ENFILE
     case ENFILE:
       error = "Too many open files in system";
@@ -390,11 +481,21 @@
       error = "File too large";
       break;
 #endif
+#ifdef EHOSTUNREACH
+    case EHOSTUNREACH:
+      error = "Host is unreachable";
+      break;
+#endif
 #ifdef ENOSPC
     case ENOSPC:
       error = "No space left on device";
       break;
 #endif
+#ifdef ENOTSUP
+    case ENOTSUP:
+      error = "Not supported";
+      break;
+#endif
 #ifdef ESPIPE
     case ESPIPE:
       error = "Illegal seek";
@@ -440,6 +541,11 @@
       error = "Deadlock";
       break;
 #endif
+#ifdef ENETUNREACH 
+    case  ENETUNREACH:
+      error = "Network is unreachable";
+      break;
+#endif
 #ifdef ENOLCK
     case ENOLCK:
       error = "No lock";
@@ -498,6 +604,11 @@
 #ifdef EPROTO
     case EPROTO:
       error = "Protocol error";
+      break;
+#endif
+#ifdef EPROTONOSUPPORT
+    case EPROTONOSUPPORT:
+      error = "Unknown protocol";
       break;
 #endif
 #ifdef EMULTIHOP
diff -uNr /usr1/rtems/work-tools/original/newlib-1.8.2/newlib/libc/sys/rtems/crt0.c newlib-1.8.2/newlib/libc/sys/rtems/crt0.c
--- /usr1/rtems/work-tools/original/newlib-1.8.2/newlib/libc/sys/rtems/crt0.c	Thu Nov 18 16:34:26 1999
+++ newlib-1.8.2/newlib/libc/sys/rtems/crt0.c	Tue Jun  6 09:48:30 2000
@@ -18,7 +18,18 @@
 void free() { ; }
 void abort() { ; }
 int raise() { return -1; }
- 
+
+/* gcc 2.8.1 implicitly can generate references to these for at
+ * least sparc-elf */
+#if (__GNUC__ == 2) && (__GNUC_MINOR__ == 8)
+strcmp() {}
+strcpy() {}
+strlen() {}
+memcmp() {}
+memcpy() {}
+memset() {}
+#endif
+
 /* The PowerPC expects certain symbols to be defined in the linker script. */
 
 #if defined(__PPC__)
diff -uNr /usr1/rtems/work-tools/original/newlib-1.8.2/newlib/libc/sys/rtems/include/pthread.h newlib-1.8.2/newlib/libc/sys/rtems/include/pthread.h
--- /usr1/rtems/work-tools/original/newlib-1.8.2/newlib/libc/sys/rtems/include/pthread.h	Wed Dec 31 18:00:00 1969
+++ newlib-1.8.2/newlib/libc/sys/rtems/include/pthread.h	Tue Jun  6 09:48:30 2000
@@ -0,0 +1,509 @@
+/*  pthread.h
+ *
+ *  $Id: pthread.h,v 1.7 1999/04/26 18:22:08 joel Exp $
+ */
+
+#ifndef __PTHREAD_h
+#define __PTHREAD_h
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <sys/features.h>
+
+#if defined(_POSIX_THREADS)
+
+#include <sys/types.h>
+#include <time.h>
+#include <sys/sched.h>
+
+/*
+ *  3.1.3 Register Fork Handlers, P1003.1c/Draft 10, P1003.1c/Draft 10, p. 27
+ *
+ *  RTEMS does not support processes, so we fall under this and do not 
+ *  provide this routine:
+ *
+ *  "Either the implementation shall support the pthread_atfork() function
+ *   as described above or the pthread_atfork() funciton shall not be 
+ *   provided."
+ */
+
+/*
+ *  11.3.1 Mutex Initialization Attributes, P1003.1c/Draft 10, p. 81
+ */
+
+int pthread_mutexattr_init(
+  pthread_mutexattr_t *attr
+);
+
+int pthread_mutexattr_destroy(
+  pthread_mutexattr_t *attr
+);
+
+int pthread_mutexattr_getpshared(
+  const pthread_mutexattr_t *attr,
+  int                       *pshared
+);
+
+int pthread_mutexattr_setpshared(
+  pthread_mutexattr_t *attr,
+  int                  pshared
+);
+
+/*
+ *  11.3.2 Initializing and Destroying a Mutex, P1003.1c/Draft 10, p. 87
+ */
+
+int pthread_mutex_init(
+  pthread_mutex_t           *mutex,
+  const pthread_mutexattr_t *attr
+);
+
+int pthread_mutex_destroy(
+  pthread_mutex_t           *mutex
+);
+
+/*
+ *  This is used to statically initialize a pthread_mutex_t. Example:
+ *
+ *  pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
+ */
+
+#define PTHREAD_MUTEX_INITIALIZER  ((pthread_mutex_t) 0xFFFFFFFF)
+
+/*
+ *  11.3.3 Locking and Unlocking a Mutex, P1003.1c/Draft 10, p. 93
+ *        
+ *  NOTE: P1003.4b/D8 adds pthread_mutex_timedlock(), p. 29
+ */
+
+int pthread_mutex_lock(
+  pthread_mutex_t           *mutex
+);
+
+int pthread_mutex_trylock(
+  pthread_mutex_t           *mutex
+);
+
+int pthread_mutex_unlock(
+  pthread_mutex_t           *mutex
+);
+
+#if defined(_POSIX_TIMEOUTS)
+
+int pthread_mutex_timedlock(
+  pthread_mutex_t       *mutex,
+  const struct timespec *timeout
+);
+
+#endif /* _POSIX_TIMEOUTS */
+
+/*
+ *  11.4.1 Condition Variable Initialization Attributes, 
+ *            P1003.1c/Draft 10, p. 96
+ */
+ 
+int pthread_condattr_init(
+  pthread_condattr_t *attr
+);
+ 
+int pthread_condattr_destroy(
+  pthread_condattr_t *attr
+);
+ 
+int pthread_condattr_getpshared(
+  const pthread_condattr_t *attr,
+  int                      *pshared
+);
+ 
+int pthread_condattr_setpshared(
+  pthread_condattr_t  *attr,
+  int                  pshared
+);
+ 
+/*
+ *  11.4.2 Initializing and Destroying a Condition Variable, 
+ *         P1003.1c/Draft 10, p. 87
+ */
+ 
+int pthread_cond_init(
+  pthread_cond_t           *cond,
+  const pthread_condattr_t *attr
+);
+ 
+int pthread_cond_destroy(
+  pthread_cond_t           *mutex
+);
+ 
+/*
+ *  This is used to statically initialize a pthread_cond_t. Example:
+ *
+ *  pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
+ */
+ 
+#define PTHREAD_COND_INITIALIZER  ((pthread_mutex_t) 0xFFFFFFFF)
+ 
+/*
+ *  11.4.3 Broadcasting and Signaling a Condition, P1003.1c/Draft 10, p. 101
+ */
+ 
+int pthread_cond_signal(
+  pthread_cond_t   *cond
+);
+ 
+int pthread_cond_broadcast(
+  pthread_cond_t   *cond
+);
+ 
+/*
+ *  11.4.4 Waiting on a Condition, P1003.1c/Draft 10, p. 105
+ */
+ 
+int pthread_cond_wait(
+  pthread_cond_t     *cond,
+  pthread_mutex_t    *mutex
+);
+ 
+int pthread_cond_timedwait(
+  pthread_cond_t        *cond,
+  pthread_mutex_t       *mutex,
+  const struct timespec *abstime
+);
+ 
+#if defined(_POSIX_THREAD_PRIORITY_SCHEDULING)
+
+/*
+ *  13.5.1 Thread Creation Scheduling Attributes, P1003.1c/Draft 10, p. 120
+ */
+
+int pthread_attr_setscope(
+  pthread_attr_t  *attr,
+  int              contentionscope
+);
+
+int pthread_attr_getscope(
+  const pthread_attr_t  *attr,
+  int                   *contentionscope
+);
+
+int pthread_attr_setinheritsched(
+  pthread_attr_t  *attr,
+  int              inheritsched
+);
+
+int pthread_attr_getinheritsched(
+  const pthread_attr_t  *attr,
+  int                   *inheritsched
+);
+
+int pthread_attr_setschedpolicy(
+  pthread_attr_t  *attr,
+  int              policy
+);
+
+int pthread_attr_getschedpolicy(
+  const pthread_attr_t  *attr,
+  int                   *policy
+);
+
+#endif /* defined(_POSIX_THREAD_PRIORITY_SCHEDULING) */
+
+int pthread_attr_setschedparam(
+  pthread_attr_t            *attr,
+  const struct sched_param  *param
+);
+
+int pthread_attr_getschedparam(
+  const pthread_attr_t  *attr,
+  struct sched_param    *param
+);
+
+#if defined(_POSIX_THREAD_PRIORITY_SCHEDULING)
+
+/*
+ *  13.5.2 Dynamic Thread Scheduling Parameters Access, 
+ *         P1003.1c/Draft 10, p. 124
+ */
+
+int pthread_getschedparam(
+  pthread_t           thread,
+  int                *policy,
+  struct sched_param *param
+);
+
+int pthread_setschedparam(
+  pthread_t           thread,
+  int                 policy,
+  struct sched_param *param
+);
+
+#endif /* defined(_POSIX_THREAD_PRIORITY_SCHEDULING) */
+
+#if defined(_POSIX_THREAD_PRIO_INHERIT) || defined(_POSIX_THREAD_PRIO_PROTECT)
+
+/*
+ *  13.6.1 Mutex Initialization Scheduling Attributes, P1003.1c/Draft 10, p. 128
+ */
+ 
+int pthread_mutexattr_setprotocol(
+  pthread_mutexattr_t   *attr,
+  int                    protocol
+);
+
+int pthread_mutexattr_getprotocol(
+  const pthread_mutexattr_t   *attr,
+  int                         *protocol
+);
+
+int pthread_mutexattr_setprioceiling(
+  pthread_mutexattr_t   *attr,
+  int                    prioceiling
+);
+
+int pthread_mutexattr_getprioceiling(
+  const pthread_mutexattr_t   *attr,
+  int                         *prioceiling
+);
+
+#endif /* _POSIX_THREAD_PRIO_INHERIT || _POSIX_THREAD_PRIO_PROTECT */
+
+#if defined(_POSIX_THREAD_PRIO_PROTECT)
+
+/*
+ *  13.6.2 Change the Priority Ceiling of a Mutex, P1003.1c/Draft 10, p. 131
+ */
+
+int pthread_mutex_setprioceiling(
+  pthread_mutex_t   *mutex,
+  int                prioceiling,
+  int               *old_ceiling
+);
+ 
+int pthread_mutex_getprioceiling(
+  pthread_mutex_t   *mutex,
+  int               *prioceiling
+);
+
+#endif /* _POSIX_THREAD_PRIO_PROTECT */
+
+/*
+ *  16.1.1 Thread Creation Attributes, P1003.1c/Draft 10, p, 140
+ */
+
+int pthread_attr_init(
+  pthread_attr_t  *attr
+);
+
+int pthread_attr_destroy(
+  pthread_attr_t  *attr
+);
+ 
+int pthread_attr_getstacksize(
+  const pthread_attr_t  *attr,
+  size_t                *stacksize
+);
+ 
+int pthread_attr_setstacksize(
+  pthread_attr_t  *attr,
+  size_t           stacksize
+);
+ 
+int pthread_attr_getstackaddr(
+  const pthread_attr_t   *attr,
+  void                  **stackaddr
+);
+ 
+int pthread_attr_setstackaddr(
+  pthread_attr_t  *attr,
+  void            *stackaddr
+);
+ 
+int pthread_attr_getdetachstate(
+  const pthread_attr_t  *attr,
+  int                   *detachstate
+);
+ 
+int pthread_attr_setdetachstate(
+  pthread_attr_t  *attr,
+  int              detachstate
+);
+
+/*
+ *  16.1.2 Thread Creation, P1003.1c/Draft 10, p. 144
+ */
+
+int pthread_create(
+  pthread_t              *thread,
+  const pthread_attr_t   *attr,
+  void                 *(*start_routine)( void * ),
+  void                   *arg
+);
+
+/*
+ *  16.1.3 Wait for Thread Termination, P1003.1c/Draft 10, p. 147
+ */
+
+int pthread_join(
+  pthread_t   thread,
+  void      **value_ptr
+);
+
+/*
+ *  16.1.4 Detaching a Thread, P1003.1c/Draft 10, p. 149
+ */
+
+int pthread_detach(
+  pthread_t   thread
+);
+
+/*
+ * 16.1.5.1 Thread Termination, p1003.1c/Draft 10, p. 150
+ */
+
+void pthread_exit(
+  void  *value_ptr
+);
+
+/*
+ * 16.1.6 Get Calling Thread's ID, p1003.1c/Draft 10, p. XXX
+ */
+
+pthread_t pthread_self( void );
+
+/*
+ *  16.1.7 Compare Thread IDs, p1003.1c/Draft 10, p. 153
+ */
+
+int pthread_equal( 
+  pthread_t  t1,
+  pthread_t  t2
+);
+
+/*
+ *  16.1.8 Dynamic Package Initialization
+ */
+
+/*
+ *  This is used to statically initialize a pthread_once_t. Example:
+ *
+ *  pthread_once_t once = PTHREAD_ONCE_INIT;
+ *
+ *  NOTE:  This is named inconsistently -- it should be INITIALIZER.
+ */
+ 
+#define PTHREAD_ONCE_INIT  { 1, 0 }  /* is initialized and not run */
+ 
+int pthread_once(
+  pthread_once_t  *once_control,
+  void           (*init_routine)(void)
+);
+
+/*
+ *  17.1.1 Thread-Specific Data Key Create, P1003.1c/Draft 10, p. 163
+ */
+
+int pthread_key_create(
+  pthread_key_t  *key,
+  void          (*destructor)( void * )
+);
+
+/*
+ *  17.1.2 Thread-Specific Data Management, P1003.1c/Draft 10, p. 165
+ */
+
+int pthread_setspecific(
+  pthread_key_t  key,
+  const void    *value
+);
+
+void *pthread_getspecific(
+  pthread_key_t  key
+);
+
+/*
+ *  17.1.3 Thread-Specific Data Key Deletion, P1003.1c/Draft 10, p. 167
+ */
+
+int pthread_key_delete(
+  pthread_key_t  key
+);
+
+/*
+ *  18.2.1 Canceling Execution of a Thread, P1003.1c/Draft 10, p. 181
+ */
+
+#define PTHREAD_CANCEL_ENABLE  0
+#define PTHREAD_CANCEL_DISABLE 1
+
+#define PTHREAD_CANCEL_DEFERRED 0
+#define PTHREAD_CANCEL_ASYNCHRONOUS 1
+
+int pthread_cancel(
+  pthread_t  thread
+);
+
+/*
+ *  18.2.2 Setting Cancelability State, P1003.1c/Draft 10, p. 183
+ */
+
+int pthread_setcancelstate( 
+  int  state,
+  int *oldstate
+);
+
+int pthread_setcanceltype(
+  int  type,
+  int *oldtype
+);
+
+void pthread_testcancel( void );
+
+/*
+ *  18.2.3.1 Establishing Cancellation Handlers, P1003.1c/Draft 10, p. 184
+ */
+
+void pthread_cleanup_push(
+  void   (*routine)( void * ),
+  void    *arg
+);
+
+void pthread_cleanup_pop(
+  int    execute
+);
+
+#if defined(_POSIX_THREAD_CPUTIME)
+ 
+/*
+ *  20.1.6 Accessing a Thread CPU-time Clock, P1003.4b/D8, p. 58
+ */
+ 
+int pthread_getcpuclockid(
+  pthread_t  thread_id,
+  clockid_t *clock_id
+);
+ 
+/*
+ *  20.1.7 CPU-time Clock Thread Creation Attribute, P1003.4b/D8, p. 59
+ */
+
+int pthread_attr_setcputime(
+  pthread_attr_t  *attr,
+  int              clock_allowed
+);
+
+int pthread_attr_getcputime(
+  pthread_attr_t  *attr,
+  int             *clock_allowed
+);
+
+#endif /* defined(_POSIX_THREAD_CPUTIME) */
+
+#endif /* defined(_POSIX_THREADS) */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+/* end of include file */
diff -uNr /usr1/rtems/work-tools/original/newlib-1.8.2/newlib/libc/sys/rtems/sys/time.h newlib-1.8.2/newlib/libc/sys/rtems/sys/time.h
--- /usr1/rtems/work-tools/original/newlib-1.8.2/newlib/libc/sys/rtems/sys/time.h	Thu Nov 18 16:34:26 1999
+++ newlib-1.8.2/newlib/libc/sys/rtems/sys/time.h	Tue Jun  6 09:48:30 2000
@@ -65,6 +65,33 @@
   struct timezone *tzp
 );
 
+/* Convenience macros for operations on timevals.
+   NOTE: `timercmp' does not work for >= or <=.  */
+#define	timerisset(tvp)		((tvp)->tv_sec || (tvp)->tv_usec)
+#define	timerclear(tvp)		((tvp)->tv_sec = (tvp)->tv_usec = 0)
+#define	timercmp(a, b, CMP) 						      \
+  (((a)->tv_sec == (b)->tv_sec) ? 					      \
+   ((a)->tv_usec CMP (b)->tv_usec) : 					      \
+   ((a)->tv_sec CMP (b)->tv_sec))
+#define	timeradd(a, b, result)						      \
+  do {									      \
+    (result)->tv_sec = (a)->tv_sec + (b)->tv_sec;			      \
+    (result)->tv_usec = (a)->tv_usec + (b)->tv_usec;			      \
+    if ((result)->tv_usec >= 1000000)					      \
+      {									      \
+	++(result)->tv_sec;						      \
+	(result)->tv_usec -= 1000000;					      \
+      }									      \
+  } while (0)
+#define	timersub(a, b, result)						      \
+  do {									      \
+    (result)->tv_sec = (a)->tv_sec - (b)->tv_sec;			      \
+    (result)->tv_usec = (a)->tv_usec - (b)->tv_usec;			      \
+    if ((result)->tv_usec < 0) {					      \
+      --(result)->tv_sec;						      \
+      (result)->tv_usec += 1000000;					      \
+    }									      \
+  } while (0)
 #ifdef __cplusplus
 }
 #endif 
diff -uNr /usr1/rtems/work-tools/original/newlib-1.8.2/newlib/libc/sys/rtems/sys/types.h newlib-1.8.2/newlib/libc/sys/rtems/sys/types.h
--- /usr1/rtems/work-tools/original/newlib-1.8.2/newlib/libc/sys/rtems/sys/types.h	Thu Nov 18 16:34:26 1999
+++ newlib-1.8.2/newlib/libc/sys/rtems/sys/types.h	Tue Jun  6 09:48:30 2000
@@ -120,7 +120,7 @@
 #define FD_SET(n, p)  ((p)->fds_bits[(n)/NFDBITS] |= (1L << ((n) % NFDBITS)))
 #define FD_CLR(n, p)  ((p)->fds_bits[(n)/NFDBITS] &= ~(1L << ((n) % NFDBITS)))
 #define FD_ISSET(n, p)  ((p)->fds_bits[(n)/NFDBITS] & (1L << ((n) % NFDBITS)))
-#define FD_ZERO(p)  bzero((caddr_t)(p), sizeof (*(p)))
+#define FD_ZERO(p)  (void) memset((caddr_t)(p), 0, sizeof (*(p)))
  
  
 # endif /* _POSIX_SOURCE */
