summaryrefslogtreecommitdiff
path: root/Unix/i686-elf
diff options
context:
space:
mode:
Diffstat (limited to 'Unix/i686-elf')
-rw-r--r--Unix/i686-elf/include/_ansi.h95
-rw-r--r--Unix/i686-elf/include/_syslist.h38
-rw-r--r--Unix/i686-elf/include/alloca.h21
-rw-r--r--Unix/i686-elf/include/ar.h69
-rw-r--r--Unix/i686-elf/include/argz.h22
-rw-r--r--Unix/i686-elf/include/assert.h29
-rw-r--r--Unix/i686-elf/include/ctype.h73
-rw-r--r--Unix/i686-elf/include/dirent.h15
-rw-r--r--Unix/i686-elf/include/envz.h16
-rw-r--r--Unix/i686-elf/include/errno.h11
-rw-r--r--Unix/i686-elf/include/fastmath.h13
-rw-r--r--Unix/i686-elf/include/fcntl.h1
-rw-r--r--Unix/i686-elf/include/getopt.h136
-rw-r--r--Unix/i686-elf/include/grp.h94
-rw-r--r--Unix/i686-elf/include/iconv.h62
-rw-r--r--Unix/i686-elf/include/ieeefp.h248
-rw-r--r--Unix/i686-elf/include/inttypes.h290
-rw-r--r--Unix/i686-elf/include/langinfo.h140
-rw-r--r--Unix/i686-elf/include/libgen.h23
-rw-r--r--Unix/i686-elf/include/limits.h127
-rw-r--r--Unix/i686-elf/include/locale.h59
-rw-r--r--Unix/i686-elf/include/machine/_types.h121
-rw-r--r--Unix/i686-elf/include/machine/ansi.h1
-rw-r--r--Unix/i686-elf/include/machine/endian.h20
-rw-r--r--Unix/i686-elf/include/machine/fastmath.h100
-rw-r--r--Unix/i686-elf/include/machine/ieeefp.h298
-rw-r--r--Unix/i686-elf/include/machine/malloc.h8
-rw-r--r--Unix/i686-elf/include/machine/param.h1
-rw-r--r--Unix/i686-elf/include/machine/setjmp-dj.h43
-rw-r--r--Unix/i686-elf/include/machine/setjmp.h297
-rw-r--r--Unix/i686-elf/include/machine/stdlib.h8
-rw-r--r--Unix/i686-elf/include/machine/termios.h1
-rw-r--r--Unix/i686-elf/include/machine/time.h14
-rw-r--r--Unix/i686-elf/include/machine/types.h30
-rw-r--r--Unix/i686-elf/include/malloc.h169
-rw-r--r--Unix/i686-elf/include/math.h425
-rw-r--r--Unix/i686-elf/include/newlib.h153
-rw-r--r--Unix/i686-elf/include/paths.h7
-rw-r--r--Unix/i686-elf/include/process.h44
-rw-r--r--Unix/i686-elf/include/pthread.h358
-rw-r--r--Unix/i686-elf/include/pwd.h78
-rw-r--r--Unix/i686-elf/include/reent.h101
-rw-r--r--Unix/i686-elf/include/regdef.h7
-rw-r--r--Unix/i686-elf/include/search.h59
-rw-r--r--Unix/i686-elf/include/setjmp.h20
-rw-r--r--Unix/i686-elf/include/signal.h27
-rw-r--r--Unix/i686-elf/include/stdint.h401
-rw-r--r--Unix/i686-elf/include/stdio.h491
-rw-r--r--Unix/i686-elf/include/stdlib.h197
-rw-r--r--Unix/i686-elf/include/string.h103
-rw-r--r--Unix/i686-elf/include/sys/_types.h42
-rw-r--r--Unix/i686-elf/include/sys/cdefs.h123
-rw-r--r--Unix/i686-elf/include/sys/config.h204
-rw-r--r--Unix/i686-elf/include/sys/dirent.h13
-rw-r--r--Unix/i686-elf/include/sys/errno.h160
-rw-r--r--Unix/i686-elf/include/sys/fcntl.h183
-rw-r--r--Unix/i686-elf/include/sys/features.h100
-rw-r--r--Unix/i686-elf/include/sys/file.h2
-rw-r--r--Unix/i686-elf/include/sys/iconvnls.h77
-rw-r--r--Unix/i686-elf/include/sys/lock.h22
-rw-r--r--Unix/i686-elf/include/sys/param.h25
-rw-r--r--Unix/i686-elf/include/sys/queue.h471
-rw-r--r--Unix/i686-elf/include/sys/reent.h818
-rw-r--r--Unix/i686-elf/include/sys/resource.h15
-rw-r--r--Unix/i686-elf/include/sys/sched.h65
-rw-r--r--Unix/i686-elf/include/sys/signal.h316
-rw-r--r--Unix/i686-elf/include/sys/stat.h147
-rw-r--r--Unix/i686-elf/include/sys/stdio.h27
-rw-r--r--Unix/i686-elf/include/sys/string.h2
-rw-r--r--Unix/i686-elf/include/sys/syslimits.h65
-rw-r--r--Unix/i686-elf/include/sys/time.h83
-rw-r--r--Unix/i686-elf/include/sys/timeb.h39
-rw-r--r--Unix/i686-elf/include/sys/times.h28
-rw-r--r--Unix/i686-elf/include/sys/types.h408
-rw-r--r--Unix/i686-elf/include/sys/unistd.h345
-rw-r--r--Unix/i686-elf/include/sys/utime.h22
-rw-r--r--Unix/i686-elf/include/sys/wait.h40
-rw-r--r--Unix/i686-elf/include/termios.h7
-rw-r--r--Unix/i686-elf/include/time.h251
-rw-r--r--Unix/i686-elf/include/unctrl.h46
-rw-r--r--Unix/i686-elf/include/unistd.h6
-rw-r--r--Unix/i686-elf/include/utime.h12
-rw-r--r--Unix/i686-elf/include/utmp.h8
-rw-r--r--Unix/i686-elf/include/wchar.h83
-rw-r--r--Unix/i686-elf/include/wctype.h47
-rw-r--r--Unix/i686-elf/lib/cygmon.ld101
-rw-r--r--Unix/i686-elf/lib/libc.abin0 -> 2497228 bytes
-rwxr-xr-xUnix/i686-elf/lib/libcygmon.abin0 -> 21698 bytes
-rw-r--r--Unix/i686-elf/lib/libg.abin0 -> 2497228 bytes
-rw-r--r--Unix/i686-elf/lib/libm.abin0 -> 876322 bytes
-rwxr-xr-xUnix/i686-elf/lib/libnosys.abin0 -> 70616 bytes
91 files changed, 9567 insertions, 0 deletions
diff --git a/Unix/i686-elf/include/_ansi.h b/Unix/i686-elf/include/_ansi.h
new file mode 100644
index 0000000..07bfd88
--- /dev/null
+++ b/Unix/i686-elf/include/_ansi.h
@@ -0,0 +1,95 @@
+/* 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 <newlib.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
+#ifdef __CYGWIN__
+#define _EXFUN(name, proto) __cdecl name proto
+#define _EXPARM(name, proto) (* __cdecl name) proto
+#else
+#define _EXFUN(name, proto) name proto
+#define _EXPARM(name, proto) (* name) proto
+#endif
+#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
+
+/* ISO C++. */
+
+#ifdef __cplusplus
+#if !(defined(_BEGIN_STD_C) && defined(_END_STD_C))
+#ifdef _HAVE_STD_CXX
+#define _BEGIN_STD_C namespace std { extern "C" {
+#define _END_STD_C } }
+#else
+#define _BEGIN_STD_C extern "C" {
+#define _END_STD_C }
+#endif
+#endif
+#else
+#define _BEGIN_STD_C
+#define _END_STD_C
+#endif
+
+#endif /* _ANSIDECL_H_ */
diff --git a/Unix/i686-elf/include/_syslist.h b/Unix/i686-elf/include/_syslist.h
new file mode 100644
index 0000000..0bf76e1
--- /dev/null
+++ b/Unix/i686-elf/include/_syslist.h
@@ -0,0 +1,38 @@
+/* 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
+#endif /* MISSING_SYSCALL_NAMES */
+
+#if defined MISSING_SYSCALL_NAMES || !defined HAVE_OPENDIR
+/* If the system call interface is missing opendir, readdir, and
+ closedir, there is an implementation of these functions in
+ libc/posix that is implemented using open, getdents, and close.
+ Note, these functions are currently not in the libc/syscalls
+ directory. */
+#define _opendir opendir
+#define _readdir readdir
+#define _closedir closedir
+#endif /* MISSING_SYSCALL_NAMES || !HAVE_OPENDIR */
+
+#endif /* !__SYSLIST_H_ */
diff --git a/Unix/i686-elf/include/alloca.h b/Unix/i686-elf/include/alloca.h
new file mode 100644
index 0000000..2ea0fd9
--- /dev/null
+++ b/Unix/i686-elf/include/alloca.h
@@ -0,0 +1,21 @@
+/* libc/include/alloca.h - Allocate memory on stack */
+
+/* Written 2000 by Werner Almesberger */
+/* Rearranged for general inclusion by stdlib.h.
+ 2001, Corinna Vinschen <vinschen@redhat.com> */
+
+#ifndef _NEWLIB_ALLOCA_H
+#define _NEWLIB_ALLOCA_H
+
+#include "_ansi.h"
+#include <sys/reent.h>
+
+#undef alloca
+
+#ifdef __GNUC__
+#define alloca(size) __builtin_alloca(size)
+#else
+void * _EXFUN(alloca,(size_t));
+#endif
+
+#endif
diff --git a/Unix/i686-elf/include/ar.h b/Unix/i686-elf/include/ar.h
new file mode 100644
index 0000000..ac2e4ca
--- /dev/null
+++ b/Unix/i686-elf/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/Unix/i686-elf/include/argz.h b/Unix/i686-elf/include/argz.h
new file mode 100644
index 0000000..76afc06
--- /dev/null
+++ b/Unix/i686-elf/include/argz.h
@@ -0,0 +1,22 @@
+/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved.
+ *
+ * Permission to use, copy, modify, and distribute this software
+ * is freely granted, provided that this notice is preserved.
+ */
+
+#include <errno.h>
+#include <sys/types.h>
+
+/* The newlib implementation of these functions assumes that sizeof(char) == 1. */
+error_t argz_create (char *const argv[], char **argz, size_t *argz_len);
+error_t argz_create_sep (const char *string, int sep, char **argz, size_t *argz_len);
+size_t argz_count (const char *argz, size_t argz_len);
+void argz_extract (char *argz, size_t argz_len, char **argv);
+void argz_stringify (char *argz, size_t argz_len, int sep);
+error_t argz_add (char **argz, size_t *argz_len, const char *str);
+error_t argz_add_sep (char **argz, size_t *argz_len, const char *str, int sep);
+error_t argz_append (char **argz, size_t *argz_len, const char *buf, size_t buf_len);
+error_t argz_delete (char **argz, size_t *argz_len, char *entry);
+error_t argz_insert (char **argz, size_t *argz_len, char *before, const char *entry);
+char * argz_next (char *argz, size_t argz_len, const char *entry);
+error_t argz_replace (char **argz, size_t *argz_len, const char *str, const char *with, unsigned *replace_count);
diff --git a/Unix/i686-elf/include/assert.h b/Unix/i686-elf/include/assert.h
new file mode 100644
index 0000000..b681a85
--- /dev/null
+++ b/Unix/i686-elf/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/Unix/i686-elf/include/ctype.h b/Unix/i686-elf/include/ctype.h
new file mode 100644
index 0000000..c1ace50
--- /dev/null
+++ b/Unix/i686-elf/include/ctype.h
@@ -0,0 +1,73 @@
+#ifndef _CTYPE_H_
+#define _CTYPE_H_
+
+#include "_ansi.h"
+
+_BEGIN_STD_C
+
+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(isblank, (int __c));
+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
+
+extern __IMPORT _CONST char *__ctype_ptr;
+extern __IMPORT _CONST char _ctype_[]; /* For backward compatibility. */
+
+#ifndef __cplusplus
+#define isalpha(c) ((__ctype_ptr)[(unsigned)(c)]&(_U|_L))
+#define isupper(c) ((__ctype_ptr)[(unsigned)(c)]&_U)
+#define islower(c) ((__ctype_ptr)[(unsigned)(c)]&_L)
+#define isdigit(c) ((__ctype_ptr)[(unsigned)(c)]&_N)
+#define isxdigit(c) ((__ctype_ptr)[(unsigned)(c)]&(_X|_N))
+#define isspace(c) ((__ctype_ptr)[(unsigned)(c)]&_S)
+#define ispunct(c) ((__ctype_ptr)[(unsigned)(c)]&_P)
+#define isalnum(c) ((__ctype_ptr)[(unsigned)(c)]&(_U|_L|_N))
+#define isprint(c) ((__ctype_ptr)[(unsigned)(c)]&(_P|_U|_L|_N|_B))
+#define isgraph(c) ((__ctype_ptr)[(unsigned)(c)]&(_P|_U|_L|_N))
+#define iscntrl(c) ((__ctype_ptr)[(unsigned)(c)]&_C)
+
+
+/* Non-gcc versions will get the library versions, and will be
+ slightly slower */
+#ifdef __GNUC__
+# define toupper(c) \
+ __extension__ ({ int __x = (c); islower(__x) ? (__x - 'a' + 'A') : __x;})
+# define tolower(c) \
+ __extension__ ({ int __x = (c); isupper(__x) ? (__x - 'A' + 'a') : __x;})
+#endif
+#endif /* !__cplusplus */
+
+#ifndef __STRICT_ANSI__
+#define isascii(c) ((unsigned)(c)<=0177)
+#define toascii(c) ((c)&0177)
+#endif
+
+_END_STD_C
+
+#endif /* _CTYPE_H_ */
diff --git a/Unix/i686-elf/include/dirent.h b/Unix/i686-elf/include/dirent.h
new file mode 100644
index 0000000..6fefc03
--- /dev/null
+++ b/Unix/i686-elf/include/dirent.h
@@ -0,0 +1,15 @@
+#ifndef _DIRENT_H_
+#define _DIRENT_H_
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <sys/dirent.h>
+
+#if !defined(MAXNAMLEN) && !defined(_POSIX_SOURCE)
+#define MAXNAMLEN 1024
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif /*_DIRENT_H_*/
diff --git a/Unix/i686-elf/include/envz.h b/Unix/i686-elf/include/envz.h
new file mode 100644
index 0000000..e6a31c3
--- /dev/null
+++ b/Unix/i686-elf/include/envz.h
@@ -0,0 +1,16 @@
+/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved.
+ *
+ * Permission to use, copy, modify, and distribute this software
+ * is freely granted, provided that this notice is preserved.
+ */
+
+#include <errno.h>
+#include <sys/types.h>
+
+/* The newlib implementation of these functions assumes that sizeof(char) == 1. */
+char * envz_entry (const char *envz, size_t envz_len, const char *name);
+char * envz_get (const char *envz, size_t envz_len, const char *name);
+error_t envz_add (char **envz, size_t *envz_len, const char *name, const char *value);
+error_t envz_merge (char **envz, size_t *envz_len, const char *envz2, size_t envz2_len, int override);
+void envz_remove(char **envz, size_t *envz_len, const char *name);
+void envz_strip (char **envz, size_t *envz_len);
diff --git a/Unix/i686-elf/include/errno.h b/Unix/i686-elf/include/errno.h
new file mode 100644
index 0000000..7cc2ca8
--- /dev/null
+++ b/Unix/i686-elf/include/errno.h
@@ -0,0 +1,11 @@
+#ifndef __ERRNO_H__
+#define __ERRNO_H__
+
+#ifndef __error_t_defined
+typedef int error_t;
+#define __error_t_defined 1
+#endif
+
+#include <sys/errno.h>
+
+#endif /* !__ERRNO_H__ */
diff --git a/Unix/i686-elf/include/fastmath.h b/Unix/i686-elf/include/fastmath.h
new file mode 100644
index 0000000..95eea5f
--- /dev/null
+++ b/Unix/i686-elf/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/Unix/i686-elf/include/fcntl.h b/Unix/i686-elf/include/fcntl.h
new file mode 100644
index 0000000..86a9167
--- /dev/null
+++ b/Unix/i686-elf/include/fcntl.h
@@ -0,0 +1 @@
+#include <sys/fcntl.h>
diff --git a/Unix/i686-elf/include/getopt.h b/Unix/i686-elf/include/getopt.h
new file mode 100644
index 0000000..7179298
--- /dev/null
+++ b/Unix/i686-elf/include/getopt.h
@@ -0,0 +1,136 @@
+/****************************************************************************
+
+getopt.h - Read command line options
+
+AUTHOR: Gregory Pietsch
+CREATED Thu Jan 09 22:37:00 1997
+
+DESCRIPTION:
+
+The getopt() function parses the command line arguments. Its arguments argc
+and argv are the argument count and array as passed to the main() function
+on program invocation. The argument optstring is a list of available option
+characters. If such a character is followed by a colon (`:'), the option
+takes an argument, which is placed in optarg. If such a character is
+followed by two colons, the option takes an optional argument, which is
+placed in optarg. If the option does not take an argument, optarg is NULL.
+
+The external variable optind is the index of the next array element of argv
+to be processed; it communicates from one call to the next which element to
+process.
+
+The getopt_long() function works like getopt() except that it also accepts
+long options started by two dashes `--'. If these take values, it is either
+in the form
+
+--arg=value
+
+ or
+
+--arg value
+
+It takes the additional arguments longopts which is a pointer to the first
+element of an array of type GETOPT_LONG_OPTION_T, defined below. The last
+element of the array has to be filled with NULL for the name field.
+
+The longind pointer points to the index of the current long option relative
+to longopts if it is non-NULL.
+
+The getopt() function returns the option character if the option was found
+successfully, `:' if there was a missing parameter for one of the options,
+`?' for an unknown option character, and EOF for the end of the option list.
+
+The getopt_long() function's return value is described below.
+
+The function getopt_long_only() is identical to getopt_long(), except that a
+plus sign `+' can introduce long options as well as `--'.
+
+Describe how to deal with options that follow non-option ARGV-elements.
+
+If the caller did not specify anything, the default is REQUIRE_ORDER if the
+environment variable POSIXLY_CORRECT is defined, PERMUTE otherwise.
+
+REQUIRE_ORDER means don't recognize them as options; stop option processing
+when the first non-option is seen. This is what Unix does. This mode of
+operation is selected by either setting the environment variable
+POSIXLY_CORRECT, or using `+' as the first character of the optstring
+parameter.
+
+PERMUTE is the default. We permute the contents of ARGV as we scan, so that
+eventually all the non-options are at the end. This allows options to be
+given in any order, even with programs that were not written to expect this.
+
+RETURN_IN_ORDER is an option available to programs that were written to
+expect options and other ARGV-elements in any order and that care about the
+ordering of the two. We describe each non-option ARGV-element as if it were
+the argument of an option with character code 1. Using `-' as the first
+character of the optstring parameter selects this mode of operation.
+
+The special argument `--' forces an end of option-scanning regardless of the
+value of `ordering'. In the case of RETURN_IN_ORDER, only `--' can cause
+getopt() and friends to return EOF with optind != argc.
+
+COPYRIGHT NOTICE AND DISCLAIMER:
+
+Copyright (C) 1997 Gregory Pietsch
+
+This file and the accompanying getopt.c implementation file are hereby
+placed in the public domain without restrictions. Just give the author
+credit, don't claim you wrote it or prevent anyone else from using it.
+
+Gregory Pietsch's current e-mail address:
+gpietsch@comcast.net
+****************************************************************************/
+
+#ifndef GETOPT_H
+#define GETOPT_H
+
+#include <_ansi.h>
+
+/* include files needed by this include file */
+
+/* macros defined by this include file */
+#define NO_ARG 0
+#define REQUIRED_ARG 1
+#define OPTIONAL_ARG 2
+
+/* types defined by this include file */
+
+struct option
+{
+ char *name; /* the name of the long option */
+ int has_arg; /* one of the above macros */
+ int *flag; /* determines if getopt_long() returns a
+ * value for a long option; if it is
+ * non-NULL, 0 is returned as a function
+ * value and the value of val is stored in
+ * the area pointed to by flag. Otherwise,
+ * val is returned. */
+ int val; /* determines the value to return if flag is
+ * NULL. */
+};
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ /* externally-defined variables */
+ extern char *optarg;
+ extern int optind;
+ extern int opterr;
+ extern int optopt;
+
+ /* function prototypes */
+ int _EXFUN (getopt, (int __argc, char *const __argv[], const char *__optstring));
+ int _EXFUN (getopt_long, (int __argc, char *const __argv[], const char *__shortopts, const struct option *__longopts, int *__longind));
+ int _EXFUN (getopt_long_only, (int __argc, char *const __argv[], const char *__shortopts, const struct option *__longopts, int *__longind));
+
+#ifdef __cplusplus
+};
+
+#endif
+
+#endif /* GETOPT_H */
+
+/* END OF FILE getopt.h */
diff --git a/Unix/i686-elf/include/grp.h b/Unix/i686-elf/include/grp.h
new file mode 100644
index 0000000..1273e39
--- /dev/null
+++ b/Unix/i686-elf/include/grp.h
@@ -0,0 +1,94 @@
+/* $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>
+#ifdef __CYGWIN__
+#include <cygwin/grp.h>
+#endif
+
+#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
+
+#ifndef __INSIDE_CYGWIN__
+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);
+#ifndef __CYGWIN__
+void setgrfile (const char *);
+#endif /* !__CYGWIN__ */
+#ifndef _XOPEN_SOURCE
+#ifndef __CYGWIN__
+char *group_from_gid (gid_t, int);
+int setgroupent (int);
+#endif /* !__CYGWIN__ */
+int initgroups (const char *, gid_t);
+#endif /* !_XOPEN_SOURCE */
+#endif /* !_POSIX_SOURCE */
+#endif /* !__INSIDE_CYGWIN__ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !_GRP_H_ */
diff --git a/Unix/i686-elf/include/iconv.h b/Unix/i686-elf/include/iconv.h
new file mode 100644
index 0000000..5b8fcec
--- /dev/null
+++ b/Unix/i686-elf/include/iconv.h
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2003-2004, Artem B. Bityuckiy, SoftMine Corporation.
+ * Rights transferred to Franklin Electronic Publishers.
+ *
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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 _ICONV_H_
+#define _ICONV_H_
+
+#include <_ansi.h>
+#include <reent.h>
+#include <sys/types.h>
+#include <sys/_types.h>
+
+/* iconv_t: charset conversion descriptor type */
+typedef _iconv_t iconv_t;
+
+_BEGIN_STD_C
+
+#ifndef _REENT_ONLY
+iconv_t
+_EXFUN(iconv_open, (_CONST char *, _CONST char *));
+
+size_t
+_EXFUN(iconv, (iconv_t, _CONST char **, size_t *, char **, size_t *));
+
+int
+_EXFUN(iconv_close, (iconv_t));
+#endif
+
+iconv_t
+_EXFUN(_iconv_open_r, (struct _reent *, _CONST char *, _CONST char *));
+
+size_t
+_EXFUN(_iconv_r, (struct _reent *, iconv_t, _CONST char **,
+ size_t *, char **, size_t *));
+
+int
+_EXFUN(_iconv_close_r, (struct _reent *, iconv_t));
+
+_END_STD_C
+
+#endif /* #ifndef _ICONV_H_ */
diff --git a/Unix/i686-elf/include/ieeefp.h b/Unix/i686-elf/include/ieeefp.h
new file mode 100644
index 0000000..e08fd08
--- /dev/null
+++ b/Unix/i686-elf/include/ieeefp.h
@@ -0,0 +1,248 @@
+#ifndef _IEEE_FP_H_
+#define _IEEE_FP_H_
+
+#include "_ansi.h"
+
+#include <machine/ieeefp.h>
+
+_BEGIN_STD_C
+
+/* 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));
+
+#undef isnan
+#undef isinf
+
+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 */
+
+_END_STD_C
+
+#endif /* _IEEE_FP_H_ */
diff --git a/Unix/i686-elf/include/inttypes.h b/Unix/i686-elf/include/inttypes.h
new file mode 100644
index 0000000..0bcbd31
--- /dev/null
+++ b/Unix/i686-elf/include/inttypes.h
@@ -0,0 +1,290 @@
+/*
+ * Copyright (c) 2004, 2005 by
+ * Ralf Corsepius, Ulm/Germany. All rights reserved.
+ *
+ * Permission to use, copy, modify, and distribute this software
+ * is freely granted, provided that this notice is preserved.
+ */
+
+/**
+ * @file inttypes.h
+ */
+
+#ifndef _INTTYPES_H
+#define _INTTYPES_H
+
+#include <stdint.h>
+#define __need_wchar_t
+#include <stddef.h>
+
+#define __STRINGIFY(a) #a
+
+/* 8-bit types */
+#define __PRI8(x) __STRINGIFY(x)
+#define __SCN8(x) __STRINGIFY(hh##x)
+
+
+#define PRId8 __PRI8(d)
+#define PRIi8 __PRI8(i)
+#define PRIo8 __PRI8(o)
+#define PRIu8 __PRI8(u)
+#define PRIx8 __PRI8(x)
+#define PRIX8 __PRI8(X)
+
+#define SCNd8 __SCN8(d)
+#define SCNi8 __SCN8(i)
+#define SCNo8 __SCN8(o)
+#define SCNu8 __SCN8(u)
+#define SCNx8 __SCN8(x)
+
+
+#define PRIdLEAST8 __PRI8(d)
+#define PRIiLEAST8 __PRI8(i)
+#define PRIoLEAST8 __PRI8(o)
+#define PRIuLEAST8 __PRI8(u)
+#define PRIxLEAST8 __PRI8(x)
+#define PRIXLEAST8 __PRI8(X)
+
+#define SCNdLEAST8 __SCN8(d)
+#define SCNiLEAST8 __SCN8(i)
+#define SCNoLEAST8 __SCN8(o)
+#define SCNuLEAST8 __SCN8(u)
+#define SCNxLEAST8 __SCN8(x)
+
+
+#define PRIdFAST8 __PRI8(d)
+#define PRIiFAST8 __PRI8(i)
+#define PRIoFAST8 __PRI8(o)
+#define PRIuFAST8 __PRI8(u)
+#define PRIxFAST8 __PRI8(x)
+#define PRIXFAST8 __PRI8(X)
+
+#define SCNdFAST8 __SCN8(d)
+#define SCNiFAST8 __SCN8(i)
+#define SCNoFAST8 __SCN8(o)
+#define SCNuFAST8 __SCN8(u)
+#define SCNxFAST8 __SCN8(x)
+
+/* 16-bit types */
+#define __PRI16(x) __STRINGIFY(x)
+#define __SCN16(x) __STRINGIFY(h##x)
+
+
+#define PRId16 __PRI16(d)
+#define PRIi16 __PRI16(i)
+#define PRIo16 __PRI16(o)
+#define PRIu16 __PRI16(u)
+#define PRIx16 __PRI16(x)
+#define PRIX16 __PRI16(X)
+
+#define SCNd16 __SCN16(d)
+#define SCNi16 __SCN16(i)
+#define SCNo16 __SCN16(o)
+#define SCNu16 __SCN16(u)
+#define SCNx16 __SCN16(x)
+
+
+#define PRIdLEAST16 __PRI16(d)
+#define PRIiLEAST16 __PRI16(i)
+#define PRIoLEAST16 __PRI16(o)
+#define PRIuLEAST16 __PRI16(u)
+#define PRIxLEAST16 __PRI16(x)
+#define PRIXLEAST16 __PRI16(X)
+
+#define SCNdLEAST16 __SCN16(d)
+#define SCNiLEAST16 __SCN16(i)
+#define SCNoLEAST16 __SCN16(o)
+#define SCNuLEAST16 __SCN16(u)
+#define SCNxLEAST16 __SCN16(x)
+
+
+#define PRIdFAST16 __PRI16(d)
+#define PRIiFAST16 __PRI16(i)
+#define PRIoFAST16 __PRI16(o)
+#define PRIuFAST16 __PRI16(u)
+#define PRIxFAST16 __PRI16(x)
+#define PRIXFAST16 __PRI16(X)
+
+#define SCNdFAST16 __SCN16(d)
+#define SCNiFAST16 __SCN16(i)
+#define SCNoFAST16 __SCN16(o)
+#define SCNuFAST16 __SCN16(u)
+#define SCNxFAST16 __SCN16(x)
+
+/* 32-bit types */
+#if __have_long32
+#define __PRI32(x) __STRINGIFY(l##x)
+#define __SCN32(x) __STRINGIFY(l##x)
+#else
+#define __PRI32(x) __STRINGIFY(x)
+#define __SCN32(x) __STRINGIFY(x)
+#endif
+
+#define PRId32 __PRI32(d)
+#define PRIi32 __PRI32(i)
+#define PRIo32 __PRI32(o)
+#define PRIu32 __PRI32(u)
+#define PRIx32 __PRI32(x)
+#define PRIX32 __PRI32(X)
+
+#define SCNd32 __SCN32(d)
+#define SCNi32 __SCN32(i)
+#define SCNo32 __SCN32(o)
+#define SCNu32 __SCN32(u)
+#define SCNx32 __SCN32(x)
+
+
+#define PRIdLEAST32 __PRI32(d)
+#define PRIiLEAST32 __PRI32(i)
+#define PRIoLEAST32 __PRI32(o)
+#define PRIuLEAST32 __PRI32(u)
+#define PRIxLEAST32 __PRI32(x)
+#define PRIXLEAST32 __PRI32(X)
+
+#define SCNdLEAST32 __SCN32(d)
+#define SCNiLEAST32 __SCN32(i)
+#define SCNoLEAST32 __SCN32(o)
+#define SCNuLEAST32 __SCN32(u)
+#define SCNxLEAST32 __SCN32(x)
+
+
+#define PRIdFAST32 __PRI32(d)
+#define PRIiFAST32 __PRI32(i)
+#define PRIoFAST32 __PRI32(o)
+#define PRIuFAST32 __PRI32(u)
+#define PRIxFAST32 __PRI32(x)
+#define PRIXFAST32 __PRI32(X)
+
+#define SCNdFAST32 __SCN32(d)
+#define SCNiFAST32 __SCN32(i)
+#define SCNoFAST32 __SCN32(o)
+#define SCNuFAST32 __SCN32(u)
+#define SCNxFAST32 __SCN32(x)
+
+
+/* 64-bit types */
+#if __have_longlong64
+#define __PRI64(x) __STRINGIFY(ll##x)
+#define __SCN64(x) __STRINGIFY(ll##x)
+#elif __have_long64
+#define __PRI64(x) __STRINGIFY(l##x)
+#define __SCN64(x) __STRINGIFY(l##x)
+#else
+#define __PRI64(x) __STRINGIFY(x)
+#define __SCN64(x) __STRINGIFY(x)
+#endif
+
+#define PRId64 __PRI64(d)
+#define PRIi64 __PRI64(i)
+#define PRIo64 __PRI64(o)
+#define PRIu64 __PRI64(u)
+#define PRIx64 __PRI64(x)
+#define PRIX64 __PRI64(X)
+
+#define SCNd64 __SCN64(d)
+#define SCNi64 __SCN64(i)
+#define SCNo64 __SCN64(o)
+#define SCNu64 __SCN64(u)
+#define SCNx64 __SCN64(x)
+
+#if __int64_t_defined
+#define PRIdLEAST64 __PRI64(d)
+#define PRIiLEAST64 __PRI64(i)
+#define PRIoLEAST64 __PRI64(o)
+#define PRIuLEAST64 __PRI64(u)
+#define PRIxLEAST64 __PRI64(x)
+#define PRIXLEAST64 __PRI64(X)
+
+#define SCNdLEAST64 __SCN64(d)
+#define SCNiLEAST64 __SCN64(i)
+#define SCNoLEAST64 __SCN64(o)
+#define SCNuLEAST64 __SCN64(u)
+#define SCNxLEAST64 __SCN64(x)
+
+
+#define PRIdFAST64 __PRI64(d)
+#define PRIiFAST64 __PRI64(i)
+#define PRIoFAST64 __PRI64(o)
+#define PRIuFAST64 __PRI64(u)
+#define PRIxFAST64 __PRI64(x)
+#define PRIXFAST64 __PRI64(X)
+
+#define SCNdFAST64 __SCN64(d)
+#define SCNiFAST64 __SCN64(i)
+#define SCNoFAST64 __SCN64(o)
+#define SCNuFAST64 __SCN64(u)
+#define SCNxFAST64 __SCN64(x)
+#endif
+
+/* max-bit types */
+#if __have_longlong64
+#define __PRIMAX(x) __STRINGIFY(ll##x)
+#define __SCNMAX(x) __STRINGIFY(ll##x)
+#elif __have_long64
+#define __PRIMAX(x) __STRINGIFY(l##x)
+#define __SCNMAX(x) __STRINGIFY(l##x)
+#else
+#define __PRIMAX(x) __STRINGIFY(x)
+#define __SCNMAX(x) __STRINGIFY(x)
+#endif
+
+#define PRIdMAX __PRIMAX(d)
+#define PRIiMAX __PRIMAX(i)
+#define PRIoMAX __PRIMAX(o)
+#define PRIuMAX __PRIMAX(u)
+#define PRIxMAX __PRIMAX(x)
+#define PRIXMAX __PRIMAX(X)
+
+#define SCNdMAX __SCNMAX(d)
+#define SCNiMAX __SCNMAX(i)
+#define SCNoMAX __SCNMAX(o)
+#define SCNuMAX __SCNMAX(u)
+#define SCNxMAX __SCNMAX(x)
+
+/* ptr types */
+#if __have_longlong64
+#define __PRIPTR(x) __STRINGIFY(ll##x)
+#define __SCNPTR(x) __STRINGIFY(ll##x)
+#elif __have_long64
+#define __PRIPTR(x) __STRINGIFY(l##x)
+#define __SCNPTR(x) __STRINGIFY(l##x)
+#else
+#define __PRIPTR(x) __STRINGIFY(x)
+#define __SCNPTR(x) __STRINGIFY(x)
+#endif
+
+#define PRIdPTR __PRIPTR(d)
+#define PRIiPTR __PRIPTR(i)
+#define PRIoPTR __PRIPTR(o)
+#define PRIuPTR __PRIPTR(u)
+#define PRIxPTR __PRIPTR(x)
+#define PRIXPTR __PRIPTR(X)
+
+#define SCNdPTR __SCNPTR(d)
+#define SCNiPTR __SCNPTR(i)
+#define SCNoPTR __SCNPTR(o)
+#define SCNuPTR __SCNPTR(u)
+#define SCNxPTR __SCNPTR(x)
+
+
+typedef struct {
+ intmax_t quot;
+ intmax_t rem;
+} imaxdiv_t;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern intmax_t imaxabs(intmax_t j);
+extern imaxdiv_t imaxdiv(intmax_t numer, intmax_t denomer);
+extern intmax_t strtoimax(const char *__restrict, char **__restrict, int);
+extern uintmax_t strtoumax(const char *__restrict, char **__restrict, int);
+extern intmax_t wcstoimax(const wchar_t *__restrict, wchar_t **__restrict, int);
+extern uintmax_t wcstoumax(const wchar_t *__restrict, wchar_t **__restrict, int);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Unix/i686-elf/include/langinfo.h b/Unix/i686-elf/include/langinfo.h
new file mode 100644
index 0000000..33ae8d0
--- /dev/null
+++ b/Unix/i686-elf/include/langinfo.h
@@ -0,0 +1,140 @@
+/*-
+ * Copyright (c) 2001 Alexey Zelkin <phantom@FreeBSD.org>
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD: src/include/langinfo.h,v 1.5 2002/03/23 17:24:53 imp Exp $
+ */
+
+#ifndef _LANGINFO_H_
+#define _LANGINFO_H_
+
+#include <sys/cdefs.h>
+
+typedef int nl_item;
+
+/* Extract the category and item index from a constructed `nl_item' value. */
+#define _NL_ITEM_CATEGORY(item) ((int) (item) >> 16)
+#define _NL_ITEM_INDEX(item) ((int) (item) & 0xffff)
+
+#define CODESET 0 /* codeset name */
+#define D_T_FMT 1 /* string for formatting date and time */
+#define D_FMT 2 /* date format string */
+#define T_FMT 3 /* time format string */
+#define T_FMT_AMPM 4 /* a.m. or p.m. time formatting string */
+#define AM_STR 5 /* Ante Meridian affix */
+#define PM_STR 6 /* Post Meridian affix */
+
+/* week day names */
+#define DAY_1 7
+#define DAY_2 8
+#define DAY_3 9
+#define DAY_4 10
+#define DAY_5 11
+#define DAY_6 12
+#define DAY_7 13
+
+/* abbreviated week day names */
+#define ABDAY_1 14
+#define ABDAY_2 15
+#define ABDAY_3 16
+#define ABDAY_4 17
+#define ABDAY_5 18
+#define ABDAY_6 19
+#define ABDAY_7 20
+
+/* month names */
+#define MON_1 21
+#define MON_2 22
+#define MON_3 23
+#define MON_4 24
+#define MON_5 25
+#define MON_6 26
+#define MON_7 27
+#define MON_8 28
+#define MON_9 29
+#define MON_10 30
+#define MON_11 31
+#define MON_12 32
+
+/* abbreviated month names */
+#define ABMON_1 33
+#define ABMON_2 34
+#define ABMON_3 35
+#define ABMON_4 36
+#define ABMON_5 37
+#define ABMON_6 38
+#define ABMON_7 39
+#define ABMON_8 40
+#define ABMON_9 41
+#define ABMON_10 42
+#define ABMON_11 43
+#define ABMON_12 44
+
+#define ERA 45 /* era description segments */
+#define ERA_D_FMT 46 /* era date format string */
+#define ERA_D_T_FMT 47 /* era date and time format string */
+#define ERA_T_FMT 48 /* era time format string */
+#define ALT_DIGITS 49 /* alternative symbols for digits */
+
+#define RADIXCHAR 50 /* radix char */
+#define THOUSEP 51 /* separator for thousands */
+
+#define YESEXPR 52 /* affirmative response expression */
+#define NOEXPR 53 /* negative response expression */
+#define YESSTR 54 /* affirmative response for yes/no queries */
+#define NOSTR 55 /* negative response for yes/no queries */
+
+#define CRNCYSTR 56 /* currency symbol */
+
+#define D_MD_ORDER 57 /* month/day order (local extension) */
+
+#define _NL_CTYPE_TRANSLIT_TAB_SIZE 58
+#define _NL_CTYPE_TRANSLIT_FROM_IDX 59
+#define _NL_CTYPE_TRANSLIT_FROM_TBL 60
+#define _NL_CTYPE_TRANSLIT_TO_IDX 61
+#define _NL_CTYPE_TRANSLIT_TO_TBL 62
+#define _NL_CTYPE_TRANSLIT_DEFAULT_MISSING_LEN 63
+#define _NL_CTYPE_TRANSLIT_DEFAULT_MISSING 64
+#define _NL_CTYPE_TRANSLIT_IGNORE_LEN 65
+#define _NL_CTYPE_TRANSLIT_IGNORE 66
+#define _NL_CTYPE_EXTRA_MAP_1 70
+#define _NL_CTYPE_EXTRA_MAP_2 71
+#define _NL_CTYPE_EXTRA_MAP_3 72
+#define _NL_CTYPE_EXTRA_MAP_4 73
+#define _NL_CTYPE_EXTRA_MAP_5 74
+#define _NL_CTYPE_EXTRA_MAP_6 75
+#define _NL_CTYPE_EXTRA_MAP_7 76
+#define _NL_CTYPE_EXTRA_MAP_8 77
+#define _NL_CTYPE_EXTRA_MAP_9 78
+#define _NL_CTYPE_EXTRA_MAP_10 79
+#define _NL_CTYPE_EXTRA_MAP_11 80
+#define _NL_CTYPE_EXTRA_MAP_12 81
+#define _NL_CTYPE_EXTRA_MAP_13 82
+#define _NL_CTYPE_EXTRA_MAP_14 83
+
+__BEGIN_DECLS
+char *nl_langinfo(nl_item);
+__END_DECLS
+
+#endif /* !_LANGINFO_H_ */
diff --git a/Unix/i686-elf/include/libgen.h b/Unix/i686-elf/include/libgen.h
new file mode 100644
index 0000000..abfab0e
--- /dev/null
+++ b/Unix/i686-elf/include/libgen.h
@@ -0,0 +1,23 @@
+/*
+ * libgen.h - defined by XPG4
+ */
+
+#ifndef _LIBGEN_H_
+#define _LIBGEN_H_
+
+#include "_ansi.h"
+#include <sys/reent.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+char *_EXFUN(basename, (char *));
+char *_EXFUN(dirname, (char *));
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _LIBGEN_H_ */
+
diff --git a/Unix/i686-elf/include/limits.h b/Unix/i686-elf/include/limits.h
new file mode 100644
index 0000000..53a7a41
--- /dev/null
+++ b/Unix/i686-elf/include/limits.h
@@ -0,0 +1,127 @@
+#ifndef _LIBC_LIMITS_H_
+# define _LIBC_LIMITS_H_ 1
+
+#include <newlib.h>
+
+# ifdef _MB_LEN_MAX
+# define MB_LEN_MAX _MB_LEN_MAX
+# else
+# define MB_LEN_MAX 1
+# endif
+
+/* if do not have #include_next support, then we
+ have to define the limits here. */
+# if !defined __GNUC__ || __GNUC__ < 2
+
+# ifndef _LIMITS_H
+# define _LIMITS_H 1
+
+# include <sys/config.h>
+
+/* Number of bits in a `char'. */
+# undef CHAR_BIT
+# define CHAR_BIT 8
+
+/* Minimum and maximum values a `signed char' can hold. */
+# undef SCHAR_MIN
+# define SCHAR_MIN (-128)
+# undef SCHAR_MAX
+# define SCHAR_MAX 127
+
+/* Maximum value an `unsigned char' can hold. (Minimum is 0). */
+# undef UCHAR_MAX
+# define UCHAR_MAX 255
+
+/* Minimum and maximum values a `char' can hold. */
+# ifdef __CHAR_UNSIGNED__
+# undef CHAR_MIN
+# define CHAR_MIN 0
+# undef CHAR_MAX
+# define CHAR_MAX 255
+# else
+# undef CHAR_MIN
+# define CHAR_MIN (-128)
+# undef CHAR_MAX
+# define CHAR_MAX 127
+# endif
+
+/* Minimum and maximum values a `signed short int' can hold. */
+# undef SHRT_MIN
+/* For the sake of 16 bit hosts, we may not use -32768 */
+# define SHRT_MIN (-32767-1)
+# undef SHRT_MAX
+# define SHRT_MAX 32767
+
+/* Maximum value an `unsigned short int' can hold. (Minimum is 0). */
+# undef USHRT_MAX
+# define USHRT_MAX 65535
+
+/* Minimum and maximum values a `signed int' can hold. */
+# ifndef __INT_MAX__
+# define __INT_MAX__ 2147483647
+# endif
+# undef INT_MIN
+# define INT_MIN (-INT_MAX-1)
+# undef INT_MAX
+# define INT_MAX __INT_MAX__
+
+/* Maximum value an `unsigned int' can hold. (Minimum is 0). */
+# undef UINT_MAX
+# define UINT_MAX (INT_MAX * 2U + 1)
+
+/* Minimum and maximum values a `signed long int' can hold.
+ (Same as `int'). */
+# ifndef __LONG_MAX__
+# if defined (__alpha__) || (defined (__sparc__) && defined(__arch64__)) || defined (__sparcv9)
+# define __LONG_MAX__ 9223372036854775807L
+# else
+# define __LONG_MAX__ 2147483647L
+# endif /* __alpha__ || sparc64 */
+# endif
+# undef LONG_MIN
+# define LONG_MIN (-LONG_MAX-1)
+# undef LONG_MAX
+# define LONG_MAX __LONG_MAX__
+
+/* Maximum value an `unsigned long int' can hold. (Minimum is 0). */
+# undef ULONG_MAX
+# define ULONG_MAX (LONG_MAX * 2UL + 1)
+
+# ifndef __LONG_LONG_MAX__
+# define __LONG_LONG_MAX__ 9223372036854775807LL
+# endif
+
+# if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+/* Minimum and maximum values a `signed long long int' can hold. */
+# undef LLONG_MIN
+# define LLONG_MIN (-LLONG_MAX-1)
+# undef LLONG_MAX
+# define LLONG_MAX __LONG_LONG_MAX__
+
+/* Maximum value an `unsigned long long int' can hold. (Minimum is 0). */
+# undef ULLONG_MAX
+# define ULLONG_MAX (LLONG_MAX * 2ULL + 1)
+# endif
+
+# if defined (__GNU_LIBRARY__) ? defined (__USE_GNU) : !defined (__STRICT_ANSI__)
+/* Minimum and maximum values a `signed long long int' can hold. */
+# undef LONG_LONG_MIN
+# define LONG_LONG_MIN (-LONG_LONG_MAX-1)
+# undef LONG_LONG_MAX
+# define LONG_LONG_MAX __LONG_LONG_MAX__
+
+/* Maximum value an `unsigned long long int' can hold. (Minimum is 0). */
+# undef ULONG_LONG_MAX
+# define ULONG_LONG_MAX (LONG_LONG_MAX * 2ULL + 1)
+# endif
+
+# endif /* _LIMITS_H */
+# endif /* GCC 2. */
+
+#endif /* !_LIBC_LIMITS_H_ */
+
+#if defined __GNUC__ && !defined _GCC_LIMITS_H_
+/* `_GCC_LIMITS_H_' is what GCC's file defines. */
+# include_next <limits.h>
+#endif /* __GNUC__ && !_GCC_LIMITS_H_ */
+
diff --git a/Unix/i686-elf/include/locale.h b/Unix/i686-elf/include/locale.h
new file mode 100644
index 0000000..ebe1422
--- /dev/null
+++ b/Unix/i686-elf/include/locale.h
@@ -0,0 +1,59 @@
+/*
+ locale.h
+ Values appropriate for the formatting of monetary and other
+ numberic quantities.
+*/
+
+#ifndef _LOCALE_H_
+#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
+#define LC_MESSAGES 6
+
+_BEGIN_STD_C
+
+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 *));
+
+_END_STD_C
+
+#endif /* _LOCALE_H_ */
diff --git a/Unix/i686-elf/include/machine/_types.h b/Unix/i686-elf/include/machine/_types.h
new file mode 100644
index 0000000..e3712c5
--- /dev/null
+++ b/Unix/i686-elf/include/machine/_types.h
@@ -0,0 +1,121 @@
+/*
+ * $Id: _types.h,v 1.2 2005/03/22 18:12:29 cgf Exp $
+ */
+
+#ifndef _MACHINE__TYPES_H
+#define _MACHINE__TYPES_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Guess on types by examining *_MIN / *_MAX defines.
+ */
+#if defined(__GNUC__) && (__GNUC__ >= 3 ) \
+ && defined(__GNUC_MINOR__) && (__GNUC_MINOR__ > 2 )
+/* GCC >= 3.3.0 has __<val>__ implicitly defined. */
+#define __EXP(x) __##x##__
+#else
+/* Fall back to POSIX versions from <limits.h> */
+#define __EXP(x) x
+#include <limits.h>
+#endif
+
+#if __EXP(SCHAR_MAX) == 0x7f
+typedef signed char __int8_t ;
+typedef unsigned char __uint8_t ;
+#define ___int8_t_defined 1
+#endif
+
+#if __EXP(INT_MAX) == 0x7fff
+typedef signed int __int16_t;
+typedef unsigned int __uint16_t;
+#define ___int16_t_defined 1
+#elif __EXP(SHRT_MAX) == 0x7fff
+typedef signed short __int16_t;
+typedef unsigned short __uint16_t;
+#define ___int16_t_defined 1
+#elif __EXP(SCHAR_MAX) == 0x7fff
+typedef signed char __int16_t;
+typedef unsigned char __uint16_t;
+#define ___int16_t_defined 1
+#endif
+
+#if ___int16_t_defined
+typedef __int16_t __int_least16_t;
+typedef __uint16_t __uint_least16_t;
+#define ___int_least16_t_defined 1
+
+#if !___int8_t_defined
+typedef __int16_t __int_least8_t;
+typedef __uint16_t __uint_least8_t;
+#define ___int_least8_t_defined 1
+#endif
+#endif
+
+#if __EXP(INT_MAX) == 0x7fffffffL
+typedef signed int __int32_t;
+typedef unsigned int __uint32_t;
+#define ___int32_t_defined 1
+#elif __EXP(LONG_MAX) == 0x7fffffffL
+typedef signed long __int32_t;
+typedef unsigned long __uint32_t;
+#define ___int32_t_defined 1
+#elif __EXP(SHRT_MAX) == 0x7fffffffL
+typedef signed short __int32_t;
+typedef unsigned short __uint32_t;
+#define ___int32_t_defined 1
+#elif __EXP(SCHAR_MAX) == 0x7fffffffL
+typedef signed char __int32_t;
+typedef unsigned char __uint32_t;
+#define ___int32_t_defined 1
+#endif
+
+#if ___int32_t_defined
+typedef __int32_t __int_least32_t;
+typedef __uint32_t __uint_least32_t;
+#define ___int_least32_t_defined 1
+
+#if !___int8_t_defined
+typedef __int32_t __int_least8_t;
+typedef __uint32_t __uint_least8_t;
+#define ___int_least8_t_defined 1
+#endif
+#if !___int16_t_defined
+typedef __int32_t __int_least16_t;
+typedef __uint32_t __uint_least16_t;
+#define ___int_least16_t_defined 1
+#endif
+#endif
+
+#if __EXP(LONG_MAX) > 0x7fffffff
+typedef signed long __int64_t;
+typedef unsigned long __uint64_t;
+#define ___int64_t_defined 1
+
+/* GCC has __LONG_LONG_MAX__ */
+#elif defined(__LONG_LONG_MAX__) && (__LONG_LONG_MAX__ > 0x7fffffff)
+typedef signed long long __int64_t;
+typedef unsigned long long __uint64_t;
+#define ___int64_t_defined 1
+
+/* POSIX mandates LLONG_MAX in <limits.h> */
+#elif defined(LLONG_MAX) && (LLONG_MAX > 0x7fffffff)
+typedef signed long long __int64_t;
+typedef unsigned long long __uint64_t;
+#define ___int64_t_defined 1
+
+#elif __EXP(INT_MAX) > 0x7fffffff
+typedef signed int __int64_t;
+typedef unsigned int __uint64_t;
+#define ___int64_t_defined 1
+#endif
+
+#undef __EXP
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MACHINE__TYPES_H */
diff --git a/Unix/i686-elf/include/machine/ansi.h b/Unix/i686-elf/include/machine/ansi.h
new file mode 100644
index 0000000..737b6d0
--- /dev/null
+++ b/Unix/i686-elf/include/machine/ansi.h
@@ -0,0 +1 @@
+/* dummy header file to support BSD compiler */
diff --git a/Unix/i686-elf/include/machine/endian.h b/Unix/i686-elf/include/machine/endian.h
new file mode 100644
index 0000000..c1e8599
--- /dev/null
+++ b/Unix/i686-elf/include/machine/endian.h
@@ -0,0 +1,20 @@
+#ifndef __MACHINE_ENDIAN_H__
+
+#include <sys/config.h>
+
+#ifndef BIG_ENDIAN
+#define BIG_ENDIAN 4321
+#endif
+#ifndef LITTLE_ENDIAN
+#define LITTLE_ENDIAN 1234
+#endif
+
+#ifndef BYTE_ORDER
+#ifdef __IEEE_LITTLE_ENDIAN
+#define BYTE_ORDER LITTLE_ENDIAN
+#else
+#define BYTE_ORDER BIG_ENDIAN
+#endif
+#endif
+
+#endif /* __MACHINE_ENDIAN_H__ */
diff --git a/Unix/i686-elf/include/machine/fastmath.h b/Unix/i686-elf/include/machine/fastmath.h
new file mode 100644
index 0000000..b13befa
--- /dev/null
+++ b/Unix/i686-elf/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/Unix/i686-elf/include/machine/ieeefp.h b/Unix/i686-elf/include/machine/ieeefp.h
new file mode 100644
index 0000000..9e5b5ae
--- /dev/null
+++ b/Unix/i686-elf/include/machine/ieeefp.h
@@ -0,0 +1,298 @@
+#ifndef __IEEE_BIG_ENDIAN
+#ifndef __IEEE_LITTLE_ENDIAN
+
+/* This file can define macros to choose variations of the IEEE float
+ format:
+
+ _FLT_LARGEST_EXPONENT_IS_NORMAL
+
+ Defined if the float format uses the largest exponent for finite
+ numbers rather than NaN and infinity representations. Such a
+ format cannot represent NaNs or infinities at all, but it's FLT_MAX
+ is twice the IEEE value.
+
+ _FLT_NO_DENORMALS
+
+ Defined if the float format does not support IEEE denormals. Every
+ float with a zero exponent is taken to be a zero representation.
+
+ ??? At the moment, there are no equivalent macros above for doubles and
+ the macros are not fully supported by --enable-newlib-hw-fp.
+
+ __IEEE_BIG_ENDIAN
+
+ Defined if the float format is big endian. This is mutually exclusive
+ with __IEEE_LITTLE_ENDIAN.
+
+ __IEEE_LITTLE_ENDIAN
+
+ Defined if the float format is little endian. This is mutually exclusive
+ with __IEEE_BIG_ENDIAN.
+
+ Note that one of __IEEE_BIG_ENDIAN or __IEEE_LITTLE_ENDIAN must be specified for a
+ platform or error will occur.
+
+ __IEEE_BYTES_LITTLE_ENDIAN
+
+ This flag is used in conjunction with __IEEE_BIG_ENDIAN to describe a situation
+ whereby multiple words of an IEEE floating point are in big endian order, but the
+ words themselves are little endian with respect to the bytes.
+
+ _DOUBLE_IS_32_BITS
+
+ This is used on platforms that support double by using the 32-bit IEEE
+ float type.
+
+ _FLOAT_ARG
+
+ This represents what type a float arg is passed as. It is used when the type is
+ not promoted to double.
+
+*/
+
+#if (defined(__arm__) || defined(__thumb__)) && !defined(__MAVERICK__)
+/* ARM traditionally used big-endian words; and within those words the
+ byte ordering was big or little endian depending upon the target.
+ Modern floating-point formats are naturally ordered; in this case
+ __VFP_FP__ will be defined, even if soft-float. */
+#ifdef __VFP_FP__
+# ifdef __ARMEL__
+# define __IEEE_LITTLE_ENDIAN
+# else
+# define __IEEE_BIG_ENDIAN
+# endif
+#else
+# define __IEEE_BIG_ENDIAN
+# ifdef __ARMEL__
+# define __IEEE_BYTES_LITTLE_ENDIAN
+# endif
+#endif
+#endif
+
+#ifdef __hppa__
+#define __IEEE_BIG_ENDIAN
+#endif
+
+#ifdef __SPU__
+#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(__mc68hc11__) || defined(__mc68hc12__) || defined(__mc68hc1x__)
+#define __IEEE_BIG_ENDIAN
+#ifdef __HAVE_SHORT_DOUBLE__
+# define _DOUBLE_IS_32BITS
+#endif
+#endif
+
+#if defined (__H8300__) || defined (__H8300H__) || defined (__H8300S__) || defined (__H8500__) || defined (__H8300SX__)
+#define __IEEE_BIG_ENDIAN
+#define _FLOAT_ARG float
+#define _DOUBLE_IS_32BITS
+#endif
+
+#ifdef __sh__
+#ifdef __LITTLE_ENDIAN__
+#define __IEEE_LITTLE_ENDIAN
+#else
+#define __IEEE_BIG_ENDIAN
+#endif
+#if defined(__SH2E__) || defined(__SH3E__) || defined(__SH4_SINGLE_ONLY__) || defined(__SH2A_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
+
+#if defined(_C4x) || defined(_C3x)
+#define __IEEE_BIG_ENDIAN
+#define _DOUBLE_IS_32BITS
+#endif
+
+#ifdef __TIC80__
+#define __IEEE_LITTLE_ENDIAN
+#endif
+
+#ifdef __MIPSEL__
+#define __IEEE_LITTLE_ENDIAN
+#endif
+#ifdef __MIPSEB__
+#define __IEEE_BIG_ENDIAN
+#endif
+
+#ifdef __MMIX__
+#define __IEEE_BIG_ENDIAN
+#endif
+
+#ifdef __D30V__
+#define __IEEE_BIG_ENDIAN
+#endif
+
+/* necv70 was __IEEE_LITTLE_ENDIAN. */
+
+#ifdef __W65__
+#define __IEEE_LITTLE_ENDIAN
+#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 _DOUBLE_IS_32BITS
+#endif
+
+#ifdef __v800
+#define __IEEE_LITTLE_ENDIAN
+#endif
+
+#ifdef __v850
+#define __IEEE_LITTLE_ENDIAN
+#endif
+
+#ifdef __D10V__
+#define __IEEE_BIG_ENDIAN
+#if __DOUBLE__ == 32
+#define _DOUBLE_IS_32BITS
+#endif
+#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 __xstormy16__
+#define __IEEE_LITTLE_ENDIAN
+#endif
+
+#ifdef __arc__
+#ifdef __big_endian__
+#define __IEEE_BIG_ENDIAN
+#else
+#define __IEEE_LITTLE_ENDIAN
+#endif
+#endif
+
+#ifdef __CRX__
+#define __IEEE_LITTLE_ENDIAN
+#endif
+
+#ifdef __fr30__
+#define __IEEE_BIG_ENDIAN
+#endif
+
+#ifdef __mcore__
+#define __IEEE_BIG_ENDIAN
+#endif
+
+#ifdef __mt__
+#define __IEEE_BIG_ENDIAN
+#endif
+
+#ifdef __frv__
+#define __IEEE_BIG_ENDIAN
+#endif
+
+#ifdef __ia64__
+#ifdef __BIG_ENDIAN__
+#define __IEEE_BIG_ENDIAN
+#else
+#define __IEEE_LITTLE_ENDIAN
+#endif
+#endif
+
+#ifdef __AVR__
+#define __IEEE_LITTLE_ENDIAN
+#define _DOUBLE_IS_32BITS
+#endif
+
+#if defined(__or32__) || defined(__or1k__) || defined(__or16__)
+#define __IEEE_BIG_ENDIAN
+#endif
+
+#ifdef __IP2K__
+#define __IEEE_BIG_ENDIAN
+#define __SMALL_BITFIELDS
+#define _DOUBLE_IS_32BITS
+#endif
+
+#ifdef __iq2000__
+#define __IEEE_BIG_ENDIAN
+#endif
+
+#ifdef __MAVERICK__
+#ifdef __ARMEL__
+# define __IEEE_LITTLE_ENDIAN
+#else /* must be __ARMEB__ */
+# define __IEEE_BIG_ENDIAN
+#endif /* __ARMEL__ */
+#endif /* __MAVERICK__ */
+
+#ifdef __m32c__
+#define __IEEE_LITTLE_ENDIAN
+#define __SMALL_BITFIELDS
+#endif
+
+#ifdef __CRIS__
+#define __IEEE_LITTLE_ENDIAN
+#endif
+
+#ifdef __BFIN__
+#define __IEEE_LITTLE_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/Unix/i686-elf/include/machine/malloc.h b/Unix/i686-elf/include/machine/malloc.h
new file mode 100644
index 0000000..fdada9e
--- /dev/null
+++ b/Unix/i686-elf/include/machine/malloc.h
@@ -0,0 +1,8 @@
+#ifndef _MACHMALLOC_H_
+#define _MACHMALLOC_H_
+
+/* place holder so platforms may add malloc.h extensions */
+
+#endif /* _MACHMALLOC_H_ */
+
+
diff --git a/Unix/i686-elf/include/machine/param.h b/Unix/i686-elf/include/machine/param.h
new file mode 100644
index 0000000..bdf8bf7
--- /dev/null
+++ b/Unix/i686-elf/include/machine/param.h
@@ -0,0 +1 @@
+/* Place holder for machine-specific param.h. */
diff --git a/Unix/i686-elf/include/machine/setjmp-dj.h b/Unix/i686-elf/include/machine/setjmp-dj.h
new file mode 100644
index 0000000..9eb6bcf
--- /dev/null
+++ b/Unix/i686-elf/include/machine/setjmp-dj.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 1991 DJ Delorie
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms is permitted
+ * provided that the above copyright notice and following paragraph are
+ * duplicated in all such forms.
+ *
+ * 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/Unix/i686-elf/include/machine/setjmp.h b/Unix/i686-elf/include/machine/setjmp.h
new file mode 100644
index 0000000..f751bfb
--- /dev/null
+++ b/Unix/i686-elf/include/machine/setjmp.h
@@ -0,0 +1,297 @@
+
+_BEGIN_STD_C
+
+#if defined(__arm__) || defined(__thumb__)
+/*
+ * All callee preserved registers:
+ * v1 - v7, fp, ip, sp, lr, f4, f5, f6, f7
+ */
+#define _JBLEN 23
+#endif
+
+#if defined(__AVR__)
+#define _JBLEN 24
+#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
+
+#ifdef __BFIN__
+#define _JBLEN 40
+#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(__mc68hc11__) || defined(__mc68hc12__) || defined(__mc68hc1x__)
+/*
+ * D, X, Y are not saved.
+ * Only take into account the pseudo soft registers (max 32).
+ */
+#define _JBLEN 32
+#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__)
+#if defined(__unix__) || defined(__rtems__)
+# define _JBLEN 9
+#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__
+#ifdef __mips64
+#define _JBTYPE long long
+#endif
+#ifdef __mips_soft_float
+#define _JBLEN 11
+#else
+#define _JBLEN 23
+#endif
+#endif
+
+#ifdef __m88000__
+#define _JBLEN 21
+#endif
+
+#ifdef __H8300__
+#define _JBLEN 5
+#define _JBTYPE int
+#endif
+
+#ifdef __H8300H__
+/* same as H8/300 but registers are twice as big */
+#define _JBLEN 5
+#define _JBTYPE long
+#endif
+
+#if defined (__H8300S__) || defined (__H8300SX__)
+/* 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__
+#if __SH5__
+#define _JBLEN 50
+#define _JBTYPE long long
+#else
+#define _JBLEN 20
+#endif /* __SH5__ */
+#endif
+
+#ifdef __v800
+#define _JBLEN 28
+#endif
+
+#ifdef __PPC__
+#ifdef __ALTIVEC__
+#define _JBLEN 64
+#else
+#define _JBLEN 32
+#endif
+#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__)
+#ifdef __AM33_2__
+#define _JBLEN 26
+#else
+/* A guess */
+#define _JBLEN 10
+#endif
+#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
+
+#if defined(_C4x)
+#define _JBLEN 10
+#endif
+#if defined(_C3x)
+#define _JBLEN 9
+#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 __frv__
+#define _JBLEN (68/2) /* room for 68 32-bit regs */
+#define _JBTYPE double
+#endif
+
+#ifdef __CRX__
+#define _JBLEN 9
+#endif
+
+#ifdef __fr30__
+#define _JBLEN 10
+#endif
+
+#ifdef __iq2000__
+#define _JBLEN 32
+#endif
+
+#ifdef __mcore__
+#define _JBLEN 16
+#endif
+
+#ifdef __MMIX__
+/* Using a layout compatible with GCC's built-in. */
+#define _JBLEN 5
+#define _JBTYPE unsigned long
+#endif
+
+#ifdef __mt__
+#define _JBLEN 16
+#endif
+
+#ifdef __SPU__
+#define _JBLEN 50
+#define _JBTYPE __vector signed int
+#endif
+
+#ifdef __xstormy16__
+/* 4 GPRs plus SP plus PC. */
+#define _JBLEN 8
+#endif
+
+#ifdef __CRIS__
+#define _JBLEN 18
+#endif
+
+#ifdef __m32c__
+#if defined(__r8c_cpu__) || defined(__m16c_cpu__)
+#define _JBLEN (22/2)
+#else
+#define _JBLEN (34/2)
+#endif
+#define _JBTYPE unsigned short
+#endif /* __m32c__ */
+
+#ifdef _JBLEN
+#ifdef _JBTYPE
+typedef _JBTYPE jmp_buf[_JBLEN];
+#else
+typedef int jmp_buf[_JBLEN];
+#endif
+#endif
+
+_END_STD_C
+
+#if defined(__CYGWIN__) || defined(__rtems__)
+#include <signal.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* POSIX sigsetjmp/siglongjmp macros */
+typedef int sigjmp_buf[_JBLEN+2];
+
+#define _SAVEMASK _JBLEN
+#define _SIGMASK (_JBLEN+1)
+
+#ifdef __CYGWIN__
+# define _CYGWIN_WORKING_SIGSETJMP
+#endif
+
+#if defined(__GNUC__)
+
+#define sigsetjmp(env, savemask) \
+ __extension__ \
+ ({ \
+ sigjmp_buf *_sjbuf = &(env); \
+ ((*_sjbuf)[_SAVEMASK] = savemask,\
+ sigprocmask (SIG_SETMASK, 0, (sigset_t *)((*_sjbuf) + _SIGMASK)),\
+ setjmp (*_sjbuf)); \
+ })
+
+#define siglongjmp(env, val) \
+ __extension__ \
+ ({ \
+ sigjmp_buf *_sjbuf = &(env); \
+ ((((*_sjbuf)[_SAVEMASK]) ? \
+ sigprocmask (SIG_SETMASK, (sigset_t *)((*_sjbuf) + _SIGMASK), 0)\
+ : 0), \
+ longjmp (*_sjbuf, val)); \
+ })
+
+#else /* !__GNUC__ */
+
+#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
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* __CYGWIN__ or __rtems__ */
diff --git a/Unix/i686-elf/include/machine/stdlib.h b/Unix/i686-elf/include/machine/stdlib.h
new file mode 100644
index 0000000..fa3f3a1
--- /dev/null
+++ b/Unix/i686-elf/include/machine/stdlib.h
@@ -0,0 +1,8 @@
+#ifndef _MACHSTDLIB_H_
+#define _MACHSTDLIB_H_
+
+/* place holder so platforms may add stdlib.h extensions */
+
+#endif /* _MACHSTDLIB_H_ */
+
+
diff --git a/Unix/i686-elf/include/machine/termios.h b/Unix/i686-elf/include/machine/termios.h
new file mode 100644
index 0000000..41fd459
--- /dev/null
+++ b/Unix/i686-elf/include/machine/termios.h
@@ -0,0 +1 @@
+#define __MAX_BAUD B4000000
diff --git a/Unix/i686-elf/include/machine/time.h b/Unix/i686-elf/include/machine/time.h
new file mode 100644
index 0000000..0caf126
--- /dev/null
+++ b/Unix/i686-elf/include/machine/time.h
@@ -0,0 +1,14 @@
+#ifndef _MACHTIME_H_
+#define _MACHTIME_H_
+
+#if defined(__rtems__)
+#define _CLOCKS_PER_SEC_ sysconf(_SC_CLK_TCK)
+#else /* !__rtems__ */
+#if defined(__arm__) || defined(__thumb__)
+#define _CLOCKS_PER_SEC_ 100
+#endif
+#endif /* !__rtems__ */
+
+#endif /* _MACHTIME_H_ */
+
+
diff --git a/Unix/i686-elf/include/machine/types.h b/Unix/i686-elf/include/machine/types.h
new file mode 100644
index 0000000..40a75fa
--- /dev/null
+++ b/Unix/i686-elf/include/machine/types.h
@@ -0,0 +1,30 @@
+#ifndef _MACHTYPES_H_
+#define _MACHTYPES_H_
+
+/*
+ * The following section is RTEMS specific and is needed to more
+ * closely match the types defined in the BSD machine/types.h.
+ * This is needed to let the RTEMS/BSD TCP/IP stack compile.
+ */
+#if defined(__rtems__)
+#include <machine/_types.h>
+#endif
+
+#define _CLOCK_T_ unsigned long /* clock() */
+#define _TIME_T_ long /* time() */
+#define _CLOCKID_T_ unsigned long
+#define _TIMER_T_ unsigned long
+
+#ifndef _HAVE_SYSTYPES
+typedef long int __off_t;
+typedef int __pid_t;
+#ifdef __GNUC__
+__extension__ typedef long long int __loff_t;
+#else
+typedef long int __loff_t;
+#endif
+#endif
+
+#endif /* _MACHTYPES_H_ */
+
+
diff --git a/Unix/i686-elf/include/malloc.h b/Unix/i686-elf/include/malloc.h
new file mode 100644
index 0000000..c46357c
--- /dev/null
+++ b/Unix/i686-elf/include/malloc.h
@@ -0,0 +1,169 @@
+/* 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>
+
+/* include any machine-specific extensions */
+#include <machine/malloc.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));
+#ifdef __CYGWIN__
+#undef _malloc_r
+#define _malloc_r(r, s) malloc (s)
+#else
+extern _PTR _malloc_r _PARAMS ((struct _reent *, size_t));
+#endif
+
+extern _VOID free _PARAMS ((_PTR));
+#ifdef __CYGWIN__
+#undef _free_r
+#define _free_r(r, p) free (p)
+#else
+extern _VOID _free_r _PARAMS ((struct _reent *, _PTR));
+#endif
+
+extern _PTR realloc _PARAMS ((_PTR, size_t));
+#ifdef __CYGWIN__
+#undef _realloc_r
+#define _realloc_r(r, p, s) realloc (p, s)
+#else
+extern _PTR _realloc_r _PARAMS ((struct _reent *, _PTR, size_t));
+#endif
+
+extern _PTR calloc _PARAMS ((size_t, size_t));
+#ifdef __CYGWIN__
+#undef _calloc_r
+#define _calloc_r(r, s1, s2) calloc (s1, s2);
+#else
+extern _PTR _calloc_r _PARAMS ((struct _reent *, size_t, size_t));
+#endif
+
+extern _PTR memalign _PARAMS ((size_t, size_t));
+#ifdef __CYGWIN__
+#undef _memalign_r
+#define _memalign_r(r, s1, s2) memalign (s1, s2);
+#else
+extern _PTR _memalign_r _PARAMS ((struct _reent *, size_t, size_t));
+#endif
+
+extern struct mallinfo mallinfo _PARAMS ((void));
+#ifdef __CYGWIN__
+#undef _mallinfo_r
+#define _mallinfo_r(r) mallinfo ()
+#else
+extern struct mallinfo _mallinfo_r _PARAMS ((struct _reent *));
+#endif
+
+extern void malloc_stats _PARAMS ((void));
+#ifdef __CYGWIN__
+#undef _malloc_stats_r
+#define _malloc_stats_r(r) malloc_stats ()
+#else
+extern void _malloc_stats_r _PARAMS ((struct _reent *));
+#endif
+
+extern int mallopt _PARAMS ((int, int));
+#ifdef __CYGWIN__
+#undef _mallopt_r
+#define _mallopt_r(i1, i2) mallopt (i1, i2)
+#else
+extern int _mallopt_r _PARAMS ((struct _reent *, int, int));
+#endif
+
+extern size_t malloc_usable_size _PARAMS ((_PTR));
+#ifdef __CYGWIN__
+#undef _malloc_usable_size_r
+#define _malloc_usable_size_r(r, p) malloc_usable_size (p)
+#else
+extern size_t _malloc_usable_size_r _PARAMS ((struct _reent *, _PTR));
+#endif
+
+/* These aren't too useful on an embedded system, but we define them
+ anyhow. */
+
+extern _PTR valloc _PARAMS ((size_t));
+#ifdef __CYGWIN__
+#undef _valloc_r
+#define _valloc_r(r, s) valloc (s)
+#else
+extern _PTR _valloc_r _PARAMS ((struct _reent *, size_t));
+#endif
+
+extern _PTR pvalloc _PARAMS ((size_t));
+#ifdef __CYGWIN__
+#undef _pvalloc_r
+#define _pvalloc_r(r, s) pvalloc (s)
+#else
+extern _PTR _pvalloc_r _PARAMS ((struct _reent *, size_t));
+#endif
+
+extern int malloc_trim _PARAMS ((size_t));
+#ifdef __CYGWIN__
+#undef _malloc_trim_r
+#define _malloc_trim_r(r, s) malloc_trim (s)
+#else
+extern int _malloc_trim_r _PARAMS ((struct _reent *, size_t));
+#endif
+
+/* A compatibility routine for an earlier version of the allocator. */
+
+extern _VOID mstats _PARAMS ((char *));
+#ifdef __CYGWIN__
+#undef _mstats_r
+#define _mstats_r(r, p) mstats (p)
+#else
+extern _VOID _mstats_r _PARAMS ((struct _reent *, char *));
+#endif
+
+/* SVID2/XPG mallopt options */
+
+#define M_MXFAST 1 /* UNUSED in this malloc */
+#define M_NLBLKS 2 /* UNUSED in this malloc */
+#define M_GRAIN 3 /* UNUSED in this malloc */
+#define M_KEEP 4 /* UNUSED in this malloc */
+
+/* mallopt options that actually do something */
+
+#define M_TRIM_THRESHOLD -1
+#define M_TOP_PAD -2
+#define M_MMAP_THRESHOLD -3
+#define M_MMAP_MAX -4
+
+#ifndef __CYGWIN__
+/* Some systems provide this, so do too for compatibility. */
+extern void cfree _PARAMS ((_PTR));
+#endif /* __CYGWIN__ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _INCLUDE_MALLOC_H_ */
diff --git a/Unix/i686-elf/include/math.h b/Unix/i686-elf/include/math.h
new file mode 100644
index 0000000..3e96757
--- /dev/null
+++ b/Unix/i686-elf/include/math.h
@@ -0,0 +1,425 @@
+
+#ifndef _MATH_H_
+#define _MATH_H_
+
+#include <sys/reent.h>
+#include <machine/ieeefp.h>
+#include "_ansi.h"
+
+_BEGIN_STD_C
+
+union __dmath
+{
+ __ULong i[2];
+ double d;
+};
+
+union __fmath
+{
+ __ULong i[1];
+ float f;
+};
+
+union __ldmath
+{
+ __ULong i[4];
+ _LONG_DOUBLE ld;
+};
+
+#if defined(__GNUC__) && \
+ ( (__GNUC__ >= 4) || \
+ ( (__GNUC__ >= 3) && defined(__GNUC_MINOR__) && (__GNUC_MINOR__ >= 3) ) )
+
+ /* gcc >= 3.3 implicitly defines builtins for HUGE_VALx values. */
+
+ #ifndef HUGE_VAL
+ #define HUGE_VAL (__builtin_huge_val())
+ #endif
+
+ #ifndef HUGE_VALF
+ #define HUGE_VALF (__builtin_huge_valf())
+ #endif
+
+ #ifndef HUGE_VALL
+ #define HUGE_VALL (__builtin_huge_vall())
+ #endif
+
+#else /* !gcc >= 3.3 */
+
+ /* No builtins. Use floating-point unions instead. Declare as an array
+ without bounds so no matter what small data support a port and/or
+ library has, the reference will be via the general method for accessing
+ globals. */
+
+ #ifndef HUGE_VAL
+ extern __IMPORT const union __dmath __infinity[];
+ #define HUGE_VAL (__infinity[0].d)
+ #endif
+
+ #ifndef HUGE_VALF
+ extern __IMPORT const union __fmath __infinityf[];
+ #define HUGE_VALF (__infinityf[0].f)
+ #endif
+
+ #ifndef HUGE_VALL
+ extern __IMPORT const union __ldmath __infinityld[];
+ #define HUGE_VALL (__infinityld[0].ld)
+ #endif
+
+#endif /* !gcc >= 3.3 */
+
+/* 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) */
+
+#if !defined(__STRICT_ANSI__) || defined(__cplusplus)
+
+/* ISO C99 types and macros. */
+
+#ifndef FLT_EVAL_METHOD
+#define FLT_EVAL_METHOD 0
+typedef float float_t;
+typedef double double_t;
+#endif /* FLT_EVAL_METHOD */
+
+#define FP_NAN 0
+#define FP_INFINITE 1
+#define FP_ZERO 2
+#define FP_SUBNORMAL 3
+#define FP_NORMAL 4
+
+extern int __isinff (float x);
+extern int __isinfd (double x);
+extern int __isnanf (float x);
+extern int __isnand (double x);
+extern int __fpclassifyf (float x);
+extern int __fpclassifyd (double x);
+extern int __signbitf (float x);
+extern int __signbitd (double x);
+
+#define fpclassify(x) \
+ (__extension__ ({__typeof__(x) __x = (x); \
+ (sizeof (__x) == sizeof (float)) ? __fpclassifyf(__x) : __fpclassifyd(__x);}))
+
+#define isfinite(y) \
+ (__extension__ ({__typeof__(y) __y = (y); \
+ fpclassify(__y) != FP_INFINITE && fpclassify(__y) != FP_NAN;}))
+
+/* Note: isinf and isnan were once functions in newlib that took double
+ * arguments. C99 specifies that these names are reserved for macros
+ * supporting multiple floating point types. Thus, they are
+ * now defined as macros. Implementations of the old functions
+ * taking double arguments still exist for compatibility purposes. */
+#define isinf(x) \
+ (__extension__ ({__typeof__(x) __x = (x); \
+ (sizeof (__x) == sizeof (float)) ? __isinff(__x) : __isinfd(__x);}))
+#define isnan(x) \
+ (__extension__ ({__typeof__(x) __x = (x); \
+ (sizeof (__x) == sizeof (float)) ? __isnanf(__x) : __isnand(__x);}))
+#define isnormal(y) (fpclassify(y) == FP_NORMAL)
+#define signbit(x) \
+ (__extension__ ({__typeof__(x) __x = (x); \
+ (sizeof(__x) == sizeof(float)) ? __signbitf(__x) : __signbitd(__x);}))
+
+#define isgreater(x,y) \
+ (__extension__ ({__typeof__(x) __x = (x); __typeof__(y) __y = (y); \
+ !isunordered(__x,__y) && (__x > __y);}))
+#define isgreaterequal(x,y) \
+ (__extension__ ({__typeof__(x) __x = (x); __typeof__(y) __y = (y); \
+ !isunordered(__x,__y) && (__x >= __y);}))
+#define isless(x,y) \
+ (__extension__ ({__typeof__(x) __x = (x); __typeof__(y) __y = (y); \
+ !isunordered(__x,__y) && (__x < __y);}))
+#define islessequal(x,y) \
+ (__extension__ ({__typeof__(x) __x = (x); __typeof__(y) __y = (y); \
+ !isunordered(__x,__y) && (__x <= __y);}))
+#define islessgreater(x,y) \
+ (__extension__ ({__typeof__(x) __x = (x); __typeof__(y) __y = (y); \
+ !isunordered(__x,__y) && (__x < __y || __x > __y);}))
+
+#define isunordered(a,b) \
+ (__extension__ ({__typeof__(a) __a = (a); __typeof__(b) __b = (b); \
+ fpclassify(__a) == FP_NAN || fpclassify(__b) == FP_NAN;}))
+
+/* Non ANSI double precision functions. */
+
+extern double infinity _PARAMS((void));
+extern double nan _PARAMS((const char *));
+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));
+
+extern double exp2 _PARAMS((double));
+extern double scalbln _PARAMS((double, long int));
+extern double tgamma _PARAMS((double));
+extern double nearbyint _PARAMS((double));
+extern long int lrint _PARAMS((double));
+extern double round _PARAMS((double));
+extern long int lround _PARAMS((double));
+extern double trunc _PARAMS((double));
+extern double remquo _PARAMS((double, double, int *));
+extern double copysign _PARAMS((double, double));
+extern double fdim _PARAMS((double, double));
+extern double fmax _PARAMS((double, double));
+extern double fmin _PARAMS((double, double));
+extern double fma _PARAMS((double, double, double));
+extern void sincos _PARAMS((double, double *, double *));
+
+#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) */
+
+#endif /* !defined (__STRICT_ANSI__) || defined(__cplusplus) */
+
+#if !defined(__STRICT_ANSI__) || defined(__cplusplus)
+
+/* 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) */
+
+#endif /* !defined(__STRICT_ANSI__) || defined(__cplusplus) */
+
+#ifndef __STRICT_ANSI__
+
+/* Other single precision functions. */
+
+extern float exp2f _PARAMS((float));
+extern float scalblnf _PARAMS((float, long int));
+extern float tgammaf _PARAMS((float));
+extern float nearbyintf _PARAMS((float));
+extern long int lrintf _PARAMS((float));
+extern float roundf _PARAMS((float));
+extern long int lroundf _PARAMS((float));
+extern float truncf _PARAMS((float));
+extern float remquof _PARAMS((float, float, int *));
+extern float copysignf _PARAMS((float, float));
+extern float fdimf _PARAMS((float, float));
+extern float fmaxf _PARAMS((float, float));
+extern float fminf _PARAMS((float, float));
+extern float fmaf _PARAMS((float, float, float));
+
+extern float infinityf _PARAMS((void));
+extern float nanf _PARAMS((const char *));
+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));
+extern void sincosf _PARAMS((float, float *, 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. */
+#ifndef _REENT_ONLY
+#define signgam (*__signgam())
+extern int *__signgam _PARAMS((void));
+#endif /* ! defined (_REENT_ONLY) */
+
+#define __signgam_r(ptr) _REENT_SIGNGAM(ptr)
+
+/* The exception structure passed to the matherr routine. */
+/* We have a problem when using C++ since `exception' is a reserved
+ name in C++. */
+#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 MAXFLOAT 3.40282347e+38F
+
+#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 __IMPORT _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__) */
+
+_END_STD_C
+
+#ifdef __FAST_MATH__
+#include <machine/fastmath.h>
+#endif
+
+#endif /* _MATH_H_ */
diff --git a/Unix/i686-elf/include/newlib.h b/Unix/i686-elf/include/newlib.h
new file mode 100644
index 0000000..eabc063
--- /dev/null
+++ b/Unix/i686-elf/include/newlib.h
@@ -0,0 +1,153 @@
+/* newlib.h. Generated by configure. */
+/* newlib.hin. Generated automatically from configure.in by autoheader. */
+#ifndef __NEWLIB_H__
+
+#define __NEWLIB_H__ 1
+
+/* EL/IX level */
+/* #undef _ELIX_LEVEL */
+
+/* Newlib version */
+#define _NEWLIB_VERSION "1.15.0"
+
+/* long long type support in IO functions like printf/scanf enabled */
+/* #undef _WANT_IO_LONG_LONG */
+
+/* long double type support in IO functions like printf/scanf enabled */
+/* #undef _WANT_IO_LONG_DOUBLE */
+
+/* Positional argument support in printf functions enabled. */
+/* #undef _WANT_IO_POS_ARGS */
+
+/* Multibyte supported */
+/* #undef _MB_CAPABLE */
+
+/* MB_LEN_MAX */
+#define _MB_LEN_MAX 1
+
+/* ICONV enabled */
+/* #undef _ICONV_ENABLED */
+
+/* Enable ICONV external CCS files loading capabilities */
+/* #undef _ICONV_ENABLE_EXTERNAL_CCS */
+
+/* Define if the linker supports .preinit_array/.init_array/.fini_array
+ * sections. */
+#define HAVE_INITFINI_ARRAY 1
+
+/* True if atexit() may dynamically allocate space for cleanup
+ functions. */
+#define _ATEXIT_DYNAMIC_ALLOC 1
+
+/* Define if the compiler supports aliasing an array to an address. */
+/* #undef _HAVE_ARRAY_ALIASING */
+/*
+ * Iconv encodings enabled ("to" direction)
+ */
+/* #undef _ICONV_TO_ENCODING_BIG5 */
+/* #undef _ICONV_TO_ENCODING_CP775 */
+/* #undef _ICONV_TO_ENCODING_CP850 */
+/* #undef _ICONV_TO_ENCODING_CP852 */
+/* #undef _ICONV_TO_ENCODING_CP855 */
+/* #undef _ICONV_TO_ENCODING_CP866 */
+/* #undef _ICONV_TO_ENCODING_EUC_JP */
+/* #undef _ICONV_TO_ENCODING_EUC_TW */
+/* #undef _ICONV_TO_ENCODING_EUC_KR */
+/* #undef _ICONV_TO_ENCODING_ISO_8859_1 */
+/* #undef _ICONV_TO_ENCODING_ISO_8859_10 */
+/* #undef _ICONV_TO_ENCODING_ISO_8859_11 */
+/* #undef _ICONV_TO_ENCODING_ISO_8859_13 */
+/* #undef _ICONV_TO_ENCODING_ISO_8859_14 */
+/* #undef _ICONV_TO_ENCODING_ISO_8859_15 */
+/* #undef _ICONV_TO_ENCODING_ISO_8859_2 */
+/* #undef _ICONV_TO_ENCODING_ISO_8859_3 */
+/* #undef _ICONV_TO_ENCODING_ISO_8859_4 */
+/* #undef _ICONV_TO_ENCODING_ISO_8859_5 */
+/* #undef _ICONV_TO_ENCODING_ISO_8859_6 */
+/* #undef _ICONV_TO_ENCODING_ISO_8859_7 */
+/* #undef _ICONV_TO_ENCODING_ISO_8859_8 */
+/* #undef _ICONV_TO_ENCODING_ISO_8859_9 */
+/* #undef _ICONV_TO_ENCODING_ISO_IR_111 */
+/* #undef _ICONV_TO_ENCODING_KOI8_R */
+/* #undef _ICONV_TO_ENCODING_KOI8_RU */
+/* #undef _ICONV_TO_ENCODING_KOI8_U */
+/* #undef _ICONV_TO_ENCODING_KOI8_UNI */
+/* #undef _ICONV_TO_ENCODING_UCS_2 */
+/* #undef _ICONV_TO_ENCODING_UCS_2_INTERNAL */
+/* #undef _ICONV_TO_ENCODING_UCS_2BE */
+/* #undef _ICONV_TO_ENCODING_UCS_2LE */
+/* #undef _ICONV_TO_ENCODING_UCS_4 */
+/* #undef _ICONV_TO_ENCODING_UCS_4_INTERNAL */
+/* #undef _ICONV_TO_ENCODING_UCS_4BE */
+/* #undef _ICONV_TO_ENCODING_UCS_4LE */
+/* #undef _ICONV_TO_ENCODING_US_ASCII */
+/* #undef _ICONV_TO_ENCODING_UTF_16 */
+/* #undef _ICONV_TO_ENCODING_UTF_16BE */
+/* #undef _ICONV_TO_ENCODING_UTF_16LE */
+/* #undef _ICONV_TO_ENCODING_UTF_8 */
+/* #undef _ICONV_TO_ENCODING_WIN_1250 */
+/* #undef _ICONV_TO_ENCODING_WIN_1251 */
+/* #undef _ICONV_TO_ENCODING_WIN_1252 */
+/* #undef _ICONV_TO_ENCODING_WIN_1253 */
+/* #undef _ICONV_TO_ENCODING_WIN_1254 */
+/* #undef _ICONV_TO_ENCODING_WIN_1255 */
+/* #undef _ICONV_TO_ENCODING_WIN_1256 */
+/* #undef _ICONV_TO_ENCODING_WIN_1257 */
+/* #undef _ICONV_TO_ENCODING_WIN_1258 */
+
+/*
+ * Iconv encodings enabled ("from" direction)
+ */
+/* #undef _ICONV_FROM_ENCODING_BIG5 */
+/* #undef _ICONV_FROM_ENCODING_CP775 */
+/* #undef _ICONV_FROM_ENCODING_CP850 */
+/* #undef _ICONV_FROM_ENCODING_CP852 */
+/* #undef _ICONV_FROM_ENCODING_CP855 */
+/* #undef _ICONV_FROM_ENCODING_CP866 */
+/* #undef _ICONV_FROM_ENCODING_EUC_JP */
+/* #undef _ICONV_FROM_ENCODING_EUC_TW */
+/* #undef _ICONV_FROM_ENCODING_EUC_KR */
+/* #undef _ICONV_FROM_ENCODING_ISO_8859_1 */
+/* #undef _ICONV_FROM_ENCODING_ISO_8859_10 */
+/* #undef _ICONV_FROM_ENCODING_ISO_8859_11 */
+/* #undef _ICONV_FROM_ENCODING_ISO_8859_13 */
+/* #undef _ICONV_FROM_ENCODING_ISO_8859_14 */
+/* #undef _ICONV_FROM_ENCODING_ISO_8859_15 */
+/* #undef _ICONV_FROM_ENCODING_ISO_8859_2 */
+/* #undef _ICONV_FROM_ENCODING_ISO_8859_3 */
+/* #undef _ICONV_FROM_ENCODING_ISO_8859_4 */
+/* #undef _ICONV_FROM_ENCODING_ISO_8859_5 */
+/* #undef _ICONV_FROM_ENCODING_ISO_8859_6 */
+/* #undef _ICONV_FROM_ENCODING_ISO_8859_7 */
+/* #undef _ICONV_FROM_ENCODING_ISO_8859_8 */
+/* #undef _ICONV_FROM_ENCODING_ISO_8859_9 */
+/* #undef _ICONV_FROM_ENCODING_ISO_IR_111 */
+/* #undef _ICONV_FROM_ENCODING_KOI8_R */
+/* #undef _ICONV_FROM_ENCODING_KOI8_RU */
+/* #undef _ICONV_FROM_ENCODING_KOI8_U */
+/* #undef _ICONV_FROM_ENCODING_KOI8_UNI */
+/* #undef _ICONV_FROM_ENCODING_UCS_2 */
+/* #undef _ICONV_FROM_ENCODING_UCS_2_INTERNAL */
+/* #undef _ICONV_FROM_ENCODING_UCS_2BE */
+/* #undef _ICONV_FROM_ENCODING_UCS_2LE */
+/* #undef _ICONV_FROM_ENCODING_UCS_4 */
+/* #undef _ICONV_FROM_ENCODING_UCS_4_INTERNAL */
+/* #undef _ICONV_FROM_ENCODING_UCS_4BE */
+/* #undef _ICONV_FROM_ENCODING_UCS_4LE */
+/* #undef _ICONV_FROM_ENCODING_US_ASCII */
+/* #undef _ICONV_FROM_ENCODING_UTF_16 */
+/* #undef _ICONV_FROM_ENCODING_UTF_16BE */
+/* #undef _ICONV_FROM_ENCODING_UTF_16LE */
+/* #undef _ICONV_FROM_ENCODING_UTF_8 */
+/* #undef _ICONV_FROM_ENCODING_WIN_1250 */
+/* #undef _ICONV_FROM_ENCODING_WIN_1251 */
+/* #undef _ICONV_FROM_ENCODING_WIN_1252 */
+/* #undef _ICONV_FROM_ENCODING_WIN_1253 */
+/* #undef _ICONV_FROM_ENCODING_WIN_1254 */
+/* #undef _ICONV_FROM_ENCODING_WIN_1255 */
+/* #undef _ICONV_FROM_ENCODING_WIN_1256 */
+/* #undef _ICONV_FROM_ENCODING_WIN_1257 */
+/* #undef _ICONV_FROM_ENCODING_WIN_1258 */
+
+#endif /* !__NEWLIB_H__ */
+
diff --git a/Unix/i686-elf/include/paths.h b/Unix/i686-elf/include/paths.h
new file mode 100644
index 0000000..36cf78a
--- /dev/null
+++ b/Unix/i686-elf/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/Unix/i686-elf/include/process.h b/Unix/i686-elf/include/process.h
new file mode 100644
index 0000000..a73564a
--- /dev/null
+++ b/Unix/i686-elf/include/process.h
@@ -0,0 +1,44 @@
+/* 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, const 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);
+
+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/Unix/i686-elf/include/pthread.h b/Unix/i686-elf/include/pthread.h
new file mode 100644
index 0000000..1fa80ba
--- /dev/null
+++ b/Unix/i686-elf/include/pthread.h
@@ -0,0 +1,358 @@
+/* pthread.h
+ *
+ * Written by Joel Sherrill <joel@OARcorp.com>.
+ *
+ * COPYRIGHT (c) 1989-2000.
+ * On-Line Applications Research Corporation (OAR).
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose without fee is hereby granted, provided that this entire notice
+ * is included in all copies of any software which is or includes a copy
+ * or modification of this software.
+ *
+ * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION
+ * OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS
+ * SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
+ *
+ * $Id: pthread.h,v 1.4 2006/09/13 22:09:27 jjohnstn Exp $
+ */
+
+#ifndef __PTHREAD_h
+#define __PTHREAD_h
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <unistd.h>
+
+#if defined(_POSIX_THREADS)
+
+#include <sys/types.h>
+#include <time.h>
+#include <sys/sched.h>
+
+/* Register Fork Handlers, P1003.1c/Draft 10, P1003.1c/Draft 10, p. 27
+
+ If an OS does not support processes, then it falls under this provision
+ and may not provide pthread_atfork():
+
+ "Either the implementation shall support the pthread_atfork() function
+ as described above or the pthread_atfork() funciton shall not be
+ provided."
+
+ NOTE: RTEMS does not provide pthread_atfork(). */
+
+#if !defined(__rtems__)
+#warning "Add pthread_atfork() prototype"
+#endif
+
+/* Mutex Initialization Attributes, P1003.1c/Draft 10, p. 81 */
+
+int _EXFUN(pthread_mutexattr_init, (pthread_mutexattr_t *__attr));
+int _EXFUN(pthread_mutexattr_destroy, (pthread_mutexattr_t *__attr));
+int _EXFUN(pthread_mutexattr_getpshared,
+ (_CONST pthread_mutexattr_t *__attr, int *__pshared));
+int _EXFUN(pthread_mutexattr_setpshared,
+ (pthread_mutexattr_t *__attr, int __pshared));
+
+/* Initializing and Destroying a Mutex, P1003.1c/Draft 10, p. 87 */
+
+int _EXFUN(pthread_mutex_init,
+ (pthread_mutex_t *__mutex, _CONST pthread_mutexattr_t *__attr));
+int _EXFUN(pthread_mutex_destroy, (pthread_mutex_t *__mutex));
+
+/* This is used to statically initialize a pthread_mutex_t. Example:
+
+ pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
+ */
+
+#define PTHREAD_MUTEX_INITIALIZER ((pthread_mutex_t) 0xFFFFFFFF)
+
+/* Locking and Unlocking a Mutex, P1003.1c/Draft 10, p. 93
+ NOTE: P1003.4b/D8 adds pthread_mutex_timedlock(), p. 29 */
+
+int _EXFUN(pthread_mutex_lock, (pthread_mutex_t *__mutex));
+int _EXFUN(pthread_mutex_trylock, (pthread_mutex_t *__mutex));
+int _EXFUN(pthread_mutex_unlock, (pthread_mutex_t *__mutex));
+
+#if defined(_POSIX_TIMEOUTS)
+
+int _EXFUN(pthread_mutex_timedlock,
+ (pthread_mutex_t *__mutex, _CONST struct timespec *__timeout));
+
+#endif /* _POSIX_TIMEOUTS */
+
+/* Condition Variable Initialization Attributes, P1003.1c/Draft 10, p. 96 */
+
+int _EXFUN(pthread_condattr_init, (pthread_condattr_t *__attr));
+int _EXFUN(pthread_condattr_destroy, (pthread_condattr_t *__attr));
+int _EXFUN(pthread_condattr_getpshared,
+ (_CONST pthread_condattr_t *__attr, int *__pshared));
+int _EXFUN(pthread_condattr_setpshared,
+ (pthread_condattr_t *__attr, int __pshared));
+
+/* Initializing and Destroying a Condition Variable, P1003.1c/Draft 10, p. 87 */
+
+int _EXFUN(pthread_cond_init,
+ (pthread_cond_t *__cond, _CONST pthread_condattr_t *__attr));
+int _EXFUN(pthread_cond_destroy, (pthread_cond_t *__mutex));
+
+/* This is used to statically initialize a pthread_cond_t. Example:
+
+ pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
+ */
+
+#define PTHREAD_COND_INITIALIZER ((pthread_mutex_t) 0xFFFFFFFF)
+
+/* Broadcasting and Signaling a Condition, P1003.1c/Draft 10, p. 101 */
+
+int _EXFUN(pthread_cond_signal, (pthread_cond_t *__cond));
+int _EXFUN(pthread_cond_broadcast, (pthread_cond_t *__cond));
+
+/* Waiting on a Condition, P1003.1c/Draft 10, p. 105 */
+
+int _EXFUN(pthread_cond_wait,
+ (pthread_cond_t *__cond, pthread_mutex_t *__mutex));
+
+int _EXFUN(pthread_cond_timedwait,
+ (pthread_cond_t *__cond, pthread_mutex_t *__mutex,
+ _CONST struct timespec *__abstime));
+
+#if defined(_POSIX_THREAD_PRIORITY_SCHEDULING)
+
+/* Thread Creation Scheduling Attributes, P1003.1c/Draft 10, p. 120 */
+
+int _EXFUN(pthread_attr_setscope,
+ (pthread_attr_t *__attr, int __contentionscope));
+int _EXFUN(pthread_attr_getscope,
+ (_CONST pthread_attr_t *__attr, int *__contentionscope));
+int _EXFUN(pthread_attr_setinheritsched,
+ (pthread_attr_t *__attr, int __inheritsched));
+int _EXFUN(pthread_attr_getinheritsched,
+ (_CONST pthread_attr_t *__attr, int *__inheritsched));
+int _EXFUN(pthread_attr_setschedpolicy,
+ (pthread_attr_t *__attr, int __policy));
+int _EXFUN(pthread_attr_getschedpolicy,
+ (_CONST pthread_attr_t *__attr, int *__policy));
+
+#endif /* defined(_POSIX_THREAD_PRIORITY_SCHEDULING) */
+
+int _EXFUN(pthread_attr_setschedparam,
+ (pthread_attr_t *__attr, _CONST struct sched_param *__param));
+int _EXFUN(pthread_attr_getschedparam,
+ (_CONST pthread_attr_t *__attr, struct sched_param *__param));
+
+#if defined(_POSIX_THREAD_PRIORITY_SCHEDULING)
+
+/* Dynamic Thread Scheduling Parameters Access, P1003.1c/Draft 10, p. 124 */
+
+int _EXFUN(pthread_getschedparam,
+ (pthread_t __pthread, int *__policy, struct sched_param *__param));
+int _EXFUN(pthread_setschedparam,
+ (pthread_t __pthread, int __policy, struct sched_param *__param));
+
+#endif /* defined(_POSIX_THREAD_PRIORITY_SCHEDULING) */
+
+#if defined(_POSIX_THREAD_PRIO_INHERIT) || defined(_POSIX_THREAD_PRIO_PROTECT)
+
+/* Mutex Initialization Scheduling Attributes, P1003.1c/Draft 10, p. 128 */
+
+int _EXFUN(pthread_mutexattr_setprotocol,
+ (pthread_mutexattr_t *__attr, int __protocol));
+int _EXFUN(pthread_mutexattr_getprotocol,
+ (_CONST pthread_mutexattr_t *__attr, int *__protocol));
+int _EXFUN(pthread_mutexattr_setprioceiling,
+ (pthread_mutexattr_t *__attr, int __prioceiling));
+int _EXFUN(pthread_mutexattr_getprioceiling,
+ (_CONST pthread_mutexattr_t *__attr, int *__prioceiling));
+
+#endif /* _POSIX_THREAD_PRIO_INHERIT || _POSIX_THREAD_PRIO_PROTECT */
+
+#if defined(_POSIX_THREAD_PRIO_PROTECT)
+
+/* Change the Priority Ceiling of a Mutex, P1003.1c/Draft 10, p. 131 */
+
+int _EXFUN(pthread_mutex_setprioceiling,
+ (pthread_mutex_t *__mutex, int __prioceiling, int *__old_ceiling));
+int _EXFUN(pthread_mutex_getprioceiling,
+ (pthread_mutex_t *__mutex, int *__prioceiling));
+
+#endif /* _POSIX_THREAD_PRIO_PROTECT */
+
+/* Thread Creation Attributes, P1003.1c/Draft 10, p, 140 */
+
+int _EXFUN(pthread_attr_init, (pthread_attr_t *__attr));
+int _EXFUN(pthread_attr_destroy, (pthread_attr_t *__attr));
+int _EXFUN(pthread_attr_getstacksize,
+ (_CONST pthread_attr_t *__attr, size_t *__stacksize));
+int _EXFUN(pthread_attr_setstacksize,
+ (pthread_attr_t *__attr, size_t stacksize));
+int _EXFUN(pthread_attr_getstackaddr,
+ (_CONST pthread_attr_t *__attr, void **__stackaddr));
+int _EXFUN(pthread_attr_setstackaddr,
+ (pthread_attr_t *__attr, void *__stackaddr));
+int _EXFUN(pthread_attr_getdetachstate,
+ (_CONST pthread_attr_t *__attr, int *__detachstate));
+int _EXFUN(pthread_attr_setdetachstate,
+ (pthread_attr_t *__attr, int __detachstate));
+
+/* Thread Creation, P1003.1c/Draft 10, p. 144 */
+
+int _EXFUN(pthread_create,
+ (pthread_t *__pthread, _CONST pthread_attr_t *__attr,
+ void *(*__start_routine)( void * ), void *__arg));
+
+/* Wait for Thread Termination, P1003.1c/Draft 10, p. 147 */
+
+int _EXFUN(pthread_join, (pthread_t __pthread, void **__value_ptr));
+
+/* Detaching a Thread, P1003.1c/Draft 10, p. 149 */
+
+int _EXFUN(pthread_detach, (pthread_t __pthread));
+
+/* Thread Termination, p1003.1c/Draft 10, p. 150 */
+
+void _EXFUN(pthread_exit, (void *__value_ptr));
+
+/* Get Calling Thread's ID, p1003.1c/Draft 10, p. XXX */
+
+pthread_t _EXFUN(pthread_self, (void));
+
+/* Compare Thread IDs, p1003.1c/Draft 10, p. 153 */
+
+int _EXFUN(pthread_equal, (pthread_t __t1, pthread_t __t2));
+
+/* Dynamic Package Initialization */
+
+/* This is used to statically initialize a pthread_once_t. Example:
+
+ pthread_once_t once = PTHREAD_ONCE_INIT;
+
+ NOTE: This is named inconsistently -- it should be INITIALIZER. */
+
+#define PTHREAD_ONCE_INIT { 1, 0 } /* is initialized and not run */
+
+int _EXFUN(pthread_once,
+ (pthread_once_t *__once_control, void (*__init_routine)(void)));
+
+/* Thread-Specific Data Key Create, P1003.1c/Draft 10, p. 163 */
+
+int _EXFUN(pthread_key_create,
+ (pthread_key_t *__key, void (*__destructor)( void * )));
+
+/* Thread-Specific Data Management, P1003.1c/Draft 10, p. 165 */
+
+int _EXFUN(pthread_setspecific,
+ (pthread_key_t __key, _CONST void *__value));
+void * _EXFUN(pthread_getspecific, (pthread_key_t __key));
+
+/* Thread-Specific Data Key Deletion, P1003.1c/Draft 10, p. 167 */
+
+int _EXFUN(pthread_key_delete, (pthread_key_t __key));
+
+/* Execution of a Thread, P1003.1c/Draft 10, p. 181 */
+
+#define PTHREAD_CANCEL_ENABLE 0
+#define PTHREAD_CANCEL_DISABLE 1
+
+#define PTHREAD_CANCEL_DEFERRED 0
+#define PTHREAD_CANCEL_ASYNCHRONOUS 1
+
+#define PTHREAD_CANCELED ((void *) -1)
+
+int _EXFUN(pthread_cancel, (pthread_t __pthread));
+
+/* Setting Cancelability State, P1003.1c/Draft 10, p. 183 */
+
+int _EXFUN(pthread_setcancelstate, (int __state, int *__oldstate));
+int _EXFUN(pthread_setcanceltype, (int __type, int *__oldtype));
+void _EXFUN(pthread_testcancel, (void));
+
+/* Establishing Cancellation Handlers, P1003.1c/Draft 10, p. 184 */
+
+void _EXFUN(pthread_cleanup_push,
+ (void (*__routine)( void * ), void *__arg));
+void _EXFUN(pthread_cleanup_pop, (int __execute));
+
+#if defined(_POSIX_THREAD_CPUTIME)
+
+/* Accessing a Thread CPU-time Clock, P1003.4b/D8, p. 58 */
+
+int _EXFUN(pthread_getcpuclockid,
+ (pthread_t __pthread_id, clockid_t *__clock_id));
+
+/* CPU-time Clock Thread Creation Attribute, P1003.4b/D8, p. 59 */
+
+int _EXFUN(pthread_attr_setcputime,
+ (pthread_attr_t *__attr, int __clock_allowed));
+
+int _EXFUN(pthread_attr_getcputime,
+ (pthread_attr_t *__attr, int *__clock_allowed));
+
+#endif /* defined(_POSIX_THREAD_CPUTIME) */
+
+
+#endif /* defined(_POSIX_THREADS) */
+
+#if defined(_POSIX_BARRIERS)
+
+int _EXFUN(pthread_barrierattr_init, (pthread_barrierattr_t *__attr));
+int _EXFUN(pthread_barrierattr_destroy, (pthread_barrierattr_t *__attr));
+int _EXFUN(pthread_barrierattr_getpshared,
+ (_CONST pthread_barrierattr_t *__attr, int *__pshared));
+int _EXFUN(pthread_barrierattr_setpshared,
+ (pthread_barrierattr_t *__attr, int __pshared));
+
+#define PTHREAD_BARRIER_SERIAL_THREAD -1
+
+int _EXFUN(pthread_barrier_init,
+ (pthread_barrier_t *__barrier,
+ _CONST pthread_barrierattr_t *__attr, unsigned __count));
+int _EXFUN(pthread_barrier_destroy, (pthread_barrier_t *__barrier));
+int _EXFUN(pthread_barrier_wait,(pthread_barrier_t *__barrier));
+
+#endif /* defined(_POSIX_BARRIERS) */
+
+#if defined(_POSIX_SPIN_LOCKS)
+
+int _EXFUN(pthread_spin_init,
+ (pthread_spinlock_t *__spinlock, int __pshared));
+int _EXFUN(pthread_spin_destroy, (pthread_spinlock_t *__spinlock));
+int _EXFUN(pthread_spin_lock, (pthread_spinlock_t *__spinlock));
+int _EXFUN(pthread_spin_trylock, (pthread_spinlock_t *__spinlock));
+int _EXFUN(pthread_spin_unlock, (pthread_spinlock_t *__spinlock));
+
+#endif /* defined(_POSIX_SPIN_LOCKS) */
+
+#if defined(_POSIX_READER_WRITER_LOCKS)
+
+int _EXFUN(pthread_rwlockattr_init, (pthread_rwlockattr_t *__attr));
+int _EXFUN(pthread_rwlockattr_destroy, (pthread_rwlockattr_t *__attr));
+int _EXFUN(pthread_rwlockattr_getpshared,
+ (_CONST pthread_rwlockattr_t *__attr, int *__pshared));
+int _EXFUN(pthread_rwlockattr_setpshared,
+ (pthread_rwlockattr_t *__attr, int __pshared));
+
+int _EXFUN(pthread_rwlock_init,
+ (pthread_rwlock_t *__rwlock, _CONST pthread_rwlockattr_t *__attr));
+int _EXFUN(pthread_rwlock_destroy, (pthread_rwlock_t *__rwlock));
+int _EXFUN(pthread_rwlock_rdlock,(pthread_rwlock_t *__rwlock));
+int _EXFUN(pthread_rwlock_tryrdlock,(pthread_rwlock_t *__rwlock));
+int _EXFUN(pthread_rwlock_timedrdlock,
+ (pthread_rwlock_t *__rwlock, _CONST struct timespec *__abstime));
+int _EXFUN(pthread_rwlock_wrlock,(pthread_rwlock_t *__rwlock));
+int _EXFUN(pthread_rwlock_trywrlock,(pthread_rwlock_t *__rwlock));
+int _EXFUN(pthread_rwlock_timedwrlock,
+ (pthread_rwlock_t *__rwlock, _CONST struct timespec *__abstime));
+
+#endif /* defined(_POSIX_READER_WRITER_LOCKS) */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+/* end of include file */
diff --git a/Unix/i686-elf/include/pwd.h b/Unix/i686-elf/include/pwd.h
new file mode 100644
index 0000000..1526abf
--- /dev/null
+++ b/Unix/i686-elf/include/pwd.h
@@ -0,0 +1,78 @@
+/*-
+ * 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 */
+ uid_t pw_uid; /* user uid */
+ gid_t pw_gid; /* user gid */
+ char *pw_comment; /* comment */
+ char *pw_gecos; /* Honeywell login info */
+ char *pw_dir; /* home directory */
+ char *pw_shell; /* default shell */
+};
+
+#ifndef __INSIDE_CYGWIN__
+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
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _PWD_H_ */
diff --git a/Unix/i686-elf/include/reent.h b/Unix/i686-elf/include/reent.h
new file mode 100644
index 0000000..00c2eb4
--- /dev/null
+++ b/Unix/i686-elf/include/reent.h
@@ -0,0 +1,101 @@
+/* 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" and add
+ -DREENTRANT_SYSCALLS_PROVIDED to newlib_cflags in configure.host.
+
+ 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.host.
+
+ 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 newlib_cflags in
+ configure.host.
+
+ 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
+#define __need_ptrdiff_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 *, ptrdiff_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 __LARGE64_FILES
+
+#if defined(__CYGWIN__) && defined(_COMPILING_NEWLIB)
+#define stat64 __stat64
+#endif
+
+struct stat64;
+
+extern _off64_t _lseek64_r _PARAMS ((struct _reent *, int, _off64_t, int));
+extern int _fstat64_r _PARAMS ((struct _reent *, int, struct stat64 *));
+extern int _open64_r _PARAMS ((struct _reent *, const char *, int, int));
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _REENT_H_ */
diff --git a/Unix/i686-elf/include/regdef.h b/Unix/i686-elf/include/regdef.h
new file mode 100644
index 0000000..8cf144b
--- /dev/null
+++ b/Unix/i686-elf/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/Unix/i686-elf/include/search.h b/Unix/i686-elf/include/search.h
new file mode 100644
index 0000000..c78ce18
--- /dev/null
+++ b/Unix/i686-elf/include/search.h
@@ -0,0 +1,59 @@
+/* $NetBSD: search.h,v 1.12 1999/02/22 10:34:28 christos Exp $ */
+/* $FreeBSD: src/include/search.h,v 1.4 2002/03/23 17:24:53 imp Exp $ */
+
+/*
+ * Written by J.T. Conklin <jtc@netbsd.org>
+ * Public domain.
+ */
+
+#ifndef _SEARCH_H_
+#define _SEARCH_H_
+
+#include <sys/cdefs.h>
+#include <machine/ansi.h>
+#include <sys/types.h>
+
+typedef struct entry {
+ char *key;
+ void *data;
+} ENTRY;
+
+typedef enum {
+ FIND, ENTER
+} ACTION;
+
+typedef enum {
+ preorder,
+ postorder,
+ endorder,
+ leaf
+} VISIT;
+
+#ifdef _SEARCH_PRIVATE
+typedef struct node {
+ char *key;
+ struct node *llink, *rlink;
+} node_t;
+#endif
+
+struct hsearch_data
+{
+ struct internal_head *htable;
+ size_t htablesize;
+};
+
+__BEGIN_DECLS
+int hcreate(size_t);
+void hdestroy(void);
+ENTRY *hsearch(ENTRY, ACTION);
+int hcreate_r(size_t, struct hsearch_data *);
+void hdestroy_r(struct hsearch_data *);
+int hsearch_r(ENTRY, ACTION, ENTRY **, struct hsearch_data *);
+void *tdelete(const void *, void **, int (*)(const void *, const void *));
+void tdestroy (void *, void (*)(void *));
+void *tfind(const void *, void **, int (*)(const void *, const void *));
+void *tsearch(const void *, void **, int (*)(const void *, const void *));
+void twalk(const void *, void (*)(const void *, VISIT, int));
+__END_DECLS
+
+#endif /* !_SEARCH_H_ */
diff --git a/Unix/i686-elf/include/setjmp.h b/Unix/i686-elf/include/setjmp.h
new file mode 100644
index 0000000..c958d90
--- /dev/null
+++ b/Unix/i686-elf/include/setjmp.h
@@ -0,0 +1,20 @@
+/*
+ setjmp.h
+ stubs for future use.
+*/
+
+#ifndef _SETJMP_H_
+#define _SETJMP_H_
+
+#include "_ansi.h"
+#include <machine/setjmp.h>
+
+_BEGIN_STD_C
+
+void _EXFUN(longjmp,(jmp_buf __jmpb, int __retval));
+int _EXFUN(setjmp,(jmp_buf __jmpb));
+
+_END_STD_C
+
+#endif /* _SETJMP_H_ */
+
diff --git a/Unix/i686-elf/include/signal.h b/Unix/i686-elf/include/signal.h
new file mode 100644
index 0000000..1b3b57b
--- /dev/null
+++ b/Unix/i686-elf/include/signal.h
@@ -0,0 +1,27 @@
+#ifndef _SIGNAL_H_
+#define _SIGNAL_H_
+
+#include "_ansi.h"
+#include <sys/signal.h>
+
+_BEGIN_STD_C
+
+typedef int sig_atomic_t; /* Atomic entity type (ANSI) */
+
+#define SIG_DFL ((_sig_func_ptr)0) /* Default action */
+#define SIG_IGN ((_sig_func_ptr)1) /* Ignore action */
+#define SIG_ERR ((_sig_func_ptr)-1) /* Error return */
+
+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
+
+_END_STD_C
+
+#endif /* _SIGNAL_H_ */
diff --git a/Unix/i686-elf/include/stdint.h b/Unix/i686-elf/include/stdint.h
new file mode 100644
index 0000000..1fa3651
--- /dev/null
+++ b/Unix/i686-elf/include/stdint.h
@@ -0,0 +1,401 @@
+/*
+ * Copyright (c) 2004, 2005 by
+ * Ralf Corsepius, Ulm/Germany. All rights reserved.
+ *
+ * Permission to use, copy, modify, and distribute this software
+ * is freely granted, provided that this notice is preserved.
+ */
+
+/*
+ * @todo - Add support for wint_t types.
+ */
+
+#ifndef _STDINT_H
+#define _STDINT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if defined(__GNUC__) && \
+ ( (__GNUC__ >= 4) || \
+ ( (__GNUC__ >= 3) && defined(__GNUC_MINOR__) && (__GNUC_MINOR__ > 2) ) )
+/* gcc > 3.2 implicitly defines the values we are interested */
+#define __STDINT_EXP(x) __##x##__
+#else
+#define __STDINT_EXP(x) x
+#include <limits.h>
+#endif
+
+/* Check if "long long" is 64bit wide */
+/* Modern GCCs provide __LONG_LONG_MAX__, SUSv3 wants LLONG_MAX */
+#if ( defined(__LONG_LONG_MAX__) && (__LONG_LONG_MAX__ > 0x7fffffff) ) \
+ || ( defined(LLONG_MAX) && (LLONG_MAX > 0x7fffffff) )
+#define __have_longlong64 1
+#endif
+
+/* Check if "long" is 64bit or 32bit wide */
+#if __STDINT_EXP(LONG_MAX) > 0x7fffffff
+#define __have_long64 1
+#elif __STDINT_EXP(LONG_MAX) == 0x7fffffff && !defined(__SPU__)
+#define __have_long32 1
+#endif
+
+#if __STDINT_EXP(SCHAR_MAX) == 0x7f
+typedef signed char int8_t ;
+typedef unsigned char uint8_t ;
+#define __int8_t_defined 1
+#endif
+
+#if __int8_t_defined
+typedef signed char int_least8_t;
+typedef unsigned char uint_least8_t;
+#define __int_least8_t_defined 1
+#endif
+
+#if __STDINT_EXP(SHRT_MAX) == 0x7fff
+typedef signed short int16_t;
+typedef unsigned short uint16_t;
+#define __int16_t_defined 1
+#elif __STDINT_EXP(INT_MAX) == 0x7fff
+typedef signed int int16_t;
+typedef unsigned int uint16_t;
+#define __int16_t_defined 1
+#elif __STDINT_EXP(SCHAR_MAX) == 0x7fff
+typedef signed char int16_t;
+typedef unsigned char uint16_t;
+#define __int16_t_defined 1
+#endif
+
+#if __int16_t_defined
+typedef int16_t int_least16_t;
+typedef uint16_t uint_least16_t;
+#define __int_least16_t_defined 1
+
+#if !__int_least8_t_defined
+typedef int16_t int_least8_t;
+typedef uint16_t uint_least8_t;
+#define __int_least8_t_defined 1
+#endif
+#endif
+
+#if __have_long32
+typedef signed long int32_t;
+typedef unsigned long uint32_t;
+#define __int32_t_defined 1
+#elif __STDINT_EXP(INT_MAX) == 0x7fffffffL
+typedef signed int int32_t;
+typedef unsigned int uint32_t;
+#define __int32_t_defined 1
+#elif __STDINT_EXP(SHRT_MAX) == 0x7fffffffL
+typedef signed short int32_t;
+typedef unsigned short uint32_t;
+#define __int32_t_defined 1
+#elif __STDINT_EXP(SCHAR_MAX) == 0x7fffffffL
+typedef signed char int32_t;
+typedef unsigned char uint32_t;
+#define __int32_t_defined 1
+#endif
+
+#if __int32_t_defined
+typedef int32_t int_least32_t;
+typedef uint32_t uint_least32_t;
+#define __int_least32_t_defined 1
+
+#if !__int_least8_t_defined
+typedef int32_t int_least8_t;
+typedef uint32_t uint_least8_t;
+#define __int_least8_t_defined 1
+#endif
+
+#if !__int_least16_t_defined
+typedef int32_t int_least16_t;
+typedef uint32_t uint_least16_t;
+#define __int_least16_t_defined 1
+#endif
+#endif
+
+#if __have_long64
+typedef signed long int64_t;
+typedef unsigned long uint64_t;
+#define __int64_t_defined 1
+#elif __have_longlong64
+typedef signed long long int64_t;
+typedef unsigned long long uint64_t;
+#define __int64_t_defined 1
+#elif __STDINT_EXP(INT_MAX) > 0x7fffffff
+typedef signed int int64_t;
+typedef unsigned int uint64_t;
+#define __int64_t_defined 1
+#endif
+
+#if __int64_t_defined
+typedef int64_t int_least64_t;
+typedef uint64_t uint_least64_t;
+#define __int_least64_t_defined 1
+
+#if !__int_least8_t_defined
+typedef int64_t int_least8_t;
+typedef uint64_t uint_least8_t;
+#define __int_least8_t_defined 1
+#endif
+
+#if !__int_least16_t_defined
+typedef int64_t int_least16_t;
+typedef uint64_t uint_least16_t;
+#define __int_least16_t_defined 1
+#endif
+
+#if !__int_least32_t_defined
+typedef int64_t int_least32_t;
+typedef uint64_t uint_least32_t;
+#define __int_least32_t_defined 1
+#endif
+#endif
+
+/*
+ * Fastest minimum-width integer types
+ *
+ * Assume int to be the fastest type for all types with a width
+ * less than __INT_MAX__ rsp. INT_MAX
+ */
+#if __STDINT_EXP(INT_MAX) >= 0x7f
+ typedef signed int int_fast8_t;
+ typedef unsigned int uint_fast8_t;
+#define __int_fast8_t_defined 1
+#endif
+
+#if __STDINT_EXP(INT_MAX) >= 0x7fff
+ typedef signed int int_fast16_t;
+ typedef unsigned int uint_fast16_t;
+#define __int_fast16_t_defined 1
+#endif
+
+#if __STDINT_EXP(INT_MAX) >= 0x7fffffff
+ typedef signed int int_fast32_t;
+ typedef unsigned int uint_fast32_t;
+#define __int_fast32_t_defined 1
+#endif
+
+#if __STDINT_EXP(INT_MAX) > 0x7fffffff
+ typedef signed int int_fast64_t;
+ typedef unsigned int uint_fast64_t;
+#define __int_fast64_t_defined 1
+#endif
+
+/*
+ * Fall back to [u]int_least<N>_t for [u]int_fast<N>_t types
+ * not having been defined, yet.
+ * Leave undefined, if [u]int_least<N>_t should not be available.
+ */
+#if !__int_fast8_t_defined
+#if __int_least8_t_defined
+ typedef int_least8_t int_fast8_t;
+ typedef uint_least8_t uint_fast8_t;
+#define __int_fast8_t_defined 1
+#endif
+#endif
+
+#if !__int_fast16_t_defined
+#if __int_least16_t_defined
+ typedef int_least16_t int_fast16_t;
+ typedef uint_least16_t uint_fast16_t;
+#define __int_fast16_t_defined 1
+#endif
+#endif
+
+#if !__int_fast32_t_defined
+#if __int_least32_t_defined
+ typedef int_least32_t int_fast32_t;
+ typedef uint_least32_t uint_fast32_t;
+#define __int_fast32_t_defined 1
+#endif
+#endif
+
+#if !__int_fast64_t_defined
+#if __int_least64_t_defined
+ typedef int_least64_t int_fast64_t;
+ typedef uint_least64_t uint_fast64_t;
+#define __int_fast64_t_defined 1
+#endif
+#endif
+
+/* Greatest-width integer types */
+/* Modern GCCs provide __INTMAX_TYPE__ */
+#if defined(__INTMAX_TYPE__)
+ typedef __INTMAX_TYPE__ intmax_t;
+#elif __have_longlong64
+ typedef signed long long intmax_t;
+#else
+ typedef signed long intmax_t;
+#endif
+
+/* Modern GCCs provide __UINTMAX_TYPE__ */
+#if defined(__UINTMAX_TYPE__)
+ typedef __UINTMAX_TYPE__ uintmax_t;
+#elif __have_longlong64
+ typedef unsigned long long uintmax_t;
+#else
+ typedef unsigned long uintmax_t;
+#endif
+
+/*
+ * GCC doesn't provide an appropriate macro for [u]intptr_t
+ * For now, use __PTRDIFF_TYPE__
+ */
+#if defined(__PTRDIFF_TYPE__)
+typedef signed __PTRDIFF_TYPE__ intptr_t;
+typedef unsigned __PTRDIFF_TYPE__ uintptr_t;
+#else
+/*
+ * Fallback to hardcoded values,
+ * should be valid on cpu's with 32bit int/32bit void*
+ */
+typedef signed long intptr_t;
+typedef unsigned long uintptr_t;
+#endif
+
+/* Limits of Specified-Width Integer Types */
+
+#if __int8_t_defined
+#define INT8_MIN -128
+#define INT8_MAX 127
+#define UINT8_MAX 255
+#endif
+
+#if __int_least8_t_defined
+#define INT_LEAST8_MIN -128
+#define INT_LEAST8_MAX 127
+#define UINT_LEAST8_MAX 255
+#else
+#error required type int_least8_t missing
+#endif
+
+#if __int16_t_defined
+#define INT16_MIN -32768
+#define INT16_MAX 32767
+#define UINT16_MAX 65535
+#endif
+
+#if __int_least16_t_defined
+#define INT_LEAST16_MIN -32768
+#define INT_LEAST16_MAX 32767
+#define UINT_LEAST16_MAX 65535
+#else
+#error required type int_least16_t missing
+#endif
+
+#if __int32_t_defined
+#define INT32_MIN (-2147483647-1)
+#define INT32_MAX 2147483647
+#define UINT32_MAX 4294967295U
+#endif
+
+#if __int_least32_t_defined
+#define INT_LEAST32_MIN (-2147483647-1)
+#define INT_LEAST32_MAX 2147483647
+#define UINT_LEAST32_MAX 4294967295U
+#else
+#error required type int_least32_t missing
+#endif
+
+#if __int64_t_defined
+#if __have_long64
+#define INT64_MIN (-9223372036854775807L-1L)
+#define INT64_MAX 9223372036854775807L
+#define UINT64_MAX 18446744073709551615U
+#elif __have_longlong64
+#define INT64_MIN (-9223372036854775807LL-1LL)
+#define INT64_MAX 9223372036854775807LL
+#define UINT64_MAX 18446744073709551615ULL
+#endif
+#endif
+
+#if __int_least64_t_defined
+#if __have_long64
+#define INT_LEAST64_MIN (-9223372036854775807L-1L)
+#define INT_LEAST64_MAX 9223372036854775807L
+#define UINT_LEAST64_MAX 18446744073709551615U
+#elif __have_longlong64
+#define INT_LEAST64_MIN (-9223372036854775807LL-1LL)
+#define INT_LEAST64_MAX 9223372036854775807LL
+#define UINT_LEAST64_MAX 18446744073709551615ULL
+#endif
+#endif
+
+#if __int_fast8_t_defined
+#define INT_FAST8_MIN INT8_MIN
+#define INT_FAST8_MAX INT8_MAX
+#define UINT_FAST8_MAX UINT8_MAX
+#endif
+
+#if __int_fast16_t_defined
+#define INT_FAST16_MIN INT16_MIN
+#define INT_FAST16_MAX INT16_MAX
+#define UINT_FAST16_MAX UINT16_MAX
+#endif
+
+#if __int_fast32_t_defined
+#define INT_FAST32_MIN INT32_MIN
+#define INT_FAST32_MAX INT32_MAX
+#define UINT_FAST32_MAX UINT32_MAX
+#endif
+
+#if __int_fast64_t_defined
+#define INT_FAST64_MIN INT64_MIN
+#define INT_FAST64_MAX INT64_MAX
+#define UINT_FAST64_MAX UINT64_MAX
+#endif
+
+/* This must match size_t in stddef.h, currently long unsigned int */
+#define SIZE_MIN (-__STDINT_EXP(LONG_MAX) - 1L)
+#define SIZE_MAX __STDINT_EXP(LONG_MAX)
+
+/* This must match sig_atomic_t in <signal.h> (currently int) */
+#define SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1)
+#define SIG_ATOMIC_MAX __STDINT_EXP(INT_MAX)
+
+/* This must match ptrdiff_t in <stddef.h> (currently long int) */
+#define PTRDIFF_MIN (-__STDINT_EXP(LONG_MAX) - 1L)
+#define PTRDIFF_MAX __STDINT_EXP(LONG_MAX)
+
+/** Macros for minimum-width integer constant expressions */
+#define INT8_C(x) x
+#define UINT8_C(x) x##U
+
+#define INT16_C(x) x
+#define UINT16_C(x) x##U
+
+#if __have_long32
+#define INT32_C(x) x##L
+#define UINT32_C(x) x##UL
+#else
+#define INT32_C(x) x
+#define UINT32_C(x) x##U
+#endif
+
+#if __int64_t_defined
+#if __have_longlong64
+#define INT64_C(x) x##LL
+#define UINT64_C(x) x##ULL
+#else
+#define INT64_C(x) x##L
+#define UINT64_C(x) x##UL
+#endif
+#endif
+
+/** Macros for greatest-width integer constant expression */
+#if __have_longlong64
+#define INTMAX_C(x) x##LL
+#define UINTMAX_C(x) x##ULL
+#else
+#define INTMAX_C(x) x##L
+#define UINTMAX_C(x) x##UL
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _STDINT_H */
diff --git a/Unix/i686-elf/include/stdio.h b/Unix/i686-elf/include/stdio.h
new file mode 100644
index 0000000..f99480d
--- /dev/null
+++ b/Unix/i686-elf/include/stdio.h
@@ -0,0 +1,491 @@
+/*
+ * 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_
+#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 __FILE, _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>
+#include <sys/types.h>
+
+_BEGIN_STD_C
+
+typedef __FILE FILE;
+
+#ifdef __CYGWIN__
+#ifdef __CYGWIN_USE_BIG_TYPES__
+typedef _fpos64_t fpos_t;
+#else
+typedef _fpos_t fpos_t;
+#endif
+#else
+typedef _fpos_t fpos_t;
+#ifdef __LARGE64_FILES
+typedef _fpos64_t fpos64_t;
+#endif
+#endif /* !__CYGWIN__ */
+
+#include <sys/stdio.h>
+
+#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 */
+#if defined(__CYGWIN__)
+# define __SCLE 0x4000 /* convert line endings CR/LF <-> NL */
+#endif
+#define __SL64 0x8000 /* is 64-bit offset large file */
+
+/*
+ * 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 EOF (-1)
+
+#ifdef __BUFSIZ__
+#define BUFSIZ __BUFSIZ__
+#else
+#define BUFSIZ 1024
+#endif
+
+#ifdef __FOPEN_MAX__
+#define FOPEN_MAX __FOPEN_MAX__
+#else
+#define FOPEN_MAX 20
+#endif
+
+#ifdef __FILENAME_MAX__
+#define FILENAME_MAX __FILENAME_MAX__
+#else
+#define FILENAME_MAX 1024
+#endif
+
+#ifdef __L_tmpnam__
+#define L_tmpnam __L_tmpnam__
+#else
+#define L_tmpnam FILENAME_MAX
+#endif
+
+#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
+
+#ifndef _REENT_ONLY
+#define stdin (_REENT->_stdin)
+#define stdout (_REENT->_stdout)
+#define stderr (_REENT->_stderr)
+#else /* _REENT_ONLY */
+#define stdin (_impure_ptr->_stdin)
+#define stdout (_impure_ptr->_stdout)
+#define stderr (_impure_ptr->_stderr)
+#endif /* _REENT_ONLY */
+
+#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
+
+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(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 *));
+#ifdef _COMPILING_NEWLIB
+int _EXFUN(fgetpos, (FILE *, _fpos_t *));
+#else
+int _EXFUN(fgetpos, (FILE *, fpos_t *));
+#endif
+int _EXFUN(fseek, (FILE *, long, int));
+#ifdef _COMPILING_NEWLIB
+int _EXFUN(fsetpos, (FILE *, const _fpos_t *));
+#else
+int _EXFUN(fsetpos, (FILE *, const fpos_t *));
+#endif
+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(remove, (const char *));
+int _EXFUN(rename, (const char *, const char *));
+#endif
+#ifndef __STRICT_ANSI__
+#ifdef _COMPILING_NEWLIB
+int _EXFUN(fseeko, (FILE *, _off_t, int));
+_off_t _EXFUN(ftello, ( FILE *));
+#else
+int _EXFUN(fseeko, (FILE *, off_t, int));
+off_t _EXFUN(ftello, ( FILE *));
+#endif
+#ifndef _REENT_ONLY
+int _EXFUN(asiprintf, (char **, const char *, ...));
+int _EXFUN(asprintf, (char **, const char *, ...));
+#ifndef dprintf
+int _EXFUN(dprintf, (int, const char *, ...));
+#endif
+int _EXFUN(fcloseall, (_VOID));
+int _EXFUN(fiprintf, (FILE *, const char *, ...));
+int _EXFUN(fiscanf, (FILE *, const char *, ...));
+int _EXFUN(iprintf, (const char *, ...));
+int _EXFUN(iscanf, (const char *, ...));
+int _EXFUN(siprintf, (char *, const char *, ...));
+int _EXFUN(siscanf, (const char *, const char *, ...));
+int _EXFUN(snprintf, (char *, size_t, const char *, ...));
+int _EXFUN(sniprintf, (char *, size_t, const char *, ...));
+char * _EXFUN(tempnam, (const char *, const char *));
+int _EXFUN(vasiprintf, (char **, const char *, __VALIST));
+int _EXFUN(vasprintf, (char **, const char *, __VALIST));
+int _EXFUN(vdprintf, (int, const char *, __VALIST));
+int _EXFUN(vsniprintf, (char *, size_t, const char *, __VALIST));
+int _EXFUN(vsnprintf, (char *, size_t, const char *, __VALIST));
+int _EXFUN(vfiprintf, (FILE *, const char *, __VALIST));
+int _EXFUN(vfiscanf, (FILE *, const char *, __VALIST));
+int _EXFUN(vfscanf, (FILE *, const char *, __VALIST));
+int _EXFUN(viprintf, (const char *, __VALIST));
+int _EXFUN(viscanf, (const char *, __VALIST));
+int _EXFUN(vscanf, (const char *, __VALIST));
+int _EXFUN(vsiscanf, (const char *, const char *, __VALIST));
+int _EXFUN(vsscanf, (const char *, const char *, __VALIST));
+#endif
+#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 *));
+int _EXFUN(getc_unlocked, (FILE *));
+int _EXFUN(getchar_unlocked, (void));
+void _EXFUN(flockfile, (FILE *));
+int _EXFUN(ftrylockfile, (FILE *));
+void _EXFUN(funlockfile, (FILE *));
+int _EXFUN(putc_unlocked, (int, FILE *));
+int _EXFUN(putchar_unlocked, (int));
+#endif
+
+/*
+ * Recursive versions of the above.
+ */
+
+int _EXFUN(_asiprintf_r, (struct _reent *, char **, const char *, ...));
+int _EXFUN(_asprintf_r, (struct _reent *, char **, const char *, ...));
+int _EXFUN(_dprintf_r, (struct _reent *, int, const char *, ...));
+int _EXFUN(_fcloseall_r, (struct _reent *));
+FILE * _EXFUN(_fdopen_r, (struct _reent *, int, const char *));
+FILE * _EXFUN(_fopen_r, (struct _reent *, const char *, const char *));
+int _EXFUN(_fclose_r, (struct _reent *, FILE *));
+char * _EXFUN(_fgets_r, (struct _reent *, char *, int, FILE *));
+int _EXFUN(_fiscanf_r, (struct _reent *, FILE *, const char *, ...));
+int _EXFUN(_fputc_r, (struct _reent *, int, FILE *));
+int _EXFUN(_fputs_r, (struct _reent *, const char *, FILE *));
+size_t _EXFUN(_fread_r, (struct _reent *, _PTR, size_t _size, size_t _n, FILE *));
+int _EXFUN(_fscanf_r, (struct _reent *, FILE *, const char *, ...));
+int _EXFUN(_fseek_r, (struct _reent *, FILE *, long, int));
+long _EXFUN(_ftell_r, (struct _reent *, FILE *));
+size_t _EXFUN(_fwrite_r, (struct _reent *, const _PTR , size_t _size, size_t _n, FILE *));
+int _EXFUN(_getc_r, (struct _reent *, FILE *));
+int _EXFUN(_getc_unlocked_r, (struct _reent *, FILE *));
+int _EXFUN(_getchar_r, (struct _reent *));
+int _EXFUN(_getchar_unlocked_r, (struct _reent *));
+char * _EXFUN(_gets_r, (struct _reent *, char *));
+int _EXFUN(_iprintf_r, (struct _reent *, const char *, ...));
+int _EXFUN(_iscanf_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(_putc_r, (struct _reent *, int, FILE *));
+int _EXFUN(_putc_unlocked_r, (struct _reent *, int, FILE *));
+int _EXFUN(_putchar_unlocked_r, (struct _reent *, int));
+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(_siprintf_r, (struct _reent *, char *, const char *, ...));
+int _EXFUN(_siscanf_r, (struct _reent *, const char *, const char *, ...));
+int _EXFUN(_sniprintf_r, (struct _reent *, char *, size_t, const char *, ...));
+int _EXFUN(_snprintf_r, (struct _reent *, char *, size_t, const char *, ...));
+int _EXFUN(_sprintf_r, (struct _reent *, char *, const char *, ...));
+int _EXFUN(_sscanf_r, (struct _reent *, const char *, 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(_ungetc_r, (struct _reent *, int, FILE *));
+int _EXFUN(_vasiprintf_r, (struct _reent *, char **, const char *, __VALIST));
+int _EXFUN(_vasprintf_r, (struct _reent *, char **, const char *, __VALIST));
+int _EXFUN(_vdprintf_r, (struct _reent *, int, const char *, __VALIST));
+int _EXFUN(_vfiprintf_r, (struct _reent *, FILE *, const char *, __VALIST));
+int _EXFUN(_vfprintf_r, (struct _reent *, FILE *, const char *, __VALIST));
+int _EXFUN(_viprintf_r, (struct _reent *, const char *, __VALIST));
+int _EXFUN(_vprintf_r, (struct _reent *, const char *, __VALIST));
+int _EXFUN(_vsiprintf_r, (struct _reent *, char *, const char *, __VALIST));
+int _EXFUN(_vsprintf_r, (struct _reent *, char *, const char *, __VALIST));
+int _EXFUN(_vsniprintf_r, (struct _reent *, char *, size_t, const char *, __VALIST));
+int _EXFUN(_vsnprintf_r, (struct _reent *, char *, size_t, const char *, __VALIST));
+int _EXFUN(_vfiscanf_r, (struct _reent *, FILE *, const char *, __VALIST));
+int _EXFUN(_vfscanf_r, (struct _reent *, FILE *, const char *, __VALIST));
+int _EXFUN(_viscanf_r, (struct _reent *, const char *, __VALIST));
+int _EXFUN(_vscanf_r, (struct _reent *, const char *, __VALIST));
+int _EXFUN(_vsscanf_r, (struct _reent *, const char *, const char *, __VALIST));
+int _EXFUN(_vsiscanf_r, (struct _reent *, const char *, const char *, __VALIST));
+
+ssize_t _EXFUN(__getdelim, (char **, size_t *, int, FILE *));
+ssize_t _EXFUN(__getline, (char **, size_t *, FILE *));
+
+#ifdef __LARGE64_FILES
+#if !defined(__CYGWIN__) || defined(_COMPILING_NEWLIB)
+FILE * _EXFUN(fdopen64, (int, const char *));
+FILE * _EXFUN(fopen64, (const char *, const char *));
+_off64_t _EXFUN(ftello64, (FILE *));
+_off64_t _EXFUN(fseeko64, (FILE *, _off64_t, int));
+int _EXFUN(fgetpos64, (FILE *, _fpos64_t *));
+int _EXFUN(fsetpos64, (FILE *, const _fpos64_t *));
+FILE * _EXFUN(tmpfile64, (void));
+
+FILE * _EXFUN(_fdopen64_r, (struct _reent *, int, const char *));
+FILE * _EXFUN(_fopen64_r, (struct _reent *,const char *, const char *));
+_off64_t _EXFUN(_ftello64_r, (struct _reent *, FILE *));
+_off64_t _EXFUN(_fseeko64_r, (struct _reent *, FILE *, _off64_t, int));
+int _EXFUN(_fgetpos64_r, (struct _reent *, FILE *, _fpos64_t *));
+int _EXFUN(_fsetpos64_r, (struct _reent *, FILE *, const _fpos64_t *));
+FILE * _EXFUN(_tmpfile64_r, (struct _reent *));
+#endif /* !__CYGWIN__ */
+#endif /* __LARGE64_FILES */
+
+/*
+ * Routines internal to the implementation.
+ */
+
+int _EXFUN(__srget_r, (struct _reent *, FILE *));
+int _EXFUN(__swbuf_r, (struct _reent *, 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_raw_r(__ptr, __f) (--(__f)->_r < 0 ? __srget_r(__ptr, __f) : (int)(*(__f)->_p++))
+
+#ifdef __SCLE
+static __inline__ int __sgetc_r(struct _reent *__ptr, FILE *__p)
+ {
+ int __c = __sgetc_raw_r(__ptr, __p);
+ if ((__p->_flags & __SCLE) && (__c == '\r'))
+ {
+ int __c2 = __sgetc_raw_r(__ptr, __p);
+ if (__c2 == '\n')
+ __c = __c2;
+ else
+ ungetc(__c2, __p);
+ }
+ return __c;
+ }
+#else
+#define __sgetc_r(__ptr, __p) __sgetc_raw_r(__ptr, __p)
+#endif
+
+#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_r(struct _reent *_ptr, int _c, FILE *_p) {
+ if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n'))
+ return (*_p->_p++ = _c);
+ else
+ return (__swbuf_r(_ptr, _c, _p));
+}
+#else
+/*
+ * This has been tuned to generate reasonable code on the vax using pcc
+ */
+#define __sputc_raw_r(__ptr, __c, __p) \
+ (--(__p)->_w < 0 ? \
+ (__p)->_w >= (__p)->_lbfsize ? \
+ (*(__p)->_p = (__c)), *(__p)->_p != '\n' ? \
+ (int)*(__p)->_p++ : \
+ __swbuf_r(__ptr, '\n', __p) : \
+ __swbuf_r(__ptr, (int)(__c), __p) : \
+ (*(__p)->_p = (__c), (int)*(__p)->_p++))
+#ifdef __SCLE
+#define __sputc_r(__ptr, __c, __p) \
+ ((((__p)->_flags & __SCLE) && ((__c) == '\n')) \
+ ? __sputc_raw_r(__ptr, '\r', (__p)) : 0 , \
+ __sputc_raw_r((__ptr), (__c), (__p)))
+#else
+#define __sputc_r(__ptr, __c, __p) __sputc_raw_r(__ptr, __c, __p)
+#endif
+#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)
+
+#ifndef _REENT_SMALL
+#define feof(p) __sfeof(p)
+#define ferror(p) __sferror(p)
+#define clearerr(p) __sclearerr(p)
+#endif
+
+#if 0 /*ndef __STRICT_ANSI__ - FIXME: must initialize stdio first, use fn */
+#define fileno(p) __sfileno(p)
+#endif
+
+#ifndef __CYGWIN__
+#ifndef lint
+#define getc(fp) __sgetc_r(_REENT, fp)
+#define putc(x, fp) __sputc_r(_REENT, x, fp)
+#endif /* lint */
+#endif /* __CYGWIN__ */
+
+#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_r(_REENT, (int)(x), p) == EOF : (*(p)->_p = (x), (p)->_p++, 0))
+
+#define L_cuserid 9 /* posix says it goes in stdio.h :( */
+#ifdef __CYGWIN__
+#define L_ctermid 16
+#endif
+#endif
+
+_END_STD_C
+
+#endif /* _STDIO_H_ */
diff --git a/Unix/i686-elf/include/stdlib.h b/Unix/i686-elf/include/stdlib.h
new file mode 100644
index 0000000..9bee3b1
--- /dev/null
+++ b/Unix/i686-elf/include/stdlib.h
@@ -0,0 +1,197 @@
+/*
+ * stdlib.h
+ *
+ * Definitions for common types, variables, and functions.
+ */
+
+#ifndef _STDLIB_H_
+#define _STDLIB_H_
+
+#include "_ansi.h"
+
+#define __need_size_t
+#define __need_wchar_t
+#include <stddef.h>
+
+#include <sys/reent.h>
+#include <machine/stdlib.h>
+#ifndef __STRICT_ANSI__
+#include <alloca.h>
+#endif
+
+#ifdef __CYGWIN__
+#include <cygwin/stdlib.h>
+#endif
+
+_BEGIN_STD_C
+
+typedef struct
+{
+ int quot; /* quotient */
+ int rem; /* remainder */
+} div_t;
+
+typedef struct
+{
+ long quot; /* quotient */
+ long rem; /* remainder */
+} ldiv_t;
+
+#ifndef __STRICT_ANSI__
+typedef struct
+{
+ long long int quot; /* quotient */
+ long long int rem; /* remainder */
+} lldiv_t;
+#endif
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+#define EXIT_FAILURE 1
+#define EXIT_SUCCESS 0
+
+#define RAND_MAX __RAND_MAX
+
+extern __IMPORT int __mb_cur_max;
+
+#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));
+int _EXFUN(_atoi_r,(struct _reent *, const char *__nptr));
+long _EXFUN(atol,(const char *__nptr));
+long _EXFUN(_atol_r,(struct _reent *, const char *__nptr));
+_PTR _EXFUN(bsearch,(const _PTR __key,
+ const _PTR __base,
+ size_t __nmemb,
+ size_t __size,
+ int _EXPARM(_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, _mbstate_t *));
+int _EXFUN(mbtowc,(wchar_t *, const char *, size_t));
+int _EXFUN(_mbtowc_r,(struct _reent *, wchar_t *, const char *, size_t, _mbstate_t *));
+int _EXFUN(wctomb,(char *, wchar_t));
+int _EXFUN(_wctomb_r,(struct _reent *, char *, wchar_t, _mbstate_t *));
+size_t _EXFUN(mbstowcs,(wchar_t *, const char *, size_t));
+size_t _EXFUN(_mbstowcs_r,(struct _reent *, wchar_t *, const char *, size_t, _mbstate_t *));
+size_t _EXFUN(wcstombs,(char *, const wchar_t *, size_t));
+size_t _EXFUN(_wcstombs_r,(struct _reent *, char *, const wchar_t *, size_t, _mbstate_t *));
+#ifndef __STRICT_ANSI__
+#ifndef _REENT_ONLY
+int _EXFUN(mkstemp,(char *));
+char * _EXFUN(mktemp,(char *));
+#endif
+#endif
+_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));
+double _EXFUN(_strtod_r,(struct _reent *,const char *__n, char **__end_PTR));
+float _EXFUN(strtof,(const char *__n, char **__end_PTR));
+#ifndef __STRICT_ANSI__
+/* the following strtodf interface is deprecated...use strtof instead */
+# ifndef strtodf
+# define strtodf strtof
+# endif
+#endif
+long _EXFUN(strtol,(const char *__n, char **__end_PTR, int __base));
+long _EXFUN(_strtol_r,(struct _reent *,const char *__n, char **__end_PTR, int __base));
+unsigned long _EXFUN(strtoul,(const char *__n, char **__end_PTR, int __base));
+unsigned long _EXFUN(_strtoul_r,(struct _reent *,const char *__n, char **__end_PTR, int __base));
+
+int _EXFUN(system,(const char *__string));
+
+#ifndef __STRICT_ANSI__
+long _EXFUN(a64l,(const char *__input));
+char * _EXFUN(l64a,(long __input));
+char * _EXFUN(_l64a_r,(struct _reent *,long __input));
+int _EXFUN(on_exit,(_VOID (*__func)(int, _PTR),_PTR __arg));
+_VOID _EXFUN(_Exit,(int __status) _ATTRIBUTE ((noreturn)));
+int _EXFUN(putenv,(char *__string));
+int _EXFUN(_putenv_r,(struct _reent *, 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));
+
+double _EXFUN(drand48,(_VOID));
+double _EXFUN(_drand48_r,(struct _reent *));
+double _EXFUN(erand48,(unsigned short [3]));
+double _EXFUN(_erand48_r,(struct _reent *, unsigned short [3]));
+long _EXFUN(jrand48,(unsigned short [3]));
+long _EXFUN(_jrand48_r,(struct _reent *, unsigned short [3]));
+_VOID _EXFUN(lcong48,(unsigned short [7]));
+_VOID _EXFUN(_lcong48_r,(struct _reent *, unsigned short [7]));
+long _EXFUN(lrand48,(_VOID));
+long _EXFUN(_lrand48_r,(struct _reent *));
+long _EXFUN(mrand48,(_VOID));
+long _EXFUN(_mrand48_r,(struct _reent *));
+long _EXFUN(nrand48,(unsigned short [3]));
+long _EXFUN(_nrand48_r,(struct _reent *, unsigned short [3]));
+unsigned short *
+ _EXFUN(seed48,(unsigned short [3]));
+unsigned short *
+ _EXFUN(_seed48_r,(struct _reent *, unsigned short [3]));
+_VOID _EXFUN(srand48,(long));
+_VOID _EXFUN(_srand48_r,(struct _reent *, long));
+long long _EXFUN(atoll,(const char *__nptr));
+long long _EXFUN(_atoll_r,(struct _reent *, const char *__nptr));
+long long _EXFUN(llabs,(long long));
+lldiv_t _EXFUN(lldiv,(long long __numer, long long __denom));
+long long _EXFUN(strtoll,(const char *__n, char **__end_PTR, int __base));
+long long _EXFUN(_strtoll_r,(struct _reent *, const char *__n, char **__end_PTR, int __base));
+unsigned long long _EXFUN(strtoull,(const char *__n, char **__end_PTR, int __base));
+unsigned long long _EXFUN(_strtoull_r,(struct _reent *, const char *__n, char **__end_PTR, int __base));
+
+#ifndef __CYGWIN__
+_VOID _EXFUN(cfree,(_PTR));
+void _EXFUN(unsetenv,(const char *__string));
+void _EXFUN(_unsetenv_r,(struct _reent *, const char *__string));
+#endif
+
+#endif /* ! __STRICT_ANSI__ */
+
+char * _EXFUN(_dtoa_r,(struct _reent *, double, int, int, int *, int*, char**));
+#ifndef __CYGWIN__
+_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 *));
+#endif
+int _EXFUN(_system_r,(struct _reent *, const char *));
+
+_VOID _EXFUN(__eprintf,(const char *, const char *, unsigned int, const char *));
+
+_END_STD_C
+
+#endif /* _STDLIB_H_ */
diff --git a/Unix/i686-elf/include/string.h b/Unix/i686-elf/include/string.h
new file mode 100644
index 0000000..55a86b3
--- /dev/null
+++ b/Unix/i686-elf/include/string.h
@@ -0,0 +1,103 @@
+/*
+ * string.h
+ *
+ * Definitions for memory and string functions.
+ */
+
+#ifndef _STRING_H_
+#define _STRING_H_
+
+#include "_ansi.h"
+#include <sys/reent.h>
+
+#define __need_size_t
+#include <stddef.h>
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+_BEGIN_STD_C
+
+_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 void *, const void *, size_t));
+void _EXFUN(bcopy,(const void *, void *, size_t));
+void _EXFUN(bzero,(void *, size_t));
+int _EXFUN(ffs,(int));
+char *_EXFUN(index,(const char *, int));
+_PTR _EXFUN(memccpy,(_PTR, const _PTR, int, size_t));
+_PTR _EXFUN(mempcpy,(_PTR, const _PTR, size_t));
+#ifdef __CYGWIN__
+extern void *memmem (__const void *, size_t, __const void *, size_t);
+#endif
+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 *));
+char *_EXFUN(strndup,(const char *, size_t));
+char *_EXFUN(_strndup_r,(struct _reent *, const char *, size_t));
+char *_EXFUN(strerror_r,(int, char *, size_t));
+size_t _EXFUN(strlcat,(char *, const char *, size_t));
+size_t _EXFUN(strlcpy,(char *, const char *, size_t));
+int _EXFUN(strncasecmp,(const char *, const char *, size_t));
+size_t _EXFUN(strnlen,(const char *, size_t));
+char *_EXFUN(strsep,(char **, const char *));
+char *_EXFUN(strlwr,(char *));
+char *_EXFUN(strupr,(char *));
+#ifdef __CYGWIN__
+#ifndef DEFS_H /* Kludge to work around problem compiling in gdb */
+const char *_EXFUN(strsignal, (int __signo));
+#endif
+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__ */
+
+#include <sys/string.h>
+
+_END_STD_C
+
+#endif /* _STRING_H_ */
diff --git a/Unix/i686-elf/include/sys/_types.h b/Unix/i686-elf/include/sys/_types.h
new file mode 100644
index 0000000..d3f68ce
--- /dev/null
+++ b/Unix/i686-elf/include/sys/_types.h
@@ -0,0 +1,42 @@
+/* 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
+
+#include <sys/lock.h>
+
+typedef long _off_t;
+__extension__ typedef long long _off64_t;
+
+#if defined(__INT_MAX__) && __INT_MAX__ == 2147483647
+typedef int _ssize_t;
+#else
+typedef long _ssize_t;
+#endif
+
+#define __need_wint_t
+#include <stddef.h>
+
+/* Conversion state information. */
+typedef struct
+{
+ int __count;
+ union
+ {
+ wint_t __wch;
+ unsigned char __wchb[4];
+ } __value; /* Value so far. */
+} _mbstate_t;
+
+typedef _LOCK_RECURSIVE_T _flock_t;
+
+/* Iconv descriptor type */
+typedef void *_iconv_t;
+
+#endif /* _SYS__TYPES_H */
diff --git a/Unix/i686-elf/include/sys/cdefs.h b/Unix/i686-elf/include/sys/cdefs.h
new file mode 100644
index 0000000..f0b6a27
--- /dev/null
+++ b/Unix/i686-elf/include/sys/cdefs.h
@@ -0,0 +1,123 @@
+/* libc/sys/linux/sys/cdefs.h - Helper macros for K&R vs. ANSI C compat. */
+
+/* Written 2000 by Werner Almesberger */
+
+/*
+ * Copyright (c) 1991, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Berkeley Software Design, 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.
+ *
+ * @(#)cdefs.h 8.8 (Berkeley) 1/9/95
+ * $FreeBSD: src/sys/sys/cdefs.h,v 1.54 2002/05/11 03:58:24 alfred Exp $
+ */
+
+#ifndef _SYS_CDEFS_H
+#define _SYS_CDEFS_H
+
+#define __FBSDID(x) /* nothing */
+/*
+ * Note: the goal here is not compatibility to K&R C. Since we know that we
+ * have GCC which understands ANSI C perfectly well, we make use of this.
+ */
+
+#define __P(args) args
+#define __PMT(args) args
+#define __const const
+#define __signed signed
+#define __volatile volatile
+#define __DOTS , ...
+#define __THROW
+
+#define __ptr_t void *
+#define __long_double_t long double
+
+#define __attribute_malloc__
+#define __attribute_pure__
+#define __attribute_format_strfmon__(a,b)
+#define __flexarr [0]
+
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS
+# define __END_DECLS
+#endif
+
+#ifndef __BOUNDED_POINTERS__
+# define __bounded /* nothing */
+# define __unbounded /* nothing */
+# define __ptrvalue /* nothing */
+#endif
+
+#ifdef __GNUC__
+#define __strong_reference(sym,aliassym) \
+ extern __typeof (sym) aliassym __attribute__ ((__alias__ (#sym)));
+#ifdef __ELF__
+#ifdef __STDC__
+#define __weak_reference(sym,alias) \
+ __asm__(".weak " #alias); \
+ __asm__(".equ " #alias ", " #sym)
+#define __warn_references(sym,msg) \
+ __asm__(".section .gnu.warning." #sym); \
+ __asm__(".asciz \"" msg "\""); \
+ __asm__(".previous")
+#else
+#define __weak_reference(sym,alias) \
+ __asm__(".weak alias"); \
+ __asm__(".equ alias, sym")
+#define __warn_references(sym,msg) \
+ __asm__(".section .gnu.warning.sym"); \
+ __asm__(".asciz \"msg\""); \
+ __asm__(".previous")
+#endif /* __STDC__ */
+#else /* !__ELF__ */
+#ifdef __STDC__
+#define __weak_reference(sym,alias) \
+ __asm__(".stabs \"_" #alias "\",11,0,0,0"); \
+ __asm__(".stabs \"_" #sym "\",1,0,0,0")
+#define __warn_references(sym,msg) \
+ __asm__(".stabs \"" msg "\",30,0,0,0"); \
+ __asm__(".stabs \"_" #sym "\",1,0,0,0")
+#else
+#define __weak_reference(sym,alias) \
+ __asm__(".stabs \"_/**/alias\",11,0,0,0"); \
+ __asm__(".stabs \"_/**/sym\",1,0,0,0")
+#define __warn_references(sym,msg) \
+ __asm__(".stabs msg,30,0,0,0"); \
+ __asm__(".stabs \"_/**/sym\",1,0,0,0")
+#endif /* __STDC__ */
+#endif /* __ELF__ */
+#endif /* __GNUC__ */
+
+#endif /* _SYS_CDEFS_H */
diff --git a/Unix/i686-elf/include/sys/config.h b/Unix/i686-elf/include/sys/config.h
new file mode 100644
index 0000000..1f3c3e0
--- /dev/null
+++ b/Unix/i686-elf/include/sys/config.h
@@ -0,0 +1,204 @@
+#ifndef __SYS_CONFIG_H__
+#define __SYS_CONFIG_H__
+
+#include <machine/ieeefp.h> /* floating point macros */
+
+/* exceptions first */
+#if defined(__H8500__) || defined(__W65__)
+#define __SMALL_BITFIELDS
+/* ??? 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
+
+/* 16 bit integer machines */
+#if defined(__Z8001__) || defined(__Z8002__) || defined(__H8500__) || defined(__W65__) || defined (__mn10200__) || defined (__AVR__)
+
+#undef INT_MAX
+#undef UINT_MAX
+#define INT_MAX 32767
+#define UINT_MAX 65535
+#endif
+
+#if defined (__H8300__) || defined (__H8300H__) || defined(__H8300S__) || defined (__H8300SX__)
+#define __SMALL_BITFIELDS
+#define H8300 1
+#undef INT_MAX
+#undef UINT_MAX
+#define INT_MAX __INT_MAX__
+#define UINT_MAX (__INT_MAX__ * 2U + 1)
+#endif
+
+#ifdef __W65__
+#define __SMALL_BITFIELDS
+#endif
+
+#if defined(__D10V__)
+#define __SMALL_BITFIELDS
+#undef INT_MAX
+#undef UINT_MAX
+#define INT_MAX __INT_MAX__
+#define UINT_MAX (__INT_MAX__ * 2U + 1)
+#define _POINTER_INT short
+#endif
+
+#if defined(__mc68hc11__) || defined(__mc68hc12__) || defined(__mc68hc1x__)
+#undef INT_MAX
+#undef UINT_MAX
+#define INT_MAX __INT_MAX__
+#define UINT_MAX (__INT_MAX__ * 2U + 1)
+#define _POINTER_INT short
+#endif
+
+#ifdef ___AM29K__
+#define _FLOAT_RET double
+#endif
+
+#ifdef __i386__
+#ifndef __unix__
+/* in other words, go32 */
+#define _FLOAT_RET double
+#endif
+#if defined(__linux__) || defined(__RDOS__)
+/* we want the reentrancy structure to be returned by a function */
+#define __DYNAMIC_REENT__
+#define HAVE_GETDATE
+#define _HAVE_SYSTYPES
+#define _READ_WRITE_RETURN_TYPE _ssize_t
+#define __LARGE64_FILES 1
+/* we use some glibc header files so turn on glibc large file feature */
+#define _LARGEFILE64_SOURCE 1
+#endif
+#endif
+
+#ifdef __mn10200__
+#define __SMALL_BITFIELDS
+#endif
+
+#ifdef __AVR__
+#define __SMALL_BITFIELDS
+#define _POINTER_INT short
+#endif
+
+#ifdef __v850
+#define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__sda__))
+#endif
+
+/* For the PowerPC eabi, force the _impure_ptr to be in .sdata */
+#if defined(__PPC__)
+#if defined(_CALL_SYSV)
+#define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__section__(".sdata")))
+#endif
+#ifdef __SPE__
+#define _LONG_DOUBLE double
+#endif
+#endif
+
+#ifdef __mips__
+#define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__section__(".sdata")))
+#endif
+
+#ifdef __xstormy16__
+#define __SMALL_BITFIELDS
+#undef INT_MAX
+#undef UINT_MAX
+#define INT_MAX __INT_MAX__
+#define UINT_MAX (__INT_MAX__ * 2U + 1)
+#define MALLOC_ALIGNMENT 8
+#define _POINTER_INT short
+#define __BUFSIZ__ 16
+#define _REENT_SMALL
+#endif
+#ifdef __m32c__
+#define __SMALL_BITFIELDS
+#undef INT_MAX
+#undef UINT_MAX
+#define INT_MAX __INT_MAX__
+#define UINT_MAX (__INT_MAX__ * 2U + 1)
+#define MALLOC_ALIGNMENT 8
+#if defined(__r8c_cpu__) || defined(__m16c_cpu__)
+#define _POINTER_INT short
+#else
+#define _POINTER_INT long
+#endif
+#define __BUFSIZ__ 16
+#define _REENT_SMALL
+#endif /* __m32c__ */
+
+#ifdef __thumb2__
+/* Thumb-2 based ARMv7M devices are really small. */
+#define _REENT_SMALL
+#endif
+
+#ifdef __SPU__
+#define MALLOC_ALIGNMENT 16
+#endif
+
+/* This block should be kept in sync with GCC's limits.h. The point
+ of having these definitions here is to not include limits.h, which
+ would pollute the user namespace, while still using types of the
+ the correct widths when deciding how to define __int32_t and
+ __int64_t. */
+#ifndef __INT_MAX__
+# ifdef INT_MAX
+# define __INT_MAX__ INT_MAX
+# else
+# define __INT_MAX__ 2147483647
+# endif
+#endif
+
+#ifndef __LONG_MAX__
+# ifdef LONG_MAX
+# define __LONG_MAX__ LONG_MAX
+# else
+# if defined (__alpha__) || (defined (__sparc__) && defined(__arch64__)) \
+ || defined (__sparcv9)
+# define __LONG_MAX__ 9223372036854775807L
+# else
+# define __LONG_MAX__ 2147483647L
+# endif /* __alpha__ || sparc64 */
+# endif
+#endif
+/* End of block that should be kept in sync with GCC's limits.h. */
+
+#ifndef _POINTER_INT
+#define _POINTER_INT long
+#endif
+
+#ifdef __frv__
+#define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__section__(".sdata")))
+#endif
+#undef __RAND_MAX
+#if __INT_MAX__ == 32767
+#define __RAND_MAX 32767
+#else
+#define __RAND_MAX 0x7fffffff
+#endif
+
+#if defined(__CYGWIN__)
+#include <cygwin/config.h>
+#endif
+
+#if defined(__rtems__)
+#define __FILENAME_MAX__ 255
+#define _READ_WRITE_RETURN_TYPE _ssize_t
+#endif
+
+#ifndef __IMPORT
+#define __IMPORT
+#endif
+
+/* Define return type of read/write routines. In POSIX, the return type
+ for read()/write() is "ssize_t" but legacy newlib code has been using
+ "int" for some time. If not specified, "int" is defaulted. */
+#ifndef _READ_WRITE_RETURN_TYPE
+#define _READ_WRITE_RETURN_TYPE int
+#endif
+
+#ifndef __WCHAR_MAX__
+#if __INT_MAX__ == 32767 || defined (_WIN32)
+#define __WCHAR_MAX__ 0xffffu
+#endif
+#endif
+
+#endif /* __SYS_CONFIG_H__ */
diff --git a/Unix/i686-elf/include/sys/dirent.h b/Unix/i686-elf/include/sys/dirent.h
new file mode 100644
index 0000000..a3fb5c0
--- /dev/null
+++ b/Unix/i686-elf/include/sys/dirent.h
@@ -0,0 +1,13 @@
+/* <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 uses #error to force
+ an error. */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#error "<dirent.h> not supported"
+#ifdef __cplusplus
+}
+#endif
diff --git a/Unix/i686-elf/include/sys/errno.h b/Unix/i686-elf/include/sys/errno.h
new file mode 100644
index 0000000..e0c43de
--- /dev/null
+++ b/Unix/i686-elf/include/sys/errno.h
@@ -0,0 +1,160 @@
+/* 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
+
+/* Please don't use these variables directly.
+ Use strerror instead. */
+extern __IMPORT _CONST char * _CONST _sys_errlist[];
+extern __IMPORT int _sys_nerr;
+#ifdef __CYGWIN__
+extern __IMPORT const char * const sys_errlist[];
+extern __IMPORT int sys_nerr;
+#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 EFTYPE 79 /* Inappropriate file type or format */
+#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 /* Address family not supported by protocol family */
+#define EPROTOTYPE 107 /* Protocol wrong type for socket */
+#define ENOTSOCK 108 /* Socket operation on non-socket */
+#define ENOPROTOOPT 109 /* Protocol not available */
+#define ESHUTDOWN 110 /* Can't send after socket shutdown */
+#define ECONNREFUSED 111 /* Connection refused */
+#define EADDRINUSE 112 /* Address already in use */
+#define ECONNABORTED 113 /* Connection aborted */
+#define ENETUNREACH 114 /* Network is unreachable */
+#define ENETDOWN 115 /* Network interface is not configured */
+#define ETIMEDOUT 116 /* Connection timed out */
+#define EHOSTDOWN 117 /* Host is down */
+#define EHOSTUNREACH 118 /* Host is unreachable */
+#define EINPROGRESS 119 /* Connection already in progress */
+#define EALREADY 120 /* Socket already connected */
+#define EDESTADDRREQ 121 /* Destination address required */
+#define EMSGSIZE 122 /* Message too long */
+#define EPROTONOSUPPORT 123 /* Unknown protocol */
+#define ESOCKTNOSUPPORT 124 /* Socket type not supported */
+#define EADDRNOTAVAIL 125 /* Address not available */
+#define ENETRESET 126
+#define EISCONN 127 /* Socket is already connected */
+#define ENOTCONN 128 /* Socket is not connected */
+#define ETOOMANYREFS 129
+#define EPROCLIM 130
+#define EUSERS 131
+#define EDQUOT 132
+#define ESTALE 133
+#define ENOTSUP 134 /* Not supported */
+#define ENOMEDIUM 135 /* No medium (in tape drive) */
+#define ENOSHARE 136 /* No such host or network path */
+#define ECASECLASH 137 /* Filename exists with different case */
+#define EILSEQ 138
+#define EOVERFLOW 139 /* Value too large for defined data type */
+
+/* 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/Unix/i686-elf/include/sys/fcntl.h b/Unix/i686-elf/include/sys/fcntl.h
new file mode 100644
index 0000000..fd8917d
--- /dev/null
+++ b/Unix/i686-elf/include/sys/fcntl.h
@@ -0,0 +1,183 @@
+
+#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 _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 _FNDELAY _FNONBLOCK /* non blocking I/O (4.2 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
+#define O_SYNC _FSYNC
+/* O_NDELAY _FNDELAY set in include/fcntl.h */
+/* O_NDELAY _FNBIO set in include/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
+
+/*
+ * 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>*/
+
+#ifndef __CYGWIN__
+/* 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 */
+};
+#endif /* __CYGWIN__ */
+
+#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. */
+#ifdef _COMPILING_NEWLIB
+extern int _open _PARAMS ((const char *, int, ...));
+extern int _fcntl _PARAMS ((int, int, ...));
+#ifdef __LARGE64_FILES
+extern int _open64 _PARAMS ((const char *, int, ...));
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* !_FCNTL_ */
diff --git a/Unix/i686-elf/include/sys/features.h b/Unix/i686-elf/include/sys/features.h
new file mode 100644
index 0000000..80fd183
--- /dev/null
+++ b/Unix/i686-elf/include/sys/features.h
@@ -0,0 +1,100 @@
+/*
+ * Written by Joel Sherrill <joel@OARcorp.com>.
+ *
+ * COPYRIGHT (c) 1989-2000.
+ *
+ * On-Line Applications Research Corporation (OAR).
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose without fee is hereby granted, provided that this entire notice
+ * is included in all copies of any software which is or includes a copy
+ * or modification of this software.
+ *
+ * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION
+ * OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS
+ * SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
+ *
+ * $Id: features.h,v 1.8 2006/09/13 22:09:27 jjohnstn Exp $
+ */
+
+#ifndef _SYS_FEATURES_H
+#define _SYS_FEATURES_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RTEMS adheres to POSIX -- 1003.1b with some features from annexes. */
+
+#ifdef __rtems__
+#define _POSIX_JOB_CONTROL 1
+#define _POSIX_SAVED_IDS 1
+#define _POSIX_VERSION 199309L
+#define _POSIX_ASYNCHRONOUS_IO 1
+#define _POSIX_FSYNC 1
+#define _POSIX_MAPPED_FILES 1
+#define _POSIX_MEMLOCK 1
+#define _POSIX_MEMLOCK_RANGE 1
+#define _POSIX_MEMORY_PROTECTION 1
+#define _POSIX_MESSAGE_PASSING 1
+#define _POSIX_PRIORITIZED_IO 1
+#define _POSIX_PRIORITY_SCHEDULING 1
+#define _POSIX_REALTIME_SIGNALS 1
+#define _POSIX_SEMAPHORES 1
+#define _POSIX_SHARED_MEMORY_OBJECTS 1
+#define _POSIX_SYNCHRONIZED_IO 1
+#define _POSIX_TIMERS 1
+#define _POSIX_BARRIERS 200112L
+#define _POSIX_READER_WRITER_LOCKS 200112L
+#define _POSIX_SPIN_LOCKS 200112L
+
+
+/* In P1003.1b but defined by drafts at least as early as P1003.1c/D10 */
+#define _POSIX_THREADS 1
+#define _POSIX_THREAD_ATTR_STACKADDR 1
+#define _POSIX_THREAD_ATTR_STACKSIZE 1
+#define _POSIX_THREAD_PRIORITY_SCHEDULING 1
+#define _POSIX_THREAD_PRIO_INHERIT 1
+#define _POSIX_THREAD_PRIO_PROTECT 1
+#define _POSIX_THREAD_PROCESS_SHARED 1
+#define _POSIX_THREAD_SAFE_FUNCTIONS 1
+
+/* P1003.4b/D8 defines the constants below this comment. */
+#define _POSIX_SPAWN 1
+#define _POSIX_TIMEOUTS 1
+#define _POSIX_CPUTIME 1
+#define _POSIX_THREAD_CPUTIME 1
+#define _POSIX_SPORADIC_SERVER 1
+#define _POSIX_THREAD_SPORADIC_SERVER 1
+#define _POSIX_DEVICE_CONTROL 1
+#define _POSIX_DEVCTL_DIRECTION 1
+#define _POSIX_INTERRUPT_CONTROL 1
+#define _POSIX_ADVISORY_INFO 1
+
+#endif
+
+#ifdef __svr4__
+# define _POSIX_JOB_CONTROL 1
+# define _POSIX_SAVED_IDS 1
+# define _POSIX_VERSION 199009L
+#endif
+
+#ifdef __CYGWIN__
+# define _POSIX_JOB_CONTROL 1
+# define _POSIX_SAVED_IDS 0
+# define _POSIX_VERSION 199009L
+# define _POSIX_THREADS 1
+# define _POSIX_THREAD_PROCESS_SHARED 1
+# define _POSIX_THREAD_SAFE_FUNCTIONS 1
+# define _POSIX_THREAD_PRIORITY_SCHEDULING 1
+# define _POSIX_THREAD_ATTR_STACKSIZE 1
+# define _POSIX_SEMAPHORES 1
+# define _POSIX_TIMERS 1
+# define _POSIX_MEMLOCK_RANGE 1
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _SYS_FEATURES_H */
diff --git a/Unix/i686-elf/include/sys/file.h b/Unix/i686-elf/include/sys/file.h
new file mode 100644
index 0000000..58d4fac
--- /dev/null
+++ b/Unix/i686-elf/include/sys/file.h
@@ -0,0 +1,2 @@
+
+#include <sys/fcntl.h>
diff --git a/Unix/i686-elf/include/sys/iconvnls.h b/Unix/i686-elf/include/sys/iconvnls.h
new file mode 100644
index 0000000..09ea183
--- /dev/null
+++ b/Unix/i686-elf/include/sys/iconvnls.h
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2003-2004, Artem B. Bityuckiy.
+ * Rights transferred to Franklin Electronic Publishers.
+ *
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
+ */
+
+/*
+ * Funtions, macros, etc implimented in iconv library but used by other
+ * NLS-related subsystems too.
+ */
+#ifndef __SYS_ICONVNLS_H__
+#define __SYS_ICONVNLS_H__
+
+#include <_ansi.h>
+#include <reent.h>
+#include <wchar.h>
+#include <iconv.h>
+
+/* Iconv data path environment variable name */
+#define NLS_ENVVAR_NAME "NLSPATH"
+/* Default NLSPATH value */
+#define ICONV_DEFAULT_NLSPATH "/usr/locale"
+/* Direction markers */
+#define ICONV_NLS_FROM 0
+#define ICONV_NLS_TO 1
+
+_VOID
+_EXFUN(_iconv_nls_get_state, (iconv_t cd, mbstate_t *ps, int direction));
+
+int
+_EXFUN(_iconv_nls_set_state, (iconv_t cd, mbstate_t *ps, int direction));
+
+int
+_EXFUN(_iconv_nls_is_stateful, (iconv_t cd, int direction));
+
+int
+_EXFUN(_iconv_nls_get_mb_cur_max, (iconv_t cd, int direction));
+
+size_t
+_EXFUN(_iconv_nls_conv, (struct _reent *rptr, iconv_t cd,
+ _CONST char **inbuf, size_t *inbytesleft,
+ char **outbuf, size_t *outbytesleft));
+
+_CONST char *
+_EXFUN(_iconv_nls_construct_filename, (struct _reent *rptr, _CONST char *file,
+ _CONST char *dir, _CONST char *ext));
+
+
+int
+_EXFUN(_iconv_nls_open, (struct _reent *rptr, _CONST char *encoding,
+ iconv_t *towc, iconv_t *fromwc, int flag));
+
+char *
+_EXFUN(_iconv_resolve_encoding_name, (struct _reent *rptr, _CONST char *ca));
+
+#endif /* __SYS_ICONVNLS_H__ */
+
diff --git a/Unix/i686-elf/include/sys/lock.h b/Unix/i686-elf/include/sys/lock.h
new file mode 100644
index 0000000..c05814a
--- /dev/null
+++ b/Unix/i686-elf/include/sys/lock.h
@@ -0,0 +1,22 @@
+#ifndef __SYS_LOCK_H__
+#define __SYS_LOCK_H__
+
+/* dummy lock routines for single-threaded aps */
+
+typedef int _LOCK_T;
+typedef int _LOCK_RECURSIVE_T;
+
+#define __LOCK_INIT(class,lock) static int lock = 0;
+#define __LOCK_INIT_RECURSIVE(class,lock) static int lock = 0;
+#define __lock_init(lock) (0)
+#define __lock_init_recursive(lock) (0)
+#define __lock_close(lock) (0)
+#define __lock_close_recursive(lock) (0)
+#define __lock_acquire(lock) (0)
+#define __lock_acquire_recursive(lock) (0)
+#define __lock_try_acquire(lock) (0)
+#define __lock_try_acquire_recursive(lock) (0)
+#define __lock_release(lock) (0)
+#define __lock_release_recursive(lock) (0)
+
+#endif /* __SYS_LOCK_H__ */
diff --git a/Unix/i686-elf/include/sys/param.h b/Unix/i686-elf/include/sys/param.h
new file mode 100644
index 0000000..7e8762a
--- /dev/null
+++ b/Unix/i686-elf/include/sys/param.h
@@ -0,0 +1,25 @@
+/* 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
+
+#include <sys/config.h>
+#include <machine/endian.h>
+#include <machine/param.h>
+
+#ifndef HZ
+# define HZ (60)
+#endif
+#ifndef NOFILE
+# define NOFILE (60)
+#endif
+#ifndef PATHSIZE
+# define PATHSIZE (1024)
+#endif
+
+#define MAX(a,b) ((a) > (b) ? (a) : (b))
+#define MIN(a,b) ((a) < (b) ? (a) : (b))
+
+#endif
diff --git a/Unix/i686-elf/include/sys/queue.h b/Unix/i686-elf/include/sys/queue.h
new file mode 100644
index 0000000..af637ca
--- /dev/null
+++ b/Unix/i686-elf/include/sys/queue.h
@@ -0,0 +1,471 @@
+/*
+ * Copyright (c) 1991, 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.
+ *
+ * @(#)queue.h 8.5 (Berkeley) 8/20/94
+ * $FreeBSD: src/sys/sys/queue.h,v 1.48 2002/04/17 14:00:37 tmm Exp $
+ */
+
+#ifndef _SYS_QUEUE_H_
+#define _SYS_QUEUE_H_
+
+#include <machine/ansi.h> /* for __offsetof */
+
+/*
+ * This file defines four types of data structures: singly-linked lists,
+ * singly-linked tail queues, lists and tail queues.
+ *
+ * A singly-linked list is headed by a single forward pointer. The elements
+ * are singly linked for minimum space and pointer manipulation overhead at
+ * the expense of O(n) removal for arbitrary elements. New elements can be
+ * added to the list after an existing element or at the head of the list.
+ * Elements being removed from the head of the list should use the explicit
+ * macro for this purpose for optimum efficiency. A singly-linked list may
+ * only be traversed in the forward direction. Singly-linked lists are ideal
+ * for applications with large datasets and few or no removals or for
+ * implementing a LIFO queue.
+ *
+ * A singly-linked tail queue is headed by a pair of pointers, one to the
+ * head of the list and the other to the tail of the list. The elements are
+ * singly linked for minimum space and pointer manipulation overhead at the
+ * expense of O(n) removal for arbitrary elements. New elements can be added
+ * to the list after an existing element, at the head of the list, or at the
+ * end of the list. Elements being removed from the head of the tail queue
+ * should use the explicit macro for this purpose for optimum efficiency.
+ * A singly-linked tail queue may only be traversed in the forward direction.
+ * Singly-linked tail queues are ideal for applications with large datasets
+ * and few or no removals or for implementing a FIFO queue.
+ *
+ * A list is headed by a single forward pointer (or an array of forward
+ * pointers for a hash table header). The elements are doubly linked
+ * so that an arbitrary element can be removed without a need to
+ * traverse the list. New elements can be added to the list before
+ * or after an existing element or at the head of the list. A list
+ * may only be traversed in the forward direction.
+ *
+ * A tail queue is headed by a pair of pointers, one to the head of the
+ * list and the other to the tail of the list. The elements are doubly
+ * linked so that an arbitrary element can be removed without a need to
+ * traverse the list. New elements can be added to the list before or
+ * after an existing element, at the head of the list, or at the end of
+ * the list. A tail queue may be traversed in either direction.
+ *
+ * For details on the use of these macros, see the queue(3) manual page.
+ *
+ *
+ * SLIST LIST STAILQ TAILQ
+ * _HEAD + + + +
+ * _HEAD_INITIALIZER + + + +
+ * _ENTRY + + + +
+ * _INIT + + + +
+ * _EMPTY + + + +
+ * _FIRST + + + +
+ * _NEXT + + + +
+ * _PREV - - - +
+ * _LAST - - + +
+ * _FOREACH + + + +
+ * _FOREACH_REVERSE - - - +
+ * _INSERT_HEAD + + + +
+ * _INSERT_BEFORE - + - +
+ * _INSERT_AFTER + + + +
+ * _INSERT_TAIL - - + +
+ * _CONCAT - - + +
+ * _REMOVE_HEAD + - + -
+ * _REMOVE + + + +
+ *
+ */
+
+/*
+ * Singly-linked List declarations.
+ */
+#define SLIST_HEAD(name, type) \
+struct name { \
+ struct type *slh_first; /* first element */ \
+}
+
+#define SLIST_HEAD_INITIALIZER(head) \
+ { NULL }
+
+#define SLIST_ENTRY(type) \
+struct { \
+ struct type *sle_next; /* next element */ \
+}
+
+/*
+ * Singly-linked List functions.
+ */
+#define SLIST_EMPTY(head) ((head)->slh_first == NULL)
+
+#define SLIST_FIRST(head) ((head)->slh_first)
+
+#define SLIST_FOREACH(var, head, field) \
+ for ((var) = SLIST_FIRST((head)); \
+ (var); \
+ (var) = SLIST_NEXT((var), field))
+
+#define SLIST_INIT(head) do { \
+ SLIST_FIRST((head)) = NULL; \
+} while (0)
+
+#define SLIST_INSERT_AFTER(slistelm, elm, field) do { \
+ SLIST_NEXT((elm), field) = SLIST_NEXT((slistelm), field); \
+ SLIST_NEXT((slistelm), field) = (elm); \
+} while (0)
+
+#define SLIST_INSERT_HEAD(head, elm, field) do { \
+ SLIST_NEXT((elm), field) = SLIST_FIRST((head)); \
+ SLIST_FIRST((head)) = (elm); \
+} while (0)
+
+#define SLIST_NEXT(elm, field) ((elm)->field.sle_next)
+
+#define SLIST_REMOVE(head, elm, type, field) do { \
+ if (SLIST_FIRST((head)) == (elm)) { \
+ SLIST_REMOVE_HEAD((head), field); \
+ } \
+ else { \
+ struct type *curelm = SLIST_FIRST((head)); \
+ while (SLIST_NEXT(curelm, field) != (elm)) \
+ curelm = SLIST_NEXT(curelm, field); \
+ SLIST_NEXT(curelm, field) = \
+ SLIST_NEXT(SLIST_NEXT(curelm, field), field); \
+ } \
+} while (0)
+
+#define SLIST_REMOVE_HEAD(head, field) do { \
+ SLIST_FIRST((head)) = SLIST_NEXT(SLIST_FIRST((head)), field); \
+} while (0)
+
+/*
+ * Singly-linked Tail queue declarations.
+ */
+#define STAILQ_HEAD(name, type) \
+struct name { \
+ struct type *stqh_first;/* first element */ \
+ struct type **stqh_last;/* addr of last next element */ \
+}
+
+#define STAILQ_HEAD_INITIALIZER(head) \
+ { NULL, &(head).stqh_first }
+
+#define STAILQ_ENTRY(type) \
+struct { \
+ struct type *stqe_next; /* next element */ \
+}
+
+/*
+ * Singly-linked Tail queue functions.
+ */
+#define STAILQ_CONCAT(head1, head2) do { \
+ if (!STAILQ_EMPTY((head2))) { \
+ *(head1)->stqh_last = (head2)->stqh_first; \
+ (head1)->stqh_last = (head2)->stqh_last; \
+ STAILQ_INIT((head2)); \
+ } \
+} while (0)
+
+#define STAILQ_EMPTY(head) ((head)->stqh_first == NULL)
+
+#define STAILQ_FIRST(head) ((head)->stqh_first)
+
+#define STAILQ_FOREACH(var, head, field) \
+ for((var) = STAILQ_FIRST((head)); \
+ (var); \
+ (var) = STAILQ_NEXT((var), field))
+
+#define STAILQ_INIT(head) do { \
+ STAILQ_FIRST((head)) = NULL; \
+ (head)->stqh_last = &STAILQ_FIRST((head)); \
+} while (0)
+
+#define STAILQ_INSERT_AFTER(head, tqelm, elm, field) do { \
+ if ((STAILQ_NEXT((elm), field) = STAILQ_NEXT((tqelm), field)) == NULL)\
+ (head)->stqh_last = &STAILQ_NEXT((elm), field); \
+ STAILQ_NEXT((tqelm), field) = (elm); \
+} while (0)
+
+#define STAILQ_INSERT_HEAD(head, elm, field) do { \
+ if ((STAILQ_NEXT((elm), field) = STAILQ_FIRST((head))) == NULL) \
+ (head)->stqh_last = &STAILQ_NEXT((elm), field); \
+ STAILQ_FIRST((head)) = (elm); \
+} while (0)
+
+#define STAILQ_INSERT_TAIL(head, elm, field) do { \
+ STAILQ_NEXT((elm), field) = NULL; \
+ *(head)->stqh_last = (elm); \
+ (head)->stqh_last = &STAILQ_NEXT((elm), field); \
+} while (0)
+
+#define STAILQ_LAST(head, type, field) \
+ (STAILQ_EMPTY((head)) ? \
+ NULL : \
+ ((struct type *) \
+ ((char *)((head)->stqh_last) - __offsetof(struct type, field))))
+
+#define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next)
+
+#define STAILQ_REMOVE(head, elm, type, field) do { \
+ if (STAILQ_FIRST((head)) == (elm)) { \
+ STAILQ_REMOVE_HEAD((head), field); \
+ } \
+ else { \
+ struct type *curelm = STAILQ_FIRST((head)); \
+ while (STAILQ_NEXT(curelm, field) != (elm)) \
+ curelm = STAILQ_NEXT(curelm, field); \
+ if ((STAILQ_NEXT(curelm, field) = \
+ STAILQ_NEXT(STAILQ_NEXT(curelm, field), field)) == NULL)\
+ (head)->stqh_last = &STAILQ_NEXT((curelm), field);\
+ } \
+} while (0)
+
+#define STAILQ_REMOVE_HEAD(head, field) do { \
+ if ((STAILQ_FIRST((head)) = \
+ STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL) \
+ (head)->stqh_last = &STAILQ_FIRST((head)); \
+} while (0)
+
+#define STAILQ_REMOVE_HEAD_UNTIL(head, elm, field) do { \
+ if ((STAILQ_FIRST((head)) = STAILQ_NEXT((elm), field)) == NULL) \
+ (head)->stqh_last = &STAILQ_FIRST((head)); \
+} while (0)
+
+/*
+ * List declarations.
+ */
+#define LIST_HEAD(name, type) \
+struct name { \
+ struct type *lh_first; /* first element */ \
+}
+
+#define LIST_HEAD_INITIALIZER(head) \
+ { NULL }
+
+#define LIST_ENTRY(type) \
+struct { \
+ struct type *le_next; /* next element */ \
+ struct type **le_prev; /* address of previous next element */ \
+}
+
+/*
+ * List functions.
+ */
+
+#define LIST_EMPTY(head) ((head)->lh_first == NULL)
+
+#define LIST_FIRST(head) ((head)->lh_first)
+
+#define LIST_FOREACH(var, head, field) \
+ for ((var) = LIST_FIRST((head)); \
+ (var); \
+ (var) = LIST_NEXT((var), field))
+
+#define LIST_INIT(head) do { \
+ LIST_FIRST((head)) = NULL; \
+} while (0)
+
+#define LIST_INSERT_AFTER(listelm, elm, field) do { \
+ if ((LIST_NEXT((elm), field) = LIST_NEXT((listelm), field)) != NULL)\
+ LIST_NEXT((listelm), field)->field.le_prev = \
+ &LIST_NEXT((elm), field); \
+ LIST_NEXT((listelm), field) = (elm); \
+ (elm)->field.le_prev = &LIST_NEXT((listelm), field); \
+} while (0)
+
+#define LIST_INSERT_BEFORE(listelm, elm, field) do { \
+ (elm)->field.le_prev = (listelm)->field.le_prev; \
+ LIST_NEXT((elm), field) = (listelm); \
+ *(listelm)->field.le_prev = (elm); \
+ (listelm)->field.le_prev = &LIST_NEXT((elm), field); \
+} while (0)
+
+#define LIST_INSERT_HEAD(head, elm, field) do { \
+ if ((LIST_NEXT((elm), field) = LIST_FIRST((head))) != NULL) \
+ LIST_FIRST((head))->field.le_prev = &LIST_NEXT((elm), field);\
+ LIST_FIRST((head)) = (elm); \
+ (elm)->field.le_prev = &LIST_FIRST((head)); \
+} while (0)
+
+#define LIST_NEXT(elm, field) ((elm)->field.le_next)
+
+#define LIST_REMOVE(elm, field) do { \
+ if (LIST_NEXT((elm), field) != NULL) \
+ LIST_NEXT((elm), field)->field.le_prev = \
+ (elm)->field.le_prev; \
+ *(elm)->field.le_prev = LIST_NEXT((elm), field); \
+} while (0)
+
+/*
+ * Tail queue declarations.
+ */
+#define TAILQ_HEAD(name, type) \
+struct name { \
+ struct type *tqh_first; /* first element */ \
+ struct type **tqh_last; /* addr of last next element */ \
+}
+
+#define TAILQ_HEAD_INITIALIZER(head) \
+ { NULL, &(head).tqh_first }
+
+#define TAILQ_ENTRY(type) \
+struct { \
+ struct type *tqe_next; /* next element */ \
+ struct type **tqe_prev; /* address of previous next element */ \
+}
+
+/*
+ * Tail queue functions.
+ */
+#define TAILQ_CONCAT(head1, head2, field) do { \
+ if (!TAILQ_EMPTY(head2)) { \
+ *(head1)->tqh_last = (head2)->tqh_first; \
+ (head2)->tqh_first->field.tqe_prev = (head1)->tqh_last; \
+ (head1)->tqh_last = (head2)->tqh_last; \
+ TAILQ_INIT((head2)); \
+ } \
+} while (0)
+
+#define TAILQ_EMPTY(head) ((head)->tqh_first == NULL)
+
+#define TAILQ_FIRST(head) ((head)->tqh_first)
+
+#define TAILQ_FOREACH(var, head, field) \
+ for ((var) = TAILQ_FIRST((head)); \
+ (var); \
+ (var) = TAILQ_NEXT((var), field))
+
+#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \
+ for ((var) = TAILQ_LAST((head), headname); \
+ (var); \
+ (var) = TAILQ_PREV((var), headname, field))
+
+#define TAILQ_INIT(head) do { \
+ TAILQ_FIRST((head)) = NULL; \
+ (head)->tqh_last = &TAILQ_FIRST((head)); \
+} while (0)
+
+#define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \
+ if ((TAILQ_NEXT((elm), field) = TAILQ_NEXT((listelm), field)) != NULL)\
+ TAILQ_NEXT((elm), field)->field.tqe_prev = \
+ &TAILQ_NEXT((elm), field); \
+ else \
+ (head)->tqh_last = &TAILQ_NEXT((elm), field); \
+ TAILQ_NEXT((listelm), field) = (elm); \
+ (elm)->field.tqe_prev = &TAILQ_NEXT((listelm), field); \
+} while (0)
+
+#define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \
+ (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \
+ TAILQ_NEXT((elm), field) = (listelm); \
+ *(listelm)->field.tqe_prev = (elm); \
+ (listelm)->field.tqe_prev = &TAILQ_NEXT((elm), field); \
+} while (0)
+
+#define TAILQ_INSERT_HEAD(head, elm, field) do { \
+ if ((TAILQ_NEXT((elm), field) = TAILQ_FIRST((head))) != NULL) \
+ TAILQ_FIRST((head))->field.tqe_prev = \
+ &TAILQ_NEXT((elm), field); \
+ else \
+ (head)->tqh_last = &TAILQ_NEXT((elm), field); \
+ TAILQ_FIRST((head)) = (elm); \
+ (elm)->field.tqe_prev = &TAILQ_FIRST((head)); \
+} while (0)
+
+#define TAILQ_INSERT_TAIL(head, elm, field) do { \
+ TAILQ_NEXT((elm), field) = NULL; \
+ (elm)->field.tqe_prev = (head)->tqh_last; \
+ *(head)->tqh_last = (elm); \
+ (head)->tqh_last = &TAILQ_NEXT((elm), field); \
+} while (0)
+
+#define TAILQ_LAST(head, headname) \
+ (*(((struct headname *)((head)->tqh_last))->tqh_last))
+
+#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next)
+
+#define TAILQ_PREV(elm, headname, field) \
+ (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last))
+
+#define TAILQ_REMOVE(head, elm, field) do { \
+ if ((TAILQ_NEXT((elm), field)) != NULL) \
+ TAILQ_NEXT((elm), field)->field.tqe_prev = \
+ (elm)->field.tqe_prev; \
+ else \
+ (head)->tqh_last = (elm)->field.tqe_prev; \
+ *(elm)->field.tqe_prev = TAILQ_NEXT((elm), field); \
+} while (0)
+
+
+#ifdef _KERNEL
+
+/*
+ * XXX insque() and remque() are an old way of handling certain queues.
+ * They bogusly assumes that all queue heads look alike.
+ */
+
+struct quehead {
+ struct quehead *qh_link;
+ struct quehead *qh_rlink;
+};
+
+#ifdef __GNUC__
+
+static __inline void
+insque(void *a, void *b)
+{
+ struct quehead *element = (struct quehead *)a,
+ *head = (struct quehead *)b;
+
+ element->qh_link = head->qh_link;
+ element->qh_rlink = head;
+ head->qh_link = element;
+ element->qh_link->qh_rlink = element;
+}
+
+static __inline void
+remque(void *a)
+{
+ struct quehead *element = (struct quehead *)a;
+
+ element->qh_link->qh_rlink = element->qh_rlink;
+ element->qh_rlink->qh_link = element->qh_link;
+ element->qh_rlink = 0;
+}
+
+#else /* !__GNUC__ */
+
+void insque(void *a, void *b);
+void remque(void *a);
+
+#endif /* __GNUC__ */
+
+#endif /* _KERNEL */
+
+#endif /* !_SYS_QUEUE_H_ */
diff --git a/Unix/i686-elf/include/sys/reent.h b/Unix/i686-elf/include/sys/reent.h
new file mode 100644
index 0000000..a7d4f96
--- /dev/null
+++ b/Unix/i686-elf/include/sys/reent.h
@@ -0,0 +1,818 @@
+/* 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 <sys/_types.h>
+
+#define _NULL 0
+
+#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
+
+#if !defined( __Long)
+#include <sys/types.h>
+#endif
+
+#ifndef __Long
+#define __Long __int32_t
+typedef __uint32_t __ULong;
+#endif
+
+/*
+ * If _REENT_SMALL is defined, we make struct _reent as small as possible,
+ * by having nearly everything possible allocated at first use.
+ */
+
+struct _Bigint
+{
+ struct _Bigint *_next;
+ int _k, _maxwds, _sign, _wds;
+ __ULong _x[1];
+};
+
+/* needed by reentrant structure */
+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;
+};
+
+/*
+ * atexit() support.
+ */
+
+#define _ATEXIT_SIZE 32 /* must be at least 32 to guarantee ANSI conformance */
+
+struct _on_exit_args {
+ void * _fnargs[_ATEXIT_SIZE]; /* user fn args */
+ void * _dso_handle[_ATEXIT_SIZE];
+ /* Bitmask is set if user function takes arguments. */
+ __ULong _fntypes; /* type of exit routine -
+ Must have at least _ATEXIT_SIZE bits */
+ /* Bitmask is set if function was registered via __cxa_atexit. */
+ __ULong _is_cxa;
+};
+
+#ifdef _REENT_SMALL
+struct _atexit {
+ struct _atexit *_next; /* next in list */
+ int _ind; /* next index in this table */
+ void (*_fns[_ATEXIT_SIZE])(void); /* the table itself */
+ struct _on_exit_args * _on_exit_args_ptr;
+};
+#else
+struct _atexit {
+ struct _atexit *_next; /* next in list */
+ int _ind; /* next index in this table */
+ /* Some entries may already have been called, and will be NULL. */
+ void (*_fns[_ATEXIT_SIZE])(void); /* the table itself */
+ struct _on_exit_args _on_exit_args;
+};
+#endif
+
+/*
+ * Stdio buffers.
+ *
+ * This and __FILE 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) */
+
+#ifdef __LARGE64_FILES
+typedef _off64_t _fpos64_t;
+#endif
+
+/*
+ * 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.
+ */
+
+#ifdef _REENT_SMALL
+/*
+ * struct __sFILE_fake is the start of a struct __sFILE, with only the
+ * minimal fields allocated. In __sinit() we really allocate the 3
+ * standard streams, etc., and point away from this fake.
+ */
+struct __sFILE_fake {
+ 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 */
+
+ struct _reent *_data;
+};
+/* CHECK_STD_INIT() comes from stdio/local.h; be sure to include that. */
+# define _REENT_SMALL_CHECK_INIT(ptr) CHECK_STD_INIT(ptr)
+#else
+# define _REENT_SMALL_CHECK_INIT(ptr) /* nothing */
+#endif
+
+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 */
+
+#ifdef _REENT_SMALL
+ struct _reent *_data;
+#endif
+
+ /* operations */
+ _PTR _cookie; /* cookie passed to io functions */
+
+ _READ_WRITE_RETURN_TYPE _EXFUN((*_read),(_PTR _cookie, char *_buf, int _n));
+ _READ_WRITE_RETURN_TYPE _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 */
+
+#ifndef _REENT_SMALL
+ struct _reent *_data; /* Here for binary compatibility? Remove? */
+#endif
+
+#ifndef __SINGLE_THREAD__
+ _flock_t _lock; /* for thread-safety locking */
+#endif
+};
+
+#ifdef __LARGE64_FILES
+struct __sFILE64 {
+ 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 */
+
+ struct _reent *_data;
+
+ /* operations */
+ _PTR _cookie; /* cookie passed to io functions */
+
+ _READ_WRITE_RETURN_TYPE _EXFUN((*_read),(_PTR _cookie, char *_buf, int _n));
+ _READ_WRITE_RETURN_TYPE _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 _flags2; /* for future use */
+
+ _off64_t _offset; /* current lseek offset */
+ _fpos64_t _EXFUN((*_seek64),(_PTR _cookie, _fpos64_t _offset, int _whence));
+
+#ifndef __SINGLE_THREAD__
+ _flock_t _lock; /* for thread-safety locking */
+#endif
+};
+typedef struct __sFILE64 __FILE;
+#else
+typedef struct __sFILE __FILE;
+#endif /* __LARGE64_FILES */
+
+struct _glue
+{
+ struct _glue *_next;
+ int _niobs;
+ __FILE *_iobs;
+};
+
+/*
+ * rand48 family support
+ *
+ * Copyright (c) 1993 Martin Birgmeier
+ * All rights reserved.
+ *
+ * You may redistribute unmodified or modified versions of this source
+ * code provided that the above copyright notice and this and the
+ * following conditions are retained.
+ *
+ * This software is provided ``as is'', and comes with no warranties
+ * of any kind. I shall in no event be liable for anything that happens
+ * to anyone/anything when using this software.
+ */
+#define _RAND48_SEED_0 (0x330e)
+#define _RAND48_SEED_1 (0xabcd)
+#define _RAND48_SEED_2 (0x1234)
+#define _RAND48_MULT_0 (0xe66d)
+#define _RAND48_MULT_1 (0xdeec)
+#define _RAND48_MULT_2 (0x0005)
+#define _RAND48_ADD (0x000b)
+struct _rand48 {
+ unsigned short _seed[3];
+ unsigned short _mult[3];
+ unsigned short _add;
+#ifdef _REENT_SMALL
+ /* Put this in here as well, for good luck. */
+ __extension__ unsigned long long _rand_next;
+#endif
+};
+
+/* How big the some arrays are. */
+#define _REENT_EMERGENCY_SIZE 25
+#define _REENT_ASCTIME_SIZE 26
+#define _REENT_SIGNAL_SIZE 24
+
+/*
+ * 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.
+ */
+
+#ifdef _REENT_SMALL
+
+struct _mprec
+{
+ /* used by mprec routines */
+ struct _Bigint *_result;
+ int _result_k;
+ struct _Bigint *_p5s;
+ struct _Bigint **_freelist;
+};
+
+
+struct _misc_reent
+{
+ /* miscellaneous reentrant data */
+ char *_strtok_last;
+ _mbstate_t _mblen_state;
+ _mbstate_t _wctomb_state;
+ _mbstate_t _mbtowc_state;
+ char _l64a_buf[8];
+ int _getdate_err;
+ _mbstate_t _mbrlen_state;
+ _mbstate_t _mbrtowc_state;
+ _mbstate_t _mbsrtowcs_state;
+ _mbstate_t _wcrtomb_state;
+ _mbstate_t _wcsrtombs_state;
+};
+
+/* This version of _reent is layed our with "int"s in pairs, to help
+ * ports with 16-bit int's but 32-bit pointers, align nicely. */
+struct _reent
+{
+
+ /* 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. */
+ __FILE *_stdin, *_stdout, *_stderr; /* XXX */
+
+ int _errno; /* local copy of errno */
+
+ int _inc; /* used by tmpnam */
+
+ char *_emergency;
+
+ int __sdidinit; /* 1 means stdio has been init'd */
+
+ int _current_category; /* used by setlocale */
+ _CONST char *_current_locale;
+
+ struct _mprec *_mp;
+
+ void _EXFUN((*__cleanup),(struct _reent *));
+
+ int _gamma_signgam;
+
+ /* used by some fp conversion routines */
+ int _cvtlen; /* should be size_t */
+ char *_cvtbuf;
+
+ struct _rand48 *_r48;
+ struct __tm *_localtime_buf;
+ char *_asctime_buf;
+
+ /* signal info */
+ void (**(_sig_func))(int);
+
+ /* atexit stuff */
+ struct _atexit *_atexit;
+ struct _atexit _atexit0;
+
+ struct _glue __sglue; /* root of glue chain */
+ __FILE *__sf; /* file descriptors */
+ struct _misc_reent *_misc; /* strtok, multibyte states */
+ char *_signal_buf; /* strsignal */
+};
+
+extern const struct __sFILE_fake __sf_fake_stdin;
+extern const struct __sFILE_fake __sf_fake_stdout;
+extern const struct __sFILE_fake __sf_fake_stderr;
+
+#define _REENT_INIT(var) \
+ { (__FILE *)&__sf_fake_stdin, \
+ (__FILE *)&__sf_fake_stdout, \
+ (__FILE *)&__sf_fake_stderr, \
+ 0, \
+ 0, \
+ _NULL, \
+ 0, \
+ 0, \
+ "C", \
+ _NULL, \
+ _NULL, \
+ 0, \
+ 0, \
+ _NULL, \
+ _NULL, \
+ _NULL, \
+ _NULL, \
+ _NULL, \
+ _NULL, \
+ {_NULL, 0, {_NULL}, _NULL}, \
+ {_NULL, 0, _NULL}, \
+ _NULL, \
+ _NULL, \
+ _NULL \
+ }
+
+#define _REENT_INIT_PTR(var) \
+ { var->_stdin = (__FILE *)&__sf_fake_stdin; \
+ var->_stdout = (__FILE *)&__sf_fake_stdout; \
+ var->_stderr = (__FILE *)&__sf_fake_stderr; \
+ var->_errno = 0; \
+ var->_inc = 0; \
+ var->_emergency = _NULL; \
+ var->__sdidinit = 0; \
+ var->_current_category = 0; \
+ var->_current_locale = "C"; \
+ var->_mp = _NULL; \
+ var->__cleanup = _NULL; \
+ var->_gamma_signgam = 0; \
+ var->_cvtlen = 0; \
+ var->_cvtbuf = _NULL; \
+ var->_r48 = _NULL; \
+ var->_localtime_buf = _NULL; \
+ var->_asctime_buf = _NULL; \
+ var->_sig_func = _NULL; \
+ var->_atexit = _NULL; \
+ var->_atexit0._next = _NULL; \
+ var->_atexit0._ind = 0; \
+ var->_atexit0._fns[0] = _NULL; \
+ var->_atexit0._on_exit_args_ptr = _NULL; \
+ var->__sglue._next = _NULL; \
+ var->__sglue._niobs = 0; \
+ var->__sglue._iobs = _NULL; \
+ var->__sf = 0; \
+ var->_misc = _NULL; \
+ var->_signal_buf = _NULL; \
+ }
+
+/* Only built the assert() calls if we are built with debugging. */
+#if DEBUG
+#include <assert.h>
+#define __reent_assert(x) assert(x)
+#else
+#define __reent_assert(x) ((void)0)
+#endif
+
+/* Generic _REENT check macro. */
+#define _REENT_CHECK(var, what, type, size, init) do { \
+ struct _reent *_r = (var); \
+ if (_r->what == NULL) { \
+ _r->what = (type)malloc(size); \
+ __reent_assert(_r->what); \
+ init; \
+ } \
+} while (0)
+
+#define _REENT_CHECK_TM(var) \
+ _REENT_CHECK(var, _localtime_buf, struct __tm *, sizeof *((var)->_localtime_buf), \
+ /* nothing */)
+
+#define _REENT_CHECK_ASCTIME_BUF(var) \
+ _REENT_CHECK(var, _asctime_buf, char *, _REENT_ASCTIME_SIZE, \
+ memset((var)->_asctime_buf, 0, _REENT_ASCTIME_SIZE))
+
+/* Handle the dynamically allocated rand48 structure. */
+#define _REENT_INIT_RAND48(var) do { \
+ struct _reent *_r = (var); \
+ _r->_r48->_seed[0] = _RAND48_SEED_0; \
+ _r->_r48->_seed[1] = _RAND48_SEED_1; \
+ _r->_r48->_seed[2] = _RAND48_SEED_2; \
+ _r->_r48->_mult[0] = _RAND48_MULT_0; \
+ _r->_r48->_mult[1] = _RAND48_MULT_1; \
+ _r->_r48->_mult[2] = _RAND48_MULT_2; \
+ _r->_r48->_add = _RAND48_ADD; \
+} while (0)
+#define _REENT_CHECK_RAND48(var) \
+ _REENT_CHECK(var, _r48, struct _rand48 *, sizeof *((var)->_r48), _REENT_INIT_RAND48((var)))
+
+#define _REENT_INIT_MP(var) do { \
+ struct _reent *_r = (var); \
+ _r->_mp->_result_k = 0; \
+ _r->_mp->_result = _r->_mp->_p5s = _NULL; \
+ _r->_mp->_freelist = _NULL; \
+} while (0)
+#define _REENT_CHECK_MP(var) \
+ _REENT_CHECK(var, _mp, struct _mprec *, sizeof *((var)->_mp), _REENT_INIT_MP(var))
+
+#define _REENT_CHECK_EMERGENCY(var) \
+ _REENT_CHECK(var, _emergency, char *, _REENT_EMERGENCY_SIZE, /* nothing */)
+
+#define _REENT_INIT_MISC(var) do { \
+ struct _reent *_r = (var); \
+ _r->_misc->_strtok_last = _NULL; \
+ _r->_misc->_mblen_state.__count = 0; \
+ _r->_misc->_mblen_state.__value.__wch = 0; \
+ _r->_misc->_wctomb_state.__count = 0; \
+ _r->_misc->_wctomb_state.__value.__wch = 0; \
+ _r->_misc->_mbtowc_state.__count = 0; \
+ _r->_misc->_mbtowc_state.__value.__wch = 0; \
+ _r->_misc->_mbrlen_state.__count = 0; \
+ _r->_misc->_mbrlen_state.__value.__wch = 0; \
+ _r->_misc->_mbrtowc_state.__count = 0; \
+ _r->_misc->_mbrtowc_state.__value.__wch = 0; \
+ _r->_misc->_mbsrtowcs_state.__count = 0; \
+ _r->_misc->_mbsrtowcs_state.__value.__wch = 0; \
+ _r->_misc->_wcrtomb_state.__count = 0; \
+ _r->_misc->_wcrtomb_state.__value.__wch = 0; \
+ _r->_misc->_wcsrtombs_state.__count = 0; \
+ _r->_misc->_wcsrtombs_state.__value.__wch = 0; \
+ _r->_misc->_l64a_buf[0] = '\0'; \
+ _r->_misc->_getdate_err = 0; \
+} while (0)
+#define _REENT_CHECK_MISC(var) \
+ _REENT_CHECK(var, _misc, struct _misc_reent *, sizeof *((var)->_misc), _REENT_INIT_MISC(var))
+
+#define _REENT_CHECK_SIGNAL_BUF(var) \
+ _REENT_CHECK(var, _signal_buf, char *, _REENT_SIGNAL_SIZE, /* nothing */)
+
+#define _REENT_SIGNGAM(ptr) ((ptr)->_gamma_signgam)
+#define _REENT_RAND_NEXT(ptr) ((ptr)->_r48->_rand_next)
+#define _REENT_RAND48_SEED(ptr) ((ptr)->_r48->_seed)
+#define _REENT_RAND48_MULT(ptr) ((ptr)->_r48->_mult)
+#define _REENT_RAND48_ADD(ptr) ((ptr)->_r48->_add)
+#define _REENT_MP_RESULT(ptr) ((ptr)->_mp->_result)
+#define _REENT_MP_RESULT_K(ptr) ((ptr)->_mp->_result_k)
+#define _REENT_MP_P5S(ptr) ((ptr)->_mp->_p5s)
+#define _REENT_MP_FREELIST(ptr) ((ptr)->_mp->_freelist)
+#define _REENT_ASCTIME_BUF(ptr) ((ptr)->_asctime_buf)
+#define _REENT_TM(ptr) ((ptr)->_localtime_buf)
+#define _REENT_EMERGENCY(ptr) ((ptr)->_emergency)
+#define _REENT_STRTOK_LAST(ptr) ((ptr)->_misc->_strtok_last)
+#define _REENT_MBLEN_STATE(ptr) ((ptr)->_misc->_mblen_state)
+#define _REENT_MBTOWC_STATE(ptr)((ptr)->_misc->_mbtowc_state)
+#define _REENT_WCTOMB_STATE(ptr)((ptr)->_misc->_wctomb_state)
+#define _REENT_MBRLEN_STATE(ptr) ((ptr)->_misc->_mbrlen_state)
+#define _REENT_MBRTOWC_STATE(ptr) ((ptr)->_misc->_mbrtowc_state)
+#define _REENT_MBSRTOWCS_STATE(ptr) ((ptr)->_misc->_mbsrtowcs_state)
+#define _REENT_WCRTOMB_STATE(ptr) ((ptr)->_misc->_wcrtomb_state)
+#define _REENT_WCSRTOMBS_STATE(ptr) ((ptr)->_misc->_wcsrtombs_state)
+#define _REENT_L64A_BUF(ptr) ((ptr)->_misc->_l64a_buf)
+#define _REENT_GETDATE_ERR_P(ptr) (&((ptr)->_misc->_getdate_err))
+#define _REENT_SIGNAL_BUF(ptr) ((ptr)->_signal_buf)
+
+#else /* !_REENT_SMALL */
+
+struct _reent
+{
+ int _errno; /* local copy of 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. */
+ __FILE *_stdin, *_stdout, *_stderr;
+
+ int _inc; /* used by tmpnam */
+ char _emergency[_REENT_EMERGENCY_SIZE];
+
+ 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 _unused_rand;
+ char * _strtok_last;
+ char _asctime_buf[_REENT_ASCTIME_SIZE];
+ struct __tm _localtime_buf;
+ int _gamma_signgam;
+ __extension__ unsigned long long _rand_next;
+ struct _rand48 _r48;
+ _mbstate_t _mblen_state;
+ _mbstate_t _mbtowc_state;
+ _mbstate_t _wctomb_state;
+ char _l64a_buf[8];
+ char _signal_buf[_REENT_SIGNAL_SIZE];
+ int _getdate_err;
+ _mbstate_t _mbrlen_state;
+ _mbstate_t _mbrtowc_state;
+ _mbstate_t _mbsrtowcs_state;
+ _mbstate_t _wcrtomb_state;
+ _mbstate_t _wcsrtombs_state;
+ } _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 __FILE 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 */
+ __FILE __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, \
+ { \
+ { \
+ 0, \
+ _NULL, \
+ "", \
+ {0, 0, 0, 0, 0, 0, 0, 0, 0}, \
+ 0, \
+ 1, \
+ { \
+ {_RAND48_SEED_0, _RAND48_SEED_1, _RAND48_SEED_2}, \
+ {_RAND48_MULT_0, _RAND48_MULT_1, _RAND48_MULT_2}, \
+ _RAND48_ADD \
+ }, \
+ {0, {0}}, \
+ {0, {0}}, \
+ {0, {0}}, \
+ "", \
+ "", \
+ 0, \
+ {0, {0}}, \
+ {0, {0}}, \
+ {0, {0}}, \
+ {0, {0}}, \
+ {0, {0}} \
+ } \
+ }, \
+ _NULL, \
+ {_NULL, 0, {_NULL}, {{_NULL}, {_NULL}, 0, 0}}, \
+ _NULL, \
+ {_NULL, 0, _NULL} \
+ }
+
+#define _REENT_INIT_PTR(var) \
+ { var->_errno = 0; \
+ var->_stdin = &var->__sf[0]; \
+ var->_stdout = &var->__sf[1]; \
+ var->_stderr = &var->__sf[2]; \
+ var->_inc = 0; \
+ memset(&var->_emergency, 0, sizeof(var->_emergency)); \
+ var->_current_category = 0; \
+ var->_current_locale = "C"; \
+ var->__sdidinit = 0; \
+ var->__cleanup = _NULL; \
+ var->_result = _NULL; \
+ var->_result_k = 0; \
+ var->_p5s = _NULL; \
+ var->_freelist = _NULL; \
+ var->_cvtlen = 0; \
+ var->_cvtbuf = _NULL; \
+ var->_new._reent._unused_rand = 0; \
+ var->_new._reent._strtok_last = _NULL; \
+ var->_new._reent._asctime_buf[0] = 0; \
+ memset(&var->_new._reent._localtime_buf, 0, sizeof(var->_new._reent._localtime_buf)); \
+ var->_new._reent._gamma_signgam = 0; \
+ var->_new._reent._rand_next = 1; \
+ var->_new._reent._r48._seed[0] = _RAND48_SEED_0; \
+ var->_new._reent._r48._seed[1] = _RAND48_SEED_1; \
+ var->_new._reent._r48._seed[2] = _RAND48_SEED_2; \
+ var->_new._reent._r48._mult[0] = _RAND48_MULT_0; \
+ var->_new._reent._r48._mult[1] = _RAND48_MULT_1; \
+ var->_new._reent._r48._mult[2] = _RAND48_MULT_2; \
+ var->_new._reent._r48._add = _RAND48_ADD; \
+ var->_new._reent._mblen_state.__count = 0; \
+ var->_new._reent._mblen_state.__value.__wch = 0; \
+ var->_new._reent._mbtowc_state.__count = 0; \
+ var->_new._reent._mbtowc_state.__value.__wch = 0; \
+ var->_new._reent._wctomb_state.__count = 0; \
+ var->_new._reent._wctomb_state.__value.__wch = 0; \
+ var->_new._reent._mbrlen_state.__count = 0; \
+ var->_new._reent._mbrlen_state.__value.__wch = 0; \
+ var->_new._reent._mbrtowc_state.__count = 0; \
+ var->_new._reent._mbrtowc_state.__value.__wch = 0; \
+ var->_new._reent._mbsrtowcs_state.__count = 0; \
+ var->_new._reent._mbsrtowcs_state.__value.__wch = 0; \
+ var->_new._reent._wcrtomb_state.__count = 0; \
+ var->_new._reent._wcrtomb_state.__value.__wch = 0; \
+ var->_new._reent._wcsrtombs_state.__count = 0; \
+ var->_new._reent._wcsrtombs_state.__value.__wch = 0; \
+ var->_new._reent._l64a_buf[0] = '\0'; \
+ var->_new._reent._signal_buf[0] = '\0'; \
+ var->_new._reent._getdate_err = 0; \
+ var->_atexit = _NULL; \
+ var->_atexit0._next = _NULL; \
+ var->_atexit0._ind = 0; \
+ var->_atexit0._fns[0] = _NULL; \
+ var->_atexit0._on_exit_args._fntypes = 0; \
+ var->_atexit0._on_exit_args._fnargs[0] = _NULL; \
+ var->_sig_func = _NULL; \
+ var->__sglue._next = _NULL; \
+ var->__sglue._niobs = 0; \
+ var->__sglue._iobs = _NULL; \
+ memset(&var->__sf, 0, sizeof(var->__sf)); \
+ }
+
+#define _REENT_CHECK_RAND48(ptr) /* nothing */
+#define _REENT_CHECK_MP(ptr) /* nothing */
+#define _REENT_CHECK_TM(ptr) /* nothing */
+#define _REENT_CHECK_ASCTIME_BUF(ptr) /* nothing */
+#define _REENT_CHECK_EMERGENCY(ptr) /* nothing */
+#define _REENT_CHECK_MISC(ptr) /* nothing */
+#define _REENT_CHECK_SIGNAL_BUF(ptr) /* nothing */
+
+#define _REENT_SIGNGAM(ptr) ((ptr)->_new._reent._gamma_signgam)
+#define _REENT_RAND_NEXT(ptr) ((ptr)->_new._reent._rand_next)
+#define _REENT_RAND48_SEED(ptr) ((ptr)->_new._reent._r48._seed)
+#define _REENT_RAND48_MULT(ptr) ((ptr)->_new._reent._r48._mult)
+#define _REENT_RAND48_ADD(ptr) ((ptr)->_new._reent._r48._add)
+#define _REENT_MP_RESULT(ptr) ((ptr)->_result)
+#define _REENT_MP_RESULT_K(ptr) ((ptr)->_result_k)
+#define _REENT_MP_P5S(ptr) ((ptr)->_p5s)
+#define _REENT_MP_FREELIST(ptr) ((ptr)->_freelist)
+#define _REENT_ASCTIME_BUF(ptr) ((ptr)->_new._reent._asctime_buf)
+#define _REENT_TM(ptr) (&(ptr)->_new._reent._localtime_buf)
+#define _REENT_EMERGENCY(ptr) ((ptr)->_emergency)
+#define _REENT_STRTOK_LAST(ptr) ((ptr)->_new._reent._strtok_last)
+#define _REENT_MBLEN_STATE(ptr) ((ptr)->_new._reent._mblen_state)
+#define _REENT_MBTOWC_STATE(ptr)((ptr)->_new._reent._mbtowc_state)
+#define _REENT_WCTOMB_STATE(ptr)((ptr)->_new._reent._wctomb_state)
+#define _REENT_MBRLEN_STATE(ptr)((ptr)->_new._reent._mbrlen_state)
+#define _REENT_MBRTOWC_STATE(ptr)((ptr)->_new._reent._mbrtowc_state)
+#define _REENT_MBSRTOWCS_STATE(ptr)((ptr)->_new._reent._mbsrtowcs_state)
+#define _REENT_WCRTOMB_STATE(ptr)((ptr)->_new._reent._wcrtomb_state)
+#define _REENT_WCSRTOMBS_STATE(ptr)((ptr)->_new._reent._wcsrtombs_state)
+#define _REENT_L64A_BUF(ptr) ((ptr)->_new._reent._l64a_buf)
+#define _REENT_SIGNAL_BUF(ptr) ((ptr)->_new._reent._signal_buf)
+#define _REENT_GETDATE_ERR_P(ptr) (&((ptr)->_new._reent._getdate_err))
+
+#endif /* !_REENT_SMALL */
+
+/*
+ * 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__;
+extern struct _reent *_CONST _global_impure_ptr __ATTRIBUTE_IMPURE_PTR__;
+
+void _reclaim_reent _PARAMS ((struct _reent *));
+
+/* #define _REENT_ONLY define this to get only reentrant routines */
+
+#ifndef _REENT_ONLY
+
+#if defined(__DYNAMIC_REENT__) && !defined(__SINGLE_THREAD__)
+#ifndef __getreent
+ struct _reent * _EXFUN(__getreent, (void));
+#endif
+# define _REENT (__getreent())
+#else /* __SINGLE_THREAD__ || !__DYNAMIC_REENT__ */
+# define _REENT _impure_ptr
+#endif /* __SINGLE_THREAD__ || !__DYNAMIC_REENT__ */
+
+#endif /* !_REENT_ONLY */
+
+#define _GLOBAL_REENT _global_impure_ptr
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _SYS_REENT_H_ */
diff --git a/Unix/i686-elf/include/sys/resource.h b/Unix/i686-elf/include/sys/resource.h
new file mode 100644
index 0000000..eb82755
--- /dev/null
+++ b/Unix/i686-elf/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/Unix/i686-elf/include/sys/sched.h b/Unix/i686-elf/include/sys/sched.h
new file mode 100644
index 0000000..4316b89
--- /dev/null
+++ b/Unix/i686-elf/include/sys/sched.h
@@ -0,0 +1,65 @@
+/*
+ * Written by Joel Sherrill <joel@OARcorp.com>.
+ *
+ * COPYRIGHT (c) 1989-2000.
+ * On-Line Applications Research Corporation (OAR).
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose without fee is hereby granted, provided that this entire notice
+ * is included in all copies of any software which is or includes a copy
+ * or modification of this software.
+ *
+ * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION
+ * OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS
+ * SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
+ *
+ * $Id: sched.h,v 1.2 2002/06/20 19:51:24 fitzsim Exp $
+ */
+
+
+#ifndef __POSIX_SYS_SCHEDULING_h
+#define __POSIX_SYS_SCHEDULING_h
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <sys/unistd.h>
+
+#include <sys/types.h>
+#include <sys/time.h>
+
+/* Scheduling Policies, P1003.1b-1993, p. 250
+ NOTE: SCHED_SPORADIC added by P1003.4b/D8, p. 34. */
+
+#define SCHED_OTHER 0
+#define SCHED_FIFO 1
+#define SCHED_RR 2
+
+#if defined(_POSIX_SPORADIC_SERVER)
+#define SCHED_SPORADIC 3
+#endif
+
+/* Scheduling Parameters, P1003.1b-1993, p. 249
+ NOTE: Fields whose name begins with "ss_" added by P1003.4b/D8, p. 33. */
+
+struct sched_param {
+ int sched_priority; /* Process execution scheduling priority */
+
+#if defined(_POSIX_SPORADIC_SERVER)
+ int ss_low_priority; /* Low scheduling priority for sporadic */
+ /* server */
+ struct timespec ss_replenish_period;
+ /* Replenishment period for sporadic server */
+ struct timespec ss_initial_budget; /* Initial budget for sporadic server */
+#endif
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+/* end of include file */
+
diff --git a/Unix/i686-elf/include/sys/signal.h b/Unix/i686-elf/include/sys/signal.h
new file mode 100644
index 0000000..454fbc1
--- /dev/null
+++ b/Unix/i686-elf/include/sys/signal.h
@@ -0,0 +1,316 @@
+/* sys/signal.h */
+
+#ifndef _SYS_SIGNAL_H
+#define _SYS_SIGNAL_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "_ansi.h"
+#include <sys/features.h>
+
+/* #ifndef __STRICT_ANSI__*/
+
+#if defined(_POSIX_THREADS)
+#include <sys/types.h> /* for pthread data types */
+#endif
+
+typedef unsigned long sigset_t;
+
+#if defined(__rtems__)
+
+#if defined(_POSIX_REALTIME_SIGNALS)
+
+/* sigev_notify values
+ NOTE: P1003.1c/D10, p. 34 adds SIGEV_THREAD. */
+
+#define SIGEV_NONE 1 /* No asynchronous notification shall be delivered */
+ /* when the event of interest occurs. */
+#define SIGEV_SIGNAL 2 /* A queued signal, with an application defined */
+ /* value, shall be delivered when the event of */
+ /* interest occurs. */
+#define SIGEV_THREAD 3 /* A notification function shall be called to */
+ /* perform notification. */
+
+/* Signal Generation and Delivery, P1003.1b-1993, p. 63
+ NOTE: P1003.1c/D10, p. 34 adds sigev_notify_function and
+ sigev_notify_attributes to the sigevent structure. */
+
+union sigval {
+ int sival_int; /* Integer signal value */
+ void *sival_ptr; /* Pointer signal value */
+};
+
+struct sigevent {
+ int sigev_notify; /* Notification type */
+ int sigev_signo; /* Signal number */
+ union sigval sigev_value; /* Signal value */
+
+#if defined(_POSIX_THREADS)
+ void (*sigev_notify_function)( union sigval );
+ /* Notification function */
+ pthread_attr_t *sigev_notify_attributes; /* Notification Attributes */
+#endif
+};
+
+/* Signal Actions, P1003.1b-1993, p. 64 */
+/* si_code values, p. 66 */
+
+#define SI_USER 1 /* Sent by a user. kill(), abort(), etc */
+#define SI_QUEUE 2 /* Sent by sigqueue() */
+#define SI_TIMER 3 /* Sent by expiration of a timer_settime() timer */
+#define SI_ASYNCIO 4 /* Indicates completion of asycnhronous IO */
+#define SI_MESGQ 5 /* Indicates arrival of a message at an empty queue */
+
+typedef struct {
+ int si_signo; /* Signal number */
+ int si_code; /* Cause of the signal */
+ union sigval si_value; /* Signal value */
+} siginfo_t;
+#endif
+
+/* 3.3.8 Synchronously Accept a Signal, P1003.1b-1993, p. 76 */
+
+#define SA_NOCLDSTOP 1 /* Do not generate SIGCHLD when children stop */
+#define SA_SIGINFO 2 /* Invoke the signal catching function with */
+ /* three arguments instead of one. */
+
+/* struct sigaction notes from POSIX:
+ *
+ * (1) Routines stored in sa_handler should take a single int as
+ * their argument although the POSIX standard does not require this.
+ * (2) The fields sa_handler and sa_sigaction may overlap, and a conforming
+ * application should not use both simultaneously.
+ */
+
+typedef void (*_sig_func_ptr)();
+
+struct sigaction {
+ int sa_flags; /* Special flags to affect behavior of signal */
+ sigset_t sa_mask; /* Additional set of signals to be blocked */
+ /* during execution of signal-catching */
+ /* function. */
+ union {
+ _sig_func_ptr _handler; /* SIG_DFL, SIG_IGN, or pointer to a function */
+#if defined(_POSIX_REALTIME_SIGNALS)
+ void (*_sigaction)( int, siginfo_t *, void * );
+#endif
+ } _signal_handlers;
+};
+
+#define sa_handler _signal_handlers._handler
+#if defined(_POSIX_REALTIME_SIGNALS)
+#define sa_sigaction _signal_handlers._sigaction
+#endif
+
+#elif defined(__CYGWIN__)
+#include <cygwin/signal.h>
+#else
+#define SA_NOCLDSTOP 1 /* only value supported now for sa_flags */
+
+typedef void (*_sig_func_ptr)(int);
+
+struct sigaction
+{
+ _sig_func_ptr sa_handler;
+ sigset_t sa_mask;
+ int sa_flags;
+};
+#endif /* defined(__rtems__) */
+
+#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)), 0)
+#define sigdelset(what,sig) (*(what) &= ~(1<<(sig)), 0)
+#define sigemptyset(what) (*(what) = 0, 0)
+#define sigfillset(what) (*(what) = ~(0), 0)
+#define sigismember(what,sig) (((*(what)) & (1<<(sig))) != 0)
+
+int _EXFUN(sigprocmask, (int how, const sigset_t *set, sigset_t *oset));
+
+#if defined(_POSIX_THREADS)
+int _EXFUN(pthread_sigmask, (int how, const sigset_t *set, sigset_t *oset));
+#endif
+
+/* protos for functions found in winsup sources for CYGWIN */
+#if defined(__CYGWIN__) || defined(__rtems__)
+#undef sigaddset
+#undef sigdelset
+#undef sigemptyset
+#undef sigfillset
+#undef sigismember
+/* 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(killpg, (pid_t, 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));
+
+#if defined(_POSIX_THREADS)
+#ifdef __CYGWIN__
+# ifndef _CYGWIN_TYPES_H
+# error You need the winsup sources or a cygwin installation to compile the cygwin version of newlib.
+# endif
+#endif
+int _EXFUN(pthread_kill, (pthread_t thread, int sig));
+#endif
+
+#if defined(_POSIX_REALTIME_SIGNALS)
+
+/* 3.3.8 Synchronously Accept a Signal, P1003.1b-1993, p. 76
+ NOTE: P1003.1c/D10, p. 39 adds sigwait(). */
+
+int _EXFUN(sigwaitinfo, (const sigset_t *set, siginfo_t *info));
+int _EXFUN(sigtimedwait,
+ (const sigset_t *set, siginfo_t *info, const struct timespec *timeout)
+);
+int _EXFUN(sigwait, (const sigset_t *set, int *sig));
+
+/* 3.3.9 Queue a Signal to a Process, P1003.1b-1993, p. 78 */
+int _EXFUN(sigqueue, (pid_t pid, int signo, const union sigval value));
+
+#endif /* defined(_POSIX_REALTIME_SIGNALS) */
+
+#endif /* defined(__CYGWIN__) || defined(__rtems__) */
+
+/* #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(SIGTRAP)
+#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(__rtems__)
+#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 SIGWINCH 24 /* window changed */
+#define SIGUSR1 25 /* user defined signal 1 */
+#define SIGUSR2 26 /* user defined signal 2 */
+
+/* Real-Time Signals Range, P1003.1b-1993, p. 61
+ NOTE: By P1003.1b-1993, this should be at least RTSIG_MAX
+ (which is a minimum of 8) signals.
+ */
+#define SIGRTMIN 27
+#define SIGRTMAX 31
+#define __SIGFIRSTNOTRT SIGHUP
+#define __SIGLASTNOTRT SIGUSR2
+
+#define NSIG 32 /* signal 0 implied */
+
+#elif 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
+
+#ifndef _SIGNAL_H_
+/* Some applications take advantage of the fact that <sys/signal.h>
+ * and <signal.h> are equivalent in glibc. Allow for that here. */
+#include <signal.h>
+#endif
+#endif /* _SYS_SIGNAL_H */
diff --git a/Unix/i686-elf/include/sys/stat.h b/Unix/i686-elf/include/sys/stat.h
new file mode 100644
index 0000000..5163244
--- /dev/null
+++ b/Unix/i686-elf/include/sys/stat.h
@@ -0,0 +1,147 @@
+#ifndef _SYS_STAT_H
+#define _SYS_STAT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <_ansi.h>
+#include <time.h>
+#include <sys/types.h>
+
+/* 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]. */
+
+#ifdef __CYGWIN__
+#include <cygwin/stat.h>
+#ifdef _COMPILING_NEWLIB
+#define stat64 __stat64
+#endif
+#else
+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
+};
+#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 (S_IRUSR | S_IWUSR | S_IXUSR)
+#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 (S_IRGRP | S_IWGRP | S_IXGRP)
+#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 (S_IROTH | S_IWOTH | S_IXOTH)
+#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__) || defined(__CYGWIN__) && !defined(__INSIDE_CYGWIN__)
+int _EXFUN(lstat,( const char *__path, struct stat *__buf ));
+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. */
+#ifdef _COMPILING_NEWLIB
+int _EXFUN(_fstat,( int __fd, struct stat *__sbuf ));
+int _EXFUN(_stat,( const char *__path, struct stat *__sbuf ));
+#ifdef __LARGE64_FILES
+struct stat64;
+int _EXFUN(_fstat64,( int __fd, struct stat64 *__sbuf ));
+#endif
+#endif
+
+#endif /* !_STAT_H_ */
+#ifdef __cplusplus
+}
+#endif
+#endif /* _SYS_STAT_H */
diff --git a/Unix/i686-elf/include/sys/stdio.h b/Unix/i686-elf/include/sys/stdio.h
new file mode 100644
index 0000000..fa9cd5d
--- /dev/null
+++ b/Unix/i686-elf/include/sys/stdio.h
@@ -0,0 +1,27 @@
+#ifndef _NEWLIB_STDIO_H
+#define _NEWLIB_STDIO_H
+
+#include <sys/lock.h>
+#include <sys/reent.h>
+
+/* Internal locking macros, used to protect stdio functions. In the
+ general case, expand to nothing. Use __SSTR flag in FILE _flags to
+ detect if FILE is private to sprintf/sscanf class of functions; if
+ set then do nothing as lock is not initialised. */
+#if !defined(_flockfile)
+#ifndef __SINGLE_THREAD__
+# define _flockfile(fp) (((fp)->_flags & __SSTR) ? 0 : __lock_acquire_recursive((fp)->_lock))
+#else
+# define _flockfile(fp)
+#endif
+#endif
+
+#if !defined(_funlockfile)
+#ifndef __SINGLE_THREAD__
+# define _funlockfile(fp) (((fp)->_flags & __SSTR) ? 0 : __lock_release_recursive((fp)->_lock))
+#else
+# define _funlockfile(fp)
+#endif
+#endif
+
+#endif /* _NEWLIB_STDIO_H */
diff --git a/Unix/i686-elf/include/sys/string.h b/Unix/i686-elf/include/sys/string.h
new file mode 100644
index 0000000..ceedf4b
--- /dev/null
+++ b/Unix/i686-elf/include/sys/string.h
@@ -0,0 +1,2 @@
+/* This is a dummy <sys/string.h> used as a placeholder for
+ systems that need to have a special header file. */
diff --git a/Unix/i686-elf/include/sys/syslimits.h b/Unix/i686-elf/include/sys/syslimits.h
new file mode 100644
index 0000000..ba9dbd6
--- /dev/null
+++ b/Unix/i686-elf/include/sys/syslimits.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 1988, 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.
+ *
+ * @(#)syslimits.h 8.1 (Berkeley) 6/2/93
+ * $FreeBSD: src/sys/sys/syslimits.h,v 1.10 2001/06/18 20:24:54 wollman Exp $
+ */
+
+#ifndef _SYS_SYSLIMITS_H_
+#define _SYS_SYSLIMITS_H_
+
+#define ARG_MAX 65536 /* max bytes for an exec function */
+#ifndef CHILD_MAX
+#define CHILD_MAX 40 /* max simultaneous processes */
+#endif
+#define LINK_MAX 32767 /* max file link count */
+#define MAX_CANON 255 /* max bytes in term canon input line */
+#define MAX_INPUT 255 /* max bytes in terminal input */
+#define NAME_MAX 255 /* max bytes in a file name */
+#define NGROUPS_MAX 16 /* max supplemental group id's */
+#ifndef OPEN_MAX
+#define OPEN_MAX 64 /* max open files per process */
+#endif
+#define PATH_MAX 1024 /* max bytes in pathname */
+#define PIPE_BUF 512 /* max bytes for atomic pipe writes */
+#define IOV_MAX 1024 /* max elements in i/o vector */
+
+#define BC_BASE_MAX 99 /* max ibase/obase values in bc(1) */
+#define BC_DIM_MAX 2048 /* max array elements in bc(1) */
+#define BC_SCALE_MAX 99 /* max scale value in bc(1) */
+#define BC_STRING_MAX 1000 /* max const string length in bc(1) */
+#define COLL_WEIGHTS_MAX 0 /* max weights for order keyword */
+#define EXPR_NEST_MAX 32 /* max expressions nested in expr(1) */
+#define LINE_MAX 2048 /* max bytes in an input line */
+#define RE_DUP_MAX 255 /* max RE's in interval notation */
+
+#endif
diff --git a/Unix/i686-elf/include/sys/time.h b/Unix/i686-elf/include/sys/time.h
new file mode 100644
index 0000000..df31649
--- /dev/null
+++ b/Unix/i686-elf/include/sys/time.h
@@ -0,0 +1,83 @@
+/* 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 {
+ time_t tv_sec;
+ suseconds_t tv_usec;
+};
+
+struct timezone {
+ int tz_minuteswest;
+ int tz_dsttime;
+};
+
+#ifdef __CYGWIN__
+#include <cygwin/sys_time.h>
+#endif /* __CYGWIN__ */
+
+#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;
+};
+
+/* BSD time macros used by RTEMS code */
+#if defined (__rtems__) || defined (__CYGWIN__)
+
+/* Convenience macros for operations on timevals.
+ NOTE: `timercmp' does not work for >= or <=. */
+#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
+#define timerclear(tvp) ((tvp)->tv_sec = (tvp)->tv_usec = 0)
+#define timercmp(a, b, CMP) \
+ (((a)->tv_sec == (b)->tv_sec) ? \
+ ((a)->tv_usec CMP (b)->tv_usec) : \
+ ((a)->tv_sec CMP (b)->tv_sec))
+#define timeradd(a, b, result) \
+ do { \
+ (result)->tv_sec = (a)->tv_sec + (b)->tv_sec; \
+ (result)->tv_usec = (a)->tv_usec + (b)->tv_usec; \
+ if ((result)->tv_usec >= 1000000) \
+ { \
+ ++(result)->tv_sec; \
+ (result)->tv_usec -= 1000000; \
+ } \
+ } while (0)
+#define timersub(a, b, result) \
+ do { \
+ (result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \
+ (result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \
+ if ((result)->tv_usec < 0) { \
+ --(result)->tv_sec; \
+ (result)->tv_usec += 1000000; \
+ } \
+ } while (0)
+#endif /* defined (__rtems__) || defined (__CYGWIN__) */
+
+int _EXFUN(gettimeofday, (struct timeval *__p, struct timezone *__z));
+int _EXFUN(settimeofday, (const struct timeval *, const struct timezone *));
+int _EXFUN(utimes, (const char *__path, const 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/Unix/i686-elf/include/sys/timeb.h b/Unix/i686-elf/include/sys/timeb.h
new file mode 100644
index 0000000..0a2c3de
--- /dev/null
+++ b/Unix/i686-elf/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/Unix/i686-elf/include/sys/times.h b/Unix/i686-elf/include/sys/times.h
new file mode 100644
index 0000000..9375cb1
--- /dev/null
+++ b/Unix/i686-elf/include/sys/times.h
@@ -0,0 +1,28 @@
+#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
+
+/* Get Process Times, P1003.1b-1993, p. 92 */
+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/Unix/i686-elf/include/sys/types.h b/Unix/i686-elf/include/sys/types.h
new file mode 100644
index 0000000..c1bff47
--- /dev/null
+++ b/Unix/i686-elf/include/sys/types.h
@@ -0,0 +1,408 @@
+/* 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
+
+#include <_ansi.h>
+
+#ifndef __INTTYPES_DEFINED__
+#define __INTTYPES_DEFINED__
+
+#include <machine/_types.h>
+
+#if defined(__rtems__)
+/*
+ * The following section is RTEMS specific and is needed to more
+ * closely match the types defined in the BSD sys/types.h.
+ * This is needed to let the RTEMS/BSD TCP/IP stack compile.
+ */
+
+/* deprecated */
+#if ___int8_t_defined
+typedef __uint8_t u_int8_t;
+#endif
+#if ___int16_t_defined
+typedef __uint16_t u_int16_t;
+#endif
+#if ___int32_t_defined
+typedef __uint32_t u_int32_t;
+#endif
+
+#if ___int64_t_defined
+typedef __uint64_t u_int64_t;
+
+/* deprecated */
+typedef __uint64_t u_quad_t;
+typedef __int64_t quad_t;
+typedef quad_t * qaddr_t;
+#endif
+
+#endif
+
+#endif /* ! __INTTYPES_DEFINED */
+
+#ifndef __need_inttypes
+
+#define _SYS_TYPES_H
+#include <sys/_types.h>
+
+#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 _BSDTYPES_DEFINED
+/* also defined in mingw/gmon.h and in w32api/winsock[2].h */
+typedef unsigned char u_char;
+typedef unsigned short u_short;
+typedef unsigned int u_int;
+typedef unsigned long u_long;
+#define _BSDTYPES_DEFINED
+#endif
+
+typedef unsigned short ushort; /* System V compatibility */
+typedef unsigned int uint; /* System V compatibility */
+# endif /*!_POSIX_SOURCE */
+
+#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
+
+/* Time Value Specification Structures, P1003.1b-1993, p. 261 */
+
+struct timespec {
+ time_t tv_sec; /* Seconds */
+ long tv_nsec; /* Nanoseconds */
+};
+
+struct itimerspec {
+ struct timespec it_interval; /* Timer period */
+ struct timespec it_value; /* Timer expiration */
+};
+#endif
+
+typedef long daddr_t;
+typedef char * caddr_t;
+
+#ifndef __CYGWIN__
+#if defined(__MS_types__) || defined(__rtems__) || \
+ defined(__sparc__) || defined(__SPU__)
+typedef unsigned long ino_t;
+#else
+typedef unsigned short ino_t;
+#endif
+#endif /*__CYGWIN__*/
+
+#ifdef __MS_types__
+typedef unsigned long vm_offset_t;
+typedef unsigned long vm_size_t;
+
+#define __BIT_TYPES_DEFINED__
+
+typedef signed 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.).
+ */
+
+#if defined(__rtems__)
+/* device numbers are 32-bit major and and 32-bit minor */
+typedef unsigned long long dev_t;
+#else
+#ifndef __CYGWIN__
+typedef short dev_t;
+#endif
+#endif
+
+#ifndef __CYGWIN__ /* which defines these types in it's own types.h. */
+typedef long off_t;
+
+typedef unsigned short uid_t;
+typedef unsigned short gid_t;
+#endif
+
+typedef int pid_t;
+#ifndef __CYGWIN__
+typedef long key_t;
+#endif
+typedef _ssize_t ssize_t;
+
+#ifndef __CYGWIN__
+#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__ */
+#endif /*__CYGWIN__*/
+
+typedef unsigned short nlink_t;
+
+/* We don't define fd_set and friends if we are compiling POSIX
+ source, or if we have included (or may include as indicated
+ by __USE_W32_SOCKETS) the W32api winsock[2].h header which
+ defines Windows versions of them. Note that a program which
+ includes the W32api winsock[2].h header must know what it is doing;
+ it must not call the cygwin32 select function.
+*/
+# if !(defined (_POSIX_SOURCE) || defined (_WINSOCK_H) || defined (__USE_W32_SOCKETS))
+# define _SYS_TYPES_FD_SET
+# 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) (__extension__ (void)({ \
+ size_t __i; \
+ char *__tmp = (char *)p; \
+ for (__i = 0; __i < sizeof (*(p)); ++__i) \
+ *__tmp++ = 0; \
+}))
+
+# endif /* !(defined (_POSIX_SOURCE) || defined (_WINSOCK_H) || defined (__USE_W32_SOCKETS)) */
+
+#undef __MS_types__
+#undef _ST_INT32
+
+
+#ifndef __clockid_t_defined
+typedef _CLOCKID_T_ clockid_t;
+#define __clockid_t_defined
+#endif
+
+#ifndef __timer_t_defined
+typedef _TIMER_T_ timer_t;
+#define __timer_t_defined
+#endif
+
+typedef unsigned long useconds_t;
+typedef long suseconds_t;
+
+#include <sys/features.h>
+
+
+/* Cygwin will probably never have full posix compliance due to little things
+ * like an inability to set the stackaddress. Cygwin is also using void *
+ * pointers rather than structs to ensure maximum binary compatability with
+ * previous releases.
+ * This means that we don't use the types defined here, but rather in
+ * <cygwin/types.h>
+ */
+#if defined(_POSIX_THREADS) && !defined(__CYGWIN__)
+
+#include <sys/sched.h>
+
+/*
+ * 2.5 Primitive System Data Types, P1003.1c/D10, p. 19.
+ */
+
+typedef __uint32_t pthread_t; /* identify a thread */
+
+/* P1003.1c/D10, p. 118-119 */
+#define PTHREAD_SCOPE_PROCESS 0
+#define PTHREAD_SCOPE_SYSTEM 1
+
+/* P1003.1c/D10, p. 111 */
+#define PTHREAD_INHERIT_SCHED 1 /* scheduling policy and associated */
+ /* attributes are inherited from */
+ /* the calling thread. */
+#define PTHREAD_EXPLICIT_SCHED 2 /* set from provided attribute object */
+
+/* P1003.1c/D10, p. 141 */
+#define PTHREAD_CREATE_DETACHED 0
+#define PTHREAD_CREATE_JOINABLE 1
+
+typedef struct {
+ int is_initialized;
+ void *stackaddr;
+ int stacksize;
+ int contentionscope;
+ int inheritsched;
+ int schedpolicy;
+ struct sched_param schedparam;
+
+ /* P1003.4b/D8, p. 54 adds cputime_clock_allowed attribute. */
+#if defined(_POSIX_THREAD_CPUTIME)
+ int cputime_clock_allowed; /* see time.h */
+#endif
+ int detachstate;
+
+} pthread_attr_t;
+
+#if defined(_POSIX_THREAD_PROCESS_SHARED)
+/* NOTE: P1003.1c/D10, p. 81 defines following values for process_shared. */
+
+#define PTHREAD_PROCESS_PRIVATE 0 /* visible within only the creating process */
+#define PTHREAD_PROCESS_SHARED 1 /* visible too all processes with access to */
+ /* the memory where the resource is */
+ /* located */
+#endif
+
+#if defined(_POSIX_THREAD_PRIO_PROTECT)
+/* Mutexes */
+
+/* Values for blocking protocol. */
+
+#define PTHREAD_PRIO_NONE 0
+#define PTHREAD_PRIO_INHERIT 1
+#define PTHREAD_PRIO_PROTECT 2
+#endif
+
+typedef __uint32_t pthread_mutex_t; /* identify a mutex */
+
+typedef struct {
+ int is_initialized;
+#if defined(_POSIX_THREAD_PROCESS_SHARED)
+ int process_shared; /* allow mutex to be shared amongst processes */
+#endif
+#if defined(_POSIX_THREAD_PRIO_PROTECT)
+ int prio_ceiling;
+ int protocol;
+#endif
+ int recursive;
+} pthread_mutexattr_t;
+
+/* Condition Variables */
+
+typedef __uint32_t pthread_cond_t; /* identify a condition variable */
+
+typedef struct {
+ int is_initialized;
+#if defined(_POSIX_THREAD_PROCESS_SHARED)
+ int process_shared; /* allow this to be shared amongst processes */
+#endif
+} pthread_condattr_t; /* a condition attribute object */
+
+/* Keys */
+
+typedef __uint32_t pthread_key_t; /* thread-specific data keys */
+
+typedef struct {
+ int is_initialized; /* is this structure initialized? */
+ int init_executed; /* has the initialization routine been run? */
+} pthread_once_t; /* dynamic package initialization */
+#else
+#if defined (__CYGWIN__)
+#include <cygwin/types.h>
+#endif
+#endif /* defined(_POSIX_THREADS) */
+
+/* POSIX Barrier Types */
+
+#if defined(_POSIX_BARRIERS)
+typedef __uint32_t pthread_barrier_t; /* POSIX Barrier Object */
+typedef struct {
+ int is_initialized; /* is this structure initialized? */
+#if defined(_POSIX_THREAD_PROCESS_SHARED)
+ int process_shared; /* allow this to be shared amongst processes */
+#endif
+} pthread_barrierattr_t;
+#endif /* defined(_POSIX_BARRIERS) */
+
+/* POSIX Spin Lock Types */
+
+#if defined(_POSIX_SPIN_LOCKS)
+typedef __uint32_t pthread_spinlock_t; /* POSIX Spin Lock Object */
+#endif /* defined(_POSIX_SPIN_LOCKS) */
+
+/* POSIX Reader/Writer Lock Types */
+
+#if defined(_POSIX_READER_WRITER_LOCKS)
+typedef __uint32_t pthread_rwlock_t; /* POSIX RWLock Object */
+typedef struct {
+ int is_initialized; /* is this structure initialized? */
+#if defined(_POSIX_THREAD_PROCESS_SHARED)
+ int process_shared; /* allow this to be shared amongst processes */
+#endif
+} pthread_rwlockattr_t;
+#endif /* defined(_POSIX_READER_WRITER_LOCKS) */
+
+#endif /* !__need_inttypes */
+
+#undef __need_inttypes
+
+#endif /* _SYS_TYPES_H */
diff --git a/Unix/i686-elf/include/sys/unistd.h b/Unix/i686-elf/include/sys/unistd.h
new file mode 100644
index 0000000..9b0e8e6
--- /dev/null
+++ b/Unix/i686-elf/include/sys/unistd.h
@@ -0,0 +1,345 @@
+#ifndef _SYS_UNISTD_H
+#define _SYS_UNISTD_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <_ansi.h>
+#include <sys/types.h>
+#include <sys/_types.h>
+#define __need_size_t
+#define __need_ptrdiff_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 ));
+#if !defined(__INSIDE_CYGWIN__)
+int _EXFUN(chown, (const char *__path, uid_t __owner, gid_t __group ));
+#endif
+#if defined(__CYGWIN__) || defined(__rtems__)
+int _EXFUN(chroot, (const char *__path ));
+#endif
+int _EXFUN(close, (int __fildes ));
+char _EXFUN(*ctermid, (char *__s ));
+char _EXFUN(*cuserid, (char *__s ));
+#if defined(__CYGWIN__)
+int _EXFUN(daemon, (int nochdir, int noclose));
+#endif
+int _EXFUN(dup, (int __fildes ));
+int _EXFUN(dup2, (int __fildes, int __fildes2 ));
+#if defined(__CYGWIN__)
+void _EXFUN(endusershell, (void));
+#endif
+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[] ));
+#if defined(__CYGWIN__) || defined(__rtems__)
+int _EXFUN(fchdir, (int __fildes));
+#endif
+int _EXFUN(fchmod, (int __fildes, mode_t __mode ));
+#if !defined(__INSIDE_CYGWIN__)
+int _EXFUN(fchown, (int __fildes, uid_t __owner, gid_t __group ));
+#endif
+pid_t _EXFUN(fork, (void ));
+long _EXFUN(fpathconf, (int __fd, int __name ));
+int _EXFUN(fsync, (int __fd));
+int _EXFUN(fdatasync, (int __fd));
+char _EXFUN(*getcwd, (char *__buf, size_t __size ));
+#if defined(__CYGWIN__)
+int _EXFUN(getdomainname ,(char *__name, size_t __len));
+#endif
+#if !defined(__INSIDE_CYGWIN__)
+gid_t _EXFUN(getegid, (void ));
+uid_t _EXFUN(geteuid, (void ));
+gid_t _EXFUN(getgid, (void ));
+#endif
+int _EXFUN(getgroups, (int __gidsetsize, gid_t __grouplist[] ));
+#if defined(__CYGWIN__)
+long _EXFUN(gethostid, (void));
+#endif
+char _EXFUN(*getlogin, (void ));
+#if defined(_POSIX_THREAD_SAFE_FUNCTIONS)
+int _EXFUN(getlogin_r, (char *name, size_t namesize) );
+#endif
+char _EXFUN(*getpass, (const char *__prompt));
+size_t _EXFUN(getpagesize, (void));
+#if defined(__CYGWIN__)
+int _EXFUN(getpeereid, (int, uid_t *, gid_t *));
+#endif
+pid_t _EXFUN(getpgid, (pid_t));
+pid_t _EXFUN(getpgrp, (void ));
+pid_t _EXFUN(getpid, (void ));
+pid_t _EXFUN(getppid, (void ));
+#ifdef __CYGWIN__
+pid_t _EXFUN(getsid, (pid_t));
+#endif
+#if !defined(__INSIDE_CYGWIN__)
+uid_t _EXFUN(getuid, (void ));
+#endif
+#ifdef __CYGWIN__
+char * _EXFUN(getusershell, (void));
+char _EXFUN(*getwd, (char *__buf ));
+int _EXFUN(iruserok, (unsigned long raddr, int superuser, const char *ruser, const char *luser));
+#endif
+int _EXFUN(isatty, (int __fildes ));
+#if !defined(__INSIDE_CYGWIN__)
+int _EXFUN(lchown, (const char *__path, uid_t __owner, gid_t __group ));
+#endif
+int _EXFUN(link, (const char *__path1, const char *__path2 ));
+int _EXFUN(nice, (int __nice_value ));
+#if !defined(__INSIDE_CYGWIN__)
+off_t _EXFUN(lseek, (int __fildes, off_t __offset, int __whence ));
+#endif
+long _EXFUN(pathconf, (const char *__path, int __name ));
+int _EXFUN(pause, (void ));
+#ifdef __CYGWIN__
+int _EXFUN(pthread_atfork, (void (*)(void), void (*)(void), void (*)(void)));
+#endif
+int _EXFUN(pipe, (int __fildes[2] ));
+ssize_t _EXFUN(pread, (int __fd, void *__buf, size_t __nbytes, off_t __offset));
+ssize_t _EXFUN(pwrite, (int __fd, const void *__buf, size_t __nbytes, off_t __offset));
+_READ_WRITE_RETURN_TYPE _EXFUN(read, (int __fd, void *__buf, size_t __nbyte ));
+#if defined(__CYGWIN__)
+int _EXFUN(rresvport, (int *__alport));
+int _EXFUN(revoke, (char *__path));
+#endif
+int _EXFUN(rmdir, (const char *__path ));
+#if defined(__CYGWIN__)
+int _EXFUN(ruserok, (const char *rhost, int superuser, const char *ruser, const char *luser));
+#endif
+void * _EXFUN(sbrk, (ptrdiff_t __incr));
+#if !defined(__INSIDE_CYGWIN__)
+#if defined(__CYGWIN__)
+int _EXFUN(setegid, (gid_t __gid ));
+int _EXFUN(seteuid, (uid_t __uid ));
+#endif
+int _EXFUN(setgid, (gid_t __gid ));
+#endif
+#if defined(__CYGWIN__)
+int _EXFUN(setgroups, (int ngroups, const gid_t *grouplist ));
+#endif
+int _EXFUN(setpgid, (pid_t __pid, pid_t __pgid ));
+int _EXFUN(setpgrp, (void ));
+#if defined(__CYGWIN__) && !defined(__INSIDE_CYGWIN__)
+int _EXFUN(setregid, (gid_t __rgid, gid_t __egid));
+int _EXFUN(setreuid, (uid_t __ruid, uid_t __euid));
+#endif
+pid_t _EXFUN(setsid, (void ));
+#if !defined(__INSIDE_CYGWIN__)
+int _EXFUN(setuid, (uid_t __uid ));
+#endif
+#if defined(__CYGWIN__)
+void _EXFUN(setusershell, (void));
+#endif
+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 ));
+#if defined(__CYGWIN__)
+int _EXFUN(ttyname_r, (int, char *, size_t));
+#endif
+int _EXFUN(unlink, (const char *__path ));
+int _EXFUN(vhangup, (void ));
+_READ_WRITE_RETURN_TYPE _EXFUN(write, (int __fd, const void *__buf, size_t __nbyte ));
+
+#ifdef __CYGWIN__
+# define __UNISTD_GETOPT__
+# include <getopt.h>
+# undef __UNISTD_GETOPT__
+#else
+extern char *optarg; /* getopt(3) external variables */
+extern int optind, opterr, optopt;
+int getopt(int, char * const [], const char *);
+extern int optreset; /* getopt(3) external variable */
+#endif
+
+#ifndef _POSIX_SOURCE
+pid_t _EXFUN(vfork, (void ));
+
+extern char *suboptarg; /* getsubopt(3) external variable */
+int getsubopt(char **, char * const *, char **);
+#endif /* _POSIX_SOURCE */
+
+#ifdef _COMPILING_NEWLIB
+/* 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 ));
+#ifdef __LARGE64_FILES
+_off64_t _EXFUN(_lseek64, (int __filedes, _off64_t __offset, int __whence ));
+#endif
+_READ_WRITE_RETURN_TYPE _EXFUN(_read, (int __fd, void *__buf, size_t __nbyte ));
+void * _EXFUN(_sbrk, (ptrdiff_t __incr));
+int _EXFUN(_unlink, (const char *__path ));
+_READ_WRITE_RETURN_TYPE _EXFUN(_write, (int __fd, const void *__buf, size_t __nbyte ));
+int _EXFUN(_execve, (const char *__path, char * const __argv[], char * const __envp[] ));
+#endif
+
+#if defined(__CYGWIN__) || defined(__rtems__) || defined(__sh__)
+#if !defined(__INSIDE_CYGWIN__)
+int _EXFUN(ftruncate, (int __fd, off_t __length));
+int _EXFUN(truncate, (const char *, off_t __length));
+#endif
+#endif
+#if defined(__CYGWIN__) || defined(__rtems__)
+int _EXFUN(getdtablesize, (void));
+int _EXFUN(setdtablesize, (int));
+useconds_t _EXFUN(ualarm, (useconds_t __useconds, useconds_t __interval));
+unsigned _EXFUN(usleep, (unsigned int __useconds));
+#if !(defined (_WINSOCK_H) || defined (__USE_W32_SOCKETS))
+/* winsock[2].h defines as __stdcall, and with int as 2nd arg */
+ int _EXFUN(gethostname, (char *__name, size_t __len));
+#endif
+char * _EXFUN(mktemp, (char *));
+#if defined(__CYGWIN__)
+void _EXFUN(sync, (void));
+#else /* defined(__rtems__) */
+int _EXFUN(sync, (void));
+#endif
+#endif
+int _EXFUN(readlink, (const char *__path, char *__buf, int __buflen));
+int _EXFUN(symlink, (const char *__name1, const char *__name2));
+
+#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
+
+#include <sys/features.h>
+
+#define STDIN_FILENO 0 /* standard input file descriptor */
+#define STDOUT_FILENO 1 /* standard output file descriptor */
+#define STDERR_FILENO 2 /* standard error file descriptor */
+
+/*
+ * 4.8.1 Get Configurable System Variables, P1003.1b-1993, p. 96
+ *
+ * NOTE: Table 4-2, Configurable System Variables, p. 96
+ */
+
+#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
+/* CYGWIN-specific values .. do not touch */
+#define _SC_NPROCESSORS_CONF 9
+#define _SC_NPROCESSORS_ONLN 10
+#define _SC_PHYS_PAGES 11
+#define _SC_AVPHYS_PAGES 12
+/* end of CYGWIN-specific values */
+#define _SC_MQ_OPEN_MAX 13
+#define _SC_MQ_PRIO_MAX 14
+#define _SC_RTSIG_MAX 15
+#define _SC_SEM_NSEMS_MAX 16
+#define _SC_SEM_VALUE_MAX 17
+#define _SC_SIGQUEUE_MAX 18
+#define _SC_TIMER_MAX 19
+#define _SC_TZNAME_MAX 20
+
+#define _SC_ASYNCHRONOUS_IO 21
+#define _SC_FSYNC 22
+#define _SC_MAPPED_FILES 23
+#define _SC_MEMLOCK 24
+#define _SC_MEMLOCK_RANGE 25
+#define _SC_MEMORY_PROTECTION 26
+#define _SC_MESSAGE_PASSING 27
+#define _SC_PRIORITIZED_IO 28
+#define _SC_REALTIME_SIGNALS 29
+#define _SC_SEMAPHORES 30
+#define _SC_SHARED_MEMORY_OBJECTS 31
+#define _SC_SYNCHRONIZED_IO 32
+#define _SC_TIMERS 33
+#define _SC_AIO_LISTIO_MAX 34
+#define _SC_AIO_MAX 35
+#define _SC_AIO_PRIO_DELTA_MAX 36
+#define _SC_DELAYTIMER_MAX 37
+
+/*
+ * P1003.1c/D10, p. 52 adds the following.
+ */
+
+#define _SC_THREAD_KEYS_MAX 38
+#define _SC_THREAD_STACK_MIN 39
+#define _SC_THREAD_THREADS_MAX 40
+#define _SC_TTY_NAME_MAX 41
+
+#define _SC_THREADS 42
+#define _SC_THREAD_ATTR_STACKADDR 43
+#define _SC_THREAD_ATTR_STACKSIZE 44
+#define _SC_THREAD_PRIORITY_SCHEDULING 45
+#define _SC_THREAD_PRIO_INHERIT 46
+/* _SC_THREAD_PRIO_PROTECT was _SC_THREAD_PRIO_CEILING in early drafts */
+#define _SC_THREAD_PRIO_PROTECT 47
+#define _SC_THREAD_PRIO_CEILING _SC_THREAD_PRIO_PROTECT
+#define _SC_THREAD_PROCESS_SHARED 48
+#define _SC_THREAD_SAFE_FUNCTIONS 49
+#define _SC_GETGR_R_SIZE_MAX 50
+#define _SC_GETPW_R_SIZE_MAX 51
+#define _SC_LOGIN_NAME_MAX 52
+#define _SC_THREAD_DESTRUCTOR_ITERATIONS 53
+
+#if !defined(__rtems__)
+#define _SC_STREAM_MAX 100
+#endif
+#if !defined(__CYGWIN__) && !defined(__rtems__)
+#define _SC_PRIORITY_SCHEDULING 101
+#endif
+
+# 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
+# define _PC_FILESIZEBITS 12
+# define _PC_2_SYMLINKS 13
+# define _PC_SYMLINK_MAX 14
+#ifdef __CYGWIN__
+/* Ask for POSIX permission bits support. */
+# define _PC_POSIX_PERMISSIONS 90
+/* Ask for full POSIX permission support including uid/gid settings. */
+# define _PC_POSIX_SECURITY 91
+#endif
+
+/* FIXME: This is temporary until winsup gets sorted out. */
+#ifdef __CYGWIN__
+#define MAXPATHLEN (260 - 1 /* NUL */)
+#else
+# define MAXPATHLEN 1024
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _SYS_UNISTD_H */
diff --git a/Unix/i686-elf/include/sys/utime.h b/Unix/i686-elf/include/sys/utime.h
new file mode 100644
index 0000000..5e937f1
--- /dev/null
+++ b/Unix/i686-elf/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/Unix/i686-elf/include/sys/wait.h b/Unix/i686-elf/include/sys/wait.h
new file mode 100644
index 0000000..0e4a339
--- /dev/null
+++ b/Unix/i686-elf/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/Unix/i686-elf/include/termios.h b/Unix/i686-elf/include/termios.h
new file mode 100644
index 0000000..ee1820c
--- /dev/null
+++ b/Unix/i686-elf/include/termios.h
@@ -0,0 +1,7 @@
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <sys/termios.h>
+#ifdef __cplusplus
+}
+#endif
diff --git a/Unix/i686-elf/include/time.h b/Unix/i686-elf/include/time.h
new file mode 100644
index 0000000..8d3a30c
--- /dev/null
+++ b/Unix/i686-elf/include/time.h
@@ -0,0 +1,251 @@
+/*
+ * time.h
+ *
+ * Struct and function declarations for dealing with time.
+ */
+
+#ifndef _TIME_H_
+#define _TIME_H_
+
+#include "_ansi.h"
+#include <sys/reent.h>
+
+#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>
+
+#include <sys/types.h>
+
+_BEGIN_STD_C
+
+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 *));
+
+_END_STD_C
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef __STRICT_ANSI__
+char *_EXFUN(strptime, (const char *, const char *, struct tm *));
+_VOID _EXFUN(tzset, (_VOID));
+_VOID _EXFUN(_tzset_r, (struct _reent *));
+
+typedef struct __tzrule_struct
+{
+ char ch;
+ int m;
+ int n;
+ int d;
+ int s;
+ time_t change;
+ long offset; /* Match type of _timezone. */
+} __tzrule_type;
+
+typedef struct __tzinfo_struct
+{
+ int __tznorth;
+ int __tzyear;
+ __tzrule_type __tzrule[2];
+} __tzinfo_type;
+
+__tzinfo_type *_EXFUN (__gettzinfo, (_VOID));
+
+/* getdate functions */
+
+#ifdef HAVE_GETDATE
+#ifndef _REENT_ONLY
+#define getdate_err (*__getdate_err())
+int *_EXFUN(__getdate_err,(_VOID));
+
+struct tm * _EXFUN(getdate, (const char *));
+/* getdate_err is set to one of the following values to indicate the error.
+ 1 the DATEMSK environment variable is null or undefined,
+ 2 the template file cannot be opened for reading,
+ 3 failed to get file status information,
+ 4 the template file is not a regular file,
+ 5 an error is encountered while reading the template file,
+ 6 memory allication failed (not enough memory available),
+ 7 there is no line in the template that matches the input,
+ 8 invalid input specification */
+#endif /* !_REENT_ONLY */
+
+/* getdate_r returns the error code as above */
+int _EXFUN(getdate_r, (const char *, struct tm *));
+#endif /* HAVE_GETDATE */
+
+/* defines for the opengroup specifications Derived from Issue 1 of the SVID. */
+extern __IMPORT long _timezone;
+extern __IMPORT int _daylight;
+extern __IMPORT char *_tzname[2];
+
+/* POSIX defines the external tzname being defined in time.h */
+#ifndef tzname
+#define tzname _tzname
+#endif
+#endif /* !__STRICT_ANSI__ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#include <sys/features.h>
+
+#ifdef __CYGWIN__
+#include <cygwin/time.h>
+#endif /*__CYGWIN__*/
+
+#if defined(_POSIX_TIMERS)
+
+#include <signal.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Clocks, P1003.1b-1993, p. 263 */
+
+int _EXFUN(clock_settime, (clockid_t clock_id, const struct timespec *tp));
+int _EXFUN(clock_gettime, (clockid_t clock_id, struct timespec *tp));
+int _EXFUN(clock_getres, (clockid_t clock_id, struct timespec *res));
+
+/* Create a Per-Process Timer, P1003.1b-1993, p. 264 */
+
+int _EXFUN(timer_create,
+ (clockid_t clock_id, struct sigevent *evp, timer_t *timerid));
+
+/* Delete a Per_process Timer, P1003.1b-1993, p. 266 */
+
+int _EXFUN(timer_delete, (timer_t timerid));
+
+/* Per-Process Timers, P1003.1b-1993, p. 267 */
+
+int _EXFUN(timer_settime,
+ (timer_t timerid, int flags, const struct itimerspec *value,
+ struct itimerspec *ovalue));
+int _EXFUN(timer_gettime, (timer_t timerid, struct itimerspec *value));
+int _EXFUN(timer_getoverrun, (timer_t timerid));
+
+/* High Resolution Sleep, P1003.1b-1993, p. 269 */
+
+int _EXFUN(nanosleep, (const struct timespec *rqtp, struct timespec *rmtp));
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _POSIX_TIMERS */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CPU-time Clock Attributes, P1003.4b/D8, p. 54 */
+
+/* values for the clock enable attribute */
+
+#define CLOCK_ENABLED 1 /* clock is enabled, i.e. counting execution time */
+#define CLOCK_DISABLED 0 /* clock is disabled */
+
+/* values for the pthread cputime_clock_allowed attribute */
+
+#define CLOCK_ALLOWED 1 /* If a thread is created with this value a */
+ /* CPU-time clock attached to that thread */
+ /* shall be accessible. */
+#define CLOCK_DISALLOWED 0 /* If a thread is created with this value, the */
+ /* thread shall not have a CPU-time clock */
+ /* accessible. */
+
+/* Manifest Constants, P1003.1b-1993, p. 262 */
+
+#define CLOCK_REALTIME (clockid_t)1
+
+/* Flag indicating time is "absolute" with respect to the clock
+ associated with a time. */
+
+#define TIMER_ABSTIME 4
+
+/* Manifest Constants, P1003.4b/D8, p. 55 */
+
+#if defined(_POSIX_CPUTIME)
+
+/* When used in a clock or timer function call, this is interpreted as
+ the identifier of the CPU_time clock associated with the PROCESS
+ making the function call. */
+
+#define CLOCK_PROCESS_CPUTIME (clockid_t)2
+
+#endif
+
+#if defined(_POSIX_THREAD_CPUTIME)
+
+/* When used in a clock or timer function call, this is interpreted as
+ the identifier of the CPU_time clock associated with the THREAD
+ making the function call. */
+
+#define CLOCK_THREAD_CPUTIME (clockid_t)3
+
+#endif
+
+#if defined(_POSIX_CPUTIME)
+
+/* Accessing a Process CPU-time CLock, P1003.4b/D8, p. 55 */
+
+int _EXFUN(clock_getcpuclockid, (pid_t pid, clockid_t *clock_id));
+
+#endif /* _POSIX_CPUTIME */
+
+#if defined(_POSIX_CPUTIME) || defined(_POSIX_THREAD_CPUTIME)
+
+/* CPU-time Clock Attribute Access, P1003.4b/D8, p. 56 */
+
+int _EXFUN(clock_setenable_attr, (clockid_t clock_id, int attr));
+int _EXFUN(clock_getenable_attr, (clockid_t clock_id, int *attr));
+
+#endif /* _POSIX_CPUTIME or _POSIX_THREAD_CPUTIME */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TIME_H_ */
+
diff --git a/Unix/i686-elf/include/unctrl.h b/Unix/i686-elf/include/unctrl.h
new file mode 100644
index 0000000..0040752
--- /dev/null
+++ b/Unix/i686-elf/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 __IMPORT _CONST char * _CONST __unctrl[256]; /* Control strings. */
+extern __IMPORT _CONST char __unctrllen[256]; /* Control strings length. */
+
+#endif /* _UNCTRL_H_ */
diff --git a/Unix/i686-elf/include/unistd.h b/Unix/i686-elf/include/unistd.h
new file mode 100644
index 0000000..f9fca84
--- /dev/null
+++ b/Unix/i686-elf/include/unistd.h
@@ -0,0 +1,6 @@
+#ifndef _UNISTD_H_
+#define _UNISTD_H_
+
+# include <sys/unistd.h>
+
+#endif /* _UNISTD_H_ */
diff --git a/Unix/i686-elf/include/utime.h b/Unix/i686-elf/include/utime.h
new file mode 100644
index 0000000..652891a
--- /dev/null
+++ b/Unix/i686-elf/include/utime.h
@@ -0,0 +1,12 @@
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <_ansi.h>
+
+/* The utime function is defined in libc/sys/<arch>/sys if it exists. */
+#include <sys/utime.h>
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/Unix/i686-elf/include/utmp.h b/Unix/i686-elf/include/utmp.h
new file mode 100644
index 0000000..88cf6f8
--- /dev/null
+++ b/Unix/i686-elf/include/utmp.h
@@ -0,0 +1,8 @@
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <sys/utmp.h>
+#ifdef __cplusplus
+}
+#endif
+
diff --git a/Unix/i686-elf/include/wchar.h b/Unix/i686-elf/include/wchar.h
new file mode 100644
index 0000000..eeabd35
--- /dev/null
+++ b/Unix/i686-elf/include/wchar.h
@@ -0,0 +1,83 @@
+#ifndef _WCHAR_H_
+#define _WCHAR_H_
+
+#include <_ansi.h>
+
+#include <sys/reent.h>
+
+#define __need_size_t
+#define __need_wchar_t
+#define __need_wint_t
+#include <stddef.h>
+
+/* For _mbstate_t definition. */
+#include <sys/_types.h>
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+#ifndef WEOF
+# define WEOF ((wint_t)-1)
+#endif
+
+#ifndef WCHAR_MIN
+#define WCHAR_MIN 0
+#endif
+
+#ifndef WCHAR_MAX
+#ifdef __WCHAR_MAX__
+#define WCHAR_MAX __WCHAR_MAX__
+#else
+#define WCHAR_MAX 0x7fffffffu
+#endif
+#endif
+
+_BEGIN_STD_C
+
+#ifndef _MBSTATE_T
+#define _MBSTATE_T
+typedef _mbstate_t mbstate_t;
+#endif /* _MBSTATE_T */
+
+wint_t _EXFUN(btowc, (int));
+int _EXFUN(wctob, (wint_t));
+size_t _EXFUN(mbrlen, (const char * , size_t, mbstate_t *));
+size_t _EXFUN(mbrtowc, (wchar_t * , const char * , size_t, mbstate_t *));
+size_t _EXFUN(_mbrtowc_r, (struct _reent *, wchar_t * , const char * ,
+ size_t, mbstate_t *));
+int _EXFUN(mbsinit, (const mbstate_t *));
+size_t _EXFUN(mbsrtowcs, (wchar_t * , const char ** , size_t, mbstate_t *));
+size_t _EXFUN(wcrtomb, (char * , wchar_t, mbstate_t *));
+size_t _EXFUN(_wcrtomb_r, (struct _reent *, char * , wchar_t, mbstate_t *));
+size_t _EXFUN(wcsrtombs, (char * , const wchar_t ** , size_t, mbstate_t *));
+size_t _EXFUN(_wcsrtombs_r, (struct _reent *, char * , const wchar_t ** ,
+ size_t, mbstate_t *));
+wchar_t *_EXFUN(wcscat, (wchar_t * , const wchar_t *));
+wchar_t *_EXFUN(wcschr, (const wchar_t *, wchar_t));
+int _EXFUN(wcscmp, (const wchar_t *, const wchar_t *));
+int _EXFUN(wcscoll, (const wchar_t *, const wchar_t *));
+wchar_t *_EXFUN(wcscpy, (wchar_t * , const wchar_t *));
+size_t _EXFUN(wcscspn, (const wchar_t *, const wchar_t *));
+size_t _EXFUN(wcslcat, (wchar_t *, const wchar_t *, size_t));
+size_t _EXFUN(wcslcpy, (wchar_t *, const wchar_t *, size_t));
+size_t _EXFUN(wcslen, (const wchar_t *));
+wchar_t *_EXFUN(wcsncat, (wchar_t * , const wchar_t * , size_t));
+int _EXFUN(wcsncmp, (const wchar_t *, const wchar_t *, size_t));
+wchar_t *_EXFUN(wcsncpy, (wchar_t * , const wchar_t * , size_t));
+size_t _EXFUN(wcsnlen, (const wchar_t *, size_t));
+wchar_t *_EXFUN(wcspbrk, (const wchar_t *, const wchar_t *));
+wchar_t *_EXFUN(wcsrchr, (const wchar_t *, wchar_t));
+size_t _EXFUN(wcsspn, (const wchar_t *, const wchar_t *));
+wchar_t *_EXFUN(wcsstr, (const wchar_t *, const wchar_t *));
+int _EXFUN(wcswidth, (const wchar_t *, size_t));
+int _EXFUN(wcwidth, (const wchar_t));
+wchar_t *_EXFUN(wmemchr, (const wchar_t *, wchar_t, size_t));
+int _EXFUN(wmemcmp, (const wchar_t *, const wchar_t *, size_t));
+wchar_t *_EXFUN(wmemcpy, (wchar_t * , const wchar_t * , size_t));
+wchar_t *_EXFUN(wmemmove, (wchar_t *, const wchar_t *, size_t));
+wchar_t *_EXFUN(wmemset, (wchar_t *, wchar_t, size_t));
+
+_END_STD_C
+
+#endif /* _WCHAR_H_ */
diff --git a/Unix/i686-elf/include/wctype.h b/Unix/i686-elf/include/wctype.h
new file mode 100644
index 0000000..c72c9de
--- /dev/null
+++ b/Unix/i686-elf/include/wctype.h
@@ -0,0 +1,47 @@
+#ifndef _WCTYPE_H_
+#define _WCTYPE_H_
+
+#include <_ansi.h>
+#include <sys/_types.h>
+
+#define __need_wint_t
+#include <stddef.h>
+
+#ifndef WEOF
+# define WEOF ((wint_t)-1)
+#endif
+
+_BEGIN_STD_C
+
+#ifndef _WCTYPE_T
+#define _WCTYPE_T
+typedef int wctype_t;
+#endif
+
+#ifndef _WCTRANS_T
+#define _WCTRANS_T
+typedef int wctrans_t;
+#endif
+
+int _EXFUN(iswalpha, (wint_t));
+int _EXFUN(iswalnum, (wint_t));
+int _EXFUN(iswblank, (wint_t));
+int _EXFUN(iswcntrl, (wint_t));
+int _EXFUN(iswctype, (wint_t, wctype_t));
+int _EXFUN(iswdigit, (wint_t));
+int _EXFUN(iswgraph, (wint_t));
+int _EXFUN(iswlower, (wint_t));
+int _EXFUN(iswprint, (wint_t));
+int _EXFUN(iswpunct, (wint_t));
+int _EXFUN(iswspace, (wint_t));
+int _EXFUN(iswupper, (wint_t));
+int _EXFUN(iswxdigit, (wint_t));
+wint_t _EXFUN(towctrans, (wint_t, wctrans_t));
+wint_t _EXFUN(towupper, (wint_t));
+wint_t _EXFUN(towlower, (wint_t));
+wctrans_t _EXFUN(wctrans, (const char *));
+wctype_t _EXFUN(wctype, (const char *));
+
+_END_STD_C
+
+#endif /* _WCTYPE_H_ */
diff --git a/Unix/i686-elf/lib/cygmon.ld b/Unix/i686-elf/lib/cygmon.ld
new file mode 100644
index 0000000..ae0d908
--- /dev/null
+++ b/Unix/i686-elf/lib/cygmon.ld
@@ -0,0 +1,101 @@
+STARTUP(cygmon-crt0.o)
+ENTRY(__start)
+GROUP(-lcygmon -lc -lcygmon -lgcc)
+SEARCH_DIR(.)
+__DYNAMIC = 0;
+
+/*
+ * Allocate the stack to be at the top of memory, since the stack
+ * grows down
+ */
+PROVIDE (__stack = 0x500000);
+
+/*
+ * Initalize some symbols to be zero so we can reference them in the
+ * crt0 without core dumping. These functions are all optional, but
+ * we do this so we can have our crt0 always use them if they exist.
+ * This is so BSPs work better when using the crt0 installed with gcc.
+ * We have to initalize them twice, so we multiple object file
+ * formats, as some prepend an underscore.
+ */
+PROVIDE (hardware_init_hook = 0);
+PROVIDE (software_init_hook = 0);
+PROVIDE (__mem_start = 0x100000);
+PROVIDE (___mem_start = 0x100000);
+SECTIONS
+{
+ . = 0x100000;
+ .text : {
+ _ftext = . ;
+ *(.init)
+ eprol = .;
+ *(.text)
+ PROVIDE (__runtime_reloc_start = .);
+ *(.rel.sdata)
+ PROVIDE (__runtime_reloc_stop = .);
+ *(.fini)
+ . = ALIGN(4);
+ __CTOR_LIST__ = .;
+ CONSTRUCTORS
+ LONG(-1)
+ *(.ctors)
+ LONG(0)
+ __CTOR_END__ = .;
+ __DTOR_LIST__ = .;
+ LONG(-1)
+ *(.dtors)
+ LONG(0)
+ __DTOR_END__ = .;
+ PROVIDE(_etext = .);
+ PROVIDE(__etext = .);
+ }
+ . = .;
+ .rdata : {
+ *(.rdata)
+ }
+ .rodata : {
+ *(.rodata)
+ *(.rodata.*)
+ }
+ .eh_frame :
+ {
+ PROVIDE (__EH_FRAME_BEGIN__ = .);
+ *(.eh_frame)
+ PROVIDE (__EH_FRAME_END__ = .);
+ }
+ _fdata = ALIGN(16);
+ .data : {
+ *(.data)
+ *(.gcc_except_table)
+ *(.gcc_exc)
+ }
+ . = ALIGN(8);
+ _gp = . + 0x8000;
+ __global = . + 0x8000;
+ .lit8 : {
+ *(.lit8)
+ }
+ .lit4 : {
+ *(.lit4)
+ }
+ .sdata : {
+ *(.sdata)
+ }
+ . = ALIGN(4);
+ PROVIDE(_edata = .);
+ PROVIDE(__edata = .);
+ fbss = .;
+ _fbss = .;
+ .sbss : {
+ PROVIDE(__bss_start = .);
+ *(.sbss)
+ *(.scommon)
+ }
+ .bss : {
+ *(.bss)
+ *(COMMON)
+ PROVIDE(__bss_end = .);
+ }
+ PROVIDE(_end = .);
+ PROVIDE(__end = .);
+}
diff --git a/Unix/i686-elf/lib/libc.a b/Unix/i686-elf/lib/libc.a
new file mode 100644
index 0000000..c49a874
--- /dev/null
+++ b/Unix/i686-elf/lib/libc.a
Binary files differ
diff --git a/Unix/i686-elf/lib/libcygmon.a b/Unix/i686-elf/lib/libcygmon.a
new file mode 100755
index 0000000..a33cb42
--- /dev/null
+++ b/Unix/i686-elf/lib/libcygmon.a
Binary files differ
diff --git a/Unix/i686-elf/lib/libg.a b/Unix/i686-elf/lib/libg.a
new file mode 100644
index 0000000..c49a874
--- /dev/null
+++ b/Unix/i686-elf/lib/libg.a
Binary files differ
diff --git a/Unix/i686-elf/lib/libm.a b/Unix/i686-elf/lib/libm.a
new file mode 100644
index 0000000..1f6e357
--- /dev/null
+++ b/Unix/i686-elf/lib/libm.a
Binary files differ
diff --git a/Unix/i686-elf/lib/libnosys.a b/Unix/i686-elf/lib/libnosys.a
new file mode 100755
index 0000000..ba78734
--- /dev/null
+++ b/Unix/i686-elf/lib/libnosys.a
Binary files differ