summaryrefslogtreecommitdiffstats
path: root/newlib/libc/include
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2000-02-17 19:39:52 +0000
committerChristopher Faylor <me@cgf.cx>2000-02-17 19:39:52 +0000
commit8a0efa53e44919bcf5ccb1d3353618a82afdf8bc (patch)
tree68c3dbf3f2c6fd5d49777def9914d77b5cd4589d /newlib/libc/include
parent1fd5e000ace55b323124c7e556a7a864b972a5c4 (diff)
downloadcygnal-8a0efa53e44919bcf5ccb1d3353618a82afdf8bc.tar.gz
cygnal-8a0efa53e44919bcf5ccb1d3353618a82afdf8bc.tar.bz2
cygnal-8a0efa53e44919bcf5ccb1d3353618a82afdf8bc.zip
import newlib-2000-02-17 snapshot
Diffstat (limited to 'newlib/libc/include')
-rw-r--r--newlib/libc/include/_ansi.h71
-rw-r--r--newlib/libc/include/_syslist.h29
-rw-r--r--newlib/libc/include/ar.h69
-rw-r--r--newlib/libc/include/assert.h29
-rw-r--r--newlib/libc/include/ctype.h73
-rw-r--r--newlib/libc/include/dirent.h7
-rw-r--r--newlib/libc/include/errno.h1
-rw-r--r--newlib/libc/include/fastmath.h13
-rw-r--r--newlib/libc/include/fcntl.h1
-rw-r--r--newlib/libc/include/grp.h85
-rw-r--r--newlib/libc/include/ieeefp.h241
-rw-r--r--newlib/libc/include/locale.h60
-rw-r--r--newlib/libc/include/machine/fastmath.h100
-rw-r--r--newlib/libc/include/machine/ieeefp.h157
-rw-r--r--newlib/libc/include/machine/setjmp-dj.h44
-rw-r--r--newlib/libc/include/machine/setjmp.h168
-rw-r--r--newlib/libc/include/machine/time.h10
-rw-r--r--newlib/libc/include/machine/types.h9
-rw-r--r--newlib/libc/include/malloc.h97
-rw-r--r--newlib/libc/include/math.h273
-rw-r--r--newlib/libc/include/paths.h7
-rw-r--r--newlib/libc/include/process.h60
-rw-r--r--newlib/libc/include/pwd.h76
-rw-r--r--newlib/libc/include/reent.h87
-rw-r--r--newlib/libc/include/regdef.h7
-rw-r--r--newlib/libc/include/setjmp.h22
-rw-r--r--newlib/libc/include/signal.h37
-rw-r--r--newlib/libc/include/stdio.h313
-rw-r--r--newlib/libc/include/stdlib.h142
-rw-r--r--newlib/libc/include/string.h92
-rw-r--r--newlib/libc/include/sys/_types.h15
-rw-r--r--newlib/libc/include/sys/config.h115
-rw-r--r--newlib/libc/include/sys/dirent.h15
-rw-r--r--newlib/libc/include/sys/errno.h154
-rw-r--r--newlib/libc/include/sys/fcntl.h178
-rw-r--r--newlib/libc/include/sys/file.h2
-rw-r--r--newlib/libc/include/sys/param.h18
-rw-r--r--newlib/libc/include/sys/reent.h238
-rw-r--r--newlib/libc/include/sys/resource.h15
-rw-r--r--newlib/libc/include/sys/signal.h182
-rw-r--r--newlib/libc/include/sys/stat-dj.h59
-rw-r--r--newlib/libc/include/sys/stat.h149
-rw-r--r--newlib/libc/include/sys/time.h51
-rw-r--r--newlib/libc/include/sys/timeb.h39
-rw-r--r--newlib/libc/include/sys/times.h27
-rw-r--r--newlib/libc/include/sys/types.h174
-rw-r--r--newlib/libc/include/sys/unistd.h175
-rw-r--r--newlib/libc/include/sys/utime.h22
-rw-r--r--newlib/libc/include/sys/wait.h40
-rw-r--r--newlib/libc/include/termios.h7
-rw-r--r--newlib/libc/include/time.h90
-rw-r--r--newlib/libc/include/unctrl.h46
-rw-r--r--newlib/libc/include/unistd.h6
-rw-r--r--newlib/libc/include/utime.h10
-rw-r--r--newlib/libc/include/utmp.h8
55 files changed, 4215 insertions, 0 deletions
diff --git a/newlib/libc/include/_ansi.h b/newlib/libc/include/_ansi.h
new file mode 100644
index 000000000..b4dc01105
--- /dev/null
+++ b/newlib/libc/include/_ansi.h
@@ -0,0 +1,71 @@
+/* Provide support for both ANSI and non-ANSI environments. */
+
+/* Some ANSI environments are "broken" in the sense that __STDC__ cannot be
+ relied upon to have it's intended meaning. Therefore we must use our own
+ concoction: _HAVE_STDC. Always use _HAVE_STDC instead of __STDC__ in newlib
+ sources!
+
+ To get a strict ANSI C environment, define macro __STRICT_ANSI__. This will
+ "comment out" the non-ANSI parts of the ANSI header files (non-ANSI header
+ files aren't affected). */
+
+#ifndef _ANSIDECL_H_
+#define _ANSIDECL_H_
+
+#include <sys/config.h>
+
+/* First try to figure out whether we really are in an ANSI C environment. */
+/* FIXME: This probably needs some work. Perhaps sys/config.h can be
+ prevailed upon to give us a clue. */
+
+#ifdef __STDC__
+#define _HAVE_STDC
+#endif
+
+#ifdef _HAVE_STDC
+#define _PTR void *
+#define _AND ,
+#define _NOARGS void
+#define _CONST const
+#define _VOLATILE volatile
+#define _SIGNED signed
+#define _DOTS , ...
+#define _VOID void
+#define _EXFUN(name, proto) name proto
+#define _DEFUN(name, arglist, args) name(args)
+#define _DEFUN_VOID(name) name(_NOARGS)
+#define _CAST_VOID (void)
+#ifndef _LONG_DOUBLE
+#define _LONG_DOUBLE long double
+#endif
+#ifndef _PARAMS
+#define _PARAMS(paramlist) paramlist
+#endif
+#else
+#define _PTR char *
+#define _AND ;
+#define _NOARGS
+#define _CONST
+#define _VOLATILE
+#define _SIGNED
+#define _DOTS
+#define _VOID void
+#define _EXFUN(name, proto) name()
+#define _DEFUN(name, arglist, args) name arglist args;
+#define _DEFUN_VOID(name) name()
+#define _CAST_VOID
+#define _LONG_DOUBLE double
+#ifndef _PARAMS
+#define _PARAMS(paramlist) ()
+#endif
+#endif
+
+/* Support gcc's __attribute__ facility. */
+
+#ifdef __GNUC__
+#define _ATTRIBUTE(attrs) __attribute__ (attrs)
+#else
+#define _ATTRIBUTE(attrs)
+#endif
+
+#endif /* _ANSIDECL_H_ */
diff --git a/newlib/libc/include/_syslist.h b/newlib/libc/include/_syslist.h
new file mode 100644
index 000000000..fa552fb60
--- /dev/null
+++ b/newlib/libc/include/_syslist.h
@@ -0,0 +1,29 @@
+/* internal use only -- mapping of "system calls" for libraries that lose
+ and only provide C names, so that we end up in violation of ANSI */
+#ifndef __SYSLIST_H
+#define __SYSLIST_H
+#ifdef MISSING_SYSCALL_NAMES
+#define _close close
+#define _execve execve
+#define _fcntl fcntl
+#define _fork fork
+#define _fstat fstat
+#define _getpid getpid
+#define _gettimeofday gettimeofday
+#define _kill kill
+#define _link link
+#define _lseek lseek
+#define _open open
+#define _read read
+#define _sbrk sbrk
+#define _stat stat
+#define _times times
+#define _unlink unlink
+#define _wait wait
+#define _write write
+/* functions not yet sysfaked */
+#define _opendir opendir
+#define _readdir readdir
+#define _closedir closedir
+#endif
+#endif
diff --git a/newlib/libc/include/ar.h b/newlib/libc/include/ar.h
new file mode 100644
index 000000000..ac2e4ca92
--- /dev/null
+++ b/newlib/libc/include/ar.h
@@ -0,0 +1,69 @@
+/* $NetBSD: ar.h,v 1.4 1994/10/26 00:55:43 cgd Exp $ */
+
+/*-
+ * Copyright (c) 1991, 1993
+ * The Regents of the University of California. All rights reserved.
+ * (c) UNIX System Laboratories, Inc.
+ * All or some portions of this file are derived from material licensed
+ * to the University of California by American Telephone and Telegraph
+ * Co. or Unix System Laboratories, Inc. and are reproduced herein with
+ * the permission of UNIX System Laboratories, Inc.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Hugh Smith at The University of Guelph.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)ar.h 8.2 (Berkeley) 1/21/94
+ */
+
+#ifndef _AR_H_
+#define _AR_H_
+
+/* Pre-4BSD archives had these magic numbers in them. */
+#define OARMAG1 0177555
+#define OARMAG2 0177545
+
+#define ARMAG "!<arch>\n" /* ar "magic number" */
+#define SARMAG 8 /* strlen(ARMAG); */
+
+#define AR_EFMT1 "#1/" /* extended format #1 */
+
+struct ar_hdr {
+ char ar_name[16]; /* name */
+ char ar_date[12]; /* modification time */
+ char ar_uid[6]; /* user id */
+ char ar_gid[6]; /* group id */
+ char ar_mode[8]; /* octal file permissions */
+ char ar_size[10]; /* size in bytes */
+#define ARFMAG "`\n"
+ char ar_fmag[2]; /* consistency check */
+};
+
+#endif /* !_AR_H_ */
diff --git a/newlib/libc/include/assert.h b/newlib/libc/include/assert.h
new file mode 100644
index 000000000..b681a8518
--- /dev/null
+++ b/newlib/libc/include/assert.h
@@ -0,0 +1,29 @@
+/*
+ assert.h
+*/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "_ansi.h"
+
+#undef assert
+
+#ifdef NDEBUG /* required by ANSI standard */
+#define assert(p) ((void)0)
+#else
+
+#ifdef __STDC__
+#define assert(e) ((e) ? (void)0 : __assert(__FILE__, __LINE__, #e))
+#else /* PCC */
+#define assert(e) ((e) ? (void)0 : __assert(__FILE__, __LINE__, "e"))
+#endif
+
+#endif /* NDEBUG */
+
+void _EXFUN(__assert,(const char *, int, const char *));
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/newlib/libc/include/ctype.h b/newlib/libc/include/ctype.h
new file mode 100644
index 000000000..224b703ad
--- /dev/null
+++ b/newlib/libc/include/ctype.h
@@ -0,0 +1,73 @@
+#ifndef _CTYPE_H_
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define _CTYPE_H_
+
+#include "_ansi.h"
+
+int _EXFUN(isalnum, (int __c));
+int _EXFUN(isalpha, (int __c));
+int _EXFUN(iscntrl, (int __c));
+int _EXFUN(isdigit, (int __c));
+int _EXFUN(isgraph, (int __c));
+int _EXFUN(islower, (int __c));
+int _EXFUN(isprint, (int __c));
+int _EXFUN(ispunct, (int __c));
+int _EXFUN(isspace, (int __c));
+int _EXFUN(isupper, (int __c));
+int _EXFUN(isxdigit,(int __c));
+int _EXFUN(tolower, (int __c));
+int _EXFUN(toupper, (int __c));
+
+#ifndef __STRICT_ANSI__
+int _EXFUN(isascii, (int __c));
+int _EXFUN(toascii, (int __c));
+int _EXFUN(_tolower, (int __c));
+int _EXFUN(_toupper, (int __c));
+#endif
+
+#define _U 01
+#define _L 02
+#define _N 04
+#define _S 010
+#define _P 020
+#define _C 040
+#define _X 0100
+#define _B 0200
+
+#if !defined(__CYGWIN32__) || defined(__INSIDE_CYGWIN__) || defined(_COMPILING_NEWLIB)
+extern _CONST char _ctype_[];
+#else
+extern _CONST char _ctype_[] __declspec(dllimport);
+#endif
+
+#define isalpha(c) ((_ctype_+1)[(unsigned)(c)]&(_U|_L))
+#define isupper(c) ((_ctype_+1)[(unsigned)(c)]&_U)
+#define islower(c) ((_ctype_+1)[(unsigned)(c)]&_L)
+#define isdigit(c) ((_ctype_+1)[(unsigned)(c)]&_N)
+#define isxdigit(c) ((_ctype_+1)[(unsigned)(c)]&(_X|_N))
+#define isspace(c) ((_ctype_+1)[(unsigned)(c)]&_S)
+#define ispunct(c) ((_ctype_+1)[(unsigned)(c)]&_P)
+#define isalnum(c) ((_ctype_+1)[(unsigned)(c)]&(_U|_L|_N))
+#define isprint(c) ((_ctype_+1)[(unsigned)(c)]&(_P|_U|_L|_N|_B))
+#define isgraph(c) ((_ctype_+1)[(unsigned)(c)]&(_P|_U|_L|_N))
+#define iscntrl(c) ((_ctype_+1)[(unsigned)(c)]&_C)
+/* Non-gcc versions will get the library versions, and will be
+ slightly slower */
+#ifdef __GNUC__
+# define toupper(c) \
+ ({ int __x = (c); islower(__x) ? (__x - 'a' + 'A') : __x;})
+# define tolower(c) \
+ ({ int __x = (c); isupper(__x) ? (__x - 'A' + 'a') : __x;})
+#endif
+
+#ifndef __STRICT_ANSI__
+#define isascii(c) ((unsigned)(c)<=0177)
+#define toascii(c) ((c)&0177)
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _CTYPE_H_ */
diff --git a/newlib/libc/include/dirent.h b/newlib/libc/include/dirent.h
new file mode 100644
index 000000000..eaa4c190d
--- /dev/null
+++ b/newlib/libc/include/dirent.h
@@ -0,0 +1,7 @@
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <sys/dirent.h>
+#ifdef __cplusplus
+}
+#endif
diff --git a/newlib/libc/include/errno.h b/newlib/libc/include/errno.h
new file mode 100644
index 000000000..fa8efb7f5
--- /dev/null
+++ b/newlib/libc/include/errno.h
@@ -0,0 +1 @@
+#include <sys/errno.h>
diff --git a/newlib/libc/include/fastmath.h b/newlib/libc/include/fastmath.h
new file mode 100644
index 000000000..95eea5f34
--- /dev/null
+++ b/newlib/libc/include/fastmath.h
@@ -0,0 +1,13 @@
+#ifndef _FASTMATH_H_
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define _FASTMATH_H_
+
+#include <math.h>
+#include <machine/fastmath.h>
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _FASTMATH_H_ */
diff --git a/newlib/libc/include/fcntl.h b/newlib/libc/include/fcntl.h
new file mode 100644
index 000000000..86a916775
--- /dev/null
+++ b/newlib/libc/include/fcntl.h
@@ -0,0 +1 @@
+#include <sys/fcntl.h>
diff --git a/newlib/libc/include/grp.h b/newlib/libc/include/grp.h
new file mode 100644
index 000000000..b8680a5d8
--- /dev/null
+++ b/newlib/libc/include/grp.h
@@ -0,0 +1,85 @@
+/* $NetBSD: grp.h,v 1.7 1995/04/29 05:30:40 cgd Exp $ */
+
+/*-
+ * Copyright (c) 1989, 1993
+ * The Regents of the University of California. All rights reserved.
+ * (c) UNIX System Laboratories, Inc.
+ * All or some portions of this file are derived from material licensed
+ * to the University of California by American Telephone and Telegraph
+ * Co. or Unix System Laboratories, Inc. and are reproduced herein with
+ * the permission of UNIX System Laboratories, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)grp.h 8.2 (Berkeley) 1/21/94
+ */
+
+#ifndef _GRP_H_
+#define _GRP_H_
+
+#include <sys/types.h>
+
+#if !defined(_POSIX_SOURCE) && !defined(_XOPEN_SOURCE)
+#define _PATH_GROUP "/etc/group"
+#endif
+
+struct group {
+ char *gr_name; /* group name */
+ char *gr_passwd; /* group password */
+ gid_t gr_gid; /* group id */
+ char **gr_mem; /* group members */
+};
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct group *getgrgid (gid_t);
+struct group *getgrnam (const char *);
+int getgrnam_r (const char *, struct group *,
+ char *, size_t, struct group **);
+int getgrgid_r (gid_t, struct group *,
+ char *, size_t, struct group **);
+#ifndef _POSIX_SOURCE
+struct group *getgrent (void);
+void setgrent (void);
+void endgrent (void);
+void setgrfile (const char *);
+#ifndef _XOPEN_SOURCE
+char *group_from_gid (gid_t, int);
+int setgroupent (int);
+#endif /* !_XOPEN_SOURCE */
+#endif /* !_POSIX_SOURCE */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !_GRP_H_ */
diff --git a/newlib/libc/include/ieeefp.h b/newlib/libc/include/ieeefp.h
new file mode 100644
index 000000000..78bb5bf62
--- /dev/null
+++ b/newlib/libc/include/ieeefp.h
@@ -0,0 +1,241 @@
+#ifndef _IEEE_FP_H_
+#define _IEEE_FP_H_
+
+#include "_ansi.h"
+
+#include <machine/ieeefp.h>
+
+/* FIXME FIXME FIXME:
+ Neither of __ieee_{float,double}_shape_tape seem to be used anywhere
+ except in libm/test. If that is the case, please delete these from here.
+ If that is not the case, please insert documentation here describing why
+ they're needed. */
+
+#ifdef __IEEE_BIG_ENDIAN
+
+typedef union
+{
+ double value;
+ struct
+ {
+ unsigned int sign : 1;
+ unsigned int exponent: 11;
+ unsigned int fraction0:4;
+ unsigned int fraction1:16;
+ unsigned int fraction2:16;
+ unsigned int fraction3:16;
+
+ } number;
+ struct
+ {
+ unsigned int sign : 1;
+ unsigned int exponent: 11;
+ unsigned int quiet:1;
+ unsigned int function0:3;
+ unsigned int function1:16;
+ unsigned int function2:16;
+ unsigned int function3:16;
+ } nan;
+ struct
+ {
+ unsigned long msw;
+ unsigned long lsw;
+ } parts;
+ long aslong[2];
+} __ieee_double_shape_type;
+
+#endif
+
+#ifdef __IEEE_LITTLE_ENDIAN
+
+typedef union
+{
+ double value;
+ struct
+ {
+#ifdef __SMALL_BITFIELDS
+ unsigned int fraction3:16;
+ unsigned int fraction2:16;
+ unsigned int fraction1:16;
+ unsigned int fraction0: 4;
+#else
+ unsigned int fraction1:32;
+ unsigned int fraction0:20;
+#endif
+ unsigned int exponent :11;
+ unsigned int sign : 1;
+ } number;
+ struct
+ {
+#ifdef __SMALL_BITFIELDS
+ unsigned int function3:16;
+ unsigned int function2:16;
+ unsigned int function1:16;
+ unsigned int function0:3;
+#else
+ unsigned int function1:32;
+ unsigned int function0:19;
+#endif
+ unsigned int quiet:1;
+ unsigned int exponent: 11;
+ unsigned int sign : 1;
+ } nan;
+ struct
+ {
+ unsigned long lsw;
+ unsigned long msw;
+ } parts;
+
+ long aslong[2];
+
+} __ieee_double_shape_type;
+
+#endif
+
+#ifdef __IEEE_BIG_ENDIAN
+
+typedef union
+{
+ float value;
+ struct
+ {
+ unsigned int sign : 1;
+ unsigned int exponent: 8;
+ unsigned int fraction0: 7;
+ unsigned int fraction1: 16;
+ } number;
+ struct
+ {
+ unsigned int sign:1;
+ unsigned int exponent:8;
+ unsigned int quiet:1;
+ unsigned int function0:6;
+ unsigned int function1:16;
+ } nan;
+ long p1;
+
+} __ieee_float_shape_type;
+
+#endif
+
+#ifdef __IEEE_LITTLE_ENDIAN
+
+typedef union
+{
+ float value;
+ struct
+ {
+ unsigned int fraction0: 7;
+ unsigned int fraction1: 16;
+ unsigned int exponent: 8;
+ unsigned int sign : 1;
+ } number;
+ struct
+ {
+ unsigned int function1:16;
+ unsigned int function0:6;
+ unsigned int quiet:1;
+ unsigned int exponent:8;
+ unsigned int sign:1;
+ } nan;
+ long p1;
+
+} __ieee_float_shape_type;
+
+#endif
+
+
+
+
+
+/* FLOATING ROUNDING */
+
+typedef int fp_rnd;
+#define FP_RN 0 /* Round to nearest */
+#define FP_RM 1 /* Round down */
+#define FP_RP 2 /* Round up */
+#define FP_RZ 3 /* Round to zero (trunate) */
+
+fp_rnd _EXFUN(fpgetround,(void));
+fp_rnd _EXFUN(fpsetround, (fp_rnd));
+
+/* EXCEPTIONS */
+
+typedef int fp_except;
+#define FP_X_INV 0x10 /* Invalid operation */
+#define FP_X_DX 0x80 /* Divide by zero */
+#define FP_X_OFL 0x04 /* Overflow exception */
+#define FP_X_UFL 0x02 /* Underflow exception */
+#define FP_X_IMP 0x01 /* imprecise exception */
+
+fp_except _EXFUN(fpgetmask,(void));
+fp_except _EXFUN(fpsetmask,(fp_except));
+fp_except _EXFUN(fpgetsticky,(void));
+fp_except _EXFUN(fpsetsticky, (fp_except));
+
+/* INTEGER ROUNDING */
+
+typedef int fp_rdi;
+#define FP_RDI_TOZ 0 /* Round to Zero */
+#define FP_RDI_RD 1 /* Follow float mode */
+
+fp_rdi _EXFUN(fpgetroundtoi,(void));
+fp_rdi _EXFUN(fpsetroundtoi,(fp_rdi));
+
+int _EXFUN(isnan, (double));
+int _EXFUN(isinf, (double));
+int _EXFUN(finite, (double));
+
+
+
+int _EXFUN(isnanf, (float));
+int _EXFUN(isinff, (float));
+int _EXFUN(finitef, (float));
+
+#define __IEEE_DBL_EXPBIAS 1023
+#define __IEEE_FLT_EXPBIAS 127
+
+#define __IEEE_DBL_EXPLEN 11
+#define __IEEE_FLT_EXPLEN 8
+
+
+#define __IEEE_DBL_FRACLEN (64 - (__IEEE_DBL_EXPLEN + 1))
+#define __IEEE_FLT_FRACLEN (32 - (__IEEE_FLT_EXPLEN + 1))
+
+#define __IEEE_DBL_MAXPOWTWO ((double)(1L << 32 - 2) * (1L << (32-11) - 32 + 1))
+#define __IEEE_FLT_MAXPOWTWO ((float)(1L << (32-8) - 1))
+
+#define __IEEE_DBL_NAN_EXP 0x7ff
+#define __IEEE_FLT_NAN_EXP 0xff
+
+
+#define isnanf(x) (((*(long *)&(x) & 0x7f800000L)==0x7f800000L) && \
+ ((*(long *)&(x) & 0x007fffffL)!=0000000000L))
+
+#define isinff(x) (((*(long *)&(x) & 0x7f800000L)==0x7f800000L) && \
+ ((*(long *)&(x) & 0x007fffffL)==0000000000L))
+
+#define finitef(x) (((*(long *)&(x) & 0x7f800000L)!=0x7f800000L))
+
+#ifdef _DOUBLE_IS_32BITS
+#undef __IEEE_DBL_EXPBIAS
+#define __IEEE_DBL_EXPBIAS __IEEE_FLT_EXPBIAS
+
+#undef __IEEE_DBL_EXPLEN
+#define __IEEE_DBL_EXPLEN __IEEE_FLT_EXPLEN
+
+#undef __IEEE_DBL_FRACLEN
+#define __IEEE_DBL_FRACLEN __IEEE_FLT_FRACLEN
+
+#undef __IEEE_DBL_MAXPOWTWO
+#define __IEEE_DBL_MAXPOWTWO __IEEE_FLT_MAXPOWTWO
+
+#undef __IEEE_DBL_NAN_EXP
+#define __IEEE_DBL_NAN_EXP __IEEE_FLT_NAN_EXP
+
+#undef __ieee_double_shape_type
+#define __ieee_double_shape_type __ieee_float_shape_type
+
+#endif /* _DOUBLE_IS_32BITS */
+
+#endif /* _IEEE_FP_H_ */
diff --git a/newlib/libc/include/locale.h b/newlib/libc/include/locale.h
new file mode 100644
index 000000000..c8d9c081d
--- /dev/null
+++ b/newlib/libc/include/locale.h
@@ -0,0 +1,60 @@
+/*
+ locale.h
+ Values appropriate for the formatting of monetary and other
+ numberic quantities.
+*/
+
+#ifndef _LOCALE_H_
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define _LOCALE_H_
+
+#include "_ansi.h"
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+#define LC_ALL 0
+#define LC_COLLATE 1
+#define LC_CTYPE 2
+#define LC_MONETARY 3
+#define LC_NUMERIC 4
+#define LC_TIME 5
+
+struct lconv
+{
+ char *decimal_point;
+ char *thousands_sep;
+ char *grouping;
+ char *int_curr_symbol;
+ char *currency_symbol;
+ char *mon_decimal_point;
+ char *mon_thousands_sep;
+ char *mon_grouping;
+ char *positive_sign;
+ char *negative_sign;
+ char int_frac_digits;
+ char frac_digits;
+ char p_cs_precedes;
+ char p_sep_by_space;
+ char n_cs_precedes;
+ char n_sep_by_space;
+ char p_sign_posn;
+ char n_sign_posn;
+};
+
+#ifndef _REENT_ONLY
+char *_EXFUN(setlocale,(int category, const char *locale));
+struct lconv *_EXFUN(localeconv,(void));
+#endif
+
+struct _reent;
+char *_EXFUN(_setlocale_r,(struct _reent *, int category, const char *locale));
+struct lconv *_EXFUN(_localeconv_r,(struct _reent *));
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _LOCALE_H_ */
diff --git a/newlib/libc/include/machine/fastmath.h b/newlib/libc/include/machine/fastmath.h
new file mode 100644
index 000000000..b13befa22
--- /dev/null
+++ b/newlib/libc/include/machine/fastmath.h
@@ -0,0 +1,100 @@
+#ifdef __sysvnecv70_target
+double EXFUN(fast_sin,(double));
+double EXFUN(fast_cos,(double));
+double EXFUN(fast_tan,(double));
+
+double EXFUN(fast_asin,(double));
+double EXFUN(fast_acos,(double));
+double EXFUN(fast_atan,(double));
+
+double EXFUN(fast_sinh,(double));
+double EXFUN(fast_cosh,(double));
+double EXFUN(fast_tanh,(double));
+
+double EXFUN(fast_asinh,(double));
+double EXFUN(fast_acosh,(double));
+double EXFUN(fast_atanh,(double));
+
+double EXFUN(fast_abs,(double));
+double EXFUN(fast_sqrt,(double));
+double EXFUN(fast_exp2,(double));
+double EXFUN(fast_exp10,(double));
+double EXFUN(fast_expe,(double));
+double EXFUN(fast_log10,(double));
+double EXFUN(fast_log2,(double));
+double EXFUN(fast_loge,(double));
+
+
+#define sin(x) fast_sin(x)
+#define cos(x) fast_cos(x)
+#define tan(x) fast_tan(x)
+#define asin(x) fast_asin(x)
+#define acos(x) fast_acos(x)
+#define atan(x) fast_atan(x)
+#define sinh(x) fast_sinh(x)
+#define cosh(x) fast_cosh(x)
+#define tanh(x) fast_tanh(x)
+#define asinh(x) fast_asinh(x)
+#define acosh(x) fast_acosh(x)
+#define atanh(x) fast_atanh(x)
+#define abs(x) fast_abs(x)
+#define sqrt(x) fast_sqrt(x)
+#define exp2(x) fast_exp2(x)
+#define exp10(x) fast_exp10(x)
+#define expe(x) fast_expe(x)
+#define log10(x) fast_log10(x)
+#define log2(x) fast_log2(x)
+#define loge(x) fast_loge(x)
+
+#ifdef _HAVE_STDC
+/* These functions are in assembler, they really do take floats. This
+ can only be used with a real ANSI compiler */
+
+float EXFUN(fast_sinf,(float));
+float EXFUN(fast_cosf,(float));
+float EXFUN(fast_tanf,(float));
+
+float EXFUN(fast_asinf,(float));
+float EXFUN(fast_acosf,(float));
+float EXFUN(fast_atanf,(float));
+
+float EXFUN(fast_sinhf,(float));
+float EXFUN(fast_coshf,(float));
+float EXFUN(fast_tanhf,(float));
+
+float EXFUN(fast_asinhf,(float));
+float EXFUN(fast_acoshf,(float));
+float EXFUN(fast_atanhf,(float));
+
+float EXFUN(fast_absf,(float));
+float EXFUN(fast_sqrtf,(float));
+float EXFUN(fast_exp2f,(float));
+float EXFUN(fast_exp10f,(float));
+float EXFUN(fast_expef,(float));
+float EXFUN(fast_log10f,(float));
+float EXFUN(fast_log2f,(float));
+float EXFUN(fast_logef,(float));
+#define sinf(x) fast_sinf(x)
+#define cosf(x) fast_cosf(x)
+#define tanf(x) fast_tanf(x)
+#define asinf(x) fast_asinf(x)
+#define acosf(x) fast_acosf(x)
+#define atanf(x) fast_atanf(x)
+#define sinhf(x) fast_sinhf(x)
+#define coshf(x) fast_coshf(x)
+#define tanhf(x) fast_tanhf(x)
+#define asinhf(x) fast_asinhf(x)
+#define acoshf(x) fast_acoshf(x)
+#define atanhf(x) fast_atanhf(x)
+#define absf(x) fast_absf(x)
+#define sqrtf(x) fast_sqrtf(x)
+#define exp2f(x) fast_exp2f(x)
+#define exp10f(x) fast_exp10f(x)
+#define expef(x) fast_expef(x)
+#define log10f(x) fast_log10f(x)
+#define log2f(x) fast_log2f(x)
+#define logef(x) fast_logef(x)
+#endif
+/* Override the functions defined in math.h */
+#endif /* __sysvnecv70_target */
+
diff --git a/newlib/libc/include/machine/ieeefp.h b/newlib/libc/include/machine/ieeefp.h
new file mode 100644
index 000000000..ce8f0ffc5
--- /dev/null
+++ b/newlib/libc/include/machine/ieeefp.h
@@ -0,0 +1,157 @@
+#ifndef __IEEE_BIG_ENDIAN
+#ifndef __IEEE_LITTLE_ENDIAN
+
+#if defined(__arm__) || defined(__thumb__)
+/* ARM always has big-endian words. Within those words the byte ordering
+ appears to be big or little endian. Newlib doesn't seem to care about
+ the byte ordering within words. */
+#define __IEEE_BIG_ENDIAN
+#endif
+
+#ifdef __hppa__
+#define __IEEE_BIG_ENDIAN
+#endif
+
+#ifdef __sparc__
+#ifdef __LITTLE_ENDIAN_DATA__
+#define __IEEE_LITTLE_ENDIAN
+#else
+#define __IEEE_BIG_ENDIAN
+#endif
+#endif
+
+#if defined(__m68k__) || defined(__mc68000__)
+#define __IEEE_BIG_ENDIAN
+#endif
+
+#if defined (__H8300__) || defined (__H8300H__) || defined (__H8300S__)
+#define __IEEE_BIG_ENDIAN
+#define __SMALL_BITFIELDS
+#define _DOUBLE_IS_32BITS
+#endif
+
+#ifdef __H8500__
+#define __IEEE_BIG_ENDIAN
+#define __SMALL_BITFIELDS
+#define _DOUBLE_IS_32BITS
+#endif
+
+#ifdef __sh__
+#ifdef __LITTLE_ENDIAN__
+#define __IEEE_LITTLE_ENDIAN
+#else
+#define __IEEE_BIG_ENDIAN
+#endif
+#if defined(__SH3E__) || defined(__SH4_SINGLE_ONLY__)
+#define _DOUBLE_IS_32BITS
+#endif
+#endif
+
+#ifdef _AM29K
+#define __IEEE_BIG_ENDIAN
+#endif
+
+#ifdef _WIN32
+#define __IEEE_LITTLE_ENDIAN
+#endif
+
+#ifdef __i386__
+#define __IEEE_LITTLE_ENDIAN
+#endif
+
+#ifdef __i960__
+#define __IEEE_LITTLE_ENDIAN
+#endif
+
+#ifdef __M32R__
+#define __IEEE_BIG_ENDIAN
+#endif
+
+#ifdef __TIC80__
+#define __IEEE_LITTLE_ENDIAN
+#endif
+
+#ifdef __MIPSEL__
+#define __IEEE_LITTLE_ENDIAN
+#endif
+#ifdef __MIPSEB__
+#define __IEEE_BIG_ENDIAN
+#endif
+
+/* necv70 was __IEEE_LITTLE_ENDIAN. */
+
+#ifdef __W65__
+#define __IEEE_LITTLE_ENDIAN
+#define __SMALL_BITFIELDS
+#define _DOUBLE_IS_32BITS
+#endif
+
+#if defined(__Z8001__) || defined(__Z8002__)
+#define __IEEE_BIG_ENDIAN
+#endif
+
+#ifdef __m88k__
+#define __IEEE_BIG_ENDIAN
+#endif
+
+#ifdef __mn10300__
+#define __IEEE_LITTLE_ENDIAN
+#endif
+
+#ifdef __mn10200__
+#define __IEEE_LITTLE_ENDIAN
+#define __SMALL_BITFIELDS
+#define _DOUBLE_IS_32BITS
+#endif
+
+#ifdef __v800
+#define __IEEE_LITTLE_ENDIAN
+#endif
+
+#ifdef __v850
+#define __IEEE_LITTLE_ENDIAN
+#endif
+
+#ifdef __D10V__
+#define __IEEE_BIG_ENDIAN
+#define _DOUBLE_IS_32BITS
+#define __SMALL_BITFIELDS
+#endif
+
+#ifdef __PPC__
+#if (defined(_BIG_ENDIAN) && _BIG_ENDIAN) || (defined(_AIX) && _AIX)
+#define __IEEE_BIG_ENDIAN
+#else
+#if (defined(_LITTLE_ENDIAN) && _LITTLE_ENDIAN) || (defined(__sun__) && __sun__) || (defined(_WIN32) && _WIN32)
+#define __IEEE_LITTLE_ENDIAN
+#endif
+#endif
+#endif
+
+#ifdef __arc__
+#ifdef __big_endian__
+#define __IEEE_BIG_ENDIAN
+#else
+#define __IEEE_LITTLE_ENDIAN
+#endif
+#endif
+
+#ifdef __fr30__
+#define __IEEE_BIG_ENDIAN
+#endif
+
+#ifdef __mcore__
+#define __IEEE_BIG_ENDIAN
+#endif
+
+
+
+#ifndef __IEEE_BIG_ENDIAN
+#ifndef __IEEE_LITTLE_ENDIAN
+#error Endianess not declared!!
+#endif /* not __IEEE_LITTLE_ENDIAN */
+#endif /* not __IEEE_BIG_ENDIAN */
+
+#endif /* not __IEEE_LITTLE_ENDIAN */
+#endif /* not __IEEE_BIG_ENDIAN */
+
diff --git a/newlib/libc/include/machine/setjmp-dj.h b/newlib/libc/include/machine/setjmp-dj.h
new file mode 100644
index 000000000..0243f7e76
--- /dev/null
+++ b/newlib/libc/include/machine/setjmp-dj.h
@@ -0,0 +1,44 @@
+/*
+** Copyright (C) 1991 DJ Delorie, 24 Kirsten Ave, Rochester NH 03867-2954
+**
+** This file is distributed under the terms listed in the document
+** "copying.dj", available from DJ Delorie at the address above.
+** A copy of "copying.dj" should accompany this file; if not, a copy
+** should be available from where this file was obtained. This file
+** may not be distributed without a verbatim copy of "copying.dj".
+**
+** This file is distributed WITHOUT ANY WARRANTY; without even the implied
+** warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+*/
+
+/* Modified to use SETJMP_DJ_H rather than SETJMP_H to avoid
+ conflicting with setjmp.h. Ian Taylor, Cygnus support, April,
+ 1993. */
+
+#ifndef _SETJMP_DJ_H_
+#define _SETJMP_DJ_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct {
+ unsigned long eax;
+ unsigned long ebx;
+ unsigned long ecx;
+ unsigned long edx;
+ unsigned long esi;
+ unsigned long edi;
+ unsigned long ebp;
+ unsigned long esp;
+ unsigned long eip;
+} jmp_buf[1];
+
+extern int setjmp(jmp_buf);
+extern void longjmp(jmp_buf, int);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/newlib/libc/include/machine/setjmp.h b/newlib/libc/include/machine/setjmp.h
new file mode 100644
index 000000000..4656c0ff1
--- /dev/null
+++ b/newlib/libc/include/machine/setjmp.h
@@ -0,0 +1,168 @@
+#if defined(__arm__) || defined(__thumb__)
+/*
+ * All callee preserved registers:
+ * v1 - v7, fp, ip, sp, lr, f4, f5, f6, f7
+ */
+#define _JBLEN 23
+#endif
+
+#ifdef __sparc__
+/*
+ * onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext).
+ * All else recovered by under/over(flow) handling.
+ */
+#define _JBLEN 13
+#endif
+
+/* necv70 was 9 as well. */
+
+#ifdef __mc68000__
+/*
+ * onsstack,sigmask,sp,pc,psl,d2-d7,a2-a6,
+ * fp2-fp7 for 68881.
+ * All else recovered by under/over(flow) handling.
+ */
+#define _JBLEN 34
+#endif
+
+#if defined(__Z8001__) || defined(__Z8002__)
+/* 16 regs + pc */
+#define _JBLEN 20
+#endif
+
+#ifdef _AM29K
+/*
+ * onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext).
+ * All else recovered by under/over(flow) handling.
+ */
+#define _JBLEN 9
+#endif
+
+#if defined(__CYGWIN__) && !defined (_JBLEN)
+#define _JBLEN (13 * 4)
+#elif defined (__i386__)
+#ifdef __unix__
+# define _JBLEN 36
+#else
+#include "setjmp-dj.h"
+#endif
+#endif
+
+#ifdef __i960__
+#define _JBLEN 35
+#endif
+
+#ifdef __M32R__
+/* Only 8 words are currently needed. 10 gives us some slop if we need
+ to expand. */
+#define _JBLEN 10
+#endif
+
+#ifdef __mips__
+#define _JBLEN 11
+#endif
+
+#ifdef __m88000__
+#define _JBLEN 21
+#endif
+
+#ifdef __H8300__
+#define _JBLEN 5
+typedef int jmp_buf[_JBLEN];
+#endif
+
+#ifdef __H8300H__
+/* same as H8/300 but registers are twice as big */
+#define _JBLEN 5
+#define _JBTYPE long
+#endif
+
+#ifdef __H8300S__
+/* same as H8/300 but registers are twice as big */
+#define _JBLEN 5
+#define _JBTYPE long
+#endif
+
+#ifdef __H8500__
+#define _JBLEN 4
+#endif
+
+#ifdef __sh__
+#define _JBLEN 20
+#endif
+
+#ifdef __v800
+#define _JBLEN 28
+#endif
+
+#ifdef __PPC__
+#define _JBLEN 32
+#define _JBTYPE double
+#endif
+
+#ifdef __hppa__
+/* %r30, %r2-%r18, %r27, pad, %fr12-%fr15.
+ Note space exists for the FP registers, but they are not
+ saved. */
+#define _JBLEN 28
+#endif
+
+#if defined(__mn10300__) || defined(__mn10200__)
+/* A guess */
+#define _JBLEN 10
+#endif
+
+#ifdef __v850
+/* I think our setjmp is saving 15 regs at the moment. Gives us one word
+ slop if we need to expand. */
+#define _JBLEN 16
+#endif
+
+#ifdef __TIC80__
+#define _JBLEN 13
+#endif
+
+#ifdef __D10V__
+#define _JBLEN 8
+#endif
+
+#ifdef __D30V__
+#define _JBLEN ((64 /* GPR */ + (2*2) /* ACs */ + 18 /* CRs */) / 2)
+#define _JBTYPE double
+#endif
+
+
+#ifdef __fr30__
+#define _JBLEN 10
+#endif
+
+#ifdef __mcore__
+#define _JBLEN 16
+#endif
+
+#ifdef _JBLEN
+#ifdef _JBTYPE
+typedef _JBTYPE jmp_buf[_JBLEN];
+#else
+typedef int jmp_buf[_JBLEN];
+#endif
+
+#if defined(__CYGWIN32__) || defined(__rtems__)
+#include <signal.h>
+
+/* POSIX sigsetjmp/siglongjmp macros */
+typedef int sigjmp_buf[_JBLEN+2];
+
+#define _SAVEMASK _JBLEN
+#define _SIGMASK (_JBLEN+1)
+
+#define sigsetjmp(env, savemask) (env[_SAVEMASK] = savemask,\
+ sigprocmask (SIG_SETMASK, 0, (sigset_t *) &env[_SIGMASK]),\
+ setjmp (env))
+
+#define siglongjmp(env, val) (((env[_SAVEMASK])?\
+ sigprocmask (SIG_SETMASK, (sigset_t *) &env[_SIGMASK], 0):0),\
+ longjmp (env, val))
+
+#endif /* __CYGWIN32__ or __rtems__ */
+#endif
diff --git a/newlib/libc/include/machine/time.h b/newlib/libc/include/machine/time.h
new file mode 100644
index 000000000..13857bfde
--- /dev/null
+++ b/newlib/libc/include/machine/time.h
@@ -0,0 +1,10 @@
+#ifndef _MACHTIME_H_
+#define _MACHTIME_H_
+
+#if defined(__arm__) || defined(__thumb__)
+#define _CLOCKS_PER_SEC_ 100
+#endif
+
+#endif /* _MACHTIME_H_ */
+
+
diff --git a/newlib/libc/include/machine/types.h b/newlib/libc/include/machine/types.h
new file mode 100644
index 000000000..b71a67f56
--- /dev/null
+++ b/newlib/libc/include/machine/types.h
@@ -0,0 +1,9 @@
+#ifndef _MACHTYPES_H_
+#define _MACHTYPES_H_
+
+#define _CLOCK_T_ unsigned long /* clock() */
+#define _TIME_T_ long /* time() */
+
+#endif /* _MACHTYPES_H_ */
+
+
diff --git a/newlib/libc/include/malloc.h b/newlib/libc/include/malloc.h
new file mode 100644
index 000000000..64abe91cf
--- /dev/null
+++ b/newlib/libc/include/malloc.h
@@ -0,0 +1,97 @@
+/* malloc.h -- header file for memory routines. */
+
+#ifndef _INCLUDE_MALLOC_H_
+#define _INCLUDE_MALLOC_H_
+
+#include <_ansi.h>
+#include <sys/reent.h>
+
+#define __need_size_t
+#include <stddef.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* This version of struct mallinfo must match the one in
+ libc/stdlib/mallocr.c. */
+
+struct mallinfo {
+ int arena; /* total space allocated from system */
+ int ordblks; /* number of non-inuse chunks */
+ int smblks; /* unused -- always zero */
+ int hblks; /* number of mmapped regions */
+ int hblkhd; /* total space in mmapped regions */
+ int usmblks; /* unused -- always zero */
+ int fsmblks; /* unused -- always zero */
+ int uordblks; /* total allocated space */
+ int fordblks; /* total non-inuse space */
+ int keepcost; /* top-most, releasable (via malloc_trim) space */
+};
+
+/* The routines. */
+
+extern _PTR malloc _PARAMS ((size_t));
+extern _PTR _malloc_r _PARAMS ((struct _reent *, size_t));
+
+extern _VOID free _PARAMS ((_PTR));
+extern _VOID _free_r _PARAMS ((struct _reent *, _PTR));
+
+extern _PTR realloc _PARAMS ((_PTR, size_t));
+extern _PTR _realloc_r _PARAMS ((struct _reent *, _PTR, size_t));
+
+extern _PTR calloc _PARAMS ((size_t, size_t));
+extern _PTR _calloc_r _PARAMS ((struct _reent *, size_t, size_t));
+
+extern _PTR memalign _PARAMS ((size_t, size_t));
+extern _PTR _memalign_r _PARAMS ((struct _reent *, size_t, size_t));
+
+extern struct mallinfo mallinfo _PARAMS ((void));
+extern struct mallinfo _mallinfo_r _PARAMS ((struct _reent *));
+
+extern void malloc_stats _PARAMS ((void));
+extern void _malloc_stats_r _PARAMS ((struct _reent *));
+
+extern int mallopt _PARAMS ((int, int));
+extern int _mallopt_r _PARAMS ((struct _reent *, int, int));
+
+extern size_t malloc_usable_size _PARAMS ((_PTR));
+extern size_t _malloc_usable_size_r _PARAMS ((struct _reent *, _PTR));
+
+/* These aren't too useful on an embedded system, but we define them
+ anyhow. */
+
+extern _PTR valloc _PARAMS ((size_t));
+extern _PTR _valloc_r _PARAMS ((struct _reent *, size_t));
+
+extern _PTR pvalloc _PARAMS ((size_t));
+extern _PTR _pvalloc_r _PARAMS ((struct _reent *, size_t));
+
+extern int malloc_trim _PARAMS ((size_t));
+extern int _malloc_trim_r _PARAMS ((struct _reent *, size_t));
+
+/* Some systems provide this, so do too for compatibility. */
+
+extern void cfree _PARAMS ((_PTR));
+
+/* A compatibility routine for an earlier version of the allocator. */
+
+extern _VOID mstats _PARAMS ((char *));
+extern _VOID _mstats_r _PARAMS ((struct _reent *, char *));
+
+#ifdef __CYGWIN32__
+
+/* Cygwin32 needs to be able to copy all the malloc information from
+ the parent to the child. However, cygwin32 does not normally copy
+ any data in the DLL data section. This routine handles copying
+ that information. */
+
+extern int __malloc_copy _PARAMS ((int (*) (void *, void *, void *, int),
+ void *, int));
+#endif /* __CYGWIN32 */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _INCLUDE_MALLOC_H_ */
diff --git a/newlib/libc/include/math.h b/newlib/libc/include/math.h
new file mode 100644
index 000000000..d3f2e99ae
--- /dev/null
+++ b/newlib/libc/include/math.h
@@ -0,0 +1,273 @@
+/* math.h -- Definitions for the math floating point package. */
+
+#ifndef _MATH_H_
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define _MATH_H_
+
+#include <sys/reent.h>
+#include <machine/ieeefp.h>
+#include "_ansi.h"
+
+#ifndef HUGE_VAL
+
+/* Define HUGE_VAL as infinity, unless HUGE_VAL is already defined
+ (which might have been done by something like math-68881.h). */
+
+union __dmath
+{
+ __uint32_t i[2];
+ double d;
+};
+
+extern const union __dmath __infinity;
+
+#define HUGE_VAL (__infinity.d)
+
+#endif /* ! defined (HUGE_VAL) */
+
+/* Reentrant ANSI C functions. */
+
+#ifndef __math_68881
+extern double atan _PARAMS((double));
+extern double cos _PARAMS((double));
+extern double sin _PARAMS((double));
+extern double tan _PARAMS((double));
+extern double tanh _PARAMS((double));
+extern double frexp _PARAMS((double, int *));
+extern double modf _PARAMS((double, double *));
+extern double ceil _PARAMS((double));
+extern double fabs _PARAMS((double));
+extern double floor _PARAMS((double));
+#endif /* ! defined (__math_68881) */
+
+/* Non reentrant ANSI C functions. */
+
+#ifndef _REENT_ONLY
+#ifndef __math_6881
+extern double acos _PARAMS((double));
+extern double asin _PARAMS((double));
+extern double atan2 _PARAMS((double, double));
+extern double cosh _PARAMS((double));
+extern double sinh _PARAMS((double));
+extern double exp _PARAMS((double));
+extern double ldexp _PARAMS((double, int));
+extern double log _PARAMS((double));
+extern double log10 _PARAMS((double));
+extern double pow _PARAMS((double, double));
+extern double sqrt _PARAMS((double));
+extern double fmod _PARAMS((double, double));
+#endif /* ! defined (__math_68881) */
+#endif /* ! defined (_REENT_ONLY) */
+
+#ifndef __STRICT_ANSI__
+
+/* Non ANSI double precision functions. */
+
+extern double infinity _PARAMS((void));
+extern double nan _PARAMS((void));
+extern int isnan _PARAMS((double));
+extern int isinf _PARAMS((double));
+extern int finite _PARAMS((double));
+extern double copysign _PARAMS((double, double));
+extern int ilogb _PARAMS((double));
+
+extern double asinh _PARAMS((double));
+extern double cbrt _PARAMS((double));
+extern double nextafter _PARAMS((double, double));
+extern double rint _PARAMS((double));
+extern double scalbn _PARAMS((double, int));
+
+#ifndef __math_68881
+extern double log1p _PARAMS((double));
+extern double expm1 _PARAMS((double));
+#endif /* ! defined (__math_68881) */
+
+#ifndef _REENT_ONLY
+extern double acosh _PARAMS((double));
+extern double atanh _PARAMS((double));
+extern double remainder _PARAMS((double, double));
+extern double gamma _PARAMS((double));
+extern double gamma_r _PARAMS((double, int *));
+extern double lgamma _PARAMS((double));
+extern double lgamma_r _PARAMS((double, int *));
+extern double erf _PARAMS((double));
+extern double erfc _PARAMS((double));
+extern double y0 _PARAMS((double));
+extern double y1 _PARAMS((double));
+extern double yn _PARAMS((int, double));
+extern double j0 _PARAMS((double));
+extern double j1 _PARAMS((double));
+extern double jn _PARAMS((int, double));
+#define log2(x) (log (x) / M_LOG2_E)
+
+#ifndef __math_68881
+extern double hypot _PARAMS((double, double));
+#endif
+
+extern double cabs();
+extern double drem _PARAMS((double, double));
+
+#endif /* ! defined (_REENT_ONLY) */
+
+/* Single precision versions of ANSI functions. */
+
+extern float atanf _PARAMS((float));
+extern float cosf _PARAMS((float));
+extern float sinf _PARAMS((float));
+extern float tanf _PARAMS((float));
+extern float tanhf _PARAMS((float));
+extern float frexpf _PARAMS((float, int *));
+extern float modff _PARAMS((float, float *));
+extern float ceilf _PARAMS((float));
+extern float fabsf _PARAMS((float));
+extern float floorf _PARAMS((float));
+
+#ifndef _REENT_ONLY
+extern float acosf _PARAMS((float));
+extern float asinf _PARAMS((float));
+extern float atan2f _PARAMS((float, float));
+extern float coshf _PARAMS((float));
+extern float sinhf _PARAMS((float));
+extern float expf _PARAMS((float));
+extern float ldexpf _PARAMS((float, int));
+extern float logf _PARAMS((float));
+extern float log10f _PARAMS((float));
+extern float powf _PARAMS((float, float));
+extern float sqrtf _PARAMS((float));
+extern float fmodf _PARAMS((float, float));
+#endif /* ! defined (_REENT_ONLY) */
+
+/* Other single precision functions. */
+
+extern float infinityf _PARAMS((void));
+extern float nanf _PARAMS((void));
+extern int isnanf _PARAMS((float));
+extern int isinff _PARAMS((float));
+extern int finitef _PARAMS((float));
+extern float copysignf _PARAMS((float, float));
+extern int ilogbf _PARAMS((float));
+
+extern float asinhf _PARAMS((float));
+extern float cbrtf _PARAMS((float));
+extern float nextafterf _PARAMS((float, float));
+extern float rintf _PARAMS((float));
+extern float scalbnf _PARAMS((float, int));
+extern float log1pf _PARAMS((float));
+extern float expm1f _PARAMS((float));
+
+#ifndef _REENT_ONLY
+extern float acoshf _PARAMS((float));
+extern float atanhf _PARAMS((float));
+extern float remainderf _PARAMS((float, float));
+extern float gammaf _PARAMS((float));
+extern float gammaf_r _PARAMS((float, int *));
+extern float lgammaf _PARAMS((float));
+extern float lgammaf_r _PARAMS((float, int *));
+extern float erff _PARAMS((float));
+extern float erfcf _PARAMS((float));
+extern float y0f _PARAMS((float));
+extern float y1f _PARAMS((float));
+extern float ynf _PARAMS((int, float));
+extern float j0f _PARAMS((float));
+extern float j1f _PARAMS((float));
+extern float jnf _PARAMS((int, float));
+#define log2f(x) (logf (x) / (float) M_LOG2_E)
+extern float hypotf _PARAMS((float, float));
+
+extern float cabsf();
+extern float dremf _PARAMS((float, float));
+
+#endif /* ! defined (_REENT_ONLY) */
+
+/* The gamma functions use a global variable, signgam. */
+
+extern int signgam;
+
+/* The exception structure passed to the matherr routine. */
+
+#ifdef __cplusplus
+struct __exception
+#else
+struct exception
+#endif
+{
+ int type;
+ char *name;
+ double arg1;
+ double arg2;
+ double retval;
+ int err;
+};
+
+#ifdef __cplusplus
+extern int matherr _PARAMS((struct __exception *e));
+#else
+extern int matherr _PARAMS((struct exception *e));
+#endif
+
+/* Values for the type field of struct exception. */
+
+#define DOMAIN 1
+#define SING 2
+#define OVERFLOW 3
+#define UNDERFLOW 4
+#define TLOSS 5
+#define PLOSS 6
+
+/* Useful constants. */
+
+#define M_E 2.7182818284590452354
+#define M_LOG2E 1.4426950408889634074
+#define M_LOG10E 0.43429448190325182765
+#define M_LN2 0.69314718055994530942
+#define M_LN10 2.30258509299404568402
+#define M_PI 3.14159265358979323846
+#define M_TWOPI (M_PI * 2.0)
+#define M_PI_2 1.57079632679489661923
+#define M_PI_4 0.78539816339744830962
+#define M_3PI_4 2.3561944901923448370E0
+#define M_SQRTPI 1.77245385090551602792981
+#define M_1_PI 0.31830988618379067154
+#define M_2_PI 0.63661977236758134308
+#define M_2_SQRTPI 1.12837916709551257390
+#define M_SQRT2 1.41421356237309504880
+#define M_SQRT1_2 0.70710678118654752440
+#define M_LN2LO 1.9082149292705877000E-10
+#define M_LN2HI 6.9314718036912381649E-1
+#define M_SQRT3 1.73205080756887719000
+#define M_IVLN10 0.43429448190325182765 /* 1 / log(10) */
+#define M_LOG2_E 0.693147180559945309417
+#define M_INVLN2 1.4426950408889633870E0 /* 1 / log(2) */
+
+/* Global control over fdlibm error handling. */
+
+enum __fdlibm_version
+{
+ __fdlibm_ieee = -1,
+ __fdlibm_svid,
+ __fdlibm_xopen,
+ __fdlibm_posix
+};
+
+#define _LIB_VERSION_TYPE enum __fdlibm_version
+#define _LIB_VERSION __fdlib_version
+
+extern _CONST _LIB_VERSION_TYPE _LIB_VERSION;
+
+#define _IEEE_ __fdlibm_ieee
+#define _SVID_ __fdlibm_svid
+#define _XOPEN_ __fdlibm_xopen
+#define _POSIX_ __fdlibm_posix
+
+#endif /* ! defined (__STRICT_ANSI__) */
+
+#ifdef __FAST_MATH__
+#include <machine/fastmath.h>
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _MATH_H_ */
diff --git a/newlib/libc/include/paths.h b/newlib/libc/include/paths.h
new file mode 100644
index 000000000..36cf78a9b
--- /dev/null
+++ b/newlib/libc/include/paths.h
@@ -0,0 +1,7 @@
+#ifndef _PATHS_H_
+#define _PATHS_H_
+
+#define _PATH_DEV "/dev/"
+#define _PATH_BSHELL "/bin/sh"
+
+#endif /* _PATHS_H_ */
diff --git a/newlib/libc/include/process.h b/newlib/libc/include/process.h
new file mode 100644
index 000000000..ca5b451ce
--- /dev/null
+++ b/newlib/libc/include/process.h
@@ -0,0 +1,60 @@
+/* process.h. This file comes with MSDOS and WIN32 systems. */
+
+#ifndef __PROCESS_H_
+#define __PROCESS_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int execl(const char *path, const char *argv0, ...);
+int execle(const char *path, const char *argv0, ... /*, char * const *envp */);
+int execlp(const char *path, const char *argv0, ...);
+int execlpe(const char *path, const char *argv0, ... /*, char * const *envp */);
+
+int execv(const char *path, char * const *argv);
+int execve(const char *path, char * const *argv, char * const *envp);
+int execvp(const char *path, char * const *argv);
+int execvpe(const char *path, char * const *argv, char * const *envp);
+
+int spawnl(int mode, const char *path, const char *argv0, ...);
+int spawnle(int mode, const char *path, const char *argv0, ... /*, char * const *envp */);
+int spawnlp(int mode, const char *path, const char *argv0, ...);
+int spawnlpe(int mode, const char *path, const char *argv0, ... /*, char * const *envp */);
+
+int spawnv(int mode, const char *path, const char * const *argv);
+int spawnve(int mode, const char *path, char * const *argv, const char * const *envp);
+int spawnvp(int mode, const char *path, const char * const *argv);
+int spawnvpe(int mode, const char *path, const char * const *argv, const char * const *envp);
+
+#ifdef __CYGWIN32__
+/* Secure exec() functions family */
+/* The first arg should really be a HANDLE which is a void *. But we
+ can't include windows.h here so... */
+#include <sys/types.h>
+pid_t sexecl(void *, const char *path, const char *argv0, ...);
+pid_t sexecle(void *, const char *path, const char *argv0, ... /*, char * const *envp */);
+pid_t sexeclp(void *, const char *path, const char *argv0, ...);
+pid_t sexeclpe(void *, const char *path, const char *argv0, ... /*, char * const *envp */);
+
+pid_t sexecv(void *, const char *path, const char * const *argv);
+pid_t sexecve(void *, const char *path, const char * const *argv, const char * const *envp);
+pid_t sexecvp(void *, const char *path, const char * const *argv);
+pid_t sexecvpe(void *, const char *path, const char * const *argv, const char * const *envp);
+#endif
+
+int cwait(int *, int, int);
+
+#define _P_WAIT 1
+#define _P_NOWAIT 2 /* always generates error */
+#define _P_OVERLAY 3
+#define _P_NOWAITO 4
+#define _P_DETACH 5
+
+#define WAIT_CHILD 1
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/newlib/libc/include/pwd.h b/newlib/libc/include/pwd.h
new file mode 100644
index 000000000..59d6ab555
--- /dev/null
+++ b/newlib/libc/include/pwd.h
@@ -0,0 +1,76 @@
+/*-
+ * Copyright (c) 1989 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)pwd.h 5.13 (Berkeley) 5/28/91
+ */
+
+#ifndef _PWD_H_
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define _PWD_H_
+
+#include <sys/types.h>
+
+#ifndef _POSIX_SOURCE
+#define _PATH_PASSWD "/etc/passwd"
+
+#define _PASSWORD_LEN 128 /* max length, not counting NULL */
+#endif
+
+struct passwd {
+ char *pw_name; /* user name */
+ char *pw_passwd; /* encrypted password */
+ int pw_uid; /* user uid */
+ int pw_gid; /* user gid */
+ char *pw_comment; /* comment */
+ char *pw_gecos; /* Honeywell login info */
+ char *pw_dir; /* home directory */
+ char *pw_shell; /* default shell */
+};
+
+struct passwd *getpwuid (uid_t);
+struct passwd *getpwnam (const char *);
+int getpwnam_r (const char *, struct passwd *,
+ char *, size_t , struct passwd **);
+int getpwuid_r (uid_t, struct passwd *, char *,
+ size_t, struct passwd **);
+#ifndef _POSIX_SOURCE
+struct passwd *getpwent (void);
+void setpwent (void);
+void endpwent (void);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _PWD_H_ */
diff --git a/newlib/libc/include/reent.h b/newlib/libc/include/reent.h
new file mode 100644
index 000000000..56fae91a4
--- /dev/null
+++ b/newlib/libc/include/reent.h
@@ -0,0 +1,87 @@
+/* This header file provides the reentrancy. */
+
+/* The reentrant system calls here serve two purposes:
+
+ 1) Provide reentrant versions of the system calls the ANSI C library
+ requires.
+ 2) Provide these system calls in a namespace clean way.
+
+ It is intended that *all* system calls that the ANSI C library needs
+ be declared here. It documents them all in one place. All library access
+ to the system is via some form of these functions.
+
+ There are three ways a target may provide the needed syscalls.
+
+ 1) Define the reentrant versions of the syscalls directly.
+ (eg: _open_r, _close_r, etc.). Please keep the namespace clean.
+ When you do this, set "syscall_dir" to "syscalls" in configure.in,
+ and add -DREENTRANT_SYSCALLS_PROVIDED to target_cflags in configure.in.
+
+ 2) Define namespace clean versions of the system calls by prefixing
+ them with '_' (eg: _open, _close, etc.). Technically, there won't be
+ true reentrancy at the syscall level, but the library will be namespace
+ clean.
+ When you do this, set "syscall_dir" to "syscalls" in configure.in.
+
+ 3) Define or otherwise provide the regular versions of the syscalls
+ (eg: open, close, etc.). The library won't be reentrant nor namespace
+ clean, but at least it will work.
+ When you do this, add -DMISSING_SYSCALL_NAMES to target_cflags in
+ configure.in.
+
+ Stubs of the reentrant versions of the syscalls exist in the libc/reent
+ source directory and are used if REENTRANT_SYSCALLS_PROVIDED isn't defined.
+ They use the native system calls: _open, _close, etc. if they're available
+ (MISSING_SYSCALL_NAMES is *not* defined), otherwise open, close, etc.
+ (MISSING_SYSCALL_NAMES *is* defined). */
+
+/* WARNING: All identifiers here must begin with an underscore. This file is
+ included by stdio.h and others and we therefore must only use identifiers
+ in the namespace allotted to us. */
+
+#ifndef _REENT_H_
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define _REENT_H_
+
+#include <sys/reent.h>
+#include <sys/_types.h>
+#include <machine/types.h>
+
+#define __need_size_t
+#include <stddef.h>
+
+/* FIXME: not namespace clean */
+struct stat;
+struct tms;
+struct timeval;
+struct timezone;
+
+/* Reentrant versions of system calls. */
+
+extern int _close_r _PARAMS ((struct _reent *, int));
+extern int _execve_r _PARAMS ((struct _reent *, char *, char **, char **));
+extern int _fcntl_r _PARAMS ((struct _reent *, int, int, int));
+extern int _fork_r _PARAMS ((struct _reent *));
+extern int _fstat_r _PARAMS ((struct _reent *, int, struct stat *));
+extern int _getpid_r _PARAMS ((struct _reent *));
+extern int _kill_r _PARAMS ((struct _reent *, int, int));
+extern int _link_r _PARAMS ((struct _reent *, const char *, const char *));
+extern _off_t _lseek_r _PARAMS ((struct _reent *, int, _off_t, int));
+extern int _open_r _PARAMS ((struct _reent *, const char *, int, int));
+extern _ssize_t _read_r _PARAMS ((struct _reent *, int, void *, size_t));
+extern void *_sbrk_r _PARAMS ((struct _reent *, size_t));
+extern int _stat_r _PARAMS ((struct _reent *, const char *, struct stat *));
+extern _CLOCK_T_ _times_r _PARAMS ((struct _reent *, struct tms *));
+extern int _unlink_r _PARAMS ((struct _reent *, const char *));
+extern int _wait_r _PARAMS ((struct _reent *, int *));
+extern _ssize_t _write_r _PARAMS ((struct _reent *, int, const void *, size_t));
+
+/* This one is not guaranteed to be available on all targets. */
+extern int _gettimeofday_r _PARAMS ((struct _reent *, struct timeval *tp, struct timezone *tzp));
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _REENT_H_ */
diff --git a/newlib/libc/include/regdef.h b/newlib/libc/include/regdef.h
new file mode 100644
index 000000000..8cf144b85
--- /dev/null
+++ b/newlib/libc/include/regdef.h
@@ -0,0 +1,7 @@
+/* regdef.h -- define register names. */
+
+/* This is a standard include file for MIPS targets. Other target
+ probably don't define it, and attempts to include this file will
+ fail. */
+
+#include <machine/regdef.h>
diff --git a/newlib/libc/include/setjmp.h b/newlib/libc/include/setjmp.h
new file mode 100644
index 000000000..53d0223fd
--- /dev/null
+++ b/newlib/libc/include/setjmp.h
@@ -0,0 +1,22 @@
+/*
+ setjmp.h
+ stubs for future use.
+*/
+
+#ifndef _SETJMP_H_
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define _SETJMP_H_
+
+#include "_ansi.h"
+#include <machine/setjmp.h>
+
+void _EXFUN(longjmp,(jmp_buf __jmpb, int __retval));
+int _EXFUN(setjmp,(jmp_buf __jmpb));
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _SETJMP_H_ */
+
diff --git a/newlib/libc/include/signal.h b/newlib/libc/include/signal.h
new file mode 100644
index 000000000..311149146
--- /dev/null
+++ b/newlib/libc/include/signal.h
@@ -0,0 +1,37 @@
+#ifndef _SIGNAL_H_
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define _SIGNAL_H_
+
+#include "_ansi.h"
+#include <sys/signal.h>
+
+typedef int sig_atomic_t; /* Atomic entity type (ANSI) */
+
+#if defined(__STDC__) || defined(__cplusplus)
+#define SIG_DFL ((void (*)(int))0) /* Default action */
+#define SIG_IGN ((void (*)(int))1) /* Ignore action */
+#define SIG_ERR ((void (*)(int))-1) /* Error return */
+#else
+#define SIG_DFL ((void (*)())0) /* Default action */
+#define SIG_IGN ((void (*)())1) /* Ignore action */
+#define SIG_ERR ((void (*)())-1) /* Error return */
+#endif
+
+typedef void (*_sig_func_ptr) (int);
+
+struct _reent;
+
+_sig_func_ptr _EXFUN(_signal_r, (struct _reent *, int, _sig_func_ptr));
+int _EXFUN(_raise_r, (struct _reent *, int));
+
+#ifndef _REENT_ONLY
+_sig_func_ptr _EXFUN(signal, (int, _sig_func_ptr));
+int _EXFUN(raise, (int));
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _SIGNAL_H_ */
diff --git a/newlib/libc/include/stdio.h b/newlib/libc/include/stdio.h
new file mode 100644
index 000000000..2c2b46cf2
--- /dev/null
+++ b/newlib/libc/include/stdio.h
@@ -0,0 +1,313 @@
+/*
+ * Copyright (c) 1990 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted
+ * provided that the above copyright notice and this paragraph are
+ * duplicated in all such forms and that any documentation,
+ * advertising materials, and other materials related to such
+ * distribution and use acknowledge that the software was developed
+ * by the University of California, Berkeley. The name of the
+ * University may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * @(#)stdio.h 5.3 (Berkeley) 3/15/86
+ */
+
+/*
+ * NB: to fit things in six character monocase externals, the
+ * stdio code uses the prefix `__s' for stdio objects, typically
+ * followed by a three-character attempt at a mnemonic.
+ */
+
+#ifndef _STDIO_H_
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define _STDIO_H_
+
+#include "_ansi.h"
+
+#define _FSTDIO /* ``function stdio'' */
+
+#define __need_size_t
+#include <stddef.h>
+
+#define __need___va_list
+#include <stdarg.h>
+
+/*
+ * <sys/reent.h> defines __sFILE, _fpos_t.
+ * They must be defined there because struct _reent needs them (and we don't
+ * want reent.h to include this file.
+ */
+
+#include <sys/reent.h>
+
+typedef _fpos_t fpos_t;
+
+typedef struct __sFILE FILE;
+
+#define __SLBF 0x0001 /* line buffered */
+#define __SNBF 0x0002 /* unbuffered */
+#define __SRD 0x0004 /* OK to read */
+#define __SWR 0x0008 /* OK to write */
+ /* RD and WR are never simultaneously asserted */
+#define __SRW 0x0010 /* open for reading & writing */
+#define __SEOF 0x0020 /* found EOF */
+#define __SERR 0x0040 /* found error */
+#define __SMBF 0x0080 /* _buf is from malloc */
+#define __SAPP 0x0100 /* fdopen()ed in append mode - so must write to end */
+#define __SSTR 0x0200 /* this is an sprintf/snprintf string */
+#define __SOPT 0x0400 /* do fseek() optimisation */
+#define __SNPT 0x0800 /* do not do fseek() optimisation */
+#define __SOFF 0x1000 /* set iff _offset is in fact correct */
+#define __SMOD 0x2000 /* true => fgetline modified _p text */
+
+/*
+ * The following three definitions are for ANSI C, which took them
+ * from System V, which stupidly took internal interface macros and
+ * made them official arguments to setvbuf(), without renaming them.
+ * Hence, these ugly _IOxxx names are *supposed* to appear in user code.
+ *
+ * Although these happen to match their counterparts above, the
+ * implementation does not rely on that (so these could be renumbered).
+ */
+#define _IOFBF 0 /* setvbuf should set fully buffered */
+#define _IOLBF 1 /* setvbuf should set line buffered */
+#define _IONBF 2 /* setvbuf should set unbuffered */
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+#define BUFSIZ 1024
+#define EOF (-1)
+
+#define FOPEN_MAX 20 /* must be <= OPEN_MAX <sys/syslimits.h> */
+#define FILENAME_MAX 1024 /* must be <= PATH_MAX <sys/syslimits.h> */
+#define L_tmpnam 1024 /* XXX must be == PATH_MAX */
+#ifndef __STRICT_ANSI__
+#define P_tmpdir "/tmp"
+#endif
+
+#ifndef SEEK_SET
+#define SEEK_SET 0 /* set file offset to offset */
+#endif
+#ifndef SEEK_CUR
+#define SEEK_CUR 1 /* set file offset to current plus offset */
+#endif
+#ifndef SEEK_END
+#define SEEK_END 2 /* set file offset to EOF plus offset */
+#endif
+
+#define TMP_MAX 26
+
+#define stdin (_impure_ptr->_stdin)
+#define stdout (_impure_ptr->_stdout)
+#define stderr (_impure_ptr->_stderr)
+
+#define _stdin_r(x) ((x)->_stdin)
+#define _stdout_r(x) ((x)->_stdout)
+#define _stderr_r(x) ((x)->_stderr)
+
+/*
+ * Functions defined in ANSI C standard.
+ */
+
+#ifdef __GNUC__
+#define __VALIST __gnuc_va_list
+#else
+#define __VALIST char*
+#endif
+
+#ifndef _REENT_ONLY
+int _EXFUN(remove, (const char *));
+int _EXFUN(rename, (const char *, const char *));
+#endif
+char * _EXFUN(tempnam, (const char *, const char *));
+FILE * _EXFUN(tmpfile, (void));
+char * _EXFUN(tmpnam, (char *));
+int _EXFUN(fclose, (FILE *));
+int _EXFUN(fflush, (FILE *));
+FILE * _EXFUN(freopen, (const char *, const char *, FILE *));
+void _EXFUN(setbuf, (FILE *, char *));
+int _EXFUN(setvbuf, (FILE *, char *, int, size_t));
+int _EXFUN(fprintf, (FILE *, const char *, ...));
+int _EXFUN(fscanf, (FILE *, const char *, ...));
+int _EXFUN(printf, (const char *, ...));
+int _EXFUN(scanf, (const char *, ...));
+int _EXFUN(sscanf, (const char *, const char *, ...));
+int _EXFUN(vfprintf, (FILE *, const char *, __VALIST));
+int _EXFUN(vprintf, (const char *, __VALIST));
+int _EXFUN(vsprintf, (char *, const char *, __VALIST));
+int _EXFUN(vsnprintf, (char *, size_t, const char *, __VALIST));
+int _EXFUN(fgetc, (FILE *));
+char * _EXFUN(fgets, (char *, int, FILE *));
+int _EXFUN(fputc, (int, FILE *));
+int _EXFUN(fputs, (const char *, FILE *));
+int _EXFUN(getc, (FILE *));
+int _EXFUN(getchar, (void));
+char * _EXFUN(gets, (char *));
+int _EXFUN(putc, (int, FILE *));
+int _EXFUN(putchar, (int));
+int _EXFUN(puts, (const char *));
+int _EXFUN(ungetc, (int, FILE *));
+size_t _EXFUN(fread, (_PTR, size_t _size, size_t _n, FILE *));
+size_t _EXFUN(fwrite, (const _PTR , size_t _size, size_t _n, FILE *));
+int _EXFUN(fgetpos, (FILE *, fpos_t *));
+int _EXFUN(fseek, (FILE *, long, int));
+int _EXFUN(fsetpos, (FILE *, const fpos_t *));
+long _EXFUN(ftell, ( FILE *));
+void _EXFUN(rewind, (FILE *));
+void _EXFUN(clearerr, (FILE *));
+int _EXFUN(feof, (FILE *));
+int _EXFUN(ferror, (FILE *));
+void _EXFUN(perror, (const char *));
+#ifndef _REENT_ONLY
+FILE * _EXFUN(fopen, (const char *_name, const char *_type));
+int _EXFUN(sprintf, (char *, const char *, ...));
+int _EXFUN(snprintf, (char *, size_t, const char *, ...));
+#endif
+#ifndef __STRICT_ANSI__
+int _EXFUN(vfiprintf, (FILE *, const char *, __VALIST));
+int _EXFUN(iprintf, (const char *, ...));
+int _EXFUN(fiprintf, (FILE *, const char *, ...));
+int _EXFUN(siprintf, (char *, const char *, ...));
+#endif
+
+/*
+ * Routines in POSIX 1003.1.
+ */
+
+#ifndef __STRICT_ANSI__
+#ifndef _REENT_ONLY
+FILE * _EXFUN(fdopen, (int, const char *));
+#endif
+int _EXFUN(fileno, (FILE *));
+int _EXFUN(getw, (FILE *));
+int _EXFUN(pclose, (FILE *));
+FILE * _EXFUN(popen, (const char *, const char *));
+int _EXFUN(putw, (int, FILE *));
+void _EXFUN(setbuffer, (FILE *, char *, int));
+int _EXFUN(setlinebuf, (FILE *));
+#endif
+
+/*
+ * Recursive versions of the above.
+ */
+
+FILE * _EXFUN(_fdopen_r, (struct _reent *, int, const char *));
+FILE * _EXFUN(_fopen_r, (struct _reent *, const char *, const char *));
+int _EXFUN(_getchar_r, (struct _reent *));
+char * _EXFUN(_gets_r, (struct _reent *, char *));
+int _EXFUN(_iprintf_r, (struct _reent *, const char *, ...));
+int _EXFUN(_mkstemp_r, (struct _reent *, char *));
+char * _EXFUN(_mktemp_r, (struct _reent *, char *));
+void _EXFUN(_perror_r, (struct _reent *, const char *));
+int _EXFUN(_printf_r, (struct _reent *, const char *, ...));
+int _EXFUN(_putchar_r, (struct _reent *, int));
+int _EXFUN(_puts_r, (struct _reent *, const char *));
+int _EXFUN(_remove_r, (struct _reent *, const char *));
+int _EXFUN(_rename_r, (struct _reent *,
+ const char *_old, const char *_new));
+int _EXFUN(_scanf_r, (struct _reent *, const char *, ...));
+int _EXFUN(_sprintf_r, (struct _reent *, char *, const char *, ...));
+int _EXFUN(_snprintf_r, (struct _reent *, char *, size_t, const char *, ...));
+char * _EXFUN(_tempnam_r, (struct _reent *, const char *, const char *));
+FILE * _EXFUN(_tmpfile_r, (struct _reent *));
+char * _EXFUN(_tmpnam_r, (struct _reent *, char *));
+int _EXFUN(_vfprintf_r, (struct _reent *, FILE *, const char *, __VALIST));
+int _EXFUN(_vprintf_r, (struct _reent *, const char *, __VALIST));
+int _EXFUN(_vsprintf_r, (struct _reent *, char *, const char *, __VALIST));
+int _EXFUN(_vsnprintf_r, (struct _reent *, char *, size_t, const char *, __VALIST));
+
+/*
+ * Routines internal to the implementation.
+ */
+
+int _EXFUN(__srget, (FILE *));
+int _EXFUN(__swbuf, (int, FILE *));
+
+/*
+ * Stdio function-access interface.
+ */
+
+#ifndef __STRICT_ANSI__
+FILE *_EXFUN(funopen,(const _PTR _cookie,
+ int (*readfn)(_PTR _cookie, char *_buf, int _n),
+ int (*writefn)(_PTR _cookie, const char *_buf, int _n),
+ fpos_t (*seekfn)(_PTR _cookie, fpos_t _off, int _whence),
+ int (*closefn)(_PTR _cookie)));
+
+#define fropen(cookie, fn) funopen(cookie, fn, (int (*)())0, (fpos_t (*)())0, (int (*)())0)
+#define fwopen(cookie, fn) funopen(cookie, (int (*)())0, fn, (fpos_t (*)())0, (int (*)())0)
+#endif
+
+/*
+ * The __sfoo macros are here so that we can
+ * define function versions in the C library.
+ */
+#define __sgetc(p) (--(p)->_r < 0 ? __srget(p) : (int)(*(p)->_p++))
+#ifdef _never /* __GNUC__ */
+/* If this inline is actually used, then systems using coff debugging
+ info get hopelessly confused. 21sept93 rich@cygnus.com. */
+static __inline int __sputc(int _c, FILE *_p) {
+ if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n'))
+ return (*_p->_p++ = _c);
+ else
+ return (__swbuf(_c, _p));
+}
+#else
+/*
+ * This has been tuned to generate reasonable code on the vax using pcc
+ */
+#define __sputc(c, p) \
+ (--(p)->_w < 0 ? \
+ (p)->_w >= (p)->_lbfsize ? \
+ (*(p)->_p = (c)), *(p)->_p != '\n' ? \
+ (int)*(p)->_p++ : \
+ __swbuf('\n', p) : \
+ __swbuf((int)(c), p) : \
+ (*(p)->_p = (c), (int)*(p)->_p++))
+#endif
+
+#define __sfeof(p) (((p)->_flags & __SEOF) != 0)
+#define __sferror(p) (((p)->_flags & __SERR) != 0)
+#define __sclearerr(p) ((void)((p)->_flags &= ~(__SERR|__SEOF)))
+#define __sfileno(p) ((p)->_file)
+
+#define feof(p) __sfeof(p)
+#define ferror(p) __sferror(p)
+#define clearerr(p) __sclearerr(p)
+
+#if 0 /*ndef __STRICT_ANSI__ - FIXME: must initialize stdio first, use fn */
+#define fileno(p) __sfileno(p)
+#endif
+
+#ifndef lint
+#define getc(fp) __sgetc(fp)
+#define putc(x, fp) __sputc(x, fp)
+#endif /* lint */
+
+#define getchar() getc(stdin)
+#define putchar(x) putc(x, stdout)
+
+#ifndef __STRICT_ANSI__
+/* fast always-buffered version, true iff error */
+#define fast_putc(x,p) (--(p)->_w < 0 ? \
+ __swbuf((int)(x), p) == EOF : (*(p)->_p = (x), (p)->_p++, 0))
+
+#define L_cuserid 9 /* posix says it goes in stdio.h :( */
+#ifdef __CYGWIN32__
+#define L_ctermid 16
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _STDIO_H_ */
diff --git a/newlib/libc/include/stdlib.h b/newlib/libc/include/stdlib.h
new file mode 100644
index 000000000..8c21de647
--- /dev/null
+++ b/newlib/libc/include/stdlib.h
@@ -0,0 +1,142 @@
+/*
+ * stdlib.h
+ *
+ * Definitions for common types, variables, and functions.
+ */
+
+#ifndef _STDLIB_H_
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define _STDLIB_H_
+
+#include "_ansi.h"
+
+#define __need_size_t
+#define __need_wchar_t
+#include <stddef.h>
+
+#include <sys/reent.h>
+
+typedef struct
+{
+ int quot; /* quotient */
+ int rem; /* remainder */
+} div_t;
+
+typedef struct
+{
+ long quot; /* quotient */
+ long rem; /* remainder */
+} ldiv_t;
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+#define EXIT_FAILURE 1
+#define EXIT_SUCCESS 0
+
+#define RAND_MAX 0x7fffffff
+
+#if (defined(__CYGWIN__) || defined(__CYGWIN32__)) && ! defined(_COMPILING_NEWLIB)
+extern __declspec(dllimport) int __mb_cur_max;
+#else
+extern int __mb_cur_max;
+#endif
+
+#define MB_CUR_MAX __mb_cur_max
+
+_VOID _EXFUN(abort,(_VOID) _ATTRIBUTE ((noreturn)));
+int _EXFUN(abs,(int));
+int _EXFUN(atexit,(_VOID (*__func)(_VOID)));
+double _EXFUN(atof,(const char *__nptr));
+#ifndef __STRICT_ANSI__
+float _EXFUN(atoff,(const char *__nptr));
+#endif
+int _EXFUN(atoi,(const char *__nptr));
+long _EXFUN(atol,(const char *__nptr));
+_PTR _EXFUN(bsearch,(const _PTR __key,
+ const _PTR __base,
+ size_t __nmemb,
+ size_t __size,
+ int _EXFUN((*_compar),(const _PTR, const _PTR))));
+_PTR _EXFUN(calloc,(size_t __nmemb, size_t __size));
+div_t _EXFUN(div,(int __numer, int __denom));
+_VOID _EXFUN(exit,(int __status) _ATTRIBUTE ((noreturn)));
+_VOID _EXFUN(free,(_PTR));
+char * _EXFUN(getenv,(const char *__string));
+char * _EXFUN(_getenv_r,(struct _reent *, const char *__string));
+char * _EXFUN(_findenv,(_CONST char *, int *));
+char * _EXFUN(_findenv_r,(struct _reent *, _CONST char *, int *));
+long _EXFUN(labs,(long));
+ldiv_t _EXFUN(ldiv,(long __numer, long __denom));
+_PTR _EXFUN(malloc,(size_t __size));
+int _EXFUN(mblen,(const char *, size_t));
+int _EXFUN(_mblen_r,(struct _reent *, const char *, size_t, int *));
+int _EXFUN(mbtowc,(wchar_t *, const char *, size_t));
+int _EXFUN(_mbtowc_r,(struct _reent *, wchar_t *, const char *, size_t, int *));
+int _EXFUN(wctomb,(char *, wchar_t));
+int _EXFUN(_wctomb_r,(struct _reent *, char *, wchar_t, int *));
+size_t _EXFUN(mbstowcs,(wchar_t *, const char *, size_t));
+size_t _EXFUN(_mbstowcs_r,(struct _reent *, wchar_t *, const char *, size_t, int *));
+size_t _EXFUN(wcstombs,(char *, const wchar_t *, size_t));
+size_t _EXFUN(_wcstombs_r,(struct _reent *, char *, const wchar_t *, size_t, int *));
+_VOID _EXFUN(qsort,(_PTR __base, size_t __nmemb, size_t __size, int(*_compar)(const _PTR, const _PTR)));
+int _EXFUN(rand,(_VOID));
+_PTR _EXFUN(realloc,(_PTR __r, size_t __size));
+_VOID _EXFUN(srand,(unsigned __seed));
+double _EXFUN(strtod,(const char *__n, char **_end_PTR));
+#ifndef __STRICT_ANSI__
+float _EXFUN(strtodf,(const char *__n, char **_end_PTR));
+#endif
+long _EXFUN(strtol,(const char *__n, char **_end_PTR, int __base));
+unsigned long _EXFUN(strtoul,(const char *_n_PTR, char **_end_PTR, int __base));
+unsigned long _EXFUN(_strtoul_r,(struct _reent *,const char *_n_PTR, char **_end_PTR, int __base));
+int _EXFUN(system,(const char *__string));
+
+#ifndef __STRICT_ANSI__
+_VOID _EXFUN(cfree,(_PTR));
+int _EXFUN(putenv,(const char *__string));
+int _EXFUN(_putenv_r,(struct _reent *, const char *__string));
+int _EXFUN(setenv,(const char *__string, const char *__value, int __overwrite));
+int _EXFUN(_setenv_r,(struct _reent *, const char *__string, const char *__value, int __overwrite));
+
+char * _EXFUN(gcvt,(double,int,char *));
+char * _EXFUN(gcvtf,(float,int,char *));
+char * _EXFUN(fcvt,(double,int,int *,int *));
+char * _EXFUN(fcvtf,(float,int,int *,int *));
+char * _EXFUN(ecvt,(double,int,int *,int *));
+char * _EXFUN(ecvtbuf,(double, int, int*, int*, char *));
+char * _EXFUN(fcvtbuf,(double, int, int*, int*, char *));
+char * _EXFUN(ecvtf,(float,int,int *,int *));
+char * _EXFUN(dtoa,(double, int, int, int *, int*, char**));
+int _EXFUN(rand_r,(unsigned *__seed));
+
+#ifdef __CYGWIN32__
+char * _EXFUN(realpath,(const char *, char *));
+void _EXFUN(unsetenv,(const char *__string));
+void _EXFUN(_unsetenv_r,(struct _reent *, const char *__string));
+int _EXFUN(random,(_VOID));
+long _EXFUN(srandom,(unsigned __seed));
+char * _EXFUN(ptsname, (int));
+int _EXFUN(grantpt, (int));
+int _EXFUN(unlockpt,(int));
+#endif
+
+#endif /* ! __STRICT_ANSI__ */
+
+char * _EXFUN(_dtoa_r,(struct _reent *, double, int, int, int *, int*, char**));
+_PTR _EXFUN(_malloc_r,(struct _reent *, size_t));
+_PTR _EXFUN(_calloc_r,(struct _reent *, size_t, size_t));
+_VOID _EXFUN(_free_r,(struct _reent *, _PTR));
+_PTR _EXFUN(_realloc_r,(struct _reent *, _PTR, size_t));
+_VOID _EXFUN(_mstats_r,(struct _reent *, char *));
+int _EXFUN(_system_r,(struct _reent *, const char *));
+
+_VOID _EXFUN(__eprintf,(const char *, const char *, unsigned int, const char *));
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _STDLIB_H_ */
diff --git a/newlib/libc/include/string.h b/newlib/libc/include/string.h
new file mode 100644
index 000000000..a9494f826
--- /dev/null
+++ b/newlib/libc/include/string.h
@@ -0,0 +1,92 @@
+/*
+ * string.h
+ *
+ * Definitions for memory and string functions.
+ */
+
+#ifndef _STRING_H_
+#define _STRING_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "_ansi.h"
+#include <sys/reent.h>
+
+#define __need_size_t
+#include <stddef.h>
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+_PTR _EXFUN(memchr,(const _PTR, int, size_t));
+int _EXFUN(memcmp,(const _PTR, const _PTR, size_t));
+_PTR _EXFUN(memcpy,(_PTR, const _PTR, size_t));
+_PTR _EXFUN(memmove,(_PTR, const _PTR, size_t));
+_PTR _EXFUN(memset,(_PTR, int, size_t));
+char *_EXFUN(strcat,(char *, const char *));
+char *_EXFUN(strchr,(const char *, int));
+int _EXFUN(strcmp,(const char *, const char *));
+int _EXFUN(strcoll,(const char *, const char *));
+char *_EXFUN(strcpy,(char *, const char *));
+size_t _EXFUN(strcspn,(const char *, const char *));
+char *_EXFUN(strerror,(int));
+size_t _EXFUN(strlen,(const char *));
+char *_EXFUN(strncat,(char *, const char *, size_t));
+int _EXFUN(strncmp,(const char *, const char *, size_t));
+char *_EXFUN(strncpy,(char *, const char *, size_t));
+char *_EXFUN(strpbrk,(const char *, const char *));
+char *_EXFUN(strrchr,(const char *, int));
+size_t _EXFUN(strspn,(const char *, const char *));
+char *_EXFUN(strstr,(const char *, const char *));
+
+#ifndef _REENT_ONLY
+char *_EXFUN(strtok,(char *, const char *));
+#endif
+
+size_t _EXFUN(strxfrm,(char *, const char *, size_t));
+
+#ifndef __STRICT_ANSI__
+char *_EXFUN(strtok_r,(char *, const char *, char **));
+
+int _EXFUN(bcmp,(const char *, const char *, size_t));
+void _EXFUN(bcopy,(const char *, char *, size_t));
+void _EXFUN(bzero,(char *, size_t));
+int _EXFUN(ffs,(int));
+char *_EXFUN(index,(const char *, int));
+_PTR _EXFUN(memccpy,(_PTR, const _PTR, int, size_t));
+char *_EXFUN(rindex,(const char *, int));
+int _EXFUN(strcasecmp,(const char *, const char *));
+char *_EXFUN(strdup,(const char *));
+char *_EXFUN(_strdup_r,(struct _reent *, const char *));
+int _EXFUN(strncasecmp,(const char *, const char *, size_t));
+char *_EXFUN(strsep,(char **, const char *));
+char *_EXFUN(strlwr,(char *));
+char *_EXFUN(strupr,(char *));
+#ifdef __CYGWIN32__
+char *_EXFUN(strsignal, (int __signo));
+int _EXFUN(strtosigno, (const char *__name));
+#endif
+
+/* These function names are used on Windows and perhaps other systems. */
+#ifndef strcmpi
+#define strcmpi strcasecmp
+#endif
+#ifndef stricmp
+#define stricmp strcasecmp
+#endif
+#ifndef strncmpi
+#define strncmpi strncasecmp
+#endif
+#ifndef strnicmp
+#define strnicmp strncasecmp
+#endif
+
+#endif /* ! __STRICT_ANSI__ */
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _STRING_H_ */
diff --git a/newlib/libc/include/sys/_types.h b/newlib/libc/include/sys/_types.h
new file mode 100644
index 000000000..8186f2d9d
--- /dev/null
+++ b/newlib/libc/include/sys/_types.h
@@ -0,0 +1,15 @@
+/* ANSI C namespace clean utility typedefs */
+
+/* This file defines various typedefs needed by the system calls that support
+ the C library. Basically, they're just the POSIX versions with an '_'
+ prepended. This file lives in the `sys' directory so targets can provide
+ their own if desired (or they can put target dependant conditionals here).
+*/
+
+#ifndef _SYS__TYPES_H
+#define _SYS__TYPES_H
+
+typedef long _off_t;
+typedef long _ssize_t;
+
+#endif /* _SYS__TYPES_H */
diff --git a/newlib/libc/include/sys/config.h b/newlib/libc/include/sys/config.h
new file mode 100644
index 000000000..e274119bc
--- /dev/null
+++ b/newlib/libc/include/sys/config.h
@@ -0,0 +1,115 @@
+#ifndef __SYS_CONFIG_H__
+#define __SYS_CONFIG_H__
+
+/* exceptions first */
+/* ??? Why is much of this stuff duplicated with machine/ieeefp.h? */
+#if defined(__H8300__) || defined(__H8500__) || defined (__H8300H__) || defined(__W65__) || defined (__H8300S__)
+#define _FLOAT_ARG float
+#define __SMALL_BITFIELDS
+#define _DOUBLE_IS_32BITS
+#define __IEEE_BIG_ENDIAN
+/* ??? This conditional is true for the h8500 and the w65, defining H8300
+ in those cases probably isn't the right thing to do. */
+#define H8300 1
+#endif
+
+#ifdef __W65__
+#define _DOUBLE_IS_32BITS
+#define __SMALL_BITFIELDS
+#define __IEEE_BIG_ENDIAN
+#undef INT_MAX
+#undef UINT_MAX
+#define INT_MAX 32767
+#define UINT_MAX 65535
+
+#endif
+
+/* 16 bit integer machines */
+#if defined(__Z8001__) || defined(__Z8002__) || defined(__H8300__) || defined(__H8500__) || defined(__W65__) || defined (__H8300H__) || defined (__H8300S__) || defined (__mn10200__)
+
+#undef INT_MAX
+#undef UINT_MAX
+#define INT_MAX 32767
+#define UINT_MAX 65535
+#endif
+
+#if defined(__D10V__)
+#undef INT_MAX
+#undef UINT_MAX
+#define INT_MAX __INT_MAX__
+#define UINT_MAX (__INT_MAX__ * 2U + 1)
+#define _DOUBLE_IS_32BITS
+#define _POINTER_INT short
+#define __IEEE_BIG_ENDIAN
+#endif
+
+#ifdef ___AM29K__
+#define _FLOAT_RET double
+#endif
+
+#ifdef __i386__
+#ifndef __unix__
+/* in other words, go32 */
+#define _FLOAT_RET double
+#endif
+#endif
+
+#ifdef __M32R__
+#define __IEEE_BIG_ENDIAN
+#endif
+
+#ifdef __m68k__
+/* This is defined in machine/ieeefp.h; need to check is it redundant here? */
+#define __IEEE_BIG_ENDIAN
+#endif
+
+#ifdef __mn10300__
+#define __IEEE_LITTLE_ENDIAN
+#endif
+
+#ifdef __mn10200__
+#define _DOUBLE_IS_32BITS
+#define __SMALL_BITFIELDS
+#define __IEEE_LITTLE_ENDIAN
+#endif
+
+#ifdef __TIC80__
+#define __IEEE_LITTLE_ENDIAN
+#endif
+
+#ifdef __v850
+#define __IEEE_LITTLE_ENDIAN
+#define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__sda__))
+#endif
+
+#ifdef __D30V__
+#define __IEEE_BIG_ENDIAN
+#endif
+
+/* For the PowerPC eabi, force the _impure_ptr to be in .sdata */
+#if defined(__PPC__) && defined(_CALL_SYSV)
+#define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__section__(".sdata")))
+#endif
+
+#ifdef __sparc__
+#ifdef __LITTLE_ENDIAN_DATA__
+#define __IEEE_LITTLE_ENDIAN
+#else
+#define __IEEE_BIG_ENDIAN
+#endif
+#endif
+
+#if INT_MAX == 32767
+typedef long int __int32_t;
+typedef unsigned long int __uint32_t;
+#else
+typedef int __int32_t;
+typedef unsigned int __uint32_t;
+#endif
+
+#ifndef _POINTER_INT
+#define _POINTER_INT long
+#endif
+
+
+#endif /* __SYS_CONFIG_H__ */
diff --git a/newlib/libc/include/sys/dirent.h b/newlib/libc/include/sys/dirent.h
new file mode 100644
index 000000000..f2f2342d5
--- /dev/null
+++ b/newlib/libc/include/sys/dirent.h
@@ -0,0 +1,15 @@
+/* <dirent.h> includes <sys/dirent.h>, which is this file. On a
+ system which supports <dirent.h>, this file is overridden by
+ dirent.h in the libc/sys/.../sys directory. On a system which does
+ not support <dirent.h>, we will get this file which tries to find
+ any other <dirent.h> which may be lurking around. If there isn't
+ one, the user will get an error indicating that there is no
+ <dirent.h>. */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include_next <dirent.h>
+#ifdef __cplusplus
+}
+#endif
diff --git a/newlib/libc/include/sys/errno.h b/newlib/libc/include/sys/errno.h
new file mode 100644
index 000000000..0247fa232
--- /dev/null
+++ b/newlib/libc/include/sys/errno.h
@@ -0,0 +1,154 @@
+/* errno is not a global variable, because that would make using it
+ non-reentrant. Instead, its address is returned by the function
+ __errno. */
+
+#ifndef _SYS_ERRNO_H_
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define _SYS_ERRNO_H_
+
+#include <sys/reent.h>
+
+#ifndef _REENT_ONLY
+#define errno (*__errno())
+extern int *__errno _PARAMS ((void));
+#endif
+
+#if !defined(__CYGWIN32__) || defined(__INSIDE_CYGWIN__)
+extern _CONST char * _CONST _sys_errlist[];
+extern int _sys_nerr;
+#else
+extern _CONST char * _CONST _sys_errlist[] __declspec(dllimport);
+extern int _sys_nerr __declspec(dllimport);
+#endif
+
+#define __errno_r(ptr) ((ptr)->_errno)
+
+#define EPERM 1 /* Not super-user */
+#define ENOENT 2 /* No such file or directory */
+#define ESRCH 3 /* No such process */
+#define EINTR 4 /* Interrupted system call */
+#define EIO 5 /* I/O error */
+#define ENXIO 6 /* No such device or address */
+#define E2BIG 7 /* Arg list too long */
+#define ENOEXEC 8 /* Exec format error */
+#define EBADF 9 /* Bad file number */
+#define ECHILD 10 /* No children */
+#define EAGAIN 11 /* No more processes */
+#define ENOMEM 12 /* Not enough core */
+#define EACCES 13 /* Permission denied */
+#define EFAULT 14 /* Bad address */
+#define ENOTBLK 15 /* Block device required */
+#define EBUSY 16 /* Mount device busy */
+#define EEXIST 17 /* File exists */
+#define EXDEV 18 /* Cross-device link */
+#define ENODEV 19 /* No such device */
+#define ENOTDIR 20 /* Not a directory */
+#define EISDIR 21 /* Is a directory */
+#define EINVAL 22 /* Invalid argument */
+#define ENFILE 23 /* Too many open files in system */
+#define EMFILE 24 /* Too many open files */
+#define ENOTTY 25 /* Not a typewriter */
+#define ETXTBSY 26 /* Text file busy */
+#define EFBIG 27 /* File too large */
+#define ENOSPC 28 /* No space left on device */
+#define ESPIPE 29 /* Illegal seek */
+#define EROFS 30 /* Read only file system */
+#define EMLINK 31 /* Too many links */
+#define EPIPE 32 /* Broken pipe */
+#define EDOM 33 /* Math arg out of domain of func */
+#define ERANGE 34 /* Math result not representable */
+#define ENOMSG 35 /* No message of desired type */
+#define EIDRM 36 /* Identifier removed */
+#define ECHRNG 37 /* Channel number out of range */
+#define EL2NSYNC 38 /* Level 2 not synchronized */
+#define EL3HLT 39 /* Level 3 halted */
+#define EL3RST 40 /* Level 3 reset */
+#define ELNRNG 41 /* Link number out of range */
+#define EUNATCH 42 /* Protocol driver not attached */
+#define ENOCSI 43 /* No CSI structure available */
+#define EL2HLT 44 /* Level 2 halted */
+#define EDEADLK 45 /* Deadlock condition */
+#define ENOLCK 46 /* No record locks available */
+#define EBADE 50 /* Invalid exchange */
+#define EBADR 51 /* Invalid request descriptor */
+#define EXFULL 52 /* Exchange full */
+#define ENOANO 53 /* No anode */
+#define EBADRQC 54 /* Invalid request code */
+#define EBADSLT 55 /* Invalid slot */
+#define EDEADLOCK 56 /* File locking deadlock error */
+#define EBFONT 57 /* Bad font file fmt */
+#define ENOSTR 60 /* Device not a stream */
+#define ENODATA 61 /* No data (for no delay io) */
+#define ETIME 62 /* Timer expired */
+#define ENOSR 63 /* Out of streams resources */
+#define ENONET 64 /* Machine is not on the network */
+#define ENOPKG 65 /* Package not installed */
+#define EREMOTE 66 /* The object is remote */
+#define ENOLINK 67 /* The link has been severed */
+#define EADV 68 /* Advertise error */
+#define ESRMNT 69 /* Srmount error */
+#define ECOMM 70 /* Communication error on send */
+#define EPROTO 71 /* Protocol error */
+#define EMULTIHOP 74 /* Multihop attempted */
+#define ELBIN 75 /* Inode is remote (not really error) */
+#define EDOTDOT 76 /* Cross mount point (not really error) */
+#define EBADMSG 77 /* Trying to read unreadable message */
+#define ENOTUNIQ 80 /* Given log. name not unique */
+#define EBADFD 81 /* f.d. invalid for this operation */
+#define EREMCHG 82 /* Remote address changed */
+#define ELIBACC 83 /* Can't access a needed shared lib */
+#define ELIBBAD 84 /* Accessing a corrupted shared lib */
+#define ELIBSCN 85 /* .lib section in a.out corrupted */
+#define ELIBMAX 86 /* Attempting to link in too many libs */
+#define ELIBEXEC 87 /* Attempting to exec a shared library */
+#define ENOSYS 88 /* Function not implemented */
+#define ENMFILE 89 /* No more files */
+#define ENOTEMPTY 90 /* Directory not empty */
+#define ENAMETOOLONG 91 /* File or path name too long */
+#define ELOOP 92 /* Too many symbolic links */
+#define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */
+#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 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 ENETRESET 126
+#define EISCONN 127
+#define ENOTCONN 128
+#define ETOOMANYREFS 129
+#define EPROCLIM 130
+#define EUSERS 131
+#define EDQUOT 132
+#define ESTALE 133
+#define ENOTSUP 134
+#define ENOMEDIUM 135
+
+/* From cygwin32. */
+#define EWOULDBLOCK EAGAIN /* Operation would block */
+
+#define __ELASTERROR 2000 /* Users can add values starting here */
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _SYS_ERRNO_H */
diff --git a/newlib/libc/include/sys/fcntl.h b/newlib/libc/include/sys/fcntl.h
new file mode 100644
index 000000000..ed32fab9b
--- /dev/null
+++ b/newlib/libc/include/sys/fcntl.h
@@ -0,0 +1,178 @@
+
+#ifndef _FCNTL_
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define _FCNTL_
+#include <_ansi.h>
+#define _FOPEN (-1) /* from sys/file.h, kernel use only */
+#define _FREAD 0x0001 /* read enabled */
+#define _FWRITE 0x0002 /* write enabled */
+#define _FNDELAY 0x0004 /* non blocking I/O (4.2 style) */
+#define _FAPPEND 0x0008 /* append (writes guaranteed at the end) */
+#define _FMARK 0x0010 /* internal; mark during gc() */
+#define _FDEFER 0x0020 /* internal; defer for next gc pass */
+#define _FASYNC 0x0040 /* signal pgrp when data ready */
+#define _FSHLOCK 0x0080 /* BSD flock() shared lock present */
+#define _FEXLOCK 0x0100 /* BSD flock() exclusive lock present */
+#define _FCREAT 0x0200 /* open with file create */
+#define _FTRUNC 0x0400 /* open with truncation */
+#define _FEXCL 0x0800 /* error on open if file exists */
+#define _FNBIO 0x1000 /* non blocking I/O (sys5 style) */
+#define _FSYNC 0x2000 /* do all writes synchronously */
+#define _FNONBLOCK 0x4000 /* non blocking I/O (POSIX style) */
+#define _FNOCTTY 0x8000 /* don't assign a ctty on this open */
+
+#define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR)
+
+/*
+ * Flag values for open(2) and fcntl(2)
+ * The kernel adds 1 to the open modes to turn it into some
+ * combination of FREAD and FWRITE.
+ */
+#define O_RDONLY 0 /* +1 == FREAD */
+#define O_WRONLY 1 /* +1 == FWRITE */
+#define O_RDWR 2 /* +1 == FREAD|FWRITE */
+#define O_APPEND _FAPPEND
+#define O_CREAT _FCREAT
+#define O_TRUNC _FTRUNC
+#define O_EXCL _FEXCL
+/* O_SYNC _FSYNC not posix, defined below */
+/* O_NDELAY _FNDELAY set in include/fcntl.h */
+/* O_NDELAY _FNBIO set in 5include/fcntl.h */
+#define O_NONBLOCK _FNONBLOCK
+#define O_NOCTTY _FNOCTTY
+/* For machines which care - */
+#if defined (_WIN32) || defined (__CYGWIN__)
+#define _FBINARY 0x10000
+#define _FTEXT 0x20000
+#define _FNOINHERIT 0x40000
+
+#define O_BINARY _FBINARY
+#define O_TEXT _FTEXT
+#define O_NOINHERIT _FNOINHERIT
+
+/* The windows header files define versions with a leading underscore. */
+#define _O_RDONLY O_RDONLY
+#define _O_WRONLY O_WRONLY
+#define _O_RDWR O_RDWR
+#define _O_APPEND O_APPEND
+#define _O_CREAT O_CREAT
+#define _O_TRUNC O_TRUNC
+#define _O_EXCL O_EXCL
+#define _O_TEXT O_TEXT
+#define _O_BINARY O_BINARY
+#define _O_RAW O_BINARY
+#define _O_NOINHERIT O_NOINHERIT
+#endif
+
+#ifndef _POSIX_SOURCE
+
+#define O_SYNC _FSYNC
+
+/*
+ * Flags that work for fcntl(fd, F_SETFL, FXXXX)
+ */
+#define FAPPEND _FAPPEND
+#define FSYNC _FSYNC
+#define FASYNC _FASYNC
+#define FNBIO _FNBIO
+#define FNONBIO _FNONBLOCK /* XXX fix to be NONBLOCK everywhere */
+#define FNDELAY _FNDELAY
+
+/*
+ * Flags that are disallowed for fcntl's (FCNTLCANT);
+ * used for opens, internal state, or locking.
+ */
+#define FREAD _FREAD
+#define FWRITE _FWRITE
+#define FMARK _FMARK
+#define FDEFER _FDEFER
+#define FSHLOCK _FSHLOCK
+#define FEXLOCK _FEXLOCK
+
+/*
+ * The rest of the flags, used only for opens
+ */
+#define FOPEN _FOPEN
+#define FCREAT _FCREAT
+#define FTRUNC _FTRUNC
+#define FEXCL _FEXCL
+#define FNOCTTY _FNOCTTY
+
+#endif /* !_POSIX_SOURCE */
+
+/* XXX close on exec request; must match UF_EXCLOSE in user.h */
+#define FD_CLOEXEC 1 /* posix */
+
+/* fcntl(2) requests */
+#define F_DUPFD 0 /* Duplicate fildes */
+#define F_GETFD 1 /* Get fildes flags (close on exec) */
+#define F_SETFD 2 /* Set fildes flags (close on exec) */
+#define F_GETFL 3 /* Get file flags */
+#define F_SETFL 4 /* Set file flags */
+#ifndef _POSIX_SOURCE
+#define F_GETOWN 5 /* Get owner - for ASYNC */
+#define F_SETOWN 6 /* Set owner - for ASYNC */
+#endif /* !_POSIX_SOURCE */
+#define F_GETLK 7 /* Get record-locking information */
+#define F_SETLK 8 /* Set or Clear a record-lock (Non-Blocking) */
+#define F_SETLKW 9 /* Set or Clear a record-lock (Blocking) */
+#ifndef _POSIX_SOURCE
+#define F_RGETLK 10 /* Test a remote lock to see if it is blocked */
+#define F_RSETLK 11 /* Set or unlock a remote lock */
+#define F_CNVT 12 /* Convert a fhandle to an open fd */
+#define F_RSETLKW 13 /* Set or Clear remote record-lock(Blocking) */
+#endif /* !_POSIX_SOURCE */
+
+/* fcntl(2) flags (l_type field of flock structure) */
+#define F_RDLCK 1 /* read lock */
+#define F_WRLCK 2 /* write lock */
+#define F_UNLCK 3 /* remove lock(s) */
+#ifndef _POSIX_SOURCE
+#define F_UNLKSYS 4 /* remove remote locks for a given system */
+#endif /* !_POSIX_SOURCE */
+
+/*#include <sys/stdtypes.h>*/
+
+/* file segment locking set data type - information passed to system by user */
+struct flock {
+ short l_type; /* F_RDLCK, F_WRLCK, or F_UNLCK */
+ short l_whence; /* flag to choose starting offset */
+ long l_start; /* relative offset, in bytes */
+ long l_len; /* length, in bytes; 0 means lock to EOF */
+ short l_pid; /* returned with F_GETLK */
+ short l_xxx; /* reserved for future use */
+};
+
+#ifndef _POSIX_SOURCE
+/* extended file segment locking set data type */
+struct eflock {
+ short l_type; /* F_RDLCK, F_WRLCK, or F_UNLCK */
+ short l_whence; /* flag to choose starting offset */
+ long l_start; /* relative offset, in bytes */
+ long l_len; /* length, in bytes; 0 means lock to EOF */
+ short l_pid; /* returned with F_GETLK */
+ short l_xxx; /* reserved for future use */
+ long l_rpid; /* Remote process id wanting this lock */
+ long l_rsys; /* Remote system id wanting this lock */
+};
+#endif /* !_POSIX_SOURCE */
+
+
+#include <sys/types.h>
+#include <sys/stat.h> /* sigh. for the mode bits for open/creat */
+
+extern int open _PARAMS ((const char *, int, ...));
+extern int creat _PARAMS ((const char *, mode_t));
+extern int fcntl _PARAMS ((int, int, ...));
+
+/* Provide _<systemcall> prototypes for functions provided by some versions
+ of newlib. */
+extern int _open _PARAMS ((const char *, int, ...));
+extern int _fcntl _PARAMS ((int, int, ...));
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* !_FCNTL_ */
diff --git a/newlib/libc/include/sys/file.h b/newlib/libc/include/sys/file.h
new file mode 100644
index 000000000..58d4fac31
--- /dev/null
+++ b/newlib/libc/include/sys/file.h
@@ -0,0 +1,2 @@
+
+#include <sys/fcntl.h>
diff --git a/newlib/libc/include/sys/param.h b/newlib/libc/include/sys/param.h
new file mode 100644
index 000000000..3470ef5d0
--- /dev/null
+++ b/newlib/libc/include/sys/param.h
@@ -0,0 +1,18 @@
+/* This is a dummy <sys/param.h> file, not customized for any
+ particular system. If there is a param.h in libc/sys/SYSDIR/sys,
+ it will override this one. */
+
+#ifndef _SYS_PARAM_H
+# define _SYS_PARAM_H
+
+# define HZ (60)
+# define NOFILE (60)
+# define PATHSIZE (1024)
+
+#ifdef __i386__
+#define BIG_ENDIAN 4321
+#define LITTLE_ENDIAN 1234
+#define BYTE_ORDER LITTLE_ENDIAN
+#endif
+
+#endif
diff --git a/newlib/libc/include/sys/reent.h b/newlib/libc/include/sys/reent.h
new file mode 100644
index 000000000..110493675
--- /dev/null
+++ b/newlib/libc/include/sys/reent.h
@@ -0,0 +1,238 @@
+/* This header file provides the reentrancy. */
+
+/* WARNING: All identifiers here must begin with an underscore. This file is
+ included by stdio.h and others and we therefore must only use identifiers
+ in the namespace allotted to us. */
+
+#ifndef _SYS_REENT_H_
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define _SYS_REENT_H_
+
+#include <_ansi.h>
+#include <time.h>
+
+#ifndef __Long
+#if __LONG_MAX__ == 2147483647L
+#define __Long long
+typedef unsigned __Long __ULong;
+#elif __INT_MAX__ == 2147483647
+#define __Long int
+typedef unsigned __Long __ULong;
+#endif
+#endif
+
+#ifndef __Long
+#define __Long __int32_t
+typedef __uint32_t __ULong;
+#endif
+
+struct _glue
+{
+ struct _glue *_next;
+ int _niobs;
+ struct __sFILE *_iobs;
+};
+
+struct _Bigint
+{
+ struct _Bigint *_next;
+ int _k, _maxwds, _sign, _wds;
+ __ULong _x[1];
+};
+
+/*
+ * atexit() support
+ */
+
+#define _ATEXIT_SIZE 32 /* must be at least 32 to guarantee ANSI conformance */
+
+struct _atexit {
+ struct _atexit *_next; /* next in list */
+ int _ind; /* next index in this table */
+ void (*_fns[_ATEXIT_SIZE])(void); /* the table itself */
+};
+
+/*
+ * Stdio buffers.
+ *
+ * This and __sFILE are defined here because we need them for struct _reent,
+ * but we don't want stdio.h included when stdlib.h is.
+ */
+
+struct __sbuf {
+ unsigned char *_base;
+ int _size;
+};
+
+/*
+ * We need fpos_t for the following, but it doesn't have a leading "_",
+ * so we use _fpos_t instead.
+ */
+
+typedef long _fpos_t; /* XXX must match off_t in <sys/types.h> */
+ /* (and must be `long' for now) */
+
+/*
+ * Stdio state variables.
+ *
+ * The following always hold:
+ *
+ * if (_flags&(__SLBF|__SWR)) == (__SLBF|__SWR),
+ * _lbfsize is -_bf._size, else _lbfsize is 0
+ * if _flags&__SRD, _w is 0
+ * if _flags&__SWR, _r is 0
+ *
+ * This ensures that the getc and putc macros (or inline functions) never
+ * try to write or read from a file that is in `read' or `write' mode.
+ * (Moreover, they can, and do, automatically switch from read mode to
+ * write mode, and back, on "r+" and "w+" files.)
+ *
+ * _lbfsize is used only to make the inline line-buffered output stream
+ * code as compact as possible.
+ *
+ * _ub, _up, and _ur are used when ungetc() pushes back more characters
+ * than fit in the current _bf, or when ungetc() pushes back a character
+ * that does not match the previous one in _bf. When this happens,
+ * _ub._base becomes non-nil (i.e., a stream has ungetc() data iff
+ * _ub._base!=NULL) and _up and _ur save the current values of _p and _r.
+ */
+
+struct __sFILE {
+ unsigned char *_p; /* current position in (some) buffer */
+ int _r; /* read space left for getc() */
+ int _w; /* write space left for putc() */
+ short _flags; /* flags, below; this FILE is free if 0 */
+ short _file; /* fileno, if Unix descriptor, else -1 */
+ struct __sbuf _bf; /* the buffer (at least 1 byte, if !NULL) */
+ int _lbfsize; /* 0 or -_bf._size, for inline putc */
+
+ /* operations */
+ _PTR _cookie; /* cookie passed to io functions */
+
+ int _EXFUN((*_read),(_PTR _cookie, char *_buf, int _n));
+ int _EXFUN((*_write),(_PTR _cookie, const char *_buf, int _n));
+ _fpos_t _EXFUN((*_seek),(_PTR _cookie, _fpos_t _offset, int _whence));
+ int _EXFUN((*_close),(_PTR _cookie));
+
+ /* separate buffer for long sequences of ungetc() */
+ struct __sbuf _ub; /* ungetc buffer */
+ unsigned char *_up; /* saved _p when _p is doing ungetc data */
+ int _ur; /* saved _r when _r is counting ungetc data */
+
+ /* tricks to meet minimum requirements even when malloc() fails */
+ unsigned char _ubuf[3]; /* guarantee an ungetc() buffer */
+ unsigned char _nbuf[1]; /* guarantee a getc() buffer */
+
+ /* separate buffer for fgetline() when line crosses buffer boundary */
+ struct __sbuf _lb; /* buffer for fgetline() */
+
+ /* Unix stdio files get aligned to block boundaries on fseek() */
+ int _blksize; /* stat.st_blksize (may be != _bf._size) */
+ int _offset; /* current lseek offset */
+
+ struct _reent *_data;
+};
+
+/*
+ * struct _reent
+ *
+ * This structure contains *all* globals needed by the library.
+ * It's raison d'etre is to facilitate threads by making all library routines
+ * reentrant. IE: All state information is contained here.
+ */
+
+struct _reent
+{
+ /* local copy of errno */
+ int _errno;
+
+ /* FILE is a big struct and may change over time. To try to achieve binary
+ compatibility with future versions, put stdin,stdout,stderr here.
+ These are pointers into member __sf defined below. */
+ struct __sFILE *_stdin, *_stdout, *_stderr;
+
+ int _inc; /* used by tmpnam */
+ char _emergency[25];
+
+ int _current_category; /* used by setlocale */
+ _CONST char *_current_locale;
+
+ int __sdidinit; /* 1 means stdio has been init'd */
+
+ void _EXFUN((*__cleanup),(struct _reent *));
+
+ /* used by mprec routines */
+ struct _Bigint *_result;
+ int _result_k;
+ struct _Bigint *_p5s;
+ struct _Bigint **_freelist;
+
+ /* used by some fp conversion routines */
+ int _cvtlen; /* should be size_t */
+ char *_cvtbuf;
+
+ union
+ {
+ struct
+ {
+ unsigned int _rand_next;
+ char * _strtok_last;
+ char _asctime_buf[26];
+ struct tm _localtime_buf;
+ int _gamma_signgam;
+ } _reent;
+ /* Two next two fields were once used by malloc. They are no longer
+ used. They are used to preserve the space used before so as to
+ allow addition of new reent fields and keep binary compatibility. */
+ struct
+ {
+#define _N_LISTS 30
+ unsigned char * _nextf[_N_LISTS];
+ unsigned int _nmalloc[_N_LISTS];
+ } _unused;
+ } _new;
+
+ /* atexit stuff */
+ struct _atexit *_atexit; /* points to head of LIFO stack */
+ struct _atexit _atexit0; /* one guaranteed table, required by ANSI */
+
+ /* signal info */
+ void (**(_sig_func))(int);
+
+ /* These are here last so that __sFILE can grow without changing the offsets
+ of the above members (on the off chance that future binary compatibility
+ would be broken otherwise). */
+ struct _glue __sglue; /* root of glue chain */
+ struct __sFILE __sf[3]; /* first three file descriptors */
+};
+
+#define _REENT_INIT(var) \
+ { 0, &var.__sf[0], &var.__sf[1], &var.__sf[2], 0, "", 0, "C", \
+ 0, NULL, NULL, 0, NULL, NULL, 0, NULL, { {1, NULL, "", \
+ { 0,0,0,0,0,0,0,0}, 0 } } }
+
+/*
+ * All references to struct _reent are via this pointer.
+ * Internally, newlib routines that need to reference it should use _REENT.
+ */
+
+#ifndef __ATTRIBUTE_IMPURE_PTR__
+#define __ATTRIBUTE_IMPURE_PTR__
+#endif
+
+extern struct _reent *_impure_ptr __ATTRIBUTE_IMPURE_PTR__;
+
+void _reclaim_reent _PARAMS ((struct _reent *));
+
+/* #define _REENT_ONLY define this to get only reentrant routines */
+
+#ifndef _REENT_ONLY
+#define _REENT _impure_ptr
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _SYS_REENT_H_ */
diff --git a/newlib/libc/include/sys/resource.h b/newlib/libc/include/sys/resource.h
new file mode 100644
index 000000000..eb827552c
--- /dev/null
+++ b/newlib/libc/include/sys/resource.h
@@ -0,0 +1,15 @@
+#ifndef _SYS_RESOURCE_H_
+#define _SYS_RESOURCE_H_
+
+#include <sys/time.h>
+
+#define RUSAGE_SELF 0 /* calling process */
+#define RUSAGE_CHILDREN -1 /* terminated child processes */
+
+struct rusage {
+ struct timeval ru_utime; /* user time used */
+ struct timeval ru_stime; /* system time used */
+};
+
+#endif
+
diff --git a/newlib/libc/include/sys/signal.h b/newlib/libc/include/sys/signal.h
new file mode 100644
index 000000000..00d25ead3
--- /dev/null
+++ b/newlib/libc/include/sys/signal.h
@@ -0,0 +1,182 @@
+/* sys/signal.h */
+
+#ifndef _SYS_SIGNAL_H
+#define _SYS_SIGNAL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "_ansi.h"
+
+#ifndef __STRICT_ANSI__
+typedef unsigned long sigset_t;
+struct sigaction
+{
+ void (*sa_handler)(int);
+ sigset_t sa_mask;
+ int sa_flags;
+};
+#define SA_NOCLDSTOP 1 /* only value supported now for sa_flags */
+#define SIG_SETMASK 0 /* set mask with sigprocmask() */
+#define SIG_BLOCK 1 /* set of signals to block */
+#define SIG_UNBLOCK 2 /* set of signals to, well, unblock */
+
+/* These depend upon the type of sigset_t, which right now
+ is always a long.. They're in the POSIX namespace, but
+ are not ANSI. */
+#define sigaddset(what,sig) (*(what) |= (1<<(sig)))
+#define sigemptyset(what) (*(what) = 0)
+
+int sigprocmask (int __how, const sigset_t *__a, sigset_t *__b);
+
+/* protos for functions found in winsup sources */
+#if defined(__CYGWIN32__)
+#undef sigaddset
+#undef sigemptyset
+/* The first argument to kill should be pid_t. Right now
+ <sys/types.h> always defines pid_t to be int. If that ever
+ changes, then we will need to do something else, perhaps along the
+ lines of <machine/types.h>. */
+int _EXFUN(kill, (int, int));
+int _EXFUN(sigaction, (int, const struct sigaction *, struct sigaction *));
+int _EXFUN(sigaddset, (sigset_t *, const int));
+int _EXFUN(sigdelset, (sigset_t *, const int));
+int _EXFUN(sigismember, (const sigset_t *, int));
+int _EXFUN(sigfillset, (sigset_t *));
+int _EXFUN(sigemptyset, (sigset_t *));
+int _EXFUN(sigpending, (sigset_t *));
+int _EXFUN(sigsuspend, (const sigset_t *));
+int _EXFUN(sigpause, (int));
+#endif
+
+#endif /* __STRICT_ANSI__ */
+
+#if defined(___AM29K__)
+/* These all need to be defined for ANSI C, but I don't think they are
+ meaningful. */
+#define SIGABRT 1
+#define SIGFPE 1
+#define SIGILL 1
+#define SIGINT 1
+#define SIGSEGV 1
+#define SIGTERM 1
+/* These need to be defined for POSIX, and some others do too. */
+#define SIGHUP 1
+#define SIGQUIT 1
+#define NSIG 2
+#elif defined(__GO32__)
+#define SIGINT 1
+#define SIGKILL 2
+#define SIGPIPE 3
+#define SIGFPE 4
+#define SIGHUP 5
+#define SIGTERM 6
+#define SIGSEGV 7
+#define SIGTSTP 8
+#define SIGQUIT 9
+#define SIGTRAP 10
+#define SIGILL 11
+#define SIGEMT 12
+#define SIGALRM 13
+#define SIGBUS 14
+#define SIGLOST 15
+#define SIGSTOP 16
+#define SIGABRT 17
+#define SIGUSR1 18
+#define SIGUSR2 19
+#define NSIG 20
+#elif defined(__CYGWIN32__) /* BSD signals symantics */
+#define SIGHUP 1 /* hangup */
+#define SIGINT 2 /* interrupt */
+#define SIGQUIT 3 /* quit */
+#define SIGILL 4 /* illegal instruction (not reset when caught) */
+#define SIGTRAP 5 /* trace trap (not reset when caught) */
+#define SIGABRT 6 /* used by abort */
+#define SIGEMT 7 /* EMT instruction */
+#define SIGFPE 8 /* floating point exception */
+#define SIGKILL 9 /* kill (cannot be caught or ignored) */
+#define SIGBUS 10 /* bus error */
+#define SIGSEGV 11 /* segmentation violation */
+#define SIGSYS 12 /* bad argument to system call */
+#define SIGPIPE 13 /* write on a pipe with no one to read it */
+#define SIGALRM 14 /* alarm clock */
+#define SIGTERM 15 /* software termination signal from kill */
+#define SIGURG 16 /* urgent condition on IO channel */
+#define SIGSTOP 17 /* sendable stop signal not from tty */
+#define SIGTSTP 18 /* stop signal from tty */
+#define SIGCONT 19 /* continue a stopped process */
+#define SIGCHLD 20 /* to parent on child stop or exit */
+#define SIGCLD 20 /* System V name for SIGCHLD */
+#define SIGTTIN 21 /* to readers pgrp upon background tty read */
+#define SIGTTOU 22 /* like TTIN for output if (tp->t_local&LTOSTOP) */
+#define SIGIO 23 /* input/output possible signal */
+#define SIGPOLL SIGIO /* System V name for SIGIO */
+#define SIGXCPU 24 /* exceeded CPU time limit */
+#define SIGXFSZ 25 /* exceeded file size limit */
+#define SIGVTALRM 26 /* virtual time alarm */
+#define SIGPROF 27 /* profiling time alarm */
+#define SIGWINCH 28 /* window changed */
+#define SIGLOST 29 /* resource lost (eg, record-lock lost) */
+#define SIGUSR1 30 /* user defined signal 1 */
+#define SIGUSR2 31 /* user defined signal 2 */
+#define NSIG 32 /* signal 0 implied */
+#else
+#define SIGHUP 1 /* hangup */
+#define SIGINT 2 /* interrupt */
+#define SIGQUIT 3 /* quit */
+#define SIGILL 4 /* illegal instruction (not reset when caught) */
+#define SIGTRAP 5 /* trace trap (not reset when caught) */
+#define SIGIOT 6 /* IOT instruction */
+#define SIGABRT 6 /* used by abort, replace SIGIOT in the future */
+#define SIGEMT 7 /* EMT instruction */
+#define SIGFPE 8 /* floating point exception */
+#define SIGKILL 9 /* kill (cannot be caught or ignored) */
+#define SIGBUS 10 /* bus error */
+#define SIGSEGV 11 /* segmentation violation */
+#define SIGSYS 12 /* bad argument to system call */
+#define SIGPIPE 13 /* write on a pipe with no one to read it */
+#define SIGALRM 14 /* alarm clock */
+#define SIGTERM 15 /* software termination signal from kill */
+
+#if defined(__svr4__)
+/* svr4 specifics. different signals above 15, and sigaction. */
+#define SIGUSR1 16
+#define SIGUSR2 17
+#define SIGCLD 18
+#define SIGPWR 19
+#define SIGWINCH 20
+#define SIGPOLL 22 /* 20 for x.out binaries!!!! */
+#define SIGSTOP 23 /* sendable stop signal not from tty */
+#define SIGTSTP 24 /* stop signal from tty */
+#define SIGCONT 25 /* continue a stopped process */
+#define SIGTTIN 26 /* to readers pgrp upon background tty read */
+#define SIGTTOU 27 /* like TTIN for output if (tp->t_local&LTOSTOP) */
+#define NSIG 28
+#else
+#define SIGURG 16 /* urgent condition on IO channel */
+#define SIGSTOP 17 /* sendable stop signal not from tty */
+#define SIGTSTP 18 /* stop signal from tty */
+#define SIGCONT 19 /* continue a stopped process */
+#define SIGCHLD 20 /* to parent on child stop or exit */
+#define SIGCLD 20 /* System V name for SIGCHLD */
+#define SIGTTIN 21 /* to readers pgrp upon background tty read */
+#define SIGTTOU 22 /* like TTIN for output if (tp->t_local&LTOSTOP) */
+#define SIGIO 23 /* input/output possible signal */
+#define SIGPOLL SIGIO /* System V name for SIGIO */
+#define SIGXCPU 24 /* exceeded CPU time limit */
+#define SIGXFSZ 25 /* exceeded file size limit */
+#define SIGVTALRM 26 /* virtual time alarm */
+#define SIGPROF 27 /* profiling time alarm */
+#define SIGWINCH 28 /* window changed */
+#define SIGLOST 29 /* resource lost (eg, record-lock lost) */
+#define SIGUSR1 30 /* user defined signal 1 */
+#define SIGUSR2 31 /* user defined signal 2 */
+#define NSIG 32 /* signal 0 implied */
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _SYS_SIGNAL_H */
diff --git a/newlib/libc/include/sys/stat-dj.h b/newlib/libc/include/sys/stat-dj.h
new file mode 100644
index 000000000..b533a167a
--- /dev/null
+++ b/newlib/libc/include/sys/stat-dj.h
@@ -0,0 +1,59 @@
+/* This is file STAT.H */
+/*
+** Copyright (C) 1991 DJ Delorie, 24 Kirsten Ave, Rochester NH 03867-2954
+**
+** This file is distributed under the terms listed in the document
+** "copying.dj", available from DJ Delorie at the address above.
+** A copy of "copying.dj" should accompany this file; if not, a copy
+** should be available from where this file was obtained. This file
+** may not be distributed without a verbatim copy of "copying.dj".
+**
+** This file is distributed WITHOUT ANY WARRANTY; without even the implied
+** warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+*/
+
+#ifndef _STAT_H_
+#define _STAT_H_
+
+struct stat {
+ short st_dev;
+ short st_ino;
+ unsigned short st_mode;
+ short st_nlink;
+ short st_uid;
+ short st_gid;
+ short st_rdev;
+ short st_align_for_word32;
+ long st_size;
+ long st_atime;
+ long st_mtime;
+ long st_ctime;
+ long st_blksize;
+};
+
+#define S_IFMT 0xF000 /* file type mask */
+#define S_IFDIR 0x4000 /* directory */
+#define S_IFIFO 0x1000 /* FIFO special */
+#define S_IFCHR 0x2000 /* character special */
+#define S_IFBLK 0x3000 /* block special */
+#define S_IFREG 0x8000 /* or just 0x0000, regular */
+#define S_IREAD 0x0100 /* owner may read */
+#define S_IWRITE 0x0080 /* owner may write */
+#define S_IEXEC 0x0040 /* owner may execute <directory search> */
+
+#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
+#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
+#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
+#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
+#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+int stat(const char *, struct stat *);
+int fstat(int, struct stat *);
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/newlib/libc/include/sys/stat.h b/newlib/libc/include/sys/stat.h
new file mode 100644
index 000000000..31dfaf49f
--- /dev/null
+++ b/newlib/libc/include/sys/stat.h
@@ -0,0 +1,149 @@
+#ifndef _SYS_STAT_H
+#define _SYS_STAT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <_ansi.h>
+#include <time.h>
+#include <sys/types.h>
+
+#ifdef __i386__
+#ifdef __MSDOS__
+#include "stat-dj.h"
+#endif
+#endif
+
+/* dj's stat defines _STAT_H_ */
+#ifndef _STAT_H_
+
+/* It is intended that the layout of this structure not change when the
+ sizes of any of the basic types change (short, int, long) [via a compile
+ time option]. */
+
+struct stat
+{
+ dev_t st_dev;
+ ino_t st_ino;
+ mode_t st_mode;
+ nlink_t st_nlink;
+ uid_t st_uid;
+ gid_t st_gid;
+ dev_t st_rdev;
+ off_t st_size;
+ /* SysV/sco doesn't have the rest... But Solaris, eabi does. */
+#if defined(__svr4__) && !defined(__PPC__) && !defined(__sun__)
+ time_t st_atime;
+ time_t st_mtime;
+ time_t st_ctime;
+#else
+ time_t st_atime;
+ long st_spare1;
+ time_t st_mtime;
+ long st_spare2;
+ time_t st_ctime;
+ long st_spare3;
+ long st_blksize;
+ long st_blocks;
+ long st_spare4[2];
+#endif
+};
+
+#define _IFMT 0170000 /* type of file */
+#define _IFDIR 0040000 /* directory */
+#define _IFCHR 0020000 /* character special */
+#define _IFBLK 0060000 /* block special */
+#define _IFREG 0100000 /* regular */
+#define _IFLNK 0120000 /* symbolic link */
+#define _IFSOCK 0140000 /* socket */
+#define _IFIFO 0010000 /* fifo */
+
+#define S_BLKSIZE 1024 /* size of a block */
+
+#define S_ISUID 0004000 /* set user id on execution */
+#define S_ISGID 0002000 /* set group id on execution */
+#ifndef _POSIX_SOURCE
+#define S_ISVTX 0001000 /* save swapped text even after use */
+#define S_IREAD 0000400 /* read permission, owner */
+#define S_IWRITE 0000200 /* write permission, owner */
+#define S_IEXEC 0000100 /* execute/search permission, owner */
+
+#define S_ENFMT 0002000 /* enforcement-mode locking */
+
+#define S_IFMT _IFMT
+#define S_IFDIR _IFDIR
+#define S_IFCHR _IFCHR
+#define S_IFBLK _IFBLK
+#define S_IFREG _IFREG
+#define S_IFLNK _IFLNK
+#define S_IFSOCK _IFSOCK
+#define S_IFIFO _IFIFO
+#endif /* !_POSIX_SOURCE */
+
+#ifdef _WIN32
+/* The Windows header files define _S_ forms of these, so we do too
+ for easier portability. */
+#define _S_IFMT _IFMT
+#define _S_IFDIR _IFDIR
+#define _S_IFCHR _IFCHR
+#define _S_IFIFO _IFIFO
+#define _S_IFREG _IFREG
+#define _S_IREAD 0000400
+#define _S_IWRITE 0000200
+#define _S_IEXEC 0000100
+#endif
+
+#define S_IRWXU 0000700 /* rwx, owner */
+#define S_IRUSR 0000400 /* read permission, owner */
+#define S_IWUSR 0000200 /* write permission, owner */
+#define S_IXUSR 0000100 /* execute/search permission, owner */
+#define S_IRWXG 0000070 /* rwx, group */
+#define S_IRGRP 0000040 /* read permission, group */
+#define S_IWGRP 0000020 /* write permission, grougroup */
+#define S_IXGRP 0000010 /* execute/search permission, group */
+#define S_IRWXO 0000007 /* rwx, other */
+#define S_IROTH 0000004 /* read permission, other */
+#define S_IWOTH 0000002 /* write permission, other */
+#define S_IXOTH 0000001 /* execute/search permission, other */
+
+#define S_ISBLK(m) (((m)&_IFMT) == _IFBLK)
+#define S_ISCHR(m) (((m)&_IFMT) == _IFCHR)
+#define S_ISDIR(m) (((m)&_IFMT) == _IFDIR)
+#define S_ISFIFO(m) (((m)&_IFMT) == _IFIFO)
+#define S_ISREG(m) (((m)&_IFMT) == _IFREG)
+#define S_ISLNK(m) (((m)&_IFMT) == _IFLNK)
+#define S_ISSOCK(m) (((m)&_IFMT) == _IFSOCK)
+
+
+int _EXFUN(chmod,( const char *__path, mode_t __mode ));
+int _EXFUN(fchmod,(int __fd, mode_t __mode));
+int _EXFUN(fstat,( int __fd, struct stat *__sbuf ));
+int _EXFUN(mkdir,( const char *_path, mode_t __mode ));
+int _EXFUN(mkfifo,( const char *__path, mode_t __mode ));
+int _EXFUN(stat,( const char *__path, struct stat *__sbuf ));
+mode_t _EXFUN(umask,( mode_t __mask ));
+
+#if defined(__rtems__)
+int _EXFUN(mknod,( const char *_path, mode_t _mode, dev_t dev ));
+#endif
+
+/* Provide prototypes for most of the _<systemcall> names that are
+ provided in newlib for some compilers. */
+int _EXFUN(_fstat,( int __fd, struct stat *__sbuf ));
+int _EXFUN(_stat,( const char *__path, struct stat *__sbuf ));
+
+#ifdef __CYGWIN32__
+int _EXFUN(lstat,( const char *__path, struct stat *__buf ));
+#endif
+
+#if defined(__rtems__)
+int _EXFUN(mknod,( const char *_path, mode_t _mode, dev_t dev ));
+int _EXFUN(lstat,( const char *_path, struct stat *_sbuf ));
+#endif
+
+#endif /* !_STAT_H_ */
+#ifdef __cplusplus
+}
+#endif
+#endif /* _SYS_STAT_H */
diff --git a/newlib/libc/include/sys/time.h b/newlib/libc/include/sys/time.h
new file mode 100644
index 000000000..bc08820a5
--- /dev/null
+++ b/newlib/libc/include/sys/time.h
@@ -0,0 +1,51 @@
+/* time.h -- An implementation of the standard Unix <sys/time.h> file.
+ Written by Geoffrey Noer <noer@cygnus.com>
+ Public domain; no rights reserved. */
+
+#ifndef _SYS_TIME_H_
+#define _SYS_TIME_H_
+
+#include <_ansi.h>
+#include <sys/types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _WINSOCK_H
+struct timeval {
+ long tv_sec;
+ long tv_usec;
+};
+
+struct timezone {
+ int tz_minuteswest;
+ int tz_dsttime;
+};
+
+#ifdef __CYGWIN32__
+#include <sys/select.h>
+#endif /* __CYGWIN32__ */
+
+#endif /* _WINSOCK_H */
+
+#define ITIMER_REAL 0
+#define ITIMER_VIRTUAL 1
+#define ITIMER_PROF 2
+
+struct itimerval {
+ struct timeval it_interval;
+ struct timeval it_value;
+};
+
+int _EXFUN(gettimeofday, (struct timeval *__p, struct timezone *__z));
+int _EXFUN(settimeofday, (const struct timeval *, const struct timezone *));
+int _EXFUN(utimes, (const char *__path, struct timeval *__tvp));
+int _EXFUN(getitimer, (int __which, struct itimerval *__value));
+int _EXFUN(setitimer, (int __which, const struct itimerval *__value,
+ struct itimerval *__ovalue));
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _SYS_TIME_H_ */
diff --git a/newlib/libc/include/sys/timeb.h b/newlib/libc/include/sys/timeb.h
new file mode 100644
index 000000000..0a2c3de8b
--- /dev/null
+++ b/newlib/libc/include/sys/timeb.h
@@ -0,0 +1,39 @@
+/* timeb.h -- An implementation of the standard Unix <sys/timeb.h> file.
+ Written by Ian Lance Taylor <ian@cygnus.com>
+ Public domain; no rights reserved.
+
+ <sys/timeb.h> declares the structure used by the ftime function, as
+ well as the ftime function itself. Newlib does not provide an
+ implementation of ftime. */
+
+#ifndef _SYS_TIMEB_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define _SYS_TIMEB_H
+
+#include <_ansi.h>
+#include <machine/types.h>
+
+#ifndef __time_t_defined
+typedef _TIME_T_ time_t;
+#define __time_t_defined
+#endif
+
+struct timeb
+{
+ time_t time;
+ unsigned short millitm;
+ short timezone;
+ short dstflag;
+};
+
+extern int ftime _PARAMS ((struct timeb *));
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ! defined (_SYS_TIMEB_H) */
diff --git a/newlib/libc/include/sys/times.h b/newlib/libc/include/sys/times.h
new file mode 100644
index 000000000..c973ae1b0
--- /dev/null
+++ b/newlib/libc/include/sys/times.h
@@ -0,0 +1,27 @@
+#ifndef _SYS_TIMES_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define _SYS_TIMES_H
+
+#include <_ansi.h>
+#include <machine/types.h>
+
+#ifndef __clock_t_defined
+typedef _CLOCK_T_ clock_t;
+#define __clock_t_defined
+#endif
+
+struct tms {
+ clock_t tms_utime; /* user time */
+ clock_t tms_stime; /* system time */
+ clock_t tms_cutime; /* user time, children */
+ clock_t tms_cstime; /* system time, children */
+};
+
+clock_t _EXFUN(times,(struct tms *));
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* !_SYS_TIMES_H */
diff --git a/newlib/libc/include/sys/types.h b/newlib/libc/include/sys/types.h
new file mode 100644
index 000000000..7d2e52461
--- /dev/null
+++ b/newlib/libc/include/sys/types.h
@@ -0,0 +1,174 @@
+/* unified sys/types.h:
+ start with sef's sysvi386 version.
+ merge go32 version -- a few ifdefs.
+ h8300hms, h8300xray, and sysvnecv70 disagree on the following types:
+
+ typedef int gid_t;
+ typedef int uid_t;
+ typedef int dev_t;
+ typedef int ino_t;
+ typedef int mode_t;
+ typedef int caddr_t;
+
+ however, these aren't "reasonable" values, the sysvi386 ones make far
+ more sense, and should work sufficiently well (in particular, h8300
+ doesn't have a stat, and the necv70 doesn't matter.) -- eichin
+ */
+
+#ifndef _SYS_TYPES_H
+#define _SYS_TYPES_H
+
+#if defined (_WIN32) || defined (__CYGWIN__)
+#define __MS_types__
+#endif
+
+#ifdef __i386__
+#if defined (GO32) || defined (__MSDOS__)
+#define __MS_types__
+#endif
+#endif
+
+# include <stddef.h>
+# include <machine/types.h>
+
+/* To ensure the stat struct's layout doesn't change when sizeof(int), etc.
+ changes, we assume sizeof short and long never change and have all types
+ used to define struct stat use them and not int where possible.
+ Where not possible, _ST_INTxx are used. It would be preferable to not have
+ such assumptions, but until the extra fluff is necessary, it's avoided.
+ No 64 bit targets use stat yet. What to do about them is postponed
+ until necessary. */
+#ifdef __GNUC__
+#define _ST_INT32 __attribute__ ((__mode__ (__SI__)))
+#else
+#define _ST_INT32
+#endif
+
+# ifndef _POSIX_SOURCE
+
+# define physadr physadr_t
+# define quad quad_t
+
+#ifndef _WINSOCK_H
+typedef unsigned char u_char;
+typedef unsigned short u_short;
+typedef unsigned int u_int;
+typedef unsigned long u_long;
+#endif
+
+typedef unsigned short ushort; /* System V compatibility */
+typedef unsigned int uint; /* System V compatibility */
+# endif /*!_POSIX_SOURCE */
+
+#ifndef __time_t_defined
+typedef _TIME_T_ time_t;
+#define __time_t_defined
+#endif
+
+typedef long daddr_t;
+typedef char * caddr_t;
+
+#ifdef __MS_types__
+typedef unsigned long ino_t;
+#else
+#ifdef __sparc__
+typedef unsigned long ino_t;
+#else
+typedef unsigned short ino_t;
+#endif
+#endif
+
+#ifdef __MS_types__
+typedef unsigned long vm_offset_t;
+typedef unsigned long vm_size_t;
+
+#define __BIT_TYPES_DEFINED__
+
+typedef char int8_t;
+typedef unsigned char u_int8_t;
+typedef short int16_t;
+typedef unsigned short u_int16_t;
+typedef int int32_t;
+typedef unsigned int u_int32_t;
+typedef long long int64_t;
+typedef unsigned long long u_int64_t;
+typedef int32_t register_t;
+#endif /* __MS_types__ */
+
+/*
+ * All these should be machine specific - right now they are all broken.
+ * However, for all of Cygnus' embedded targets, we want them to all be
+ * the same. Otherwise things like sizeof (struct stat) might depend on
+ * how the file was compiled (e.g. -mint16 vs -mint32, etc.).
+ */
+
+typedef short dev_t;
+
+typedef long off_t;
+
+typedef unsigned short uid_t;
+typedef unsigned short gid_t;
+typedef int pid_t;
+typedef long key_t;
+typedef long ssize_t;
+
+#ifdef __MS_types__
+typedef char * addr_t;
+typedef int mode_t;
+#else
+#if defined (__sparc__) && !defined (__sparc_v9__)
+#ifdef __svr4__
+typedef unsigned long mode_t;
+#else
+typedef unsigned short mode_t;
+#endif
+#else
+typedef unsigned int mode_t _ST_INT32;
+#endif
+#endif /* ! __MS_types__ */
+
+typedef unsigned short nlink_t;
+
+/* We don't define fd_set and friends if we are compiling POSIX
+ source, or if we have included the Windows Sockets.h header (which
+ defines Windows versions of them). Note that a program which
+ includes the Windows sockets.h header must know what it is doing;
+ it must not call the cygwin32 select function. */
+# if ! defined (_POSIX_SOURCE) && ! defined (_WINSOCK_H)
+
+# define NBBY 8 /* number of bits in a byte */
+/*
+ * Select uses bit masks of file descriptors in longs.
+ * These macros manipulate such bit fields (the filesystem macros use chars).
+ * FD_SETSIZE may be defined by the user, but the default here
+ * should be >= NOFILE (param.h).
+ */
+# ifndef FD_SETSIZE
+# define FD_SETSIZE 64
+# endif
+
+typedef long fd_mask;
+# define NFDBITS (sizeof (fd_mask) * NBBY) /* bits per mask */
+# ifndef howmany
+# define howmany(x,y) (((x)+((y)-1))/(y))
+# endif
+
+/* We use a macro for fd_set so that including Sockets.h afterwards
+ can work. */
+typedef struct _types_fd_set {
+ fd_mask fds_bits[howmany(FD_SETSIZE, NFDBITS)];
+} _types_fd_set;
+
+#define fd_set _types_fd_set
+
+# 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)))
+
+# endif /* ! defined (_POSIX_SOURCE) && ! defined (_WINSOCK_H) */
+
+#undef __MS_types__
+#undef _ST_INT32
+
+#endif /* _SYS_TYPES_H */
diff --git a/newlib/libc/include/sys/unistd.h b/newlib/libc/include/sys/unistd.h
new file mode 100644
index 000000000..98d1e1f2a
--- /dev/null
+++ b/newlib/libc/include/sys/unistd.h
@@ -0,0 +1,175 @@
+#ifndef _SYS_UNISTD_H
+#define _SYS_UNISTD_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <_ansi.h>
+#include <sys/types.h>
+#define __need_size_t
+#include <stddef.h>
+
+extern char **environ;
+
+void _EXFUN(_exit, (int __status ) _ATTRIBUTE ((noreturn)));
+
+int _EXFUN(access,(const char *__path, int __amode ));
+unsigned _EXFUN(alarm, (unsigned __secs ));
+int _EXFUN(chdir, (const char *__path ));
+int _EXFUN(chmod, (const char *__path, mode_t __mode ));
+int _EXFUN(chown, (const char *__path, uid_t __owner, gid_t __group ));
+int _EXFUN(close, (int __fildes ));
+char _EXFUN(*ctermid, (char *__s ));
+char _EXFUN(*cuserid, (char *__s ));
+int _EXFUN(dup, (int __fildes ));
+int _EXFUN(dup2, (int __fildes, int __fildes2 ));
+int _EXFUN(execl, (const char *__path, const char *, ... ));
+int _EXFUN(execle, (const char *__path, const char *, ... ));
+int _EXFUN(execlp, (const char *__file, const char *, ... ));
+int _EXFUN(execv, (const char *__path, char * const __argv[] ));
+int _EXFUN(execve, (const char *__path, char * const __argv[], char * const __envp[] ));
+int _EXFUN(execvp, (const char *__file, char * const __argv[] ));
+pid_t _EXFUN(fork, (void ));
+long _EXFUN(fpathconf, (int __fd, int __name ));
+int _EXFUN(fsync, (int __fd));
+char _EXFUN(*getcwd, (char *__buf, size_t __size ));
+gid_t _EXFUN(getegid, (void ));
+uid_t _EXFUN(geteuid, (void ));
+gid_t _EXFUN(getgid, (void ));
+int _EXFUN(getgroups, (int __gidsetsize, gid_t __grouplist[] ));
+char _EXFUN(*getlogin, (void ));
+char _EXFUN(*getpass, (__const char *__prompt));
+size_t _EXFUN(getpagesize, (void));
+pid_t _EXFUN(getpgrp, (void ));
+pid_t _EXFUN(getpid, (void ));
+pid_t _EXFUN(getppid, (void ));
+uid_t _EXFUN(getuid, (void ));
+int _EXFUN(isatty, (int __fildes ));
+int _EXFUN(link, (const char *__path1, const char *__path2 ));
+int _EXFUN(nice, (int __nice_value ));
+off_t _EXFUN(lseek, (int __fildes, off_t __offset, int __whence ));
+long _EXFUN(pathconf, (const char *__path, int __name ));
+int _EXFUN(pause, (void ));
+int _EXFUN(pipe, (int __fildes[2] ));
+int _EXFUN(read, (int __fildes, void *__buf, size_t __nbyte ));
+int _EXFUN(rmdir, (const char *__path ));
+void * _EXFUN(sbrk, (size_t __incr));
+int _EXFUN(setgid, (gid_t __gid ));
+int _EXFUN(setpgid, (pid_t __pid, pid_t __pgid ));
+pid_t _EXFUN(setsid, (void ));
+int _EXFUN(setuid, (uid_t __uid ));
+unsigned _EXFUN(sleep, (unsigned int __seconds ));
+void _EXFUN(swab, (const void *, void *, ssize_t));
+long _EXFUN(sysconf, (int __name ));
+pid_t _EXFUN(tcgetpgrp, (int __fildes ));
+int _EXFUN(tcsetpgrp, (int __fildes, pid_t __pgrp_id ));
+char _EXFUN(*ttyname, (int __fildes ));
+int _EXFUN(unlink, (const char *__path ));
+int _EXFUN(write, (int __fildes, const void *__buf, size_t __nbyte ));
+
+/* Provide prototypes for most of the _<systemcall> names that are
+ provided in newlib for some compilers. */
+int _EXFUN(_close, (int __fildes ));
+pid_t _EXFUN(_fork, (void ));
+pid_t _EXFUN(_getpid, (void ));
+int _EXFUN(_link, (const char *__path1, const char *__path2 ));
+off_t _EXFUN(_lseek, (int __fildes, off_t __offset, int __whence ));
+int _EXFUN(_read, (int __fildes, void *__buf, size_t __nbyte ));
+void * _EXFUN(_sbrk, (size_t __incr));
+int _EXFUN(_unlink, (const char *__path ));
+int _EXFUN(_write, (int __fildes, const void *__buf, size_t __nbyte ));
+
+#if defined(__CYGWIN32__) || defined(__rtems__)
+unsigned _EXFUN(usleep, (unsigned int __useconds));
+int _EXFUN(ftruncate, (int __fd, off_t __length));
+int _EXFUN(truncate, (const char *, off_t __length));
+int _EXFUN(gethostname, (char *__name, size_t __len));
+char * _EXFUN(mktemp, (char *));
+int _EXFUN(sync, (void));
+int _EXFUN(readlink, (const char *__path, char *__buf, int __buflen));
+int _EXFUN(symlink, (const char *__name1, const char *__name2));
+#endif
+
+# define F_OK 0
+# define R_OK 4
+# define W_OK 2
+# define X_OK 1
+
+# define SEEK_SET 0
+# define SEEK_CUR 1
+# define SEEK_END 2
+
+/*
+ * RTEMS adheres to a later version of POSIX -- 1003.1b.
+ *
+ * XXX this version string should change.
+ */
+
+#ifdef __rtems__
+#ifndef _POSIX_JOB_CONTROL
+# define _POSIX_JOB_CONTROL 1
+#endif
+#ifndef _POSIX_SAVED_IDS
+# define _POSIX_SAVED_IDS 1
+#endif
+# define _POSIX_VERSION 199009L
+#else
+#ifdef __svr4__
+# define _POSIX_JOB_CONTROL 1
+# define _POSIX_SAVED_IDS 1
+# define _POSIX_VERSION 199009L
+#endif
+#endif
+
+#ifdef __CYGWIN32__
+# define _POSIX_JOB_CONTROL 1
+# define _POSIX_SAVED_IDS 0
+# define _POSIX_VERSION 199009L
+#endif
+
+#define STDIN_FILENO 0 /* standard input file descriptor */
+#define STDOUT_FILENO 1 /* standard output file descriptor */
+#define STDERR_FILENO 2 /* standard error file descriptor */
+
+long _EXFUN(sysconf, (int __name));
+
+# define _SC_ARG_MAX 0
+# define _SC_CHILD_MAX 1
+# define _SC_CLK_TCK 2
+# define _SC_NGROUPS_MAX 3
+# define _SC_OPEN_MAX 4
+/* no _SC_STREAM_MAX */
+# define _SC_JOB_CONTROL 5
+# define _SC_SAVED_IDS 6
+# define _SC_VERSION 7
+# define _SC_PAGESIZE 8
+
+# define _PC_LINK_MAX 0
+# define _PC_MAX_CANON 1
+# define _PC_MAX_INPUT 2
+# define _PC_NAME_MAX 3
+# define _PC_PATH_MAX 4
+# define _PC_PIPE_BUF 5
+# define _PC_CHOWN_RESTRICTED 6
+# define _PC_NO_TRUNC 7
+# define _PC_VDISABLE 8
+# define _PC_ASYNC_IO 9
+# define _PC_PRIO_IO 10
+# define _PC_SYNC_IO 11
+
+# ifndef _POSIX_SOURCE
+# define MAXNAMLEN 1024
+# endif /* _POSIX_SOURCE */
+
+/* FIXME: This is temporary until winsup gets sorted out. */
+#ifdef __CYGWIN32__
+#define MAXPATHLEN (260 - 1 /* NUL */)
+#else
+# define MAXPATHLEN 1024
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _SYS_UNISTD_H */
diff --git a/newlib/libc/include/sys/utime.h b/newlib/libc/include/sys/utime.h
new file mode 100644
index 000000000..5e937f103
--- /dev/null
+++ b/newlib/libc/include/sys/utime.h
@@ -0,0 +1,22 @@
+#ifndef _SYS_UTIME_H
+#define _SYS_UTIME_H
+
+/* This is a dummy <sys/utime.h> file, not customized for any
+ particular system. If there is a utime.h in libc/sys/SYSDIR/sys,
+ it will override this one. */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct utimbuf
+{
+ time_t actime;
+ time_t modtime;
+};
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif /* _SYS_UTIME_H */
diff --git a/newlib/libc/include/sys/wait.h b/newlib/libc/include/sys/wait.h
new file mode 100644
index 000000000..0e4a33945
--- /dev/null
+++ b/newlib/libc/include/sys/wait.h
@@ -0,0 +1,40 @@
+#ifndef _SYS_WAIT_H
+#define _SYS_WAIT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <sys/types.h>
+
+#define WNOHANG 1
+#define WUNTRACED 2
+
+/* A status looks like:
+ <2 bytes info> <2 bytes code>
+
+ <code> == 0, child has exited, info is the exit value
+ <code> == 1..7e, child has exited, info is the signal number.
+ <code> == 7f, child has stopped, info was the signal number.
+ <code> == 80, there was a core dump.
+*/
+
+#define WIFEXITED(w) (((w) & 0xff) == 0)
+#define WIFSIGNALED(w) (((w) & 0x7f) > 0 && (((w) & 0x7f) < 0x7f))
+#define WIFSTOPPED(w) (((w) & 0xff) == 0x7f)
+#define WEXITSTATUS(w) (((w) >> 8) & 0xff)
+#define WTERMSIG(w) ((w) & 0x7f)
+#define WSTOPSIG WEXITSTATUS
+
+pid_t wait (int *);
+pid_t waitpid (pid_t, int *, int);
+
+/* Provide prototypes for most of the _<systemcall> names that are
+ provided in newlib for some compilers. */
+pid_t _wait (int *);
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif
diff --git a/newlib/libc/include/termios.h b/newlib/libc/include/termios.h
new file mode 100644
index 000000000..ee1820ce0
--- /dev/null
+++ b/newlib/libc/include/termios.h
@@ -0,0 +1,7 @@
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <sys/termios.h>
+#ifdef __cplusplus
+}
+#endif
diff --git a/newlib/libc/include/time.h b/newlib/libc/include/time.h
new file mode 100644
index 000000000..4a9661779
--- /dev/null
+++ b/newlib/libc/include/time.h
@@ -0,0 +1,90 @@
+/*
+ * time.h
+ *
+ * Struct and function declarations for dealing with time.
+ */
+
+#ifndef _TIME_H_
+#define _TIME_H_
+
+#include "_ansi.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+/* Get _CLOCKS_PER_SEC_ */
+#include <machine/time.h>
+
+#ifndef _CLOCKS_PER_SEC_
+#define _CLOCKS_PER_SEC_ 1000
+#endif
+
+#define CLOCKS_PER_SEC _CLOCKS_PER_SEC_
+#define CLK_TCK CLOCKS_PER_SEC
+#define __need_size_t
+#include <stddef.h>
+
+/* Get _CLOCK_T_ and _TIME_T_. */
+#include <machine/types.h>
+
+#ifndef __clock_t_defined
+typedef _CLOCK_T_ clock_t;
+#define __clock_t_defined
+#endif
+
+#ifndef __time_t_defined
+typedef _TIME_T_ time_t;
+#define __time_t_defined
+#endif
+
+struct tm
+{
+ int tm_sec;
+ int tm_min;
+ int tm_hour;
+ int tm_mday;
+ int tm_mon;
+ int tm_year;
+ int tm_wday;
+ int tm_yday;
+ int tm_isdst;
+};
+
+clock_t _EXFUN(clock, (void));
+double _EXFUN(difftime, (time_t _time2, time_t _time1));
+time_t _EXFUN(mktime, (struct tm *_timeptr));
+time_t _EXFUN(time, (time_t *_timer));
+#ifndef _REENT_ONLY
+char *_EXFUN(asctime, (const struct tm *_tblock));
+char *_EXFUN(ctime, (const time_t *_time));
+struct tm *_EXFUN(gmtime, (const time_t *_timer));
+struct tm *_EXFUN(localtime,(const time_t *_timer));
+#endif
+size_t _EXFUN(strftime, (char *_s, size_t _maxsize, const char *_fmt, const struct tm *_t));
+
+char *_EXFUN(asctime_r, (const struct tm *, char *));
+char *_EXFUN(ctime_r, (const time_t *, char *));
+struct tm *_EXFUN(gmtime_r, (const time_t *, struct tm *));
+struct tm *_EXFUN(localtime_r, (const time_t *, struct tm *));
+
+#ifdef __CYGWIN32__
+#ifndef __STRICT_ANSI__
+extern time_t _timezone __declspec(dllimport);
+extern int _daylight __declspec(dllimport);
+extern char *_tzname[2] __declspec(dllimport);
+
+char *_EXFUN(timezone, (void));
+void _EXFUN(tzset, (void));
+#endif
+#endif /* __CYGWIN32__ */
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _TIME_H_ */
+
diff --git a/newlib/libc/include/unctrl.h b/newlib/libc/include/unctrl.h
new file mode 100644
index 000000000..8205ea60e
--- /dev/null
+++ b/newlib/libc/include/unctrl.h
@@ -0,0 +1,46 @@
+/* From curses.h. */
+/*
+ * Copyright (c) 1981, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef _UNCTRL_H_
+#define _UNCTRL_H_
+
+#include <_ansi.h>
+
+#define unctrl(c) __unctrl[(c) & 0xff]
+#define unctrllen(ch) __unctrllen[(ch) & 0xff]
+
+extern _CONST char * _CONST __unctrl[256]; /* Control strings. */
+extern _CONST char __unctrllen[256]; /* Control strings length. */
+
+#endif /* _UNCTRL_H_ */
diff --git a/newlib/libc/include/unistd.h b/newlib/libc/include/unistd.h
new file mode 100644
index 000000000..f9fca8476
--- /dev/null
+++ b/newlib/libc/include/unistd.h
@@ -0,0 +1,6 @@
+#ifndef _UNISTD_H_
+#define _UNISTD_H_
+
+# include <sys/unistd.h>
+
+#endif /* _UNISTD_H_ */
diff --git a/newlib/libc/include/utime.h b/newlib/libc/include/utime.h
new file mode 100644
index 000000000..c05e08e94
--- /dev/null
+++ b/newlib/libc/include/utime.h
@@ -0,0 +1,10 @@
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* The utime function is defined in libc/sys/<arch>/sys if it exists. */
+#include <sys/utime.h>
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/newlib/libc/include/utmp.h b/newlib/libc/include/utmp.h
new file mode 100644
index 000000000..88cf6f852
--- /dev/null
+++ b/newlib/libc/include/utmp.h
@@ -0,0 +1,8 @@
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <sys/utmp.h>
+#ifdef __cplusplus
+}
+#endif
+