Create a library file for libc
authorRoberto Vargas <roberto.vargas@arm.com>
Tue, 8 May 2018 09:27:10 +0000 (10:27 +0100)
committerRoberto Vargas <roberto.vargas@arm.com>
Fri, 3 Aug 2018 10:31:33 +0000 (11:31 +0100)
TF Makefile was linking all the objects files generated for the
c library instead of creating a static library that could be
used in the linking stage.

Change-Id: I721daea097e9b13cbb42c9f8eaa2af8fea0799cf
Signed-off-by: Roberto Vargas <roberto.vargas@arm.com>
91 files changed:
Makefile
include/lib/libc/assert.h [new file with mode: 0644]
include/lib/libc/inttypes.h [new file with mode: 0644]
include/lib/libc/machine/_inttypes.h [new file with mode: 0644]
include/lib/libc/machine/_limits.h [new file with mode: 0644]
include/lib/libc/machine/_stdint.h [new file with mode: 0644]
include/lib/libc/machine/_types.h [new file with mode: 0644]
include/lib/libc/machine/endian.h [new file with mode: 0644]
include/lib/libc/stdbool.h [new file with mode: 0644]
include/lib/libc/stddef.h [new file with mode: 0644]
include/lib/libc/stdio.h [new file with mode: 0644]
include/lib/libc/stdlib.h [new file with mode: 0644]
include/lib/libc/string.h [new file with mode: 0644]
include/lib/libc/strings.h [new file with mode: 0644]
include/lib/libc/sys/_null.h [new file with mode: 0644]
include/lib/libc/sys/_stdint.h [new file with mode: 0644]
include/lib/libc/sys/_timespec.h [new file with mode: 0644]
include/lib/libc/sys/_types.h [new file with mode: 0644]
include/lib/libc/sys/cdefs.h [new file with mode: 0644]
include/lib/libc/sys/ctype.h [new file with mode: 0644]
include/lib/libc/sys/endian.h [new file with mode: 0644]
include/lib/libc/sys/errno.h [new file with mode: 0644]
include/lib/libc/sys/limits.h [new file with mode: 0644]
include/lib/libc/sys/stdarg.h [new file with mode: 0644]
include/lib/libc/sys/stdint.h [new file with mode: 0644]
include/lib/libc/sys/timespec.h [new file with mode: 0644]
include/lib/libc/sys/types.h [new file with mode: 0644]
include/lib/libc/time.h [new file with mode: 0644]
include/lib/libc/xlocale/_strings.h [new file with mode: 0644]
include/lib/libc/xlocale/_time.h [new file with mode: 0644]
include/lib/stdlib/assert.h [deleted file]
include/lib/stdlib/inttypes.h [deleted file]
include/lib/stdlib/machine/_inttypes.h [deleted file]
include/lib/stdlib/machine/_limits.h [deleted file]
include/lib/stdlib/machine/_stdint.h [deleted file]
include/lib/stdlib/machine/_types.h [deleted file]
include/lib/stdlib/machine/endian.h [deleted file]
include/lib/stdlib/stdbool.h [deleted file]
include/lib/stdlib/stddef.h [deleted file]
include/lib/stdlib/stdio.h [deleted file]
include/lib/stdlib/stdlib.h [deleted file]
include/lib/stdlib/string.h [deleted file]
include/lib/stdlib/strings.h [deleted file]
include/lib/stdlib/sys/_null.h [deleted file]
include/lib/stdlib/sys/_stdint.h [deleted file]
include/lib/stdlib/sys/_timespec.h [deleted file]
include/lib/stdlib/sys/_types.h [deleted file]
include/lib/stdlib/sys/cdefs.h [deleted file]
include/lib/stdlib/sys/ctype.h [deleted file]
include/lib/stdlib/sys/endian.h [deleted file]
include/lib/stdlib/sys/errno.h [deleted file]
include/lib/stdlib/sys/limits.h [deleted file]
include/lib/stdlib/sys/stdarg.h [deleted file]
include/lib/stdlib/sys/stdint.h [deleted file]
include/lib/stdlib/sys/timespec.h [deleted file]
include/lib/stdlib/sys/types.h [deleted file]
include/lib/stdlib/time.h [deleted file]
include/lib/stdlib/xlocale/_strings.h [deleted file]
include/lib/stdlib/xlocale/_time.h [deleted file]
lib/libc/abort.c [new file with mode: 0644]
lib/libc/assert.c [new file with mode: 0644]
lib/libc/exit.c [new file with mode: 0644]
lib/libc/libc.mk [new file with mode: 0644]
lib/libc/mem.c [new file with mode: 0644]
lib/libc/printf.c [new file with mode: 0644]
lib/libc/putchar.c [new file with mode: 0644]
lib/libc/puts.c [new file with mode: 0644]
lib/libc/sscanf.c [new file with mode: 0644]
lib/libc/strchr.c [new file with mode: 0644]
lib/libc/strcmp.c [new file with mode: 0644]
lib/libc/strlen.c [new file with mode: 0644]
lib/libc/strncmp.c [new file with mode: 0644]
lib/libc/strnlen.c [new file with mode: 0644]
lib/libc/subr_prf.c [new file with mode: 0644]
lib/libc/timingsafe_bcmp.c [new file with mode: 0644]
lib/stdlib/abort.c [deleted file]
lib/stdlib/assert.c [deleted file]
lib/stdlib/exit.c [deleted file]
lib/stdlib/mem.c [deleted file]
lib/stdlib/printf.c [deleted file]
lib/stdlib/putchar.c [deleted file]
lib/stdlib/puts.c [deleted file]
lib/stdlib/sscanf.c [deleted file]
lib/stdlib/stdlib.mk [deleted file]
lib/stdlib/strchr.c [deleted file]
lib/stdlib/strcmp.c [deleted file]
lib/stdlib/strlen.c [deleted file]
lib/stdlib/strncmp.c [deleted file]
lib/stdlib/strnlen.c [deleted file]
lib/stdlib/subr_prf.c [deleted file]
lib/stdlib/timingsafe_bcmp.c [deleted file]

index 26098641278d613a5d5e655f3ba56d79ee76abde..9c0ab722e88612d953b497bb94e2d6c9d37ddfee 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -45,7 +45,7 @@ CHECKCODE_ARGS                :=      --no-patch
 # Do not check the coding style on imported library files or documentation files
 INC_LIB_DIRS_TO_CHECK  :=      $(sort $(filter-out                     \
                                        include/lib/libfdt              \
-                                       include/lib/stdlib,             \
+                                       include/lib/libc,               \
                                        $(wildcard include/lib/*)))
 INC_DIRS_TO_CHECK      :=      $(sort $(filter-out                     \
                                        include/lib,                    \
@@ -53,7 +53,7 @@ INC_DIRS_TO_CHECK     :=      $(sort $(filter-out                     \
 LIB_DIRS_TO_CHECK      :=      $(sort $(filter-out                     \
                                        lib/compiler-rt                 \
                                        lib/libfdt%                     \
-                                       lib/stdlib,                     \
+                                       lib/libc,                       \
                                        $(wildcard lib/*)))
 ROOT_DIRS_TO_CHECK     :=      $(sort $(filter-out                     \
                                        lib                             \
@@ -198,7 +198,7 @@ DTC_FLAGS           +=      -I dts -O dtb
 # Common sources and include directories
 ################################################################################
 include lib/compiler-rt/compiler-rt.mk
-include lib/stdlib/stdlib.mk
+include lib/libc/libc.mk
 
 BL_COMMON_SOURCES      +=      common/bl_common.c                      \
                                common/tf_log.c                         \
@@ -211,8 +211,7 @@ BL_COMMON_SOURCES   +=      common/bl_common.c                      \
                                plat/common/plat_log_common.c           \
                                plat/common/${ARCH}/plat_common.c       \
                                plat/common/${ARCH}/platform_helpers.S  \
-                               ${COMPILER_RT_SRCS}                     \
-                               ${STDLIB_SRCS}
+                               ${COMPILER_RT_SRCS}
 
 INCLUDES               +=      -Iinclude                               \
                                -Iinclude/bl1                           \
@@ -671,6 +670,7 @@ ifeq (${ERROR_DEPRECATED},0)
 endif
 
 $(eval $(call MAKE_LIB_DIR))
+$(eval $(call MAKE_LIB,c))
 
 # Expand build macros for the different images
 ifeq (${NEED_BL1},yes)
@@ -747,7 +747,7 @@ realclean distclean:
 checkcodebase:         locate-checkpatch
        @echo "  CHECKING STYLE"
        @if test -d .git ; then                                         \
-               git ls-files | grep -E -v 'libfdt|stdlib|docs|\.md' |   \
+               git ls-files | grep -E -v 'libfdt|libc|docs|\.md' |     \
                while read GIT_FILE ;                                   \
                do ${CHECKPATCH} ${CHECKCODE_ARGS} -f $$GIT_FILE ;      \
                done ;                                                  \
@@ -755,7 +755,7 @@ checkcodebase:              locate-checkpatch
                 find . -type f -not -iwholename "*.git*"               \
                 -not -iwholename "*build*"                             \
                 -not -iwholename "*libfdt*"                            \
-                -not -iwholename "*stdlib*"                            \
+                -not -iwholename "*libc*"                              \
                 -not -iwholename "*docs*"                              \
                 -not -iwholename "*.md"                                \
                 -exec ${CHECKPATCH} ${CHECKCODE_ARGS} -f {} \; ;       \
diff --git a/include/lib/libc/assert.h b/include/lib/libc/assert.h
new file mode 100644 (file)
index 0000000..db567db
--- /dev/null
@@ -0,0 +1,77 @@
+/*-
+ * Copyright (c) 1992, 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. 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.
+ *
+ *     @(#)assert.h    8.2 (Berkeley) 1/21/94
+ * $FreeBSD$
+ */
+/*
+ * Portions copyright (c) 2017, ARM Limited and Contributors.
+ * All rights reserved.
+ */
+
+#ifndef _ASSERT_H_
+#define _ASSERT_H_
+
+#include <debug.h>
+#include <platform_def.h>
+#include <sys/cdefs.h>
+
+#ifndef PLAT_LOG_LEVEL_ASSERT
+#define PLAT_LOG_LEVEL_ASSERT  LOG_LEVEL
+#endif
+
+#if ENABLE_ASSERTIONS
+#define        _assert(e)      assert(e)
+# if PLAT_LOG_LEVEL_ASSERT >= LOG_LEVEL_VERBOSE
+#  define      assert(e)       ((e) ? (void)0 : __assert(__FILE__, __LINE__, #e))
+# elif PLAT_LOG_LEVEL_ASSERT >= LOG_LEVEL_INFO
+#  define      assert(e)       ((e) ? (void)0 : __assert(__FILE__, __LINE__))
+# else
+#  define      assert(e)       ((e) ? (void)0 : __assert())
+# endif
+#else
+#define        assert(e)       ((void)0)
+#define        _assert(e)      ((void)0)
+#endif /* ENABLE_ASSERTIONS */
+
+__BEGIN_DECLS
+#if PLAT_LOG_LEVEL_ASSERT >= LOG_LEVEL_VERBOSE
+void __assert(const char *, unsigned int, const char *) __dead2;
+#elif PLAT_LOG_LEVEL_ASSERT >= LOG_LEVEL_INFO
+void __assert(const char *, unsigned int) __dead2;
+#else
+void __assert(void) __dead2;
+#endif
+__END_DECLS
+
+#endif /* !_ASSERT_H_ */
diff --git a/include/lib/libc/inttypes.h b/include/lib/libc/inttypes.h
new file mode 100644 (file)
index 0000000..269f3e7
--- /dev/null
@@ -0,0 +1,52 @@
+/*-
+ * Copyright (c) 2001 Mike Barcroft <mike@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$
+ */
+
+#ifndef _INTTYPES_H_
+#define        _INTTYPES_H_
+
+#include <machine/_inttypes.h>
+#include <sys/stdint.h>
+
+typedef struct {
+       intmax_t        quot;           /* Quotient. */
+       intmax_t        rem;            /* Remainder. */
+} imaxdiv_t;
+
+__BEGIN_DECLS
+#ifdef _XLOCALE_H_
+#include <xlocale/_inttypes.h>
+#endif
+intmax_t       imaxabs(intmax_t) __pure2;
+imaxdiv_t      imaxdiv(intmax_t, intmax_t) __pure2;
+
+intmax_t       strtoimax(const char *__restrict, char **__restrict, int);
+uintmax_t      strtoumax(const char *__restrict, char **__restrict, int);
+
+__END_DECLS
+
+#endif /* !_INTTYPES_H_ */
diff --git a/include/lib/libc/machine/_inttypes.h b/include/lib/libc/machine/_inttypes.h
new file mode 100644 (file)
index 0000000..7dfe9c3
--- /dev/null
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef _MACHINE_INTTYPES_H_
+#define _MACHINE_INTTYPES_H_
+
+/*
+ * Trusted Firmware does not depend on any definitions in this file. Content
+ * will be added as needed.
+ */
+
+#endif /* !_MACHINE_INTTYPES_H_ */
diff --git a/include/lib/libc/machine/_limits.h b/include/lib/libc/machine/_limits.h
new file mode 100644 (file)
index 0000000..3bdc66f
--- /dev/null
@@ -0,0 +1,105 @@
+/*-
+ * 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.
+ *
+ * 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.
+ *
+ *     @(#)limits.h    8.3 (Berkeley) 1/4/94
+ * $FreeBSD$
+ */
+
+/*
+ * Portions copyright (c) 2017, ARM Limited and Contributors.
+ * All rights reserved.
+ */
+
+#ifndef        _MACHINE__LIMITS_H_
+#define        _MACHINE__LIMITS_H_
+
+/*
+ * According to ANSI (section 2.2.4.2), the values below must be usable by
+ * #if preprocessing directives.  Additionally, the expression must have the
+ * same type as would an expression that is an object of the corresponding
+ * type converted according to the integral promotions.  The subtraction for
+ * INT_MIN, etc., is so the value is not unsigned; e.g., 0x80000000 is an
+ * unsigned int for 32-bit two's complement ANSI compilers (section 3.1.3.2).
+ */
+
+#define        __CHAR_BIT      8               /* number of bits in a char */
+
+#define        __SCHAR_MAX     0x7f            /* max value for a signed char */
+#define        __SCHAR_MIN     (-0x7f-1)       /* min value for a signed char */
+
+#define        __UCHAR_MAX     0xff            /* max value for an unsigned char */
+
+#define        __USHRT_MAX     0xffff          /* max value for an unsigned short */
+#define        __SHRT_MAX      0x7fff          /* max value for a short */
+#define        __SHRT_MIN      (-0x7fff-1)     /* min value for a short */
+
+#define        __UINT_MAX      0xffffffffU     /* max value for an unsigned int */
+#define        __INT_MAX       0x7fffffff      /* max value for an int */
+#define        __INT_MIN       (-0x7fffffff-1) /* min value for an int */
+
+#ifdef AARCH32
+#define        __ULONG_MAX     0xffffffffUL    /* max for an unsigned long */
+#define        __LONG_MAX      0x7fffffffL     /* max for a long */
+#define        __LONG_MIN      (-0x7fffffffL-1) /* min for a long */
+#else
+#define        __ULONG_MAX     0xffffffffffffffffUL    /* max for an unsigned long */
+#define        __LONG_MAX      0x7fffffffffffffffL     /* max for a long */
+#define        __LONG_MIN      (-0x7fffffffffffffffL-1) /* min for a long */
+#endif
+
+#define        __ULLONG_MAX    0xffffffffffffffffULL   /* max for an unsigned long long */
+#define        __LLONG_MAX     0x7fffffffffffffffLL    /* max for a long long */
+#define        __LLONG_MIN     (-0x7fffffffffffffffLL-1) /* min for a long long */
+
+#define        __SSIZE_MAX     __LONG_MAX      /* max value for a ssize_t */
+
+#define        __SIZE_T_MAX    __ULONG_MAX     /* max value for a size_t */
+
+#define        __OFF_MAX       __LONG_MAX      /* max value for an off_t */
+#define        __OFF_MIN       __LONG_MIN      /* min value for an off_t */
+
+#ifdef AARCH32
+/* Quads and long longs are the same size.  Ensure they stay in sync. */
+#define        __UQUAD_MAX     (__ULLONG_MAX)  /* max value for a uquad_t */
+#define        __QUAD_MAX      (__LLONG_MAX)   /* max value for a quad_t */
+#define        __QUAD_MIN      (__LLONG_MIN)   /* min value for a quad_t */
+#else
+/* Quads and longs are the same size.  Ensure they stay in sync. */
+#define        __UQUAD_MAX     (__ULONG_MAX)   /* max value for a uquad_t */
+#define        __QUAD_MAX      (__LONG_MAX)    /* max value for a quad_t */
+#define        __QUAD_MIN      (__LONG_MIN)    /* min value for a quad_t */
+#endif
+
+#ifdef AARCH32
+#define        __LONG_BIT      32
+#else
+#define        __LONG_BIT      64
+#endif
+#define        __WORD_BIT      32
+
+/* Minimum signal stack size. */
+#define        __MINSIGSTKSZ   (1024 * 4)
+
+#endif /* !_MACHINE__LIMITS_H_ */
diff --git a/include/lib/libc/machine/_stdint.h b/include/lib/libc/machine/_stdint.h
new file mode 100644 (file)
index 0000000..ee5372d
--- /dev/null
@@ -0,0 +1,184 @@
+/*-
+ * Copyright (c) 2001, 2002 Mike Barcroft <mike@FreeBSD.org>
+ * Copyright (c) 2001 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Klaus Klein.
+ *
+ * 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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$
+ */
+
+/*
+ * Portions copyright (c) 2016-2017, ARM Limited and Contributors.
+ * All rights reserved.
+ */
+
+#ifndef        _MACHINE__STDINT_H_
+#define        _MACHINE__STDINT_H_
+
+#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS)
+
+#define        INT8_C(c)               (c)
+#define        INT16_C(c)              (c)
+#define        INT32_C(c)              (c)
+#define        INT64_C(c)              (c ## LL)
+
+#define        UINT8_C(c)              (c)
+#define        UINT16_C(c)             (c)
+#define        UINT32_C(c)             (c ## U)
+#define        UINT64_C(c)             (c ## ULL)
+
+#define        INTMAX_C(c)             INT64_C(c)
+#define        UINTMAX_C(c)            UINT64_C(c)
+
+#endif /* !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) */
+
+#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS)
+
+/*
+ * ISO/IEC 9899:1999
+ * 7.18.2.1 Limits of exact-width integer types
+ */
+/* Minimum values of exact-width signed integer types. */
+#define        INT8_MIN        (-0x7f-1)
+#define        INT16_MIN       (-0x7fff-1)
+#define        INT32_MIN       (-0x7fffffff-1)
+#define        INT64_MIN       (-0x7fffffffffffffffLL-1)
+
+/* Maximum values of exact-width signed integer types. */
+#define        INT8_MAX        0x7f
+#define        INT16_MAX       0x7fff
+#define        INT32_MAX       0x7fffffff
+#define        INT64_MAX       0x7fffffffffffffffLL
+
+/* Maximum values of exact-width unsigned integer types. */
+#define        UINT8_MAX       0xff
+#define        UINT16_MAX      0xffff
+#define        UINT32_MAX      0xffffffffU
+#define        UINT64_MAX      0xffffffffffffffffULL
+
+/*
+ * ISO/IEC 9899:1999
+ * 7.18.2.2  Limits of minimum-width integer types
+ */
+/* Minimum values of minimum-width signed integer types. */
+#define        INT_LEAST8_MIN  INT8_MIN
+#define        INT_LEAST16_MIN INT16_MIN
+#define        INT_LEAST32_MIN INT32_MIN
+#define        INT_LEAST64_MIN INT64_MIN
+
+/* Maximum values of minimum-width signed integer types. */
+#define        INT_LEAST8_MAX  INT8_MAX
+#define        INT_LEAST16_MAX INT16_MAX
+#define        INT_LEAST32_MAX INT32_MAX
+#define        INT_LEAST64_MAX INT64_MAX
+
+/* Maximum values of minimum-width unsigned integer types. */
+#define        UINT_LEAST8_MAX  UINT8_MAX
+#define        UINT_LEAST16_MAX UINT16_MAX
+#define        UINT_LEAST32_MAX UINT32_MAX
+#define        UINT_LEAST64_MAX UINT64_MAX
+
+/*
+ * ISO/IEC 9899:1999
+ * 7.18.2.3  Limits of fastest minimum-width integer types
+ */
+/* Minimum values of fastest minimum-width signed integer types. */
+#define        INT_FAST8_MIN   INT32_MIN
+#define        INT_FAST16_MIN  INT32_MIN
+#define        INT_FAST32_MIN  INT32_MIN
+#define        INT_FAST64_MIN  INT64_MIN
+
+/* Maximum values of fastest minimum-width signed integer types. */
+#define        INT_FAST8_MAX   INT32_MAX
+#define        INT_FAST16_MAX  INT32_MAX
+#define        INT_FAST32_MAX  INT32_MAX
+#define        INT_FAST64_MAX  INT64_MAX
+
+/* Maximum values of fastest minimum-width unsigned integer types. */
+#define        UINT_FAST8_MAX  UINT32_MAX
+#define        UINT_FAST16_MAX UINT32_MAX
+#define        UINT_FAST32_MAX UINT32_MAX
+#define        UINT_FAST64_MAX UINT64_MAX
+
+/*
+ * ISO/IEC 9899:1999
+ * 7.18.2.4  Limits of integer types capable of holding object pointers
+ */
+#ifdef AARCH32
+#define        INTPTR_MIN      INT32_MIN
+#define        INTPTR_MAX      INT32_MAX
+#define        UINTPTR_MAX     UINT32_MAX
+#else
+#define        INTPTR_MIN      INT64_MIN
+#define        INTPTR_MAX      INT64_MAX
+#define        UINTPTR_MAX     UINT64_MAX
+#endif
+
+/*
+ * ISO/IEC 9899:1999
+ * 7.18.2.5  Limits of greatest-width integer types
+ */
+#define        INTMAX_MIN      INT64_MIN
+#define        INTMAX_MAX      INT64_MAX
+#define        UINTMAX_MAX     UINT64_MAX
+
+/*
+ * ISO/IEC 9899:1999
+ * 7.18.3  Limits of other integer types
+ */
+/* Limits of ptrdiff_t. */
+#ifdef AARCH32
+#define        PTRDIFF_MIN     INT32_MIN
+#define        PTRDIFF_MAX     INT32_MAX
+#else
+#define        PTRDIFF_MIN     INT64_MIN
+#define        PTRDIFF_MAX     INT64_MAX
+#endif
+
+/* Limits of sig_atomic_t. */
+#define        SIG_ATOMIC_MIN  INT32_MIN
+#define        SIG_ATOMIC_MAX  INT32_MAX
+
+/* Limit of size_t. */
+#ifdef AARCH32
+#define        SIZE_MAX        UINT32_MAX
+#else
+#define        SIZE_MAX        UINT64_MAX
+#endif
+
+#ifndef WCHAR_MIN /* Also possibly defined in <wchar.h> */
+/* Limits of wchar_t. */
+#define        WCHAR_MIN       INT32_MIN
+#define        WCHAR_MAX       INT32_MAX
+#endif
+
+/* Limits of wint_t. */
+#define        WINT_MIN        INT32_MIN
+#define        WINT_MAX        INT32_MAX
+
+#endif /* !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) */
+
+#endif /* !_MACHINE__STDINT_H_ */
diff --git a/include/lib/libc/machine/_types.h b/include/lib/libc/machine/_types.h
new file mode 100644 (file)
index 0000000..037fdf2
--- /dev/null
@@ -0,0 +1,121 @@
+/*-
+ * Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org>
+ * Copyright (c) 1990, 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.
+ * 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.
+ *
+ *     From: @(#)ansi.h        8.2 (Berkeley) 1/4/94
+ *     From: @(#)types.h       8.3 (Berkeley) 1/5/94
+ * $FreeBSD$
+ */
+/*
+ * Portions copyright (c) 2016, ARM Limited and Contributors.
+ * All rights reserved.
+ */
+
+#ifndef _MACHINE__TYPES_H_
+#define        _MACHINE__TYPES_H_
+
+#ifndef _SYS_CDEFS_H_
+#error this file needs sys/cdefs.h as a prerequisite
+#endif
+
+/*
+ * Basic types upon which most other types are built.
+ */
+typedef        __signed char           __int8_t;
+typedef        unsigned char           __uint8_t;
+typedef        short                   __int16_t;
+typedef        unsigned short          __uint16_t;
+typedef        int                     __int32_t;
+typedef        unsigned int            __uint32_t;
+typedef        long long               __int64_t;
+typedef        unsigned long long      __uint64_t;
+
+/*
+ * Standard type definitions.
+ */
+typedef        __int32_t       __clock_t;              /* clock()... */
+typedef        long            __critical_t;
+typedef        double          __double_t;
+typedef        float           __float_t;
+typedef        long            __intfptr_t;
+typedef        __int64_t       __intmax_t;
+typedef        long            __intptr_t;
+typedef        __int32_t       __int_fast8_t;
+typedef        __int32_t       __int_fast16_t;
+typedef        __int32_t       __int_fast32_t;
+typedef        __int64_t       __int_fast64_t;
+typedef        __int8_t        __int_least8_t;
+typedef        __int16_t       __int_least16_t;
+typedef        __int32_t       __int_least32_t;
+typedef        __int64_t       __int_least64_t;
+typedef        long            __ptrdiff_t;            /* ptr1 - ptr2 */
+typedef        long            __register_t;
+typedef        long            __segsz_t;              /* segment size (in pages) */
+#ifdef AARCH32
+typedef        unsigned int    __size_t;               /* sizeof() */
+typedef        int             __ssize_t;              /* byte count or error */
+#elif defined AARCH64
+typedef        unsigned long   __size_t;               /* sizeof() */
+typedef        long            __ssize_t;              /* byte count or error */
+#else
+#error "Only AArch32 or AArch64 supported"
+#endif /* AARCH32 */
+typedef        __int64_t       __time_t;               /* time()... */
+typedef        unsigned long   __uintfptr_t;
+typedef        __uint64_t      __uintmax_t;
+typedef        unsigned long   __uintptr_t;
+typedef        __uint32_t      __uint_fast8_t;
+typedef        __uint32_t      __uint_fast16_t;
+typedef        __uint32_t      __uint_fast32_t;
+typedef        __uint64_t      __uint_fast64_t;
+typedef        __uint8_t       __uint_least8_t;
+typedef        __uint16_t      __uint_least16_t;
+typedef        __uint32_t      __uint_least32_t;
+typedef        __uint64_t      __uint_least64_t;
+typedef        unsigned long   __u_register_t;
+typedef        unsigned long   __vm_offset_t;
+typedef        __int64_t       __vm_ooffset_t;
+typedef        unsigned long   __vm_paddr_t;
+typedef        __uint64_t      __vm_pindex_t;
+typedef        unsigned long   __vm_size_t;
+
+/*
+ * Unusual type definitions.
+ */
+#ifdef __GNUCLIKE_BUILTIN_VARARGS
+typedef __builtin_va_list      __va_list;      /* internally known to gcc */
+#else
+typedef        char *                  __va_list;
+#endif /* __GNUCLIKE_BUILTIN_VARARGS */
+#if defined(__GNUCLIKE_BUILTIN_VAALIST) && !defined(__GNUC_VA_LIST) \
+    && !defined(__NO_GNUC_VA_LIST)
+#define __GNUC_VA_LIST
+typedef __va_list              __gnuc_va_list; /* compatibility w/GNU headers*/
+#endif
+
+#endif /* !_MACHINE__TYPES_H_ */
diff --git a/include/lib/libc/machine/endian.h b/include/lib/libc/machine/endian.h
new file mode 100644 (file)
index 0000000..57e33b1
--- /dev/null
@@ -0,0 +1,168 @@
+/*-
+ * Copyright (c) 2001 David E. O'Brien
+ *
+ * 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. 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.
+ *
+ *     @(#)endian.h    8.1 (Berkeley) 6/10/93
+ * $NetBSD: endian.h,v 1.7 1999/08/21 05:53:51 simonb Exp $
+ * $FreeBSD$
+ */
+/*
+ * Portions copyright (c) 2017, ARM Limited and Contributors.
+ * All rights reserved.
+ */
+
+#ifndef _MACHINE_ENDIAN_H_
+#define        _MACHINE_ENDIAN_H_
+
+#include <sys/_types.h>
+
+/*
+ * Definitions for byte order, according to byte significance from low
+ * address to high.
+ */
+#define        _LITTLE_ENDIAN  1234    /* LSB first: i386, vax */
+#define        _BIG_ENDIAN     4321    /* MSB first: 68000, ibm, net */
+#define        _PDP_ENDIAN     3412    /* LSB first in word, MSW first in long */
+
+#define        _BYTE_ORDER     _LITTLE_ENDIAN
+
+#if __BSD_VISIBLE
+#define        LITTLE_ENDIAN   _LITTLE_ENDIAN
+#define        BIG_ENDIAN      _BIG_ENDIAN
+#define        PDP_ENDIAN      _PDP_ENDIAN
+#define        BYTE_ORDER      _BYTE_ORDER
+#endif
+
+#define        _QUAD_HIGHWORD  1
+#define        _QUAD_LOWWORD 0
+#define        __ntohl(x)        (__bswap32(x))
+#define        __ntohs(x)        (__bswap16(x))
+#define        __htonl(x)        (__bswap32(x))
+#define        __htons(x)        (__bswap16(x))
+
+#ifdef AARCH32
+static __inline __uint64_t
+__bswap64(__uint64_t _x)
+{
+
+       return ((_x >> 56) | ((_x >> 40) & 0xff00) | ((_x >> 24) & 0xff0000) |
+           ((_x >> 8) & 0xff000000) | ((_x << 8) & ((__uint64_t)0xff << 32)) |
+           ((_x << 24) & ((__uint64_t)0xff << 40)) |
+           ((_x << 40) & ((__uint64_t)0xff << 48)) | ((_x << 56)));
+}
+
+static __inline __uint32_t
+__bswap32_var(__uint32_t v)
+{
+       __uint32_t t1;
+
+       __asm __volatile("eor %1, %0, %0, ror #16\n"
+                       "bic %1, %1, #0x00ff0000\n"
+                       "mov %0, %0, ror #8\n"
+                       "eor %0, %0, %1, lsr #8\n"
+                        : "+r" (v), "=r" (t1));
+
+       return (v);
+}
+
+static __inline __uint16_t
+__bswap16_var(__uint16_t v)
+{
+       __uint32_t ret = v & 0xffff;
+
+       __asm __volatile(
+           "mov    %0, %0, ror #8\n"
+           "orr    %0, %0, %0, lsr #16\n"
+           "bic    %0, %0, %0, lsl #16"
+           : "+r" (ret));
+
+       return ((__uint16_t)ret);
+}
+#elif defined AARCH64
+static __inline __uint64_t
+__bswap64(__uint64_t x)
+{
+       __uint64_t ret;
+
+       __asm __volatile("rev %0, %1\n"
+                        : "=&r" (ret), "+r" (x));
+       
+       return (ret);
+}
+
+static __inline __uint32_t
+__bswap32_var(__uint32_t v)
+{
+       __uint32_t ret;
+
+       __asm __volatile("rev32 %x0, %x1\n"
+                        : "=&r" (ret), "+r" (v));
+       
+       return (ret);
+}
+
+static __inline __uint16_t
+__bswap16_var(__uint16_t v)
+{
+       __uint32_t ret;
+
+       __asm __volatile("rev16 %w0, %w1\n"
+                        : "=&r" (ret), "+r" (v));
+
+       return ((__uint16_t)ret);
+}              
+#else
+#error "Only AArch32 or AArch64 supported"
+#endif /* AARCH32 */
+
+#ifdef __OPTIMIZE__
+
+#define        __bswap32_constant(x)   \
+    ((((x) & 0xff000000U) >> 24) |     \
+     (((x) & 0x00ff0000U) >>  8) |     \
+     (((x) & 0x0000ff00U) <<  8) |     \
+     (((x) & 0x000000ffU) << 24))
+
+#define        __bswap16_constant(x)   \
+    ((((x) & 0xff00) >> 8) |           \
+     (((x) & 0x00ff) << 8))
+
+#define        __bswap16(x)    \
+    ((__uint16_t)(__builtin_constant_p(x) ?    \
+     __bswap16_constant(x) :                   \
+     __bswap16_var(x)))
+
+#define        __bswap32(x)    \
+    ((__uint32_t)(__builtin_constant_p(x) ?    \
+     __bswap32_constant(x) :                   \
+     __bswap32_var(x)))
+
+#else
+#define        __bswap16(x)    __bswap16_var(x)
+#define        __bswap32(x)    __bswap32_var(x)
+
+#endif /* __OPTIMIZE__ */
+#endif /* !_MACHINE_ENDIAN_H_ */
diff --git a/include/lib/libc/stdbool.h b/include/lib/libc/stdbool.h
new file mode 100644 (file)
index 0000000..e39aef7
--- /dev/null
@@ -0,0 +1,17 @@
+/*
+ * Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef STDBOOL_H
+#define STDBOOL_H
+
+#define bool   _Bool
+
+#define true   1
+#define false  0
+
+#define __bool_true_false_are_defined  1
+
+#endif /* STDBOOL_H */
diff --git a/include/lib/libc/stddef.h b/include/lib/libc/stddef.h
new file mode 100644 (file)
index 0000000..ea88214
--- /dev/null
@@ -0,0 +1,64 @@
+/*-
+ * Copyright (c) 1990, 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. 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.
+ *
+ *     @(#)stddef.h    8.1 (Berkeley) 6/2/93
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _STDDEF_H_
+#define _STDDEF_H_
+
+#include <sys/cdefs.h>
+#include <sys/_null.h>
+#include <sys/_types.h>
+
+typedef        __ptrdiff_t     ptrdiff_t;
+
+#if __BSD_VISIBLE
+#ifndef _RUNE_T_DECLARED
+typedef        __rune_t        rune_t;
+#define        _RUNE_T_DECLARED
+#endif
+#endif
+
+#ifndef _SIZE_T_DECLARED
+typedef        __size_t        size_t;
+#define        _SIZE_T_DECLARED
+#endif
+
+#ifndef        __cplusplus
+#ifndef _WCHAR_T_DECLARED
+typedef        __wchar_t       wchar_t;
+#define        _WCHAR_T_DECLARED
+#endif
+#endif
+
+#define        offsetof(type, member)  __offsetof(type, member)
+
+#endif /* _STDDEF_H_ */
diff --git a/include/lib/libc/stdio.h b/include/lib/libc/stdio.h
new file mode 100644 (file)
index 0000000..57e5c7f
--- /dev/null
@@ -0,0 +1,78 @@
+/*-
+ * Copyright (c) 1990, 1993
+ *     The Regents of the University of California.  All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Chris Torek.
+ *
+ * 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. 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.
+ *
+ *     @(#)stdio.h     8.5 (Berkeley) 4/29/95
+ * $FreeBSD$
+ */
+
+/*
+ * Portions copyright (c) 2013-2014, ARM Limited and Contributors.
+ * All rights reserved.
+ */
+
+
+#ifndef        _STDIO_H_
+#define        _STDIO_H_
+
+#include <sys/cdefs.h>
+#include <sys/_null.h>
+#include <sys/_types.h>
+
+#ifndef _SIZE_T_DECLARED
+typedef        __size_t        size_t;
+#define        _SIZE_T_DECLARED
+#endif
+
+#ifndef _SSIZE_T_DECLARED
+#define        _SSIZE_T_DECLARED
+typedef        __ssize_t       ssize_t;
+#endif
+
+#define        EOF     (-1)
+
+int     printf(const char * __restrict, ...) __printflike(1, 2);
+int     putchar(int);
+int     puts(const char *);
+int     sprintf(char * __restrict, const char * __restrict, ...)
+       __printflike(2, 3);
+int     vsprintf(char * __restrict, const char * __restrict,
+          __va_list) __printflike(2, 0);
+
+int     sscanf(const char *__restrict, char const *__restrict, ...);
+
+#if __ISO_C_VISIBLE >= 1999
+int     snprintf(char * __restrict, size_t, const char * __restrict,
+          ...) __printflike(3, 4);
+int     vsnprintf(char * __restrict, size_t, const char * __restrict,
+          __va_list) __printflike(3, 0);
+#endif
+
+#endif /* !_STDIO_H_ */
diff --git a/include/lib/libc/stdlib.h b/include/lib/libc/stdlib.h
new file mode 100644 (file)
index 0000000..b1ac1bf
--- /dev/null
@@ -0,0 +1,313 @@
+/*-
+ * Copyright (c) 1990, 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. 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.
+ *
+ *     @(#)stdlib.h    8.5 (Berkeley) 5/19/95
+ * $FreeBSD$
+ */
+
+#ifndef _STDLIB_H_
+#define        _STDLIB_H_
+
+#include <sys/cdefs.h>
+#include <sys/_null.h>
+#include <sys/_types.h>
+
+#if __BSD_VISIBLE
+#ifndef _RUNE_T_DECLARED
+typedef        __rune_t        rune_t;
+#define        _RUNE_T_DECLARED
+#endif
+#endif
+
+#ifndef _SIZE_T_DECLARED
+typedef        __size_t        size_t;
+#define        _SIZE_T_DECLARED
+#endif
+
+typedef struct {
+       int     quot;           /* quotient */
+       int     rem;            /* remainder */
+} div_t;
+
+typedef struct {
+       long    quot;
+       long    rem;
+} ldiv_t;
+
+#define        EXIT_FAILURE    1
+#define        EXIT_SUCCESS    0
+
+#define        RAND_MAX        0x7ffffffd
+
+__BEGIN_DECLS
+#ifdef _XLOCALE_H_
+#include <xlocale/_stdlib.h>
+#endif
+extern int __mb_cur_max;
+extern int ___mb_cur_max(void);
+#define        MB_CUR_MAX      (___mb_cur_max())
+
+_Noreturn void  abort(void);
+int     abs(int) __pure2;
+int     atexit(void (*)(void));
+double  atof(const char *);
+int     atoi(const char *);
+long    atol(const char *);
+void   *bsearch(const void *, const void *, size_t,
+           size_t, int (*)(const void *, const void *));
+void   *calloc(size_t, size_t) __malloc_like;
+div_t   div(int, int) __pure2;
+_Noreturn void  exit(int);
+void    free(void *);
+char   *getenv(const char *);
+long    labs(long) __pure2;
+ldiv_t  ldiv(long, long) __pure2;
+void   *malloc(size_t) __malloc_like;
+int     mblen(const char *, size_t);
+void    qsort(void *, size_t, size_t,
+           int (*)(const void *, const void *));
+int     rand(void);
+void   *realloc(void *, size_t);
+void    srand(unsigned);
+double  strtod(const char *__restrict, char **__restrict);
+float   strtof(const char *__restrict, char **__restrict);
+long    strtol(const char *__restrict, char **__restrict, int);
+long double
+        strtold(const char *__restrict, char **__restrict);
+unsigned long
+        strtoul(const char *__restrict, char **__restrict, int);
+int     system(const char *);
+
+/*
+ * Functions added in C99 which we make conditionally available in the
+ * BSD^C89 namespace if the compiler supports `long long'.
+ * The #if test is more complicated than it ought to be because
+ * __BSD_VISIBLE implies __ISO_C_VISIBLE == 1999 *even if* `long long'
+ * is not supported in the compilation environment (which therefore means
+ * that it can't really be ISO C99).
+ *
+ * (The only other extension made by C99 in thie header is _Exit().)
+ */
+#if __ISO_C_VISIBLE >= 1999
+#ifdef __LONG_LONG_SUPPORTED
+/* LONGLONG */
+typedef struct {
+       long long quot;
+       long long rem;
+} lldiv_t;
+
+/* LONGLONG */
+long long
+        atoll(const char *);
+/* LONGLONG */
+long long
+        llabs(long long) __pure2;
+/* LONGLONG */
+lldiv_t         lldiv(long long, long long) __pure2;
+/* LONGLONG */
+long long
+        strtoll(const char *__restrict, char **__restrict, int);
+/* LONGLONG */
+unsigned long long
+        strtoull(const char *__restrict, char **__restrict, int);
+#endif /* __LONG_LONG_SUPPORTED */
+
+_Noreturn void  _Exit(int);
+#endif /* __ISO_C_VISIBLE >= 1999 */
+
+/*
+ * If we're in a mode greater than C99, expose C11 functions.
+ */
+#if __ISO_C_VISIBLE >= 2011 || __cplusplus >= 201103L
+void *aligned_alloc(size_t, size_t) __malloc_like;
+int    at_quick_exit(void (*)(void));
+_Noreturn void
+       quick_exit(int);
+#endif /* __ISO_C_VISIBLE >= 2011 */
+/*
+ * Extensions made by POSIX relative to C.
+ */
+#if __POSIX_VISIBLE >= 199506 || __XSI_VISIBLE
+char   *realpath(const char *__restrict, char *__restrict);
+#endif
+#if __POSIX_VISIBLE >= 199506
+int     rand_r(unsigned *);                    /* (TSF) */
+#endif
+#if __POSIX_VISIBLE >= 200112
+int     posix_memalign(void **, size_t, size_t); /* (ADV) */
+int     setenv(const char *, const char *, int);
+int     unsetenv(const char *);
+#endif
+
+#if __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE
+int     getsubopt(char **, char *const *, char **);
+#ifndef _MKDTEMP_DECLARED
+char   *mkdtemp(char *);
+#define        _MKDTEMP_DECLARED
+#endif
+#ifndef _MKSTEMP_DECLARED
+int     mkstemp(char *);
+#define        _MKSTEMP_DECLARED
+#endif
+#endif /* __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE */
+
+/*
+ * The only changes to the XSI namespace in revision 6 were the deletion
+ * of the ttyslot() and valloc() functions, which FreeBSD never declared
+ * in this header.  For revision 7, ecvt(), fcvt(), and gcvt(), which
+ * FreeBSD also does not have, and mktemp(), are to be deleted.
+ */
+#if __XSI_VISIBLE
+/* XXX XSI requires pollution from <sys/wait.h> here.  We'd rather not. */
+long    a64l(const char *);
+double  drand48(void);
+/* char        *ecvt(double, int, int * __restrict, int * __restrict); */
+double  erand48(unsigned short[3]);
+/* char        *fcvt(double, int, int * __restrict, int * __restrict); */
+/* char        *gcvt(double, int, int * __restrict, int * __restrict); */
+int     grantpt(int);
+char   *initstate(unsigned long /* XSI requires u_int */, char *, long);
+long    jrand48(unsigned short[3]);
+char   *l64a(long);
+void    lcong48(unsigned short[7]);
+long    lrand48(void);
+#if !defined(_MKTEMP_DECLARED) && (__BSD_VISIBLE || __XSI_VISIBLE <= 600)
+char   *mktemp(char *);
+#define        _MKTEMP_DECLARED
+#endif
+long    mrand48(void);
+long    nrand48(unsigned short[3]);
+int     posix_openpt(int);
+char   *ptsname(int);
+int     putenv(char *);
+long    random(void);
+unsigned short
+       *seed48(unsigned short[3]);
+#ifndef _SETKEY_DECLARED
+int     setkey(const char *);
+#define        _SETKEY_DECLARED
+#endif
+char   *setstate(/* const */ char *);
+void    srand48(long);
+void    srandom(unsigned long);
+int     unlockpt(int);
+#endif /* __XSI_VISIBLE */
+
+#if __BSD_VISIBLE
+extern const char *malloc_conf;
+extern void (*malloc_message)(void *, const char *);
+
+/*
+ * The alloca() function can't be implemented in C, and on some
+ * platforms it can't be implemented at all as a callable function.
+ * The GNU C compiler provides a built-in alloca() which we can use;
+ * in all other cases, provide a prototype, mainly to pacify various
+ * incarnations of lint.  On platforms where alloca() is not in libc,
+ * programs which use it will fail to link when compiled with non-GNU
+ * compilers.
+ */
+#if __GNUC__ >= 2 || defined(__INTEL_COMPILER)
+#undef  alloca /* some GNU bits try to get cute and define this on their own */
+#define alloca(sz) __builtin_alloca(sz)
+#elif defined(lint)
+void   *alloca(size_t);
+#endif
+
+void    abort2(const char *, int, void **) __dead2;
+__uint32_t
+        arc4random(void);
+void    arc4random_addrandom(unsigned char *, int);
+void    arc4random_buf(void *, size_t);
+void    arc4random_stir(void);
+__uint32_t
+        arc4random_uniform(__uint32_t);
+#ifdef __BLOCKS__
+int     atexit_b(void (^)(void));
+void   *bsearch_b(const void *, const void *, size_t,
+           size_t, int (^)(const void *, const void *));
+#endif
+char   *getbsize(int *, long *);
+                                       /* getcap(3) functions */
+char   *cgetcap(char *, const char *, int);
+int     cgetclose(void);
+int     cgetent(char **, char **, const char *);
+int     cgetfirst(char **, char **);
+int     cgetmatch(const char *, const char *);
+int     cgetnext(char **, char **);
+int     cgetnum(char *, const char *, long *);
+int     cgetset(const char *);
+int     cgetstr(char *, const char *, char **);
+int     cgetustr(char *, const char *, char **);
+
+int     daemon(int, int);
+char   *devname(__dev_t, __mode_t);
+char   *devname_r(__dev_t, __mode_t, char *, int);
+char   *fdevname(int);
+char   *fdevname_r(int, char *, int);
+int     getloadavg(double [], int);
+const char *
+        getprogname(void);
+
+int     heapsort(void *, size_t, size_t, int (*)(const void *, const void *));
+#ifdef __BLOCKS__
+int     heapsort_b(void *, size_t, size_t, int (^)(const void *, const void *));
+void    qsort_b(void *, size_t, size_t,
+           int (^)(const void *, const void *));
+#endif
+int     l64a_r(long, char *, int);
+int     mergesort(void *, size_t, size_t, int (*)(const void *, const void *));
+#ifdef __BLOCKS__
+int     mergesort_b(void *, size_t, size_t, int (^)(const void *, const void *));
+#endif
+int     mkostemp(char *, int);
+int     mkostemps(char *, int, int);
+void    qsort_r(void *, size_t, size_t, void *,
+           int (*)(void *, const void *, const void *));
+int     radixsort(const unsigned char **, int, const unsigned char *,
+           unsigned);
+void    *reallocf(void *, size_t);
+int     rpmatch(const char *);
+void    setprogname(const char *);
+int     sradixsort(const unsigned char **, int, const unsigned char *,
+           unsigned);
+void    sranddev(void);
+void    srandomdev(void);
+long long
+       strtonum(const char *, long long, long long, const char **);
+
+/* Deprecated interfaces, to be removed in FreeBSD 6.0. */
+__int64_t
+        strtoq(const char *, char **, int);
+__uint64_t
+        strtouq(const char *, char **, int);
+
+extern char *suboptarg;                        /* getsubopt(3) external variable */
+#endif /* __BSD_VISIBLE */
+__END_DECLS
+
+#endif /* !_STDLIB_H_ */
diff --git a/include/lib/libc/string.h b/include/lib/libc/string.h
new file mode 100644 (file)
index 0000000..56677b2
--- /dev/null
@@ -0,0 +1,69 @@
+/*-
+ * Copyright (c) 1990, 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. 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.
+ *
+ *     @(#)string.h    8.1 (Berkeley) 6/2/93
+ * $FreeBSD$
+ */
+
+/*
+ * Portions copyright (c) 2013-2017, ARM Limited and Contributors.
+ * All rights reserved.
+ */
+
+#ifndef _STRING_H_
+#define        _STRING_H_
+
+#include <sys/cdefs.h>
+#include <sys/_null.h>
+#include <sys/_types.h>
+
+#ifndef _SIZE_T_DECLARED
+typedef        __size_t        size_t;
+#define        _SIZE_T_DECLARED
+#endif
+
+__BEGIN_DECLS
+
+void   *memchr(const void *, int, size_t) __pure;
+int     memcmp(const void *, const void *, size_t) __pure;
+void   *memcpy(void * __restrict, const void * __restrict, size_t);
+void   *memcpy16(void * __restrict, const void * __restrict, size_t);
+void   *memmove(void *, const void *, size_t);
+void   *memset(void *, int, size_t);
+
+char   *strchr(const char *, int) __pure;
+int     strcmp(const char *, const char *) __pure;
+size_t  strlen(const char *) __pure;
+int     strncmp(const char *, const char *, size_t) __pure;
+size_t  strnlen(const char *, size_t) __pure;
+int     strcasecmp(const char *, const char *);
+int     timingsafe_bcmp(const void *, const void *, size_t);
+
+__END_DECLS
+
+#endif /* _STRING_H_ */
diff --git a/include/lib/libc/strings.h b/include/lib/libc/strings.h
new file mode 100644 (file)
index 0000000..2210df0
--- /dev/null
@@ -0,0 +1,71 @@
+/*-
+ * Copyright (c) 2002 Mike Barcroft <mike@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$
+ */
+
+#ifndef _STRINGS_H_
+#define        _STRINGS_H_
+
+#include <sys/cdefs.h>
+#include <sys/_types.h>
+
+#ifndef _SIZE_T_DECLARED
+typedef        __size_t        size_t;
+#define        _SIZE_T_DECLARED
+#endif
+
+__BEGIN_DECLS
+#if __BSD_VISIBLE || __POSIX_VISIBLE <= 200112
+int     bcmp(const void *, const void *, size_t) __pure;       /* LEGACY */
+void    bcopy(const void *, void *, size_t);                   /* LEGACY */
+void    bzero(void *, size_t);                                 /* LEGACY */
+#endif
+#if __BSD_VISIBLE
+void    explicit_bzero(void *, size_t);
+#endif
+#if __XSI_VISIBLE
+int     ffs(int) __pure2;
+#endif
+#if __BSD_VISIBLE
+int     ffsl(long) __pure2;
+int     ffsll(long long) __pure2;
+int     fls(int) __pure2;
+int     flsl(long) __pure2;
+int     flsll(long long) __pure2;
+#endif
+#if __BSD_VISIBLE || __POSIX_VISIBLE <= 200112
+char   *index(const char *, int) __pure;                       /* LEGACY */
+char   *rindex(const char *, int) __pure;                      /* LEGACY */
+#endif
+int     strcasecmp(const char *, const char *) __pure;
+int     strncasecmp(const char *, const char *, size_t) __pure;
+
+#if __POSIX_VISIBLE >= 200809 || defined(_XLOCALE_H_)
+#include <xlocale/_strings.h>
+#endif
+__END_DECLS
+
+#endif /* _STRINGS_H_ */
diff --git a/include/lib/libc/sys/_null.h b/include/lib/libc/sys/_null.h
new file mode 100644 (file)
index 0000000..92706c6
--- /dev/null
@@ -0,0 +1,47 @@
+/*-
+ * Copyright (c) 2003 Marcel Moolenaar
+ * 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 ``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 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$
+ */
+
+#ifndef NULL
+
+#if !defined(__cplusplus)
+#define        NULL    ((void *)0)
+#else
+#if __cplusplus >= 201103L
+#define        NULL    nullptr
+#elif defined(__GNUG__) && defined(__GNUC__) && __GNUC__ >= 4
+#define        NULL    __null
+#else
+#if defined(__LP64__)
+#define        NULL    (0L)
+#else
+#define        NULL    0
+#endif /* __LP64__ */
+#endif /* __GNUG__ */
+#endif /* !__cplusplus */
+
+#endif
diff --git a/include/lib/libc/sys/_stdint.h b/include/lib/libc/sys/_stdint.h
new file mode 100644 (file)
index 0000000..d0f9249
--- /dev/null
@@ -0,0 +1,82 @@
+/*-
+ * Copyright (c) 2011 David E. O'Brien <obrien@FreeBSD.org>
+ * Copyright (c) 2001 Mike Barcroft <mike@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$
+ */
+
+#ifndef _SYS__STDINT_H_
+#define _SYS__STDINT_H_
+
+#ifndef _INT8_T_DECLARED
+typedef        __int8_t                int8_t;
+#define        _INT8_T_DECLARED
+#endif
+
+#ifndef _INT16_T_DECLARED
+typedef        __int16_t               int16_t;
+#define        _INT16_T_DECLARED
+#endif
+
+#ifndef _INT32_T_DECLARED
+typedef        __int32_t               int32_t;
+#define        _INT32_T_DECLARED
+#endif
+
+#ifndef _INT64_T_DECLARED
+typedef        __int64_t               int64_t;
+#define        _INT64_T_DECLARED
+#endif
+
+#ifndef _UINT8_T_DECLARED
+typedef        __uint8_t               uint8_t;
+#define        _UINT8_T_DECLARED
+#endif
+
+#ifndef _UINT16_T_DECLARED
+typedef        __uint16_t              uint16_t;
+#define        _UINT16_T_DECLARED
+#endif
+
+#ifndef _UINT32_T_DECLARED
+typedef        __uint32_t              uint32_t;
+#define        _UINT32_T_DECLARED
+#endif
+
+#ifndef _UINT64_T_DECLARED
+typedef        __uint64_t              uint64_t;
+#define        _UINT64_T_DECLARED
+#endif
+
+#ifndef _INTPTR_T_DECLARED
+typedef        __intptr_t              intptr_t;
+#define        _INTPTR_T_DECLARED
+#endif
+#ifndef _UINTPTR_T_DECLARED
+typedef        __uintptr_t             uintptr_t;
+#define        _UINTPTR_T_DECLARED
+#endif
+
+#endif /* !_SYS__STDINT_H_ */
diff --git a/include/lib/libc/sys/_timespec.h b/include/lib/libc/sys/_timespec.h
new file mode 100644 (file)
index 0000000..d51559c
--- /dev/null
@@ -0,0 +1,49 @@
+/*-
+ * Copyright (c) 1982, 1986, 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.
+ * 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.
+ *
+ *     @(#)time.h      8.5 (Berkeley) 5/4/95
+ * from: FreeBSD: src/sys/sys/time.h,v 1.43 2000/03/20 14:09:05 phk Exp
+ *     $FreeBSD$
+ */
+
+#ifndef _SYS__TIMESPEC_H_
+#define        _SYS__TIMESPEC_H_
+
+#include <sys/_types.h>
+
+#ifndef _TIME_T_DECLARED
+typedef        __time_t        time_t;
+#define        _TIME_T_DECLARED
+#endif
+
+struct timespec {
+       time_t  tv_sec;         /* seconds */
+       long    tv_nsec;        /* and nanoseconds */
+};
+
+#endif /* !_SYS__TIMESPEC_H_ */
diff --git a/include/lib/libc/sys/_types.h b/include/lib/libc/sys/_types.h
new file mode 100644 (file)
index 0000000..c59afd3
--- /dev/null
@@ -0,0 +1,106 @@
+/*-
+ * Copyright (c) 2002 Mike Barcroft <mike@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$
+ */
+
+#ifndef _SYS__TYPES_H_
+#define _SYS__TYPES_H_
+
+#include <sys/cdefs.h>
+#include <machine/_types.h>
+
+/*
+ * Standard type definitions.
+ */
+typedef        __uint32_t      __blksize_t;    /* file block size */
+typedef        __int64_t       __blkcnt_t;     /* file block count */
+typedef        __int32_t       __clockid_t;    /* clock_gettime()... */
+typedef        __uint64_t      __cap_rights_t; /* capability rights */
+typedef        __uint32_t      __fflags_t;     /* file flags */
+typedef        __uint64_t      __fsblkcnt_t;
+typedef        __uint64_t      __fsfilcnt_t;
+typedef        __uint32_t      __gid_t;
+typedef        __int64_t       __id_t;         /* can hold a gid_t, pid_t, or uid_t */
+typedef        __uint32_t      __ino_t;        /* inode number */
+typedef        long            __key_t;        /* IPC key (for Sys V IPC) */
+typedef        __int32_t       __lwpid_t;      /* Thread ID (a.k.a. LWP) */
+typedef        __uint16_t      __mode_t;       /* permissions */
+typedef        int             __accmode_t;    /* access permissions */
+typedef        int             __nl_item;
+typedef        __uint16_t      __nlink_t;      /* link count */
+typedef        __int64_t       __off_t;        /* file offset */
+typedef        __int32_t       __pid_t;        /* process [group] */
+typedef        __int64_t       __rlim_t;       /* resource limit - intentionally */
+                                       /* signed, because of legacy code */
+                                       /* that uses -1 for RLIM_INFINITY */
+typedef        __uint8_t       __sa_family_t;
+typedef        __uint32_t      __socklen_t;
+typedef        long            __suseconds_t;  /* microseconds (signed) */
+typedef        struct __timer  *__timer_t;     /* timer_gettime()... */
+typedef        struct __mq     *__mqd_t;       /* mq_open()... */
+typedef        __uint32_t      __uid_t;
+typedef        unsigned int    __useconds_t;   /* microseconds (unsigned) */
+typedef        int             __cpuwhich_t;   /* which parameter for cpuset. */
+typedef        int             __cpulevel_t;   /* level parameter for cpuset. */
+typedef int            __cpusetid_t;   /* cpuset identifier. */
+
+/*
+ * Unusual type definitions.
+ */
+/*
+ * rune_t is declared to be an ``int'' instead of the more natural
+ * ``unsigned long'' or ``long''.  Two things are happening here.  It is not
+ * unsigned so that EOF (-1) can be naturally assigned to it and used.  Also,
+ * it looks like 10646 will be a 31 bit standard.  This means that if your
+ * ints cannot hold 32 bits, you will be in trouble.  The reason an int was
+ * chosen over a long is that the is*() and to*() routines take ints (says
+ * ANSI C), but they use __ct_rune_t instead of int.
+ *
+ * NOTE: rune_t is not covered by ANSI nor other standards, and should not
+ * be instantiated outside of lib/libc/locale.  Use wchar_t.  wchar_t and
+ * rune_t must be the same type.  Also, wint_t must be no narrower than
+ * wchar_t, and should be able to hold all members of the largest
+ * character set plus one extra value (WEOF), and must be at least 16 bits.
+ */
+typedef        int             __ct_rune_t;    /* arg type for ctype funcs */
+typedef        __ct_rune_t     __rune_t;       /* rune_t (see above) */
+typedef        __ct_rune_t     __wchar_t;      /* wchar_t (see above) */
+typedef        __ct_rune_t     __wint_t;       /* wint_t (see above) */
+
+typedef        __uint32_t      __dev_t;        /* device number */
+
+typedef        __uint32_t      __fixpt_t;      /* fixed point number */
+
+/*
+ * mbstate_t is an opaque object to keep conversion state during multibyte
+ * stream conversions.
+ */
+typedef union {
+       char            __mbstate8[128];
+       __int64_t       _mbstateL;      /* for alignment */
+} __mbstate_t;
+
+#endif /* !_SYS__TYPES_H_ */
diff --git a/include/lib/libc/sys/cdefs.h b/include/lib/libc/sys/cdefs.h
new file mode 100644 (file)
index 0000000..70c09fd
--- /dev/null
@@ -0,0 +1,688 @@
+/*-
+ * 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.
+ * 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$
+ */
+
+#ifndef        _SYS_CDEFS_H_
+#define        _SYS_CDEFS_H_
+
+#if defined(__cplusplus)
+#define        __BEGIN_DECLS   extern "C" {
+#define        __END_DECLS     }
+#else
+#define        __BEGIN_DECLS
+#define        __END_DECLS
+#endif
+
+/*
+ * This code has been put in place to help reduce the addition of
+ * compiler specific defines in FreeBSD code.  It helps to aid in
+ * having a compiler-agnostic source tree.
+ */
+
+#if defined(__GNUC__) || defined(__INTEL_COMPILER)
+
+#if __GNUC__ >= 3 || defined(__INTEL_COMPILER)
+#define __GNUCLIKE_ASM 3
+#define __GNUCLIKE_MATH_BUILTIN_CONSTANTS
+#else
+#define __GNUCLIKE_ASM 2
+#endif
+#define __GNUCLIKE___TYPEOF 1
+#define __GNUCLIKE___OFFSETOF 1
+#define __GNUCLIKE___SECTION 1
+
+#ifndef __INTEL_COMPILER
+# define __GNUCLIKE_CTOR_SECTION_HANDLING 1
+#endif
+
+#define __GNUCLIKE_BUILTIN_CONSTANT_P 1
+# if defined(__INTEL_COMPILER) && defined(__cplusplus) \
+    && __INTEL_COMPILER < 800
+#  undef __GNUCLIKE_BUILTIN_CONSTANT_P
+# endif
+
+#if (__GNUC_MINOR__ > 95 || __GNUC__ >= 3) && !defined(__INTEL_COMPILER)
+# define __GNUCLIKE_BUILTIN_VARARGS 1
+# define __GNUCLIKE_BUILTIN_STDARG 1
+# define __GNUCLIKE_BUILTIN_VAALIST 1
+#endif
+
+#if defined(__GNUC__)
+# define __GNUC_VA_LIST_COMPATIBILITY 1
+#endif
+
+#ifndef __INTEL_COMPILER
+# define __GNUCLIKE_BUILTIN_NEXT_ARG 1
+# define __GNUCLIKE_MATH_BUILTIN_RELOPS
+#endif
+
+#define __GNUCLIKE_BUILTIN_MEMCPY 1
+
+/* XXX: if __GNUC__ >= 2: not tested everywhere originally, where replaced */
+#define __CC_SUPPORTS_INLINE 1
+#define __CC_SUPPORTS___INLINE 1
+#define __CC_SUPPORTS___INLINE__ 1
+
+#define __CC_SUPPORTS___FUNC__ 1
+#define __CC_SUPPORTS_WARNING 1
+
+#define __CC_SUPPORTS_VARADIC_XXX 1 /* see varargs.h */
+
+#define __CC_SUPPORTS_DYNAMIC_ARRAY_INIT 1
+
+#endif /* __GNUC__ || __INTEL_COMPILER */
+
+/*
+ * Macro to test if we're using a specific version of gcc or later.
+ */
+#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
+#define        __GNUC_PREREQ__(ma, mi) \
+       (__GNUC__ > (ma) || __GNUC__ == (ma) && __GNUC_MINOR__ >= (mi))
+#else
+#define        __GNUC_PREREQ__(ma, mi) 0
+#endif
+
+/*
+ * The __CONCAT macro is used to concatenate parts of symbol names, e.g.
+ * with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo.
+ * The __CONCAT macro is a bit tricky to use if it must work in non-ANSI
+ * mode -- there must be no spaces between its arguments, and for nested
+ * __CONCAT's, all the __CONCAT's must be at the left.  __CONCAT can also
+ * concatenate double-quoted strings produced by the __STRING macro, but
+ * this only works with ANSI C.
+ *
+ * __XSTRING is like __STRING, but it expands any macros in its argument
+ * first.  It is only available with ANSI C.
+ */
+#if defined(__STDC__) || defined(__cplusplus)
+#define        __P(protos)     protos          /* full-blown ANSI C */
+#define        __CONCAT1(x,y)  x ## y
+#define        __CONCAT(x,y)   __CONCAT1(x,y)
+#define        __STRING(x)     #x              /* stringify without expanding x */
+#define        __XSTRING(x)    __STRING(x)     /* expand x, then stringify */
+
+#define        __const         const           /* define reserved names to standard */
+#define        __signed        signed
+#define        __volatile      volatile
+#if defined(__cplusplus)
+#define        __inline        inline          /* convert to C++ keyword */
+#else
+#if !(defined(__CC_SUPPORTS___INLINE))
+#define        __inline                        /* delete GCC keyword */
+#endif /* ! __CC_SUPPORTS___INLINE */
+#endif /* !__cplusplus */
+
+#else  /* !(__STDC__ || __cplusplus) */
+#define        __P(protos)     ()              /* traditional C preprocessor */
+#define        __CONCAT(x,y)   x/**/y
+#define        __STRING(x)     "x"
+
+#if !defined(__CC_SUPPORTS___INLINE)
+#define        __const                         /* delete pseudo-ANSI C keywords */
+#define        __inline
+#define        __signed
+#define        __volatile
+/*
+ * In non-ANSI C environments, new programs will want ANSI-only C keywords
+ * deleted from the program and old programs will want them left alone.
+ * When using a compiler other than gcc, programs using the ANSI C keywords
+ * const, inline etc. as normal identifiers should define -DNO_ANSI_KEYWORDS.
+ * When using "gcc -traditional", we assume that this is the intent; if
+ * __GNUC__ is defined but __STDC__ is not, we leave the new keywords alone.
+ */
+#ifndef        NO_ANSI_KEYWORDS
+#define        const                           /* delete ANSI C keywords */
+#define        inline
+#define        signed
+#define        volatile
+#endif /* !NO_ANSI_KEYWORDS */
+#endif /* !__CC_SUPPORTS___INLINE */
+#endif /* !(__STDC__ || __cplusplus) */
+
+/*
+ * Compiler-dependent macros to help declare dead (non-returning) and
+ * pure (no side effects) functions, and unused variables.  They are
+ * null except for versions of gcc that are known to support the features
+ * properly (old versions of gcc-2 supported the dead and pure features
+ * in a different (wrong) way).  If we do not provide an implementation
+ * for a given compiler, let the compile fail if it is told to use
+ * a feature that we cannot live without.
+ */
+#ifdef lint
+#define        __dead2
+#define        __pure2
+#define        __unused
+#define        __packed
+#define        __aligned(x)
+#define        __section(x)
+#else
+#if !__GNUC_PREREQ__(2, 5) && !defined(__INTEL_COMPILER)
+#define        __dead2
+#define        __pure2
+#define        __unused
+#endif
+#if __GNUC__ == 2 && __GNUC_MINOR__ >= 5 && __GNUC_MINOR__ < 7 && !defined(__INTEL_COMPILER)
+#define        __dead2         __attribute__((__noreturn__))
+#define        __pure2         __attribute__((__const__))
+#define        __unused
+/* XXX Find out what to do for __packed, __aligned and __section */
+#endif
+#if __GNUC_PREREQ__(2, 7)
+#define        __dead2         __attribute__((__noreturn__))
+#define        __pure2         __attribute__((__const__))
+#define        __unused        __attribute__((__unused__))
+#define        __used          __attribute__((__used__))
+#define        __packed        __attribute__((__packed__))
+#define        __aligned(x)    __attribute__((__aligned__(x)))
+#define        __section(x)    __attribute__((__section__(x)))
+#endif
+#if defined(__INTEL_COMPILER)
+#define __dead2                __attribute__((__noreturn__))
+#define __pure2                __attribute__((__const__))
+#define __unused       __attribute__((__unused__))
+#define __used         __attribute__((__used__))
+#define __packed       __attribute__((__packed__))
+#define __aligned(x)   __attribute__((__aligned__(x)))
+#define __section(x)   __attribute__((__section__(x)))
+#endif
+#endif
+
+#if !__GNUC_PREREQ__(2, 95)
+#define        __alignof(x)    __offsetof(struct { char __a; x __b; }, __b)
+#endif
+
+/*
+ * Keywords added in C11.
+ */
+#if defined(__cplusplus) && __cplusplus >= 201103L
+#define        _Alignas(e)             alignas(e)
+#define        _Alignof(e)             alignof(e)
+#define        _Noreturn               [[noreturn]]
+#define        _Static_assert(e, s)    static_assert(e, s)
+/* FIXME: change this to thread_local when clang in base supports it */
+#define        _Thread_local           __thread
+#elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
+/* Do nothing.  They are language keywords. */
+#else
+/* Not supported.  Implement them using our versions. */
+#define        _Alignas(x)             __aligned(x)
+#define        _Alignof(x)             __alignof(x)
+#define        _Noreturn               __dead2
+#define        _Thread_local           __thread
+#ifdef __COUNTER__
+#define        _Static_assert(x, y)    __Static_assert(x, __COUNTER__)
+#define        __Static_assert(x, y)   ___Static_assert(x, y)
+#define        ___Static_assert(x, y)  typedef char __assert_ ## y[(x) ? 1 : -1]
+#else
+#define        _Static_assert(x, y)    struct __hack
+#endif
+#endif
+
+/*
+ * Emulation of C11 _Generic().  Unlike the previously defined C11
+ * keywords, it is not possible to implement this using exactly the same
+ * syntax.  Therefore implement something similar under the name
+ * __generic().  Unlike _Generic(), this macro can only distinguish
+ * between a single type, so it requires nested invocations to
+ * distinguish multiple cases.
+ */
+
+#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
+#define        __generic(expr, t, yes, no)                                     \
+       _Generic(expr, t: yes, default: no)
+#elif __GNUC_PREREQ__(3, 1) && !defined(__cplusplus)
+#define        __generic(expr, t, yes, no)                                     \
+       __builtin_choose_expr(                                          \
+           __builtin_types_compatible_p(__typeof(expr), t), yes, no)
+#endif
+
+#if __GNUC_PREREQ__(2, 96)
+#define        __malloc_like   __attribute__((__malloc__))
+#define        __pure          __attribute__((__pure__))
+#else
+#define        __malloc_like
+#define        __pure
+#endif
+
+#if __GNUC_PREREQ__(3, 1) || (defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 800)
+#define        __always_inline __attribute__((__always_inline__))
+#else
+#define        __always_inline
+#endif
+
+#if __GNUC_PREREQ__(3, 1)
+#define        __noinline      __attribute__ ((__noinline__))
+#define        __deprecated    __attribute__ ((__deprecated__))
+#else
+#define        __noinline
+#define        __deprecated
+#endif
+
+#if __GNUC_PREREQ__(3, 3)
+#define __nonnull(x)   __attribute__((__nonnull__(x)))
+#else
+#define __nonnull(x)
+#endif
+
+#if __GNUC_PREREQ__(3, 4)
+#define        __fastcall      __attribute__((__fastcall__))
+#else
+#define        __fastcall
+#endif
+
+#if __GNUC_PREREQ__(4, 1)
+#define        __returns_twice __attribute__((__returns_twice__))
+#else
+#define        __returns_twice
+#endif
+
+/* XXX: should use `#if __STDC_VERSION__ < 199901'. */
+#if !__GNUC_PREREQ__(2, 7) && !defined(__INTEL_COMPILER)
+#define        __func__        NULL
+#endif
+
+#if (defined(__INTEL_COMPILER) || (defined(__GNUC__) && __GNUC__ >= 2)) && !defined(__STRICT_ANSI__) || __STDC_VERSION__ >= 199901
+#define        __LONG_LONG_SUPPORTED
+#endif
+
+/* C++11 exposes a load of C99 stuff */
+#if defined(__cplusplus) && __cplusplus >= 201103L
+#define        __LONG_LONG_SUPPORTED
+#ifndef        __STDC_LIMIT_MACROS
+#define        __STDC_LIMIT_MACROS
+#endif
+#ifndef        __STDC_CONSTANT_MACROS
+#define        __STDC_CONSTANT_MACROS
+#endif
+#endif
+
+/*
+ * GCC 2.95 provides `__restrict' as an extension to C90 to support the
+ * C99-specific `restrict' type qualifier.  We happen to use `__restrict' as
+ * a way to define the `restrict' type qualifier without disturbing older
+ * software that is unaware of C99 keywords.
+ */
+#if !(__GNUC__ == 2 && __GNUC_MINOR__ == 95)
+#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901 || defined(lint)
+#define        __restrict
+#else
+#define        __restrict      restrict
+#endif
+#endif
+
+/*
+ * GNU C version 2.96 adds explicit branch prediction so that
+ * the CPU back-end can hint the processor and also so that
+ * code blocks can be reordered such that the predicted path
+ * sees a more linear flow, thus improving cache behavior, etc.
+ *
+ * The following two macros provide us with a way to utilize this
+ * compiler feature.  Use __predict_true() if you expect the expression
+ * to evaluate to true, and __predict_false() if you expect the
+ * expression to evaluate to false.
+ *
+ * A few notes about usage:
+ *
+ *     * Generally, __predict_false() error condition checks (unless
+ *       you have some _strong_ reason to do otherwise, in which case
+ *       document it), and/or __predict_true() `no-error' condition
+ *       checks, assuming you want to optimize for the no-error case.
+ *
+ *     * Other than that, if you don't know the likelihood of a test
+ *       succeeding from empirical or other `hard' evidence, don't
+ *       make predictions.
+ *
+ *     * These are meant to be used in places that are run `a lot'.
+ *       It is wasteful to make predictions in code that is run
+ *       seldomly (e.g. at subsystem initialization time) as the
+ *       basic block reordering that this affects can often generate
+ *       larger code.
+ */
+#if __GNUC_PREREQ__(2, 96)
+#define __predict_true(exp)     __builtin_expect((exp), 1)
+#define __predict_false(exp)    __builtin_expect((exp), 0)
+#else
+#define __predict_true(exp)     (exp)
+#define __predict_false(exp)    (exp)
+#endif
+
+#if __GNUC_PREREQ__(4, 2)
+#define        __hidden        __attribute__((__visibility__("hidden")))
+#define        __exported      __attribute__((__visibility__("default")))
+#else
+#define        __hidden
+#define        __exported
+#endif
+
+/*
+ * We define this here since <stddef.h>, <sys/queue.h>, and <sys/types.h>
+ * require it.
+ */
+#if __GNUC_PREREQ__(4, 1)
+#define __offsetof(type, field)         __builtin_offsetof(type, field)
+#else
+#ifndef __cplusplus
+#define        __offsetof(type, field) \
+       ((__size_t)(__uintptr_t)((const volatile void *)&((type *)0)->field))
+#else
+#define __offsetof(type, field)                                        \
+  (__offsetof__ (reinterpret_cast <__size_t>                   \
+                 (&reinterpret_cast <const volatile char &>    \
+                  (static_cast<type *> (0)->field))))
+#endif
+#endif
+#define        __rangeof(type, start, end) \
+       (__offsetof(type, end) - __offsetof(type, start))
+
+/*
+ * Given the pointer x to the member m of the struct s, return
+ * a pointer to the containing structure.  When using GCC, we first
+ * assign pointer x to a local variable, to check that its type is
+ * compatible with member m.
+ */
+#if __GNUC_PREREQ__(3, 1)
+#define        __containerof(x, s, m) ({                                       \
+       const volatile __typeof(((s *)0)->m) *__x = (x);                \
+       __DEQUALIFY(s *, (const volatile char *)__x - __offsetof(s, m));\
+})
+#else
+#define        __containerof(x, s, m)                                          \
+       __DEQUALIFY(s *, (const volatile char *)(x) - __offsetof(s, m))
+#endif
+
+/*
+ * Compiler-dependent macros to declare that functions take printf-like
+ * or scanf-like arguments.  They are null except for versions of gcc
+ * that are known to support the features properly (old versions of gcc-2
+ * didn't permit keeping the keywords out of the application namespace).
+ */
+#if !__GNUC_PREREQ__(2, 7) && !defined(__INTEL_COMPILER)
+#define        __printflike(fmtarg, firstvararg)
+#define        __scanflike(fmtarg, firstvararg)
+#define        __format_arg(fmtarg)
+#define        __strfmonlike(fmtarg, firstvararg)
+#define        __strftimelike(fmtarg, firstvararg)
+#else
+#define        __printflike(fmtarg, firstvararg) \
+           __attribute__((__format__ (__printf__, fmtarg, firstvararg)))
+#define        __scanflike(fmtarg, firstvararg) \
+           __attribute__((__format__ (__scanf__, fmtarg, firstvararg)))
+#define        __format_arg(fmtarg)    __attribute__((__format_arg__ (fmtarg)))
+#define        __strfmonlike(fmtarg, firstvararg) \
+           __attribute__((__format__ (__strfmon__, fmtarg, firstvararg)))
+#define        __strftimelike(fmtarg, firstvararg) \
+           __attribute__((__format__ (__strftime__, fmtarg, firstvararg)))
+#endif
+
+/* Compiler-dependent macros that rely on FreeBSD-specific extensions. */
+#if __FreeBSD_cc_version >= 300001 && defined(__GNUC__) && !defined(__INTEL_COMPILER)
+#define        __printf0like(fmtarg, firstvararg) \
+           __attribute__((__format__ (__printf0__, fmtarg, firstvararg)))
+#else
+#define        __printf0like(fmtarg, firstvararg)
+#endif
+
+#if defined(__GNUC__) || defined(__INTEL_COMPILER)
+#ifndef __INTEL_COMPILER
+#define        __strong_reference(sym,aliassym)        \
+       extern __typeof (sym) aliassym __attribute__ ((__alias__ (#sym)))
+#endif
+#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")
+#define        __sym_compat(sym,impl,verid)    \
+       __asm__(".symver " #impl ", " #sym "@" #verid)
+#define        __sym_default(sym,impl,verid)   \
+       __asm__(".symver " #impl ", " #sym "@@" #verid)
+#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")
+#define        __sym_compat(sym,impl,verid)    \
+       __asm__(".symver impl, sym@verid")
+#define        __sym_default(impl,sym,verid)   \
+       __asm__(".symver impl, sym@@verid")
+#endif /* __STDC__ */
+#endif /* __GNUC__ || __INTEL_COMPILER */
+
+#define        __GLOBL1(sym)   __asm__(".globl " #sym)
+#define        __GLOBL(sym)    __GLOBL1(sym)
+
+#if defined(__GNUC__) || defined(__INTEL_COMPILER)
+#define        __IDSTRING(name,string) __asm__(".ident\t\"" string "\"")
+#else
+/*
+ * The following definition might not work well if used in header files,
+ * but it should be better than nothing.  If you want a "do nothing"
+ * version, then it should generate some harmless declaration, such as:
+ *    #define __IDSTRING(name,string)  struct __hack
+ */
+#define        __IDSTRING(name,string) static const char name[] __unused = string
+#endif
+
+/*
+ * Embed the rcs id of a source file in the resulting library.  Note that in
+ * more recent ELF binutils, we use .ident allowing the ID to be stripped.
+ * Usage:
+ *     __FBSDID("$FreeBSD$");
+ */
+#ifndef        __FBSDID
+#if !defined(lint) && !defined(STRIP_FBSDID)
+#define        __FBSDID(s)     __IDSTRING(__CONCAT(__rcsid_,__LINE__),s)
+#else
+#define        __FBSDID(s)     struct __hack
+#endif
+#endif
+
+#ifndef        __RCSID
+#ifndef        NO__RCSID
+#define        __RCSID(s)      __IDSTRING(__CONCAT(__rcsid_,__LINE__),s)
+#else
+#define        __RCSID(s)      struct __hack
+#endif
+#endif
+
+#ifndef        __RCSID_SOURCE
+#ifndef        NO__RCSID_SOURCE
+#define        __RCSID_SOURCE(s)       __IDSTRING(__CONCAT(__rcsid_source_,__LINE__),s)
+#else
+#define        __RCSID_SOURCE(s)       struct __hack
+#endif
+#endif
+
+#ifndef        __SCCSID
+#ifndef        NO__SCCSID
+#define        __SCCSID(s)     __IDSTRING(__CONCAT(__sccsid_,__LINE__),s)
+#else
+#define        __SCCSID(s)     struct __hack
+#endif
+#endif
+
+#ifndef        __COPYRIGHT
+#ifndef        NO__COPYRIGHT
+#define        __COPYRIGHT(s)  __IDSTRING(__CONCAT(__copyright_,__LINE__),s)
+#else
+#define        __COPYRIGHT(s)  struct __hack
+#endif
+#endif
+
+#ifndef        __DECONST
+#define        __DECONST(type, var)    ((type)(__uintptr_t)(const void *)(var))
+#endif
+
+#ifndef        __DEVOLATILE
+#define        __DEVOLATILE(type, var) ((type)(__uintptr_t)(volatile void *)(var))
+#endif
+
+#ifndef        __DEQUALIFY
+#define        __DEQUALIFY(type, var)  ((type)(__uintptr_t)(const volatile void *)(var))
+#endif
+
+/*-
+ * The following definitions are an extension of the behavior originally
+ * implemented in <sys/_posix.h>, but with a different level of granularity.
+ * POSIX.1 requires that the macros we test be defined before any standard
+ * header file is included.
+ *
+ * Here's a quick run-down of the versions:
+ *  defined(_POSIX_SOURCE)             1003.1-1988
+ *  _POSIX_C_SOURCE == 1               1003.1-1990
+ *  _POSIX_C_SOURCE == 2               1003.2-1992 C Language Binding Option
+ *  _POSIX_C_SOURCE == 199309          1003.1b-1993
+ *  _POSIX_C_SOURCE == 199506          1003.1c-1995, 1003.1i-1995,
+ *                                     and the omnibus ISO/IEC 9945-1: 1996
+ *  _POSIX_C_SOURCE == 200112          1003.1-2001
+ *  _POSIX_C_SOURCE == 200809          1003.1-2008
+ *
+ * In addition, the X/Open Portability Guide, which is now the Single UNIX
+ * Specification, defines a feature-test macro which indicates the version of
+ * that specification, and which subsumes _POSIX_C_SOURCE.
+ *
+ * Our macros begin with two underscores to avoid namespace screwage.
+ */
+
+/* Deal with IEEE Std. 1003.1-1990, in which _POSIX_C_SOURCE == 1. */
+#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE == 1
+#undef _POSIX_C_SOURCE         /* Probably illegal, but beyond caring now. */
+#define        _POSIX_C_SOURCE         199009
+#endif
+
+/* Deal with IEEE Std. 1003.2-1992, in which _POSIX_C_SOURCE == 2. */
+#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE == 2
+#undef _POSIX_C_SOURCE
+#define        _POSIX_C_SOURCE         199209
+#endif
+
+/* Deal with various X/Open Portability Guides and Single UNIX Spec. */
+#ifdef _XOPEN_SOURCE
+#if _XOPEN_SOURCE - 0 >= 700
+#define        __XSI_VISIBLE           700
+#undef _POSIX_C_SOURCE
+#define        _POSIX_C_SOURCE         200809
+#elif _XOPEN_SOURCE - 0 >= 600
+#define        __XSI_VISIBLE           600
+#undef _POSIX_C_SOURCE
+#define        _POSIX_C_SOURCE         200112
+#elif _XOPEN_SOURCE - 0 >= 500
+#define        __XSI_VISIBLE           500
+#undef _POSIX_C_SOURCE
+#define        _POSIX_C_SOURCE         199506
+#endif
+#endif
+
+/*
+ * Deal with all versions of POSIX.  The ordering relative to the tests above is
+ * important.
+ */
+#if defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE)
+#define        _POSIX_C_SOURCE         198808
+#endif
+#ifdef _POSIX_C_SOURCE
+#if _POSIX_C_SOURCE >= 200809
+#define        __POSIX_VISIBLE         200809
+#define        __ISO_C_VISIBLE         1999
+#elif _POSIX_C_SOURCE >= 200112
+#define        __POSIX_VISIBLE         200112
+#define        __ISO_C_VISIBLE         1999
+#elif _POSIX_C_SOURCE >= 199506
+#define        __POSIX_VISIBLE         199506
+#define        __ISO_C_VISIBLE         1990
+#elif _POSIX_C_SOURCE >= 199309
+#define        __POSIX_VISIBLE         199309
+#define        __ISO_C_VISIBLE         1990
+#elif _POSIX_C_SOURCE >= 199209
+#define        __POSIX_VISIBLE         199209
+#define        __ISO_C_VISIBLE         1990
+#elif _POSIX_C_SOURCE >= 199009
+#define        __POSIX_VISIBLE         199009
+#define        __ISO_C_VISIBLE         1990
+#else
+#define        __POSIX_VISIBLE         198808
+#define        __ISO_C_VISIBLE         0
+#endif /* _POSIX_C_SOURCE */
+#else
+/*-
+ * Deal with _ANSI_SOURCE:
+ * If it is defined, and no other compilation environment is explicitly
+ * requested, then define our internal feature-test macros to zero.  This
+ * makes no difference to the preprocessor (undefined symbols in preprocessing
+ * expressions are defined to have value zero), but makes it more convenient for
+ * a test program to print out the values.
+ *
+ * If a program mistakenly defines _ANSI_SOURCE and some other macro such as
+ * _POSIX_C_SOURCE, we will assume that it wants the broader compilation
+ * environment (and in fact we will never get here).
+ */
+#if defined(_ANSI_SOURCE)      /* Hide almost everything. */
+#define        __POSIX_VISIBLE         0
+#define        __XSI_VISIBLE           0
+#define        __BSD_VISIBLE           0
+#define        __ISO_C_VISIBLE         1990
+#elif defined(_C99_SOURCE)     /* Localism to specify strict C99 env. */
+#define        __POSIX_VISIBLE         0
+#define        __XSI_VISIBLE           0
+#define        __BSD_VISIBLE           0
+#define        __ISO_C_VISIBLE         1999
+#else                          /* Default environment: show everything. */
+#define        __POSIX_VISIBLE         200809
+#define        __XSI_VISIBLE           700
+#define        __BSD_VISIBLE           1
+#define        __ISO_C_VISIBLE         1999
+#endif
+#endif
+
+#ifndef        __has_feature
+#define        __has_feature(x) 0
+#endif
+#ifndef        __has_include
+#define        __has_include(x) 0
+#endif
+#ifndef        __has_builtin
+#define        __has_builtin(x) 0
+#endif
+
+#if defined(__mips) || defined(__powerpc64__) || defined(__arm__)
+#define __NO_TLS 1
+#endif
+
+#endif /* !_SYS_CDEFS_H_ */
diff --git a/include/lib/libc/sys/ctype.h b/include/lib/libc/sys/ctype.h
new file mode 100644 (file)
index 0000000..f2758b7
--- /dev/null
@@ -0,0 +1,59 @@
+/*-
+ * Copyright (c) 1982, 1988, 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.
+ *
+ * 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.
+ * 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.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Portions copyright (c) 2009-2014, ARM Limited and Contributors.
+ * All rights reserved.
+ */
+
+#ifndef _SYS_CTYPE_H_
+#define        _SYS_CTYPE_H_
+
+#define isspace(c)     ((c) == ' ' || ((c) >= '\t' && (c) <= '\r'))
+#define isascii(c)     (((c) & ~0x7f) == 0)
+#define isupper(c)     ((c) >= 'A' && (c) <= 'Z')
+#define islower(c)     ((c) >= 'a' && (c) <= 'z')
+#define isalpha(c)     (isupper(c) || islower(c))
+#define isdigit(c)     ((c) >= '0' && (c) <= '9')
+#define isxdigit(c)    (isdigit(c) \
+                         || ((c) >= 'A' && (c) <= 'F') \
+                         || ((c) >= 'a' && (c) <= 'f'))
+#define isprint(c)     ((c) >= ' ' && (c) <= '~')
+
+#define toupper(c)     ((c) - 0x20 * (((c) >= 'a') && ((c) <= 'z')))
+#define tolower(c)     ((c) + 0x20 * (((c) >= 'A') && ((c) <= 'Z')))
+
+#endif /* !_SYS_CTYPE_H_ */
diff --git a/include/lib/libc/sys/endian.h b/include/lib/libc/sys/endian.h
new file mode 100644 (file)
index 0000000..d50110c
--- /dev/null
@@ -0,0 +1,205 @@
+/*-
+ * Copyright (c) 2002 Thomas Moestl <tmm@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$
+ */
+
+#ifndef _SYS_ENDIAN_H_
+#define _SYS_ENDIAN_H_
+
+#include <sys/cdefs.h>
+#include <sys/_types.h>
+#include <machine/endian.h>
+
+#ifndef _UINT8_T_DECLARED
+typedef        __uint8_t       uint8_t;
+#define        _UINT8_T_DECLARED
+#endif
+#ifndef _UINT16_T_DECLARED
+typedef        __uint16_t      uint16_t;
+#define        _UINT16_T_DECLARED
+#endif
+#ifndef _UINT32_T_DECLARED
+typedef        __uint32_t      uint32_t;
+#define        _UINT32_T_DECLARED
+#endif
+#ifndef _UINT64_T_DECLARED
+typedef        __uint64_t      uint64_t;
+#define        _UINT64_T_DECLARED
+#endif
+/*
+ * General byte order swapping functions.
+ */
+#define        bswap16(x)      __bswap16(x)
+#define        bswap32(x)      __bswap32(x)
+#define        bswap64(x)      __bswap64(x)
+
+/*
+ * Host to big endian, host to little endian, big endian to host, and little
+ * endian to host byte order functions as detailed in byteorder(9).
+ */
+#if _BYTE_ORDER == _LITTLE_ENDIAN
+#define        htobe16(x)      bswap16((x))
+#define        htobe32(x)      bswap32((x))
+#define        htobe64(x)      bswap64((x))
+#define        htole16(x)      ((uint16_t)(x))
+#define        htole32(x)      ((uint32_t)(x))
+#define        htole64(x)      ((uint64_t)(x))
+
+#define        be16toh(x)      bswap16((x))
+#define        be32toh(x)      bswap32((x))
+#define        be64toh(x)      bswap64((x))
+#define        le16toh(x)      ((uint16_t)(x))
+#define        le32toh(x)      ((uint32_t)(x))
+#define        le64toh(x)      ((uint64_t)(x))
+#else /* _BYTE_ORDER != _LITTLE_ENDIAN */
+#define        htobe16(x)      ((uint16_t)(x))
+#define        htobe32(x)      ((uint32_t)(x))
+#define        htobe64(x)      ((uint64_t)(x))
+#define        htole16(x)      bswap16((x))
+#define        htole32(x)      bswap32((x))
+#define        htole64(x)      bswap64((x))
+
+#define        be16toh(x)      ((uint16_t)(x))
+#define        be32toh(x)      ((uint32_t)(x))
+#define        be64toh(x)      ((uint64_t)(x))
+#define        le16toh(x)      bswap16((x))
+#define        le32toh(x)      bswap32((x))
+#define        le64toh(x)      bswap64((x))
+#endif /* _BYTE_ORDER == _LITTLE_ENDIAN */
+
+/* Alignment-agnostic encode/decode bytestream to/from little/big endian. */
+
+static __inline uint16_t
+be16dec(const void *pp)
+{
+       uint8_t const *p = (uint8_t const *)pp;
+
+       return ((p[0] << 8) | p[1]);
+}
+
+static __inline uint32_t
+be32dec(const void *pp)
+{
+       uint8_t const *p = (uint8_t const *)pp;
+
+       return (((unsigned)p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3]);
+}
+
+static __inline uint64_t
+be64dec(const void *pp)
+{
+       uint8_t const *p = (uint8_t const *)pp;
+
+       return (((uint64_t)be32dec(p) << 32) | be32dec(p + 4));
+}
+
+static __inline uint16_t
+le16dec(const void *pp)
+{
+       uint8_t const *p = (uint8_t const *)pp;
+
+       return ((p[1] << 8) | p[0]);
+}
+
+static __inline uint32_t
+le32dec(const void *pp)
+{
+       uint8_t const *p = (uint8_t const *)pp;
+
+       return (((unsigned)p[3] << 24) | (p[2] << 16) | (p[1] << 8) | p[0]);
+}
+
+static __inline uint64_t
+le64dec(const void *pp)
+{
+       uint8_t const *p = (uint8_t const *)pp;
+
+       return (((uint64_t)le32dec(p + 4) << 32) | le32dec(p));
+}
+
+static __inline void
+be16enc(void *pp, uint16_t u)
+{
+       uint8_t *p = (uint8_t *)pp;
+
+       p[0] = (u >> 8) & 0xff;
+       p[1] = u & 0xff;
+}
+
+static __inline void
+be32enc(void *pp, uint32_t u)
+{
+       uint8_t *p = (uint8_t *)pp;
+
+       p[0] = (u >> 24) & 0xff;
+       p[1] = (u >> 16) & 0xff;
+       p[2] = (u >> 8) & 0xff;
+       p[3] = u & 0xff;
+}
+
+static __inline void
+be64enc(void *pp, uint64_t u)
+{
+       uint8_t *p = (uint8_t *)pp;
+
+       be32enc(p, (uint32_t)(u >> 32));
+       be32enc(p + 4, (uint32_t)(u & 0xffffffffU));
+}
+
+static __inline void
+le16enc(void *pp, uint16_t u)
+{
+       uint8_t *p = (uint8_t *)pp;
+
+       p[0] = u & 0xff;
+       p[1] = (u >> 8) & 0xff;
+}
+
+static __inline void
+le32enc(void *pp, uint32_t u)
+{
+       uint8_t *p = (uint8_t *)pp;
+
+       p[0] = u & 0xff;
+       p[1] = (u >> 8) & 0xff;
+       p[2] = (u >> 16) & 0xff;
+       p[3] = (u >> 24) & 0xff;
+}
+
+static __inline void
+le64enc(void *pp, uint64_t u)
+{
+       uint8_t *p = (uint8_t *)pp;
+
+       le32enc(p, (uint32_t)(u & 0xffffffffU));
+       le32enc(p + 4, (uint32_t)(u >> 32));
+}
+
+#endif /* _SYS_ENDIAN_H_ */
diff --git a/include/lib/libc/sys/errno.h b/include/lib/libc/sys/errno.h
new file mode 100644 (file)
index 0000000..f595514
--- /dev/null
@@ -0,0 +1,193 @@
+/*-
+ * Copyright (c) 1982, 1986, 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.
+ * 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.
+ *
+ *     @(#)errno.h     8.5 (Berkeley) 1/21/94
+ * $FreeBSD$
+ */
+
+#ifndef _SYS_ERRNO_H_
+#define _SYS_ERRNO_H_
+
+#ifndef _KERNEL
+#include <sys/cdefs.h>
+__BEGIN_DECLS
+int *  __error(void);
+__END_DECLS
+#define        errno           (* __error())
+#endif
+
+#define        EPERM           1               /* Operation not permitted */
+#define        ENOENT          2               /* No such file or directory */
+#define        ESRCH           3               /* No such process */
+#define        EINTR           4               /* Interrupted system call */
+#define        EIO             5               /* Input/output error */
+#define        ENXIO           6               /* Device not configured */
+#define        E2BIG           7               /* Argument list too long */
+#define        ENOEXEC         8               /* Exec format error */
+#define        EBADF           9               /* Bad file descriptor */
+#define        ECHILD          10              /* No child processes */
+#define        EDEADLK         11              /* Resource deadlock avoided */
+                                       /* 11 was EAGAIN */
+#define        ENOMEM          12              /* Cannot allocate memory */
+#define        EACCES          13              /* Permission denied */
+#define        EFAULT          14              /* Bad address */
+#ifndef _POSIX_SOURCE
+#define        ENOTBLK         15              /* Block device required */
+#endif
+#define        EBUSY           16              /* Device busy */
+#define        EEXIST          17              /* File exists */
+#define        EXDEV           18              /* Cross-device link */
+#define        ENODEV          19              /* Operation not supported by 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              /* Inappropriate ioctl for device */
+#ifndef _POSIX_SOURCE
+#define        ETXTBSY         26              /* Text file busy */
+#endif
+#define        EFBIG           27              /* File too large */
+#define        ENOSPC          28              /* No space left on device */
+#define        ESPIPE          29              /* Illegal seek */
+#define        EROFS           30              /* Read-only filesystem */
+#define        EMLINK          31              /* Too many links */
+#define        EPIPE           32              /* Broken pipe */
+
+/* math software */
+#define        EDOM            33              /* Numerical argument out of domain */
+#define        ERANGE          34              /* Result too large */
+
+/* non-blocking and interrupt i/o */
+#define        EAGAIN          35              /* Resource temporarily unavailable */
+#ifndef _POSIX_SOURCE
+#define        EWOULDBLOCK     EAGAIN          /* Operation would block */
+#define        EINPROGRESS     36              /* Operation now in progress */
+#define        EALREADY        37              /* Operation already in progress */
+
+/* ipc/network software -- argument errors */
+#define        ENOTSOCK        38              /* Socket operation on non-socket */
+#define        EDESTADDRREQ    39              /* Destination address required */
+#define        EMSGSIZE        40              /* Message too long */
+#define        EPROTOTYPE      41              /* Protocol wrong type for socket */
+#define        ENOPROTOOPT     42              /* Protocol not available */
+#define        EPROTONOSUPPORT 43              /* Protocol not supported */
+#define        ESOCKTNOSUPPORT 44              /* Socket type not supported */
+#define        EOPNOTSUPP      45              /* Operation not supported */
+#define        ENOTSUP         EOPNOTSUPP      /* Operation not supported */
+#define        EPFNOSUPPORT    46              /* Protocol family not supported */
+#define        EAFNOSUPPORT    47              /* Address family not supported by protocol family */
+#define        EADDRINUSE      48              /* Address already in use */
+#define        EADDRNOTAVAIL   49              /* Can't assign requested address */
+
+/* ipc/network software -- operational errors */
+#define        ENETDOWN        50              /* Network is down */
+#define        ENETUNREACH     51              /* Network is unreachable */
+#define        ENETRESET       52              /* Network dropped connection on reset */
+#define        ECONNABORTED    53              /* Software caused connection abort */
+#define        ECONNRESET      54              /* Connection reset by peer */
+#define        ENOBUFS         55              /* No buffer space available */
+#define        EISCONN         56              /* Socket is already connected */
+#define        ENOTCONN        57              /* Socket is not connected */
+#define        ESHUTDOWN       58              /* Can't send after socket shutdown */
+#define        ETOOMANYREFS    59              /* Too many references: can't splice */
+#define        ETIMEDOUT       60              /* Operation timed out */
+#define        ECONNREFUSED    61              /* Connection refused */
+
+#define        ELOOP           62              /* Too many levels of symbolic links */
+#endif /* _POSIX_SOURCE */
+#define        ENAMETOOLONG    63              /* File name too long */
+
+/* should be rearranged */
+#ifndef _POSIX_SOURCE
+#define        EHOSTDOWN       64              /* Host is down */
+#define        EHOSTUNREACH    65              /* No route to host */
+#endif /* _POSIX_SOURCE */
+#define        ENOTEMPTY       66              /* Directory not empty */
+
+/* quotas & mush */
+#ifndef _POSIX_SOURCE
+#define        EPROCLIM        67              /* Too many processes */
+#define        EUSERS          68              /* Too many users */
+#define        EDQUOT          69              /* Disc quota exceeded */
+
+/* Network File System */
+#define        ESTALE          70              /* Stale NFS file handle */
+#define        EREMOTE         71              /* Too many levels of remote in path */
+#define        EBADRPC         72              /* RPC struct is bad */
+#define        ERPCMISMATCH    73              /* RPC version wrong */
+#define        EPROGUNAVAIL    74              /* RPC prog. not avail */
+#define        EPROGMISMATCH   75              /* Program version wrong */
+#define        EPROCUNAVAIL    76              /* Bad procedure for program */
+#endif /* _POSIX_SOURCE */
+
+#define        ENOLCK          77              /* No locks available */
+#define        ENOSYS          78              /* Function not implemented */
+
+#ifndef _POSIX_SOURCE
+#define        EFTYPE          79              /* Inappropriate file type or format */
+#define        EAUTH           80              /* Authentication error */
+#define        ENEEDAUTH       81              /* Need authenticator */
+#define        EIDRM           82              /* Identifier removed */
+#define        ENOMSG          83              /* No message of desired type */
+#define        EOVERFLOW       84              /* Value too large to be stored in data type */
+#define        ECANCELED       85              /* Operation canceled */
+#define        EILSEQ          86              /* Illegal byte sequence */
+#define        ENOATTR         87              /* Attribute not found */
+
+#define        EDOOFUS         88              /* Programming error */
+#endif /* _POSIX_SOURCE */
+
+#define        EBADMSG         89              /* Bad message */
+#define        EMULTIHOP       90              /* Multihop attempted */
+#define        ENOLINK         91              /* Link has been severed */
+#define        EPROTO          92              /* Protocol error */
+
+#ifndef _POSIX_SOURCE
+#define        ENOTCAPABLE     93              /* Capabilities insufficient */
+#define        ECAPMODE        94              /* Not permitted in capability mode */
+#endif /* _POSIX_SOURCE */
+
+#ifndef _POSIX_SOURCE
+#define        ELAST           94              /* Must be equal largest errno */
+#endif /* _POSIX_SOURCE */
+
+#ifdef _KERNEL
+/* pseudo-errors returned inside kernel to modify return to process */
+#define        ERESTART        (-1)            /* restart syscall */
+#define        EJUSTRETURN     (-2)            /* don't modify regs, just return */
+#define        ENOIOCTL        (-3)            /* ioctl not handled by this layer */
+#define        EDIRIOCTL       (-4)            /* do direct ioctl in GEOM */
+#endif
+
+#endif
diff --git a/include/lib/libc/sys/limits.h b/include/lib/libc/sys/limits.h
new file mode 100644 (file)
index 0000000..c56a337
--- /dev/null
@@ -0,0 +1,100 @@
+/*-
+ * 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.
+ * 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.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _SYS_LIMITS_H_
+#define        _SYS_LIMITS_H_
+
+#include <sys/cdefs.h>
+#include <machine/_limits.h>
+
+#define        CHAR_BIT        __CHAR_BIT      /* number of bits in a char */
+
+#define        SCHAR_MAX       __SCHAR_MAX     /* max value for a signed char */
+#define        SCHAR_MIN       __SCHAR_MIN     /* min value for a signed char */
+
+#define        UCHAR_MAX       __UCHAR_MAX     /* max value for an unsigned char */
+
+#ifdef __CHAR_UNSIGNED__
+#define        CHAR_MAX        UCHAR_MAX       /* max value for a char */
+#define        CHAR_MIN        0               /* min value for a char */
+#else
+#define        CHAR_MAX        SCHAR_MAX
+#define        CHAR_MIN        SCHAR_MIN
+#endif
+
+#define        USHRT_MAX       __USHRT_MAX     /* max value for an unsigned short */
+#define        SHRT_MAX        __SHRT_MAX      /* max value for a short */
+#define        SHRT_MIN        __SHRT_MIN      /* min value for a short */
+
+#define        UINT_MAX        __UINT_MAX      /* max value for an unsigned int */
+#define        INT_MAX         __INT_MAX       /* max value for an int */
+#define        INT_MIN         __INT_MIN       /* min value for an int */
+
+#define        ULONG_MAX       __ULONG_MAX     /* max for an unsigned long */
+#define        LONG_MAX        __LONG_MAX      /* max for a long */
+#define        LONG_MIN        __LONG_MIN      /* min for a long */
+
+#ifdef __LONG_LONG_SUPPORTED
+#define        ULLONG_MAX      __ULLONG_MAX    /* max for an unsigned long long */
+#define        LLONG_MAX       __LLONG_MAX     /* max for a long long */
+#define        LLONG_MIN       __LLONG_MIN     /* min for a long long */
+#endif
+
+#if __POSIX_VISIBLE || __XSI_VISIBLE
+#define        SSIZE_MAX       __SSIZE_MAX     /* max value for an ssize_t */
+#endif
+
+#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE
+#define        SIZE_T_MAX      __SIZE_T_MAX    /* max value for a size_t */
+
+#define        OFF_MAX         __OFF_MAX       /* max value for an off_t */
+#define        OFF_MIN         __OFF_MIN       /* min value for an off_t */
+#endif
+
+#if __BSD_VISIBLE
+#define        GID_MAX         UINT_MAX        /* max value for a gid_t */
+#define        UID_MAX         UINT_MAX        /* max value for a uid_t */
+
+#define        UQUAD_MAX       (__UQUAD_MAX)   /* max value for a uquad_t */
+#define        QUAD_MAX        (__QUAD_MAX)    /* max value for a quad_t */
+#define        QUAD_MIN        (__QUAD_MIN)    /* min value for a quad_t */
+#endif
+
+#if __XSI_VISIBLE || __POSIX_VISIBLE >= 200809
+#define        LONG_BIT        __LONG_BIT
+#define        WORD_BIT        __WORD_BIT
+#endif
+
+#if __POSIX_VISIBLE
+#define        MQ_PRIO_MAX     64
+#endif
+
+#endif /* !_SYS_LIMITS_H_ */
diff --git a/include/lib/libc/sys/stdarg.h b/include/lib/libc/sys/stdarg.h
new file mode 100644 (file)
index 0000000..c315dfc
--- /dev/null
@@ -0,0 +1,75 @@
+/*-
+ * Copyright (c) 2002 David E. O'Brien.  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. 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 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$
+ */
+
+#ifndef _MACHINE_STDARG_H_
+#define        _MACHINE_STDARG_H_
+
+#include <sys/cdefs.h>
+#include <sys/_types.h>
+
+#ifndef _VA_LIST_DECLARED
+#define        _VA_LIST_DECLARED
+typedef        __va_list       va_list;
+#endif
+
+#ifdef __GNUCLIKE_BUILTIN_STDARG
+
+#define        va_start(ap, last) \
+       __builtin_va_start((ap), (last))
+
+#define        va_arg(ap, type) \
+       __builtin_va_arg((ap), type)
+
+#define        __va_copy(dest, src) \
+       __builtin_va_copy((dest), (src))
+
+#if __ISO_C_VISIBLE >= 1999
+#define        va_copy(dest, src) \
+       __va_copy(dest, src)
+#endif
+
+#define        va_end(ap) \
+       __builtin_va_end(ap)
+
+#elif defined(lint)
+/* Provide a fake implementation for lint's benefit */
+#define        __va_size(type) \
+       (((sizeof(type) + sizeof(long) - 1) / sizeof(long)) * sizeof(long))
+#define        va_start(ap, last) \
+       ((ap) = (va_list)&(last) + __va_size(last))
+#define        va_arg(ap, type) \
+       (*(type *)((ap) += __va_size(type), (ap) - __va_size(type)))
+#define        va_end(ap)
+
+#else
+#error this file needs to be ported to your compiler
+#endif
+
+#endif /* !_MACHINE_STDARG_H_ */
diff --git a/include/lib/libc/sys/stdint.h b/include/lib/libc/sys/stdint.h
new file mode 100644 (file)
index 0000000..aa5ac81
--- /dev/null
@@ -0,0 +1,74 @@
+/*-
+ * Copyright (c) 2001 Mike Barcroft <mike@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$
+ */
+
+#ifndef _SYS_STDINT_H_
+#define _SYS_STDINT_H_
+
+#include <sys/cdefs.h>
+#include <sys/_types.h>
+
+#include <machine/_stdint.h>
+#include <sys/_stdint.h>
+
+typedef        __int_least8_t          int_least8_t;
+typedef        __int_least16_t         int_least16_t;
+typedef        __int_least32_t         int_least32_t;
+typedef        __int_least64_t         int_least64_t;
+
+typedef        __uint_least8_t         uint_least8_t;
+typedef        __uint_least16_t        uint_least16_t;
+typedef        __uint_least32_t        uint_least32_t;
+typedef        __uint_least64_t        uint_least64_t;
+
+typedef        __int_fast8_t           int_fast8_t;
+typedef        __int_fast16_t          int_fast16_t;
+typedef        __int_fast32_t          int_fast32_t;
+typedef        __int_fast64_t          int_fast64_t;
+
+typedef        __uint_fast8_t          uint_fast8_t;
+typedef        __uint_fast16_t         uint_fast16_t;
+typedef        __uint_fast32_t         uint_fast32_t;
+typedef        __uint_fast64_t         uint_fast64_t;
+
+#ifndef _INTMAX_T_DECLARED
+typedef        __intmax_t              intmax_t;
+#define        _INTMAX_T_DECLARED
+#endif
+#ifndef _UINTMAX_T_DECLARED
+typedef        __uintmax_t             uintmax_t;
+#define        _UINTMAX_T_DECLARED
+#endif
+
+/* GNU and Darwin define this and people seem to think it's portable */
+#if defined(UINTPTR_MAX) && defined(UINT64_MAX) && (UINTPTR_MAX == UINT64_MAX)
+#define        __WORDSIZE              64
+#else
+#define        __WORDSIZE              32
+#endif
+
+#endif /* !_SYS_STDINT_H_ */
diff --git a/include/lib/libc/sys/timespec.h b/include/lib/libc/sys/timespec.h
new file mode 100644 (file)
index 0000000..2505cef
--- /dev/null
@@ -0,0 +1,63 @@
+/*-
+ * Copyright (c) 1982, 1986, 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.
+ * 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.
+ *
+ *     @(#)time.h      8.5 (Berkeley) 5/4/95
+ * from: FreeBSD: src/sys/sys/time.h,v 1.43 2000/03/20 14:09:05 phk Exp
+ *     $FreeBSD$
+ */
+
+#ifndef _SYS_TIMESPEC_H_
+#define _SYS_TIMESPEC_H_
+
+#include <sys/cdefs.h>
+#include <sys/_timespec.h>
+
+#if __BSD_VISIBLE
+#define        TIMEVAL_TO_TIMESPEC(tv, ts)                                     \
+       do {                                                            \
+               (ts)->tv_sec = (tv)->tv_sec;                            \
+               (ts)->tv_nsec = (tv)->tv_usec * 1000;                   \
+       } while (0)
+#define        TIMESPEC_TO_TIMEVAL(tv, ts)                                     \
+       do {                                                            \
+               (tv)->tv_sec = (ts)->tv_sec;                            \
+               (tv)->tv_usec = (ts)->tv_nsec / 1000;                   \
+       } while (0)
+
+#endif /* __BSD_VISIBLE */
+
+/*
+ * Structure defined by POSIX.1b to be like a itimerval, but with
+ * timespecs. Used in the timer_*() system calls.
+ */
+struct itimerspec {
+       struct timespec  it_interval;
+       struct timespec  it_value;
+};
+
+#endif /* _SYS_TIMESPEC_H_ */
diff --git a/include/lib/libc/sys/types.h b/include/lib/libc/sys/types.h
new file mode 100644 (file)
index 0000000..ae2ea33
--- /dev/null
@@ -0,0 +1,245 @@
+/*-
+ * Copyright (c) 1982, 1986, 1991, 1993, 1994
+ *     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.
+ * 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.
+ *
+ *     @(#)types.h     8.6 (Berkeley) 2/19/95
+ * $FreeBSD$
+ */
+
+#ifndef _SYS_TYPES_H_
+#define        _SYS_TYPES_H_
+
+#include <sys/cdefs.h>
+
+/* Machine type dependent parameters. */
+#include <sys/_types.h>
+
+#if __BSD_VISIBLE
+typedef        unsigned char   u_char;
+typedef        unsigned short  u_short;
+typedef        unsigned int    u_int;
+typedef        unsigned long   u_long;
+#ifndef _KERNEL
+typedef        unsigned short  ushort;         /* Sys V compatibility */
+typedef        unsigned int    uint;           /* Sys V compatibility */
+#endif
+#endif
+
+/*
+ * XXX POSIX sized integrals that should appear only in <sys/stdint.h>.
+ */
+#include <sys/_stdint.h>
+
+typedef __uint8_t      u_int8_t;       /* unsigned integrals (deprecated) */
+typedef __uint16_t     u_int16_t;
+typedef __uint32_t     u_int32_t;
+typedef __uint64_t     u_int64_t;
+
+typedef        __uint64_t      u_quad_t;       /* quads (deprecated) */
+typedef        __int64_t       quad_t;
+typedef        quad_t          *qaddr_t;
+
+typedef        char            *caddr_t;       /* core address */
+typedef        const char      *c_caddr_t;     /* core address, pointer to const */
+
+#ifndef _BLKSIZE_T_DECLARED
+typedef        __blksize_t     blksize_t;
+#define        _BLKSIZE_T_DECLARED
+#endif
+
+typedef        __cpuwhich_t    cpuwhich_t;
+typedef        __cpulevel_t    cpulevel_t;
+typedef        __cpusetid_t    cpusetid_t;
+
+#ifndef _BLKCNT_T_DECLARED
+typedef        __blkcnt_t      blkcnt_t;
+#define        _BLKCNT_T_DECLARED
+#endif
+
+#ifndef _CLOCK_T_DECLARED
+typedef        __clock_t       clock_t;
+#define        _CLOCK_T_DECLARED
+#endif
+
+#ifndef _CLOCKID_T_DECLARED
+typedef        __clockid_t     clockid_t;
+#define        _CLOCKID_T_DECLARED
+#endif
+
+typedef        __critical_t    critical_t;     /* Critical section value */
+typedef        __int64_t       daddr_t;        /* disk address */
+
+#ifndef _DEV_T_DECLARED
+typedef        __dev_t         dev_t;          /* device number or struct cdev */
+#define        _DEV_T_DECLARED
+#endif
+
+#ifndef _FFLAGS_T_DECLARED
+typedef        __fflags_t      fflags_t;       /* file flags */
+#define        _FFLAGS_T_DECLARED
+#endif
+
+typedef        __fixpt_t       fixpt_t;        /* fixed point number */
+
+#ifndef _FSBLKCNT_T_DECLARED           /* for statvfs() */
+typedef        __fsblkcnt_t    fsblkcnt_t;
+typedef        __fsfilcnt_t    fsfilcnt_t;
+#define        _FSBLKCNT_T_DECLARED
+#endif
+
+#ifndef _GID_T_DECLARED
+typedef        __gid_t         gid_t;          /* group id */
+#define        _GID_T_DECLARED
+#endif
+
+#ifndef _IN_ADDR_T_DECLARED
+typedef        __uint32_t      in_addr_t;      /* base type for internet address */
+#define        _IN_ADDR_T_DECLARED
+#endif
+
+#ifndef _IN_PORT_T_DECLARED
+typedef        __uint16_t      in_port_t;
+#define        _IN_PORT_T_DECLARED
+#endif
+
+#ifndef _ID_T_DECLARED
+typedef        __id_t          id_t;           /* can hold a uid_t or pid_t */
+#define        _ID_T_DECLARED
+#endif
+
+#ifndef _INO_T_DECLARED
+typedef        __ino_t         ino_t;          /* inode number */
+#define        _INO_T_DECLARED
+#endif
+
+#ifndef _KEY_T_DECLARED
+typedef        __key_t         key_t;          /* IPC key (for Sys V IPC) */
+#define        _KEY_T_DECLARED
+#endif
+
+#ifndef _LWPID_T_DECLARED
+typedef        __lwpid_t       lwpid_t;        /* Thread ID (a.k.a. LWP) */
+#define        _LWPID_T_DECLARED
+#endif
+
+#ifndef _MODE_T_DECLARED
+typedef        __mode_t        mode_t;         /* permissions */
+#define        _MODE_T_DECLARED
+#endif
+
+#ifndef _ACCMODE_T_DECLARED
+typedef        __accmode_t     accmode_t;      /* access permissions */
+#define        _ACCMODE_T_DECLARED
+#endif
+
+#ifndef _NLINK_T_DECLARED
+typedef        __nlink_t       nlink_t;        /* link count */
+#define        _NLINK_T_DECLARED
+#endif
+
+#ifndef _OFF_T_DECLARED
+typedef        __off_t         off_t;          /* file offset */
+#define        _OFF_T_DECLARED
+#endif
+
+#ifndef _PID_T_DECLARED
+typedef        __pid_t         pid_t;          /* process id */
+#define        _PID_T_DECLARED
+#endif
+
+typedef        __register_t    register_t;
+
+#ifndef _RLIM_T_DECLARED
+typedef        __rlim_t        rlim_t;         /* resource limit */
+#define        _RLIM_T_DECLARED
+#endif
+
+typedef        __int64_t       sbintime_t;
+
+typedef        __segsz_t       segsz_t;        /* segment size (in pages) */
+
+#ifndef _SIZE_T_DECLARED
+typedef        __size_t        size_t;
+#define        _SIZE_T_DECLARED
+#endif
+
+#ifndef _SSIZE_T_DECLARED
+typedef        __ssize_t       ssize_t;
+#define        _SSIZE_T_DECLARED
+#endif
+
+#ifndef _SUSECONDS_T_DECLARED
+typedef        __suseconds_t   suseconds_t;    /* microseconds (signed) */
+#define        _SUSECONDS_T_DECLARED
+#endif
+
+#ifndef _TIME_T_DECLARED
+typedef        __time_t        time_t;
+#define        _TIME_T_DECLARED
+#endif
+
+#ifndef _TIMER_T_DECLARED
+typedef        __timer_t       timer_t;
+#define        _TIMER_T_DECLARED
+#endif
+
+#ifndef _MQD_T_DECLARED
+typedef        __mqd_t mqd_t;
+#define        _MQD_T_DECLARED
+#endif
+
+typedef        __u_register_t  u_register_t;
+
+#ifndef _UID_T_DECLARED
+typedef        __uid_t         uid_t;          /* user id */
+#define        _UID_T_DECLARED
+#endif
+
+#ifndef _USECONDS_T_DECLARED
+typedef        __useconds_t    useconds_t;     /* microseconds (unsigned) */
+#define        _USECONDS_T_DECLARED
+#endif
+
+#ifndef _CAP_RIGHTS_T_DECLARED
+#define        _CAP_RIGHTS_T_DECLARED
+struct cap_rights;
+
+typedef        struct cap_rights       cap_rights_t;
+#endif
+
+typedef        __vm_offset_t   vm_offset_t;
+typedef        __vm_ooffset_t  vm_ooffset_t;
+typedef        __vm_paddr_t    vm_paddr_t;
+typedef        __vm_pindex_t   vm_pindex_t;
+typedef        __vm_size_t     vm_size_t;
+
+#endif /* !_SYS_TYPES_H_ */
diff --git a/include/lib/libc/time.h b/include/lib/libc/time.h
new file mode 100644 (file)
index 0000000..08200cf
--- /dev/null
@@ -0,0 +1,204 @@
+/*
+ * 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. 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.
+ *
+ *     @(#)time.h      8.3 (Berkeley) 1/21/94
+ */
+
+/*
+ * $FreeBSD$
+ */
+
+#ifndef _TIME_H_
+#define        _TIME_H_
+
+#include <sys/cdefs.h>
+#include <sys/_null.h>
+#include <sys/_types.h>
+
+#if __POSIX_VISIBLE > 0 && __POSIX_VISIBLE < 200112 || __BSD_VISIBLE
+/*
+ * Frequency of the clock ticks reported by times().  Deprecated - use
+ * sysconf(_SC_CLK_TCK) instead.  (Removed in 1003.1-2001.)
+ */
+#define        CLK_TCK         128
+#endif
+
+/* Frequency of the clock ticks reported by clock().  */
+#define        CLOCKS_PER_SEC  128
+
+#ifndef _CLOCK_T_DECLARED
+typedef        __clock_t       clock_t;
+#define        _CLOCK_T_DECLARED
+#endif
+
+#ifndef _TIME_T_DECLARED
+typedef        __time_t        time_t;
+#define        _TIME_T_DECLARED
+#endif
+
+#ifndef _SIZE_T_DECLARED
+typedef        __size_t        size_t;
+#define        _SIZE_T_DECLARED
+#endif
+
+#if __POSIX_VISIBLE >= 199309
+/*
+ * New in POSIX 1003.1b-1993.
+ */
+#ifndef _CLOCKID_T_DECLARED
+typedef        __clockid_t     clockid_t;
+#define        _CLOCKID_T_DECLARED
+#endif
+
+#ifndef _TIMER_T_DECLARED
+typedef        __timer_t       timer_t;
+#define        _TIMER_T_DECLARED
+#endif
+
+#include <sys/timespec.h>
+#endif /* __POSIX_VISIBLE >= 199309 */
+
+#if __POSIX_VISIBLE >= 200112
+#ifndef _PID_T_DECLARED
+typedef        __pid_t         pid_t;
+#define        _PID_T_DECLARED
+#endif
+#endif
+
+/* These macros are also in sys/time.h. */
+#if !defined(CLOCK_REALTIME) && __POSIX_VISIBLE >= 200112
+#define CLOCK_REALTIME 0
+#ifdef __BSD_VISIBLE
+#define CLOCK_VIRTUAL  1
+#define CLOCK_PROF     2
+#endif
+#define CLOCK_MONOTONIC        4
+#define CLOCK_UPTIME   5               /* FreeBSD-specific. */
+#define CLOCK_UPTIME_PRECISE   7       /* FreeBSD-specific. */
+#define CLOCK_UPTIME_FAST      8       /* FreeBSD-specific. */
+#define CLOCK_REALTIME_PRECISE 9       /* FreeBSD-specific. */
+#define CLOCK_REALTIME_FAST    10      /* FreeBSD-specific. */
+#define CLOCK_MONOTONIC_PRECISE        11      /* FreeBSD-specific. */
+#define CLOCK_MONOTONIC_FAST   12      /* FreeBSD-specific. */
+#define CLOCK_SECOND   13              /* FreeBSD-specific. */
+#define CLOCK_THREAD_CPUTIME_ID        14
+#define        CLOCK_PROCESS_CPUTIME_ID        15
+#endif /* !defined(CLOCK_REALTIME) && __POSIX_VISIBLE >= 200112 */
+
+#if !defined(TIMER_ABSTIME) && __POSIX_VISIBLE >= 200112
+#if __BSD_VISIBLE
+#define TIMER_RELTIME  0x0     /* relative timer */
+#endif
+#define TIMER_ABSTIME  0x1     /* absolute timer */
+#endif /* !defined(TIMER_ABSTIME) && __POSIX_VISIBLE >= 200112 */
+
+struct tm {
+       int     tm_sec;         /* seconds after the minute [0-60] */
+       int     tm_min;         /* minutes after the hour [0-59] */
+       int     tm_hour;        /* hours since midnight [0-23] */
+       int     tm_mday;        /* day of the month [1-31] */
+       int     tm_mon;         /* months since January [0-11] */
+       int     tm_year;        /* years since 1900 */
+       int     tm_wday;        /* days since Sunday [0-6] */
+       int     tm_yday;        /* days since January 1 [0-365] */
+       int     tm_isdst;       /* Daylight Savings Time flag */
+       long    tm_gmtoff;      /* offset from UTC in seconds */
+       char    *tm_zone;       /* timezone abbreviation */
+};
+
+#if __POSIX_VISIBLE
+extern char *tzname[];
+#endif
+
+__BEGIN_DECLS
+char *asctime(const struct tm *);
+clock_t clock(void);
+char *ctime(const time_t *);
+double difftime(time_t, time_t);
+/* XXX missing: getdate() */
+struct tm *gmtime(const time_t *);
+struct tm *localtime(const time_t *);
+time_t mktime(struct tm *);
+size_t strftime(char *__restrict, size_t, const char *__restrict,
+    const struct tm *__restrict);
+time_t time(time_t *);
+#if __POSIX_VISIBLE >= 200112
+struct sigevent;
+int timer_create(clockid_t, struct sigevent *__restrict, timer_t *__restrict);
+int timer_delete(timer_t);
+int timer_gettime(timer_t, struct itimerspec *);
+int timer_getoverrun(timer_t);
+int timer_settime(timer_t, int, const struct itimerspec *__restrict,
+       struct itimerspec *__restrict);
+#endif
+#if __POSIX_VISIBLE
+void tzset(void);
+#endif
+
+#if __POSIX_VISIBLE >= 199309
+int clock_getres(clockid_t, struct timespec *);
+int clock_gettime(clockid_t, struct timespec *);
+int clock_settime(clockid_t, const struct timespec *);
+/* XXX missing: clock_nanosleep() */
+int nanosleep(const struct timespec *, struct timespec *);
+#endif /* __POSIX_VISIBLE >= 199309 */
+
+#if __POSIX_VISIBLE >= 200112
+int clock_getcpuclockid(pid_t, clockid_t *);
+#endif
+
+#if __POSIX_VISIBLE >= 199506
+char *asctime_r(const struct tm *, char *);
+char *ctime_r(const time_t *, char *);
+struct tm *gmtime_r(const time_t *, struct tm *);
+struct tm *localtime_r(const time_t *, struct tm *);
+#endif
+
+#if __XSI_VISIBLE
+char *strptime(const char *__restrict, const char *__restrict,
+    struct tm *__restrict);
+#endif
+
+#if __BSD_VISIBLE
+char *timezone(int, int);      /* XXX XSI conflict */
+void tzsetwall(void);
+time_t timelocal(struct tm * const);
+time_t timegm(struct tm * const);
+#endif /* __BSD_VISIBLE */
+
+#if __POSIX_VISIBLE >= 200809 || defined(_XLOCALE_H_)
+#include <xlocale/_time.h>
+#endif
+__END_DECLS
+
+#endif /* !_TIME_H_ */
diff --git a/include/lib/libc/xlocale/_strings.h b/include/lib/libc/xlocale/_strings.h
new file mode 100644 (file)
index 0000000..da1cff3
--- /dev/null
@@ -0,0 +1,48 @@
+/*-
+ * Copyright (c) 2011, 2012 The FreeBSD Foundation
+ * 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$
+ */
+
+#ifndef _LOCALE_T_DEFINED
+#define _LOCALE_T_DEFINED
+typedef struct _xlocale *locale_t;
+#endif
+
+/*
+ * This file is included from both strings.h and xlocale.h.  We need to expose
+ * the declarations unconditionally if we are included from xlocale.h, but only
+ * if we are in POSIX2008 mode if included from string.h.
+ */
+
+#ifndef _XLOCALE_STRINGS1_H
+#define _XLOCALE_STRINGS1_H
+
+/*
+ * POSIX2008 functions
+ */
+int     strcasecmp_l(const char *, const char *, locale_t);
+int     strncasecmp_l(const char *, const char *, size_t, locale_t);
+#endif /* _XLOCALE_STRINGS1_H */
diff --git a/include/lib/libc/xlocale/_time.h b/include/lib/libc/xlocale/_time.h
new file mode 100644 (file)
index 0000000..6da49a4
--- /dev/null
@@ -0,0 +1,58 @@
+/*-
+ * Copyright (c) 2011, 2012 The FreeBSD Foundation
+ * All rights reserved.
+ *
+ * This software was developed by David Chisnall under sponsorship from
+ * the FreeBSD Foundation.
+ *
+ * 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$
+ */
+
+#ifndef _LOCALE_T_DEFINED
+#define _LOCALE_T_DEFINED
+typedef struct _xlocale *locale_t;
+#endif
+
+/*
+ * This file is included from both locale.h and xlocale.h.  We need to expose
+ * the declarations unconditionally if we are included from xlocale.h, but only
+ * if we are in POSIX2008 mode if included from locale.h.
+ */
+#ifndef _XLOCALE_LOCALE1_H
+#define _XLOCALE_LOCALE1_H
+
+size_t  strftime_l(char *__restrict, size_t, const char *__restrict,
+           const struct tm *__restrict, locale_t) __strftimelike(3, 0);
+
+#endif /* _XLOCALE_LOCALE1_H */
+
+#ifdef _XLOCALE_H_
+#ifndef _XLOCALE_LOCALE2_H
+#define _XLOCALE_LOCALE2_H
+
+char   *strptime_l(const char *__restrict, const char *__restrict,
+               struct tm *__restrict, locale_t);
+
+#endif /* _XLOCALE_LOCALE2_H */
+#endif /* _XLOCALE_H_ */
diff --git a/include/lib/stdlib/assert.h b/include/lib/stdlib/assert.h
deleted file mode 100644 (file)
index db567db..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-/*-
- * Copyright (c) 1992, 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. 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.
- *
- *     @(#)assert.h    8.2 (Berkeley) 1/21/94
- * $FreeBSD$
- */
-/*
- * Portions copyright (c) 2017, ARM Limited and Contributors.
- * All rights reserved.
- */
-
-#ifndef _ASSERT_H_
-#define _ASSERT_H_
-
-#include <debug.h>
-#include <platform_def.h>
-#include <sys/cdefs.h>
-
-#ifndef PLAT_LOG_LEVEL_ASSERT
-#define PLAT_LOG_LEVEL_ASSERT  LOG_LEVEL
-#endif
-
-#if ENABLE_ASSERTIONS
-#define        _assert(e)      assert(e)
-# if PLAT_LOG_LEVEL_ASSERT >= LOG_LEVEL_VERBOSE
-#  define      assert(e)       ((e) ? (void)0 : __assert(__FILE__, __LINE__, #e))
-# elif PLAT_LOG_LEVEL_ASSERT >= LOG_LEVEL_INFO
-#  define      assert(e)       ((e) ? (void)0 : __assert(__FILE__, __LINE__))
-# else
-#  define      assert(e)       ((e) ? (void)0 : __assert())
-# endif
-#else
-#define        assert(e)       ((void)0)
-#define        _assert(e)      ((void)0)
-#endif /* ENABLE_ASSERTIONS */
-
-__BEGIN_DECLS
-#if PLAT_LOG_LEVEL_ASSERT >= LOG_LEVEL_VERBOSE
-void __assert(const char *, unsigned int, const char *) __dead2;
-#elif PLAT_LOG_LEVEL_ASSERT >= LOG_LEVEL_INFO
-void __assert(const char *, unsigned int) __dead2;
-#else
-void __assert(void) __dead2;
-#endif
-__END_DECLS
-
-#endif /* !_ASSERT_H_ */
diff --git a/include/lib/stdlib/inttypes.h b/include/lib/stdlib/inttypes.h
deleted file mode 100644 (file)
index 269f3e7..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/*-
- * Copyright (c) 2001 Mike Barcroft <mike@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$
- */
-
-#ifndef _INTTYPES_H_
-#define        _INTTYPES_H_
-
-#include <machine/_inttypes.h>
-#include <sys/stdint.h>
-
-typedef struct {
-       intmax_t        quot;           /* Quotient. */
-       intmax_t        rem;            /* Remainder. */
-} imaxdiv_t;
-
-__BEGIN_DECLS
-#ifdef _XLOCALE_H_
-#include <xlocale/_inttypes.h>
-#endif
-intmax_t       imaxabs(intmax_t) __pure2;
-imaxdiv_t      imaxdiv(intmax_t, intmax_t) __pure2;
-
-intmax_t       strtoimax(const char *__restrict, char **__restrict, int);
-uintmax_t      strtoumax(const char *__restrict, char **__restrict, int);
-
-__END_DECLS
-
-#endif /* !_INTTYPES_H_ */
diff --git a/include/lib/stdlib/machine/_inttypes.h b/include/lib/stdlib/machine/_inttypes.h
deleted file mode 100644 (file)
index 7dfe9c3..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#ifndef _MACHINE_INTTYPES_H_
-#define _MACHINE_INTTYPES_H_
-
-/*
- * Trusted Firmware does not depend on any definitions in this file. Content
- * will be added as needed.
- */
-
-#endif /* !_MACHINE_INTTYPES_H_ */
diff --git a/include/lib/stdlib/machine/_limits.h b/include/lib/stdlib/machine/_limits.h
deleted file mode 100644 (file)
index 3bdc66f..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-/*-
- * 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.
- *
- * 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.
- *
- *     @(#)limits.h    8.3 (Berkeley) 1/4/94
- * $FreeBSD$
- */
-
-/*
- * Portions copyright (c) 2017, ARM Limited and Contributors.
- * All rights reserved.
- */
-
-#ifndef        _MACHINE__LIMITS_H_
-#define        _MACHINE__LIMITS_H_
-
-/*
- * According to ANSI (section 2.2.4.2), the values below must be usable by
- * #if preprocessing directives.  Additionally, the expression must have the
- * same type as would an expression that is an object of the corresponding
- * type converted according to the integral promotions.  The subtraction for
- * INT_MIN, etc., is so the value is not unsigned; e.g., 0x80000000 is an
- * unsigned int for 32-bit two's complement ANSI compilers (section 3.1.3.2).
- */
-
-#define        __CHAR_BIT      8               /* number of bits in a char */
-
-#define        __SCHAR_MAX     0x7f            /* max value for a signed char */
-#define        __SCHAR_MIN     (-0x7f-1)       /* min value for a signed char */
-
-#define        __UCHAR_MAX     0xff            /* max value for an unsigned char */
-
-#define        __USHRT_MAX     0xffff          /* max value for an unsigned short */
-#define        __SHRT_MAX      0x7fff          /* max value for a short */
-#define        __SHRT_MIN      (-0x7fff-1)     /* min value for a short */
-
-#define        __UINT_MAX      0xffffffffU     /* max value for an unsigned int */
-#define        __INT_MAX       0x7fffffff      /* max value for an int */
-#define        __INT_MIN       (-0x7fffffff-1) /* min value for an int */
-
-#ifdef AARCH32
-#define        __ULONG_MAX     0xffffffffUL    /* max for an unsigned long */
-#define        __LONG_MAX      0x7fffffffL     /* max for a long */
-#define        __LONG_MIN      (-0x7fffffffL-1) /* min for a long */
-#else
-#define        __ULONG_MAX     0xffffffffffffffffUL    /* max for an unsigned long */
-#define        __LONG_MAX      0x7fffffffffffffffL     /* max for a long */
-#define        __LONG_MIN      (-0x7fffffffffffffffL-1) /* min for a long */
-#endif
-
-#define        __ULLONG_MAX    0xffffffffffffffffULL   /* max for an unsigned long long */
-#define        __LLONG_MAX     0x7fffffffffffffffLL    /* max for a long long */
-#define        __LLONG_MIN     (-0x7fffffffffffffffLL-1) /* min for a long long */
-
-#define        __SSIZE_MAX     __LONG_MAX      /* max value for a ssize_t */
-
-#define        __SIZE_T_MAX    __ULONG_MAX     /* max value for a size_t */
-
-#define        __OFF_MAX       __LONG_MAX      /* max value for an off_t */
-#define        __OFF_MIN       __LONG_MIN      /* min value for an off_t */
-
-#ifdef AARCH32
-/* Quads and long longs are the same size.  Ensure they stay in sync. */
-#define        __UQUAD_MAX     (__ULLONG_MAX)  /* max value for a uquad_t */
-#define        __QUAD_MAX      (__LLONG_MAX)   /* max value for a quad_t */
-#define        __QUAD_MIN      (__LLONG_MIN)   /* min value for a quad_t */
-#else
-/* Quads and longs are the same size.  Ensure they stay in sync. */
-#define        __UQUAD_MAX     (__ULONG_MAX)   /* max value for a uquad_t */
-#define        __QUAD_MAX      (__LONG_MAX)    /* max value for a quad_t */
-#define        __QUAD_MIN      (__LONG_MIN)    /* min value for a quad_t */
-#endif
-
-#ifdef AARCH32
-#define        __LONG_BIT      32
-#else
-#define        __LONG_BIT      64
-#endif
-#define        __WORD_BIT      32
-
-/* Minimum signal stack size. */
-#define        __MINSIGSTKSZ   (1024 * 4)
-
-#endif /* !_MACHINE__LIMITS_H_ */
diff --git a/include/lib/stdlib/machine/_stdint.h b/include/lib/stdlib/machine/_stdint.h
deleted file mode 100644 (file)
index ee5372d..0000000
+++ /dev/null
@@ -1,184 +0,0 @@
-/*-
- * Copyright (c) 2001, 2002 Mike Barcroft <mike@FreeBSD.org>
- * Copyright (c) 2001 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Klaus Klein.
- *
- * 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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$
- */
-
-/*
- * Portions copyright (c) 2016-2017, ARM Limited and Contributors.
- * All rights reserved.
- */
-
-#ifndef        _MACHINE__STDINT_H_
-#define        _MACHINE__STDINT_H_
-
-#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS)
-
-#define        INT8_C(c)               (c)
-#define        INT16_C(c)              (c)
-#define        INT32_C(c)              (c)
-#define        INT64_C(c)              (c ## LL)
-
-#define        UINT8_C(c)              (c)
-#define        UINT16_C(c)             (c)
-#define        UINT32_C(c)             (c ## U)
-#define        UINT64_C(c)             (c ## ULL)
-
-#define        INTMAX_C(c)             INT64_C(c)
-#define        UINTMAX_C(c)            UINT64_C(c)
-
-#endif /* !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) */
-
-#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS)
-
-/*
- * ISO/IEC 9899:1999
- * 7.18.2.1 Limits of exact-width integer types
- */
-/* Minimum values of exact-width signed integer types. */
-#define        INT8_MIN        (-0x7f-1)
-#define        INT16_MIN       (-0x7fff-1)
-#define        INT32_MIN       (-0x7fffffff-1)
-#define        INT64_MIN       (-0x7fffffffffffffffLL-1)
-
-/* Maximum values of exact-width signed integer types. */
-#define        INT8_MAX        0x7f
-#define        INT16_MAX       0x7fff
-#define        INT32_MAX       0x7fffffff
-#define        INT64_MAX       0x7fffffffffffffffLL
-
-/* Maximum values of exact-width unsigned integer types. */
-#define        UINT8_MAX       0xff
-#define        UINT16_MAX      0xffff
-#define        UINT32_MAX      0xffffffffU
-#define        UINT64_MAX      0xffffffffffffffffULL
-
-/*
- * ISO/IEC 9899:1999
- * 7.18.2.2  Limits of minimum-width integer types
- */
-/* Minimum values of minimum-width signed integer types. */
-#define        INT_LEAST8_MIN  INT8_MIN
-#define        INT_LEAST16_MIN INT16_MIN
-#define        INT_LEAST32_MIN INT32_MIN
-#define        INT_LEAST64_MIN INT64_MIN
-
-/* Maximum values of minimum-width signed integer types. */
-#define        INT_LEAST8_MAX  INT8_MAX
-#define        INT_LEAST16_MAX INT16_MAX
-#define        INT_LEAST32_MAX INT32_MAX
-#define        INT_LEAST64_MAX INT64_MAX
-
-/* Maximum values of minimum-width unsigned integer types. */
-#define        UINT_LEAST8_MAX  UINT8_MAX
-#define        UINT_LEAST16_MAX UINT16_MAX
-#define        UINT_LEAST32_MAX UINT32_MAX
-#define        UINT_LEAST64_MAX UINT64_MAX
-
-/*
- * ISO/IEC 9899:1999
- * 7.18.2.3  Limits of fastest minimum-width integer types
- */
-/* Minimum values of fastest minimum-width signed integer types. */
-#define        INT_FAST8_MIN   INT32_MIN
-#define        INT_FAST16_MIN  INT32_MIN
-#define        INT_FAST32_MIN  INT32_MIN
-#define        INT_FAST64_MIN  INT64_MIN
-
-/* Maximum values of fastest minimum-width signed integer types. */
-#define        INT_FAST8_MAX   INT32_MAX
-#define        INT_FAST16_MAX  INT32_MAX
-#define        INT_FAST32_MAX  INT32_MAX
-#define        INT_FAST64_MAX  INT64_MAX
-
-/* Maximum values of fastest minimum-width unsigned integer types. */
-#define        UINT_FAST8_MAX  UINT32_MAX
-#define        UINT_FAST16_MAX UINT32_MAX
-#define        UINT_FAST32_MAX UINT32_MAX
-#define        UINT_FAST64_MAX UINT64_MAX
-
-/*
- * ISO/IEC 9899:1999
- * 7.18.2.4  Limits of integer types capable of holding object pointers
- */
-#ifdef AARCH32
-#define        INTPTR_MIN      INT32_MIN
-#define        INTPTR_MAX      INT32_MAX
-#define        UINTPTR_MAX     UINT32_MAX
-#else
-#define        INTPTR_MIN      INT64_MIN
-#define        INTPTR_MAX      INT64_MAX
-#define        UINTPTR_MAX     UINT64_MAX
-#endif
-
-/*
- * ISO/IEC 9899:1999
- * 7.18.2.5  Limits of greatest-width integer types
- */
-#define        INTMAX_MIN      INT64_MIN
-#define        INTMAX_MAX      INT64_MAX
-#define        UINTMAX_MAX     UINT64_MAX
-
-/*
- * ISO/IEC 9899:1999
- * 7.18.3  Limits of other integer types
- */
-/* Limits of ptrdiff_t. */
-#ifdef AARCH32
-#define        PTRDIFF_MIN     INT32_MIN
-#define        PTRDIFF_MAX     INT32_MAX
-#else
-#define        PTRDIFF_MIN     INT64_MIN
-#define        PTRDIFF_MAX     INT64_MAX
-#endif
-
-/* Limits of sig_atomic_t. */
-#define        SIG_ATOMIC_MIN  INT32_MIN
-#define        SIG_ATOMIC_MAX  INT32_MAX
-
-/* Limit of size_t. */
-#ifdef AARCH32
-#define        SIZE_MAX        UINT32_MAX
-#else
-#define        SIZE_MAX        UINT64_MAX
-#endif
-
-#ifndef WCHAR_MIN /* Also possibly defined in <wchar.h> */
-/* Limits of wchar_t. */
-#define        WCHAR_MIN       INT32_MIN
-#define        WCHAR_MAX       INT32_MAX
-#endif
-
-/* Limits of wint_t. */
-#define        WINT_MIN        INT32_MIN
-#define        WINT_MAX        INT32_MAX
-
-#endif /* !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) */
-
-#endif /* !_MACHINE__STDINT_H_ */
diff --git a/include/lib/stdlib/machine/_types.h b/include/lib/stdlib/machine/_types.h
deleted file mode 100644 (file)
index 037fdf2..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-/*-
- * Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org>
- * Copyright (c) 1990, 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.
- * 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.
- *
- *     From: @(#)ansi.h        8.2 (Berkeley) 1/4/94
- *     From: @(#)types.h       8.3 (Berkeley) 1/5/94
- * $FreeBSD$
- */
-/*
- * Portions copyright (c) 2016, ARM Limited and Contributors.
- * All rights reserved.
- */
-
-#ifndef _MACHINE__TYPES_H_
-#define        _MACHINE__TYPES_H_
-
-#ifndef _SYS_CDEFS_H_
-#error this file needs sys/cdefs.h as a prerequisite
-#endif
-
-/*
- * Basic types upon which most other types are built.
- */
-typedef        __signed char           __int8_t;
-typedef        unsigned char           __uint8_t;
-typedef        short                   __int16_t;
-typedef        unsigned short          __uint16_t;
-typedef        int                     __int32_t;
-typedef        unsigned int            __uint32_t;
-typedef        long long               __int64_t;
-typedef        unsigned long long      __uint64_t;
-
-/*
- * Standard type definitions.
- */
-typedef        __int32_t       __clock_t;              /* clock()... */
-typedef        long            __critical_t;
-typedef        double          __double_t;
-typedef        float           __float_t;
-typedef        long            __intfptr_t;
-typedef        __int64_t       __intmax_t;
-typedef        long            __intptr_t;
-typedef        __int32_t       __int_fast8_t;
-typedef        __int32_t       __int_fast16_t;
-typedef        __int32_t       __int_fast32_t;
-typedef        __int64_t       __int_fast64_t;
-typedef        __int8_t        __int_least8_t;
-typedef        __int16_t       __int_least16_t;
-typedef        __int32_t       __int_least32_t;
-typedef        __int64_t       __int_least64_t;
-typedef        long            __ptrdiff_t;            /* ptr1 - ptr2 */
-typedef        long            __register_t;
-typedef        long            __segsz_t;              /* segment size (in pages) */
-#ifdef AARCH32
-typedef        unsigned int    __size_t;               /* sizeof() */
-typedef        int             __ssize_t;              /* byte count or error */
-#elif defined AARCH64
-typedef        unsigned long   __size_t;               /* sizeof() */
-typedef        long            __ssize_t;              /* byte count or error */
-#else
-#error "Only AArch32 or AArch64 supported"
-#endif /* AARCH32 */
-typedef        __int64_t       __time_t;               /* time()... */
-typedef        unsigned long   __uintfptr_t;
-typedef        __uint64_t      __uintmax_t;
-typedef        unsigned long   __uintptr_t;
-typedef        __uint32_t      __uint_fast8_t;
-typedef        __uint32_t      __uint_fast16_t;
-typedef        __uint32_t      __uint_fast32_t;
-typedef        __uint64_t      __uint_fast64_t;
-typedef        __uint8_t       __uint_least8_t;
-typedef        __uint16_t      __uint_least16_t;
-typedef        __uint32_t      __uint_least32_t;
-typedef        __uint64_t      __uint_least64_t;
-typedef        unsigned long   __u_register_t;
-typedef        unsigned long   __vm_offset_t;
-typedef        __int64_t       __vm_ooffset_t;
-typedef        unsigned long   __vm_paddr_t;
-typedef        __uint64_t      __vm_pindex_t;
-typedef        unsigned long   __vm_size_t;
-
-/*
- * Unusual type definitions.
- */
-#ifdef __GNUCLIKE_BUILTIN_VARARGS
-typedef __builtin_va_list      __va_list;      /* internally known to gcc */
-#else
-typedef        char *                  __va_list;
-#endif /* __GNUCLIKE_BUILTIN_VARARGS */
-#if defined(__GNUCLIKE_BUILTIN_VAALIST) && !defined(__GNUC_VA_LIST) \
-    && !defined(__NO_GNUC_VA_LIST)
-#define __GNUC_VA_LIST
-typedef __va_list              __gnuc_va_list; /* compatibility w/GNU headers*/
-#endif
-
-#endif /* !_MACHINE__TYPES_H_ */
diff --git a/include/lib/stdlib/machine/endian.h b/include/lib/stdlib/machine/endian.h
deleted file mode 100644 (file)
index 57e33b1..0000000
+++ /dev/null
@@ -1,168 +0,0 @@
-/*-
- * Copyright (c) 2001 David E. O'Brien
- *
- * 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. 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.
- *
- *     @(#)endian.h    8.1 (Berkeley) 6/10/93
- * $NetBSD: endian.h,v 1.7 1999/08/21 05:53:51 simonb Exp $
- * $FreeBSD$
- */
-/*
- * Portions copyright (c) 2017, ARM Limited and Contributors.
- * All rights reserved.
- */
-
-#ifndef _MACHINE_ENDIAN_H_
-#define        _MACHINE_ENDIAN_H_
-
-#include <sys/_types.h>
-
-/*
- * Definitions for byte order, according to byte significance from low
- * address to high.
- */
-#define        _LITTLE_ENDIAN  1234    /* LSB first: i386, vax */
-#define        _BIG_ENDIAN     4321    /* MSB first: 68000, ibm, net */
-#define        _PDP_ENDIAN     3412    /* LSB first in word, MSW first in long */
-
-#define        _BYTE_ORDER     _LITTLE_ENDIAN
-
-#if __BSD_VISIBLE
-#define        LITTLE_ENDIAN   _LITTLE_ENDIAN
-#define        BIG_ENDIAN      _BIG_ENDIAN
-#define        PDP_ENDIAN      _PDP_ENDIAN
-#define        BYTE_ORDER      _BYTE_ORDER
-#endif
-
-#define        _QUAD_HIGHWORD  1
-#define        _QUAD_LOWWORD 0
-#define        __ntohl(x)        (__bswap32(x))
-#define        __ntohs(x)        (__bswap16(x))
-#define        __htonl(x)        (__bswap32(x))
-#define        __htons(x)        (__bswap16(x))
-
-#ifdef AARCH32
-static __inline __uint64_t
-__bswap64(__uint64_t _x)
-{
-
-       return ((_x >> 56) | ((_x >> 40) & 0xff00) | ((_x >> 24) & 0xff0000) |
-           ((_x >> 8) & 0xff000000) | ((_x << 8) & ((__uint64_t)0xff << 32)) |
-           ((_x << 24) & ((__uint64_t)0xff << 40)) |
-           ((_x << 40) & ((__uint64_t)0xff << 48)) | ((_x << 56)));
-}
-
-static __inline __uint32_t
-__bswap32_var(__uint32_t v)
-{
-       __uint32_t t1;
-
-       __asm __volatile("eor %1, %0, %0, ror #16\n"
-                       "bic %1, %1, #0x00ff0000\n"
-                       "mov %0, %0, ror #8\n"
-                       "eor %0, %0, %1, lsr #8\n"
-                        : "+r" (v), "=r" (t1));
-
-       return (v);
-}
-
-static __inline __uint16_t
-__bswap16_var(__uint16_t v)
-{
-       __uint32_t ret = v & 0xffff;
-
-       __asm __volatile(
-           "mov    %0, %0, ror #8\n"
-           "orr    %0, %0, %0, lsr #16\n"
-           "bic    %0, %0, %0, lsl #16"
-           : "+r" (ret));
-
-       return ((__uint16_t)ret);
-}
-#elif defined AARCH64
-static __inline __uint64_t
-__bswap64(__uint64_t x)
-{
-       __uint64_t ret;
-
-       __asm __volatile("rev %0, %1\n"
-                        : "=&r" (ret), "+r" (x));
-       
-       return (ret);
-}
-
-static __inline __uint32_t
-__bswap32_var(__uint32_t v)
-{
-       __uint32_t ret;
-
-       __asm __volatile("rev32 %x0, %x1\n"
-                        : "=&r" (ret), "+r" (v));
-       
-       return (ret);
-}
-
-static __inline __uint16_t
-__bswap16_var(__uint16_t v)
-{
-       __uint32_t ret;
-
-       __asm __volatile("rev16 %w0, %w1\n"
-                        : "=&r" (ret), "+r" (v));
-
-       return ((__uint16_t)ret);
-}              
-#else
-#error "Only AArch32 or AArch64 supported"
-#endif /* AARCH32 */
-
-#ifdef __OPTIMIZE__
-
-#define        __bswap32_constant(x)   \
-    ((((x) & 0xff000000U) >> 24) |     \
-     (((x) & 0x00ff0000U) >>  8) |     \
-     (((x) & 0x0000ff00U) <<  8) |     \
-     (((x) & 0x000000ffU) << 24))
-
-#define        __bswap16_constant(x)   \
-    ((((x) & 0xff00) >> 8) |           \
-     (((x) & 0x00ff) << 8))
-
-#define        __bswap16(x)    \
-    ((__uint16_t)(__builtin_constant_p(x) ?    \
-     __bswap16_constant(x) :                   \
-     __bswap16_var(x)))
-
-#define        __bswap32(x)    \
-    ((__uint32_t)(__builtin_constant_p(x) ?    \
-     __bswap32_constant(x) :                   \
-     __bswap32_var(x)))
-
-#else
-#define        __bswap16(x)    __bswap16_var(x)
-#define        __bswap32(x)    __bswap32_var(x)
-
-#endif /* __OPTIMIZE__ */
-#endif /* !_MACHINE_ENDIAN_H_ */
diff --git a/include/lib/stdlib/stdbool.h b/include/lib/stdlib/stdbool.h
deleted file mode 100644 (file)
index e39aef7..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#ifndef STDBOOL_H
-#define STDBOOL_H
-
-#define bool   _Bool
-
-#define true   1
-#define false  0
-
-#define __bool_true_false_are_defined  1
-
-#endif /* STDBOOL_H */
diff --git a/include/lib/stdlib/stddef.h b/include/lib/stdlib/stddef.h
deleted file mode 100644 (file)
index ea88214..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*-
- * Copyright (c) 1990, 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. 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.
- *
- *     @(#)stddef.h    8.1 (Berkeley) 6/2/93
- *
- * $FreeBSD$
- */
-
-#ifndef _STDDEF_H_
-#define _STDDEF_H_
-
-#include <sys/cdefs.h>
-#include <sys/_null.h>
-#include <sys/_types.h>
-
-typedef        __ptrdiff_t     ptrdiff_t;
-
-#if __BSD_VISIBLE
-#ifndef _RUNE_T_DECLARED
-typedef        __rune_t        rune_t;
-#define        _RUNE_T_DECLARED
-#endif
-#endif
-
-#ifndef _SIZE_T_DECLARED
-typedef        __size_t        size_t;
-#define        _SIZE_T_DECLARED
-#endif
-
-#ifndef        __cplusplus
-#ifndef _WCHAR_T_DECLARED
-typedef        __wchar_t       wchar_t;
-#define        _WCHAR_T_DECLARED
-#endif
-#endif
-
-#define        offsetof(type, member)  __offsetof(type, member)
-
-#endif /* _STDDEF_H_ */
diff --git a/include/lib/stdlib/stdio.h b/include/lib/stdlib/stdio.h
deleted file mode 100644 (file)
index 57e5c7f..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/*-
- * Copyright (c) 1990, 1993
- *     The Regents of the University of California.  All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Chris Torek.
- *
- * 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. 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.
- *
- *     @(#)stdio.h     8.5 (Berkeley) 4/29/95
- * $FreeBSD$
- */
-
-/*
- * Portions copyright (c) 2013-2014, ARM Limited and Contributors.
- * All rights reserved.
- */
-
-
-#ifndef        _STDIO_H_
-#define        _STDIO_H_
-
-#include <sys/cdefs.h>
-#include <sys/_null.h>
-#include <sys/_types.h>
-
-#ifndef _SIZE_T_DECLARED
-typedef        __size_t        size_t;
-#define        _SIZE_T_DECLARED
-#endif
-
-#ifndef _SSIZE_T_DECLARED
-#define        _SSIZE_T_DECLARED
-typedef        __ssize_t       ssize_t;
-#endif
-
-#define        EOF     (-1)
-
-int     printf(const char * __restrict, ...) __printflike(1, 2);
-int     putchar(int);
-int     puts(const char *);
-int     sprintf(char * __restrict, const char * __restrict, ...)
-       __printflike(2, 3);
-int     vsprintf(char * __restrict, const char * __restrict,
-          __va_list) __printflike(2, 0);
-
-int     sscanf(const char *__restrict, char const *__restrict, ...);
-
-#if __ISO_C_VISIBLE >= 1999
-int     snprintf(char * __restrict, size_t, const char * __restrict,
-          ...) __printflike(3, 4);
-int     vsnprintf(char * __restrict, size_t, const char * __restrict,
-          __va_list) __printflike(3, 0);
-#endif
-
-#endif /* !_STDIO_H_ */
diff --git a/include/lib/stdlib/stdlib.h b/include/lib/stdlib/stdlib.h
deleted file mode 100644 (file)
index b1ac1bf..0000000
+++ /dev/null
@@ -1,313 +0,0 @@
-/*-
- * Copyright (c) 1990, 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. 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.
- *
- *     @(#)stdlib.h    8.5 (Berkeley) 5/19/95
- * $FreeBSD$
- */
-
-#ifndef _STDLIB_H_
-#define        _STDLIB_H_
-
-#include <sys/cdefs.h>
-#include <sys/_null.h>
-#include <sys/_types.h>
-
-#if __BSD_VISIBLE
-#ifndef _RUNE_T_DECLARED
-typedef        __rune_t        rune_t;
-#define        _RUNE_T_DECLARED
-#endif
-#endif
-
-#ifndef _SIZE_T_DECLARED
-typedef        __size_t        size_t;
-#define        _SIZE_T_DECLARED
-#endif
-
-typedef struct {
-       int     quot;           /* quotient */
-       int     rem;            /* remainder */
-} div_t;
-
-typedef struct {
-       long    quot;
-       long    rem;
-} ldiv_t;
-
-#define        EXIT_FAILURE    1
-#define        EXIT_SUCCESS    0
-
-#define        RAND_MAX        0x7ffffffd
-
-__BEGIN_DECLS
-#ifdef _XLOCALE_H_
-#include <xlocale/_stdlib.h>
-#endif
-extern int __mb_cur_max;
-extern int ___mb_cur_max(void);
-#define        MB_CUR_MAX      (___mb_cur_max())
-
-_Noreturn void  abort(void);
-int     abs(int) __pure2;
-int     atexit(void (*)(void));
-double  atof(const char *);
-int     atoi(const char *);
-long    atol(const char *);
-void   *bsearch(const void *, const void *, size_t,
-           size_t, int (*)(const void *, const void *));
-void   *calloc(size_t, size_t) __malloc_like;
-div_t   div(int, int) __pure2;
-_Noreturn void  exit(int);
-void    free(void *);
-char   *getenv(const char *);
-long    labs(long) __pure2;
-ldiv_t  ldiv(long, long) __pure2;
-void   *malloc(size_t) __malloc_like;
-int     mblen(const char *, size_t);
-void    qsort(void *, size_t, size_t,
-           int (*)(const void *, const void *));
-int     rand(void);
-void   *realloc(void *, size_t);
-void    srand(unsigned);
-double  strtod(const char *__restrict, char **__restrict);
-float   strtof(const char *__restrict, char **__restrict);
-long    strtol(const char *__restrict, char **__restrict, int);
-long double
-        strtold(const char *__restrict, char **__restrict);
-unsigned long
-        strtoul(const char *__restrict, char **__restrict, int);
-int     system(const char *);
-
-/*
- * Functions added in C99 which we make conditionally available in the
- * BSD^C89 namespace if the compiler supports `long long'.
- * The #if test is more complicated than it ought to be because
- * __BSD_VISIBLE implies __ISO_C_VISIBLE == 1999 *even if* `long long'
- * is not supported in the compilation environment (which therefore means
- * that it can't really be ISO C99).
- *
- * (The only other extension made by C99 in thie header is _Exit().)
- */
-#if __ISO_C_VISIBLE >= 1999
-#ifdef __LONG_LONG_SUPPORTED
-/* LONGLONG */
-typedef struct {
-       long long quot;
-       long long rem;
-} lldiv_t;
-
-/* LONGLONG */
-long long
-        atoll(const char *);
-/* LONGLONG */
-long long
-        llabs(long long) __pure2;
-/* LONGLONG */
-lldiv_t         lldiv(long long, long long) __pure2;
-/* LONGLONG */
-long long
-        strtoll(const char *__restrict, char **__restrict, int);
-/* LONGLONG */
-unsigned long long
-        strtoull(const char *__restrict, char **__restrict, int);
-#endif /* __LONG_LONG_SUPPORTED */
-
-_Noreturn void  _Exit(int);
-#endif /* __ISO_C_VISIBLE >= 1999 */
-
-/*
- * If we're in a mode greater than C99, expose C11 functions.
- */
-#if __ISO_C_VISIBLE >= 2011 || __cplusplus >= 201103L
-void *aligned_alloc(size_t, size_t) __malloc_like;
-int    at_quick_exit(void (*)(void));
-_Noreturn void
-       quick_exit(int);
-#endif /* __ISO_C_VISIBLE >= 2011 */
-/*
- * Extensions made by POSIX relative to C.
- */
-#if __POSIX_VISIBLE >= 199506 || __XSI_VISIBLE
-char   *realpath(const char *__restrict, char *__restrict);
-#endif
-#if __POSIX_VISIBLE >= 199506
-int     rand_r(unsigned *);                    /* (TSF) */
-#endif
-#if __POSIX_VISIBLE >= 200112
-int     posix_memalign(void **, size_t, size_t); /* (ADV) */
-int     setenv(const char *, const char *, int);
-int     unsetenv(const char *);
-#endif
-
-#if __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE
-int     getsubopt(char **, char *const *, char **);
-#ifndef _MKDTEMP_DECLARED
-char   *mkdtemp(char *);
-#define        _MKDTEMP_DECLARED
-#endif
-#ifndef _MKSTEMP_DECLARED
-int     mkstemp(char *);
-#define        _MKSTEMP_DECLARED
-#endif
-#endif /* __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE */
-
-/*
- * The only changes to the XSI namespace in revision 6 were the deletion
- * of the ttyslot() and valloc() functions, which FreeBSD never declared
- * in this header.  For revision 7, ecvt(), fcvt(), and gcvt(), which
- * FreeBSD also does not have, and mktemp(), are to be deleted.
- */
-#if __XSI_VISIBLE
-/* XXX XSI requires pollution from <sys/wait.h> here.  We'd rather not. */
-long    a64l(const char *);
-double  drand48(void);
-/* char        *ecvt(double, int, int * __restrict, int * __restrict); */
-double  erand48(unsigned short[3]);
-/* char        *fcvt(double, int, int * __restrict, int * __restrict); */
-/* char        *gcvt(double, int, int * __restrict, int * __restrict); */
-int     grantpt(int);
-char   *initstate(unsigned long /* XSI requires u_int */, char *, long);
-long    jrand48(unsigned short[3]);
-char   *l64a(long);
-void    lcong48(unsigned short[7]);
-long    lrand48(void);
-#if !defined(_MKTEMP_DECLARED) && (__BSD_VISIBLE || __XSI_VISIBLE <= 600)
-char   *mktemp(char *);
-#define        _MKTEMP_DECLARED
-#endif
-long    mrand48(void);
-long    nrand48(unsigned short[3]);
-int     posix_openpt(int);
-char   *ptsname(int);
-int     putenv(char *);
-long    random(void);
-unsigned short
-       *seed48(unsigned short[3]);
-#ifndef _SETKEY_DECLARED
-int     setkey(const char *);
-#define        _SETKEY_DECLARED
-#endif
-char   *setstate(/* const */ char *);
-void    srand48(long);
-void    srandom(unsigned long);
-int     unlockpt(int);
-#endif /* __XSI_VISIBLE */
-
-#if __BSD_VISIBLE
-extern const char *malloc_conf;
-extern void (*malloc_message)(void *, const char *);
-
-/*
- * The alloca() function can't be implemented in C, and on some
- * platforms it can't be implemented at all as a callable function.
- * The GNU C compiler provides a built-in alloca() which we can use;
- * in all other cases, provide a prototype, mainly to pacify various
- * incarnations of lint.  On platforms where alloca() is not in libc,
- * programs which use it will fail to link when compiled with non-GNU
- * compilers.
- */
-#if __GNUC__ >= 2 || defined(__INTEL_COMPILER)
-#undef  alloca /* some GNU bits try to get cute and define this on their own */
-#define alloca(sz) __builtin_alloca(sz)
-#elif defined(lint)
-void   *alloca(size_t);
-#endif
-
-void    abort2(const char *, int, void **) __dead2;
-__uint32_t
-        arc4random(void);
-void    arc4random_addrandom(unsigned char *, int);
-void    arc4random_buf(void *, size_t);
-void    arc4random_stir(void);
-__uint32_t
-        arc4random_uniform(__uint32_t);
-#ifdef __BLOCKS__
-int     atexit_b(void (^)(void));
-void   *bsearch_b(const void *, const void *, size_t,
-           size_t, int (^)(const void *, const void *));
-#endif
-char   *getbsize(int *, long *);
-                                       /* getcap(3) functions */
-char   *cgetcap(char *, const char *, int);
-int     cgetclose(void);
-int     cgetent(char **, char **, const char *);
-int     cgetfirst(char **, char **);
-int     cgetmatch(const char *, const char *);
-int     cgetnext(char **, char **);
-int     cgetnum(char *, const char *, long *);
-int     cgetset(const char *);
-int     cgetstr(char *, const char *, char **);
-int     cgetustr(char *, const char *, char **);
-
-int     daemon(int, int);
-char   *devname(__dev_t, __mode_t);
-char   *devname_r(__dev_t, __mode_t, char *, int);
-char   *fdevname(int);
-char   *fdevname_r(int, char *, int);
-int     getloadavg(double [], int);
-const char *
-        getprogname(void);
-
-int     heapsort(void *, size_t, size_t, int (*)(const void *, const void *));
-#ifdef __BLOCKS__
-int     heapsort_b(void *, size_t, size_t, int (^)(const void *, const void *));
-void    qsort_b(void *, size_t, size_t,
-           int (^)(const void *, const void *));
-#endif
-int     l64a_r(long, char *, int);
-int     mergesort(void *, size_t, size_t, int (*)(const void *, const void *));
-#ifdef __BLOCKS__
-int     mergesort_b(void *, size_t, size_t, int (^)(const void *, const void *));
-#endif
-int     mkostemp(char *, int);
-int     mkostemps(char *, int, int);
-void    qsort_r(void *, size_t, size_t, void *,
-           int (*)(void *, const void *, const void *));
-int     radixsort(const unsigned char **, int, const unsigned char *,
-           unsigned);
-void    *reallocf(void *, size_t);
-int     rpmatch(const char *);
-void    setprogname(const char *);
-int     sradixsort(const unsigned char **, int, const unsigned char *,
-           unsigned);
-void    sranddev(void);
-void    srandomdev(void);
-long long
-       strtonum(const char *, long long, long long, const char **);
-
-/* Deprecated interfaces, to be removed in FreeBSD 6.0. */
-__int64_t
-        strtoq(const char *, char **, int);
-__uint64_t
-        strtouq(const char *, char **, int);
-
-extern char *suboptarg;                        /* getsubopt(3) external variable */
-#endif /* __BSD_VISIBLE */
-__END_DECLS
-
-#endif /* !_STDLIB_H_ */
diff --git a/include/lib/stdlib/string.h b/include/lib/stdlib/string.h
deleted file mode 100644 (file)
index 56677b2..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/*-
- * Copyright (c) 1990, 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. 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.
- *
- *     @(#)string.h    8.1 (Berkeley) 6/2/93
- * $FreeBSD$
- */
-
-/*
- * Portions copyright (c) 2013-2017, ARM Limited and Contributors.
- * All rights reserved.
- */
-
-#ifndef _STRING_H_
-#define        _STRING_H_
-
-#include <sys/cdefs.h>
-#include <sys/_null.h>
-#include <sys/_types.h>
-
-#ifndef _SIZE_T_DECLARED
-typedef        __size_t        size_t;
-#define        _SIZE_T_DECLARED
-#endif
-
-__BEGIN_DECLS
-
-void   *memchr(const void *, int, size_t) __pure;
-int     memcmp(const void *, const void *, size_t) __pure;
-void   *memcpy(void * __restrict, const void * __restrict, size_t);
-void   *memcpy16(void * __restrict, const void * __restrict, size_t);
-void   *memmove(void *, const void *, size_t);
-void   *memset(void *, int, size_t);
-
-char   *strchr(const char *, int) __pure;
-int     strcmp(const char *, const char *) __pure;
-size_t  strlen(const char *) __pure;
-int     strncmp(const char *, const char *, size_t) __pure;
-size_t  strnlen(const char *, size_t) __pure;
-int     strcasecmp(const char *, const char *);
-int     timingsafe_bcmp(const void *, const void *, size_t);
-
-__END_DECLS
-
-#endif /* _STRING_H_ */
diff --git a/include/lib/stdlib/strings.h b/include/lib/stdlib/strings.h
deleted file mode 100644 (file)
index 2210df0..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-/*-
- * Copyright (c) 2002 Mike Barcroft <mike@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$
- */
-
-#ifndef _STRINGS_H_
-#define        _STRINGS_H_
-
-#include <sys/cdefs.h>
-#include <sys/_types.h>
-
-#ifndef _SIZE_T_DECLARED
-typedef        __size_t        size_t;
-#define        _SIZE_T_DECLARED
-#endif
-
-__BEGIN_DECLS
-#if __BSD_VISIBLE || __POSIX_VISIBLE <= 200112
-int     bcmp(const void *, const void *, size_t) __pure;       /* LEGACY */
-void    bcopy(const void *, void *, size_t);                   /* LEGACY */
-void    bzero(void *, size_t);                                 /* LEGACY */
-#endif
-#if __BSD_VISIBLE
-void    explicit_bzero(void *, size_t);
-#endif
-#if __XSI_VISIBLE
-int     ffs(int) __pure2;
-#endif
-#if __BSD_VISIBLE
-int     ffsl(long) __pure2;
-int     ffsll(long long) __pure2;
-int     fls(int) __pure2;
-int     flsl(long) __pure2;
-int     flsll(long long) __pure2;
-#endif
-#if __BSD_VISIBLE || __POSIX_VISIBLE <= 200112
-char   *index(const char *, int) __pure;                       /* LEGACY */
-char   *rindex(const char *, int) __pure;                      /* LEGACY */
-#endif
-int     strcasecmp(const char *, const char *) __pure;
-int     strncasecmp(const char *, const char *, size_t) __pure;
-
-#if __POSIX_VISIBLE >= 200809 || defined(_XLOCALE_H_)
-#include <xlocale/_strings.h>
-#endif
-__END_DECLS
-
-#endif /* _STRINGS_H_ */
diff --git a/include/lib/stdlib/sys/_null.h b/include/lib/stdlib/sys/_null.h
deleted file mode 100644 (file)
index 92706c6..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*-
- * Copyright (c) 2003 Marcel Moolenaar
- * 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 ``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 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$
- */
-
-#ifndef NULL
-
-#if !defined(__cplusplus)
-#define        NULL    ((void *)0)
-#else
-#if __cplusplus >= 201103L
-#define        NULL    nullptr
-#elif defined(__GNUG__) && defined(__GNUC__) && __GNUC__ >= 4
-#define        NULL    __null
-#else
-#if defined(__LP64__)
-#define        NULL    (0L)
-#else
-#define        NULL    0
-#endif /* __LP64__ */
-#endif /* __GNUG__ */
-#endif /* !__cplusplus */
-
-#endif
diff --git a/include/lib/stdlib/sys/_stdint.h b/include/lib/stdlib/sys/_stdint.h
deleted file mode 100644 (file)
index d0f9249..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-/*-
- * Copyright (c) 2011 David E. O'Brien <obrien@FreeBSD.org>
- * Copyright (c) 2001 Mike Barcroft <mike@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$
- */
-
-#ifndef _SYS__STDINT_H_
-#define _SYS__STDINT_H_
-
-#ifndef _INT8_T_DECLARED
-typedef        __int8_t                int8_t;
-#define        _INT8_T_DECLARED
-#endif
-
-#ifndef _INT16_T_DECLARED
-typedef        __int16_t               int16_t;
-#define        _INT16_T_DECLARED
-#endif
-
-#ifndef _INT32_T_DECLARED
-typedef        __int32_t               int32_t;
-#define        _INT32_T_DECLARED
-#endif
-
-#ifndef _INT64_T_DECLARED
-typedef        __int64_t               int64_t;
-#define        _INT64_T_DECLARED
-#endif
-
-#ifndef _UINT8_T_DECLARED
-typedef        __uint8_t               uint8_t;
-#define        _UINT8_T_DECLARED
-#endif
-
-#ifndef _UINT16_T_DECLARED
-typedef        __uint16_t              uint16_t;
-#define        _UINT16_T_DECLARED
-#endif
-
-#ifndef _UINT32_T_DECLARED
-typedef        __uint32_t              uint32_t;
-#define        _UINT32_T_DECLARED
-#endif
-
-#ifndef _UINT64_T_DECLARED
-typedef        __uint64_t              uint64_t;
-#define        _UINT64_T_DECLARED
-#endif
-
-#ifndef _INTPTR_T_DECLARED
-typedef        __intptr_t              intptr_t;
-#define        _INTPTR_T_DECLARED
-#endif
-#ifndef _UINTPTR_T_DECLARED
-typedef        __uintptr_t             uintptr_t;
-#define        _UINTPTR_T_DECLARED
-#endif
-
-#endif /* !_SYS__STDINT_H_ */
diff --git a/include/lib/stdlib/sys/_timespec.h b/include/lib/stdlib/sys/_timespec.h
deleted file mode 100644 (file)
index d51559c..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/*-
- * Copyright (c) 1982, 1986, 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.
- * 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.
- *
- *     @(#)time.h      8.5 (Berkeley) 5/4/95
- * from: FreeBSD: src/sys/sys/time.h,v 1.43 2000/03/20 14:09:05 phk Exp
- *     $FreeBSD$
- */
-
-#ifndef _SYS__TIMESPEC_H_
-#define        _SYS__TIMESPEC_H_
-
-#include <sys/_types.h>
-
-#ifndef _TIME_T_DECLARED
-typedef        __time_t        time_t;
-#define        _TIME_T_DECLARED
-#endif
-
-struct timespec {
-       time_t  tv_sec;         /* seconds */
-       long    tv_nsec;        /* and nanoseconds */
-};
-
-#endif /* !_SYS__TIMESPEC_H_ */
diff --git a/include/lib/stdlib/sys/_types.h b/include/lib/stdlib/sys/_types.h
deleted file mode 100644 (file)
index c59afd3..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-/*-
- * Copyright (c) 2002 Mike Barcroft <mike@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$
- */
-
-#ifndef _SYS__TYPES_H_
-#define _SYS__TYPES_H_
-
-#include <sys/cdefs.h>
-#include <machine/_types.h>
-
-/*
- * Standard type definitions.
- */
-typedef        __uint32_t      __blksize_t;    /* file block size */
-typedef        __int64_t       __blkcnt_t;     /* file block count */
-typedef        __int32_t       __clockid_t;    /* clock_gettime()... */
-typedef        __uint64_t      __cap_rights_t; /* capability rights */
-typedef        __uint32_t      __fflags_t;     /* file flags */
-typedef        __uint64_t      __fsblkcnt_t;
-typedef        __uint64_t      __fsfilcnt_t;
-typedef        __uint32_t      __gid_t;
-typedef        __int64_t       __id_t;         /* can hold a gid_t, pid_t, or uid_t */
-typedef        __uint32_t      __ino_t;        /* inode number */
-typedef        long            __key_t;        /* IPC key (for Sys V IPC) */
-typedef        __int32_t       __lwpid_t;      /* Thread ID (a.k.a. LWP) */
-typedef        __uint16_t      __mode_t;       /* permissions */
-typedef        int             __accmode_t;    /* access permissions */
-typedef        int             __nl_item;
-typedef        __uint16_t      __nlink_t;      /* link count */
-typedef        __int64_t       __off_t;        /* file offset */
-typedef        __int32_t       __pid_t;        /* process [group] */
-typedef        __int64_t       __rlim_t;       /* resource limit - intentionally */
-                                       /* signed, because of legacy code */
-                                       /* that uses -1 for RLIM_INFINITY */
-typedef        __uint8_t       __sa_family_t;
-typedef        __uint32_t      __socklen_t;
-typedef        long            __suseconds_t;  /* microseconds (signed) */
-typedef        struct __timer  *__timer_t;     /* timer_gettime()... */
-typedef        struct __mq     *__mqd_t;       /* mq_open()... */
-typedef        __uint32_t      __uid_t;
-typedef        unsigned int    __useconds_t;   /* microseconds (unsigned) */
-typedef        int             __cpuwhich_t;   /* which parameter for cpuset. */
-typedef        int             __cpulevel_t;   /* level parameter for cpuset. */
-typedef int            __cpusetid_t;   /* cpuset identifier. */
-
-/*
- * Unusual type definitions.
- */
-/*
- * rune_t is declared to be an ``int'' instead of the more natural
- * ``unsigned long'' or ``long''.  Two things are happening here.  It is not
- * unsigned so that EOF (-1) can be naturally assigned to it and used.  Also,
- * it looks like 10646 will be a 31 bit standard.  This means that if your
- * ints cannot hold 32 bits, you will be in trouble.  The reason an int was
- * chosen over a long is that the is*() and to*() routines take ints (says
- * ANSI C), but they use __ct_rune_t instead of int.
- *
- * NOTE: rune_t is not covered by ANSI nor other standards, and should not
- * be instantiated outside of lib/libc/locale.  Use wchar_t.  wchar_t and
- * rune_t must be the same type.  Also, wint_t must be no narrower than
- * wchar_t, and should be able to hold all members of the largest
- * character set plus one extra value (WEOF), and must be at least 16 bits.
- */
-typedef        int             __ct_rune_t;    /* arg type for ctype funcs */
-typedef        __ct_rune_t     __rune_t;       /* rune_t (see above) */
-typedef        __ct_rune_t     __wchar_t;      /* wchar_t (see above) */
-typedef        __ct_rune_t     __wint_t;       /* wint_t (see above) */
-
-typedef        __uint32_t      __dev_t;        /* device number */
-
-typedef        __uint32_t      __fixpt_t;      /* fixed point number */
-
-/*
- * mbstate_t is an opaque object to keep conversion state during multibyte
- * stream conversions.
- */
-typedef union {
-       char            __mbstate8[128];
-       __int64_t       _mbstateL;      /* for alignment */
-} __mbstate_t;
-
-#endif /* !_SYS__TYPES_H_ */
diff --git a/include/lib/stdlib/sys/cdefs.h b/include/lib/stdlib/sys/cdefs.h
deleted file mode 100644 (file)
index 70c09fd..0000000
+++ /dev/null
@@ -1,688 +0,0 @@
-/*-
- * 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.
- * 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$
- */
-
-#ifndef        _SYS_CDEFS_H_
-#define        _SYS_CDEFS_H_
-
-#if defined(__cplusplus)
-#define        __BEGIN_DECLS   extern "C" {
-#define        __END_DECLS     }
-#else
-#define        __BEGIN_DECLS
-#define        __END_DECLS
-#endif
-
-/*
- * This code has been put in place to help reduce the addition of
- * compiler specific defines in FreeBSD code.  It helps to aid in
- * having a compiler-agnostic source tree.
- */
-
-#if defined(__GNUC__) || defined(__INTEL_COMPILER)
-
-#if __GNUC__ >= 3 || defined(__INTEL_COMPILER)
-#define __GNUCLIKE_ASM 3
-#define __GNUCLIKE_MATH_BUILTIN_CONSTANTS
-#else
-#define __GNUCLIKE_ASM 2
-#endif
-#define __GNUCLIKE___TYPEOF 1
-#define __GNUCLIKE___OFFSETOF 1
-#define __GNUCLIKE___SECTION 1
-
-#ifndef __INTEL_COMPILER
-# define __GNUCLIKE_CTOR_SECTION_HANDLING 1
-#endif
-
-#define __GNUCLIKE_BUILTIN_CONSTANT_P 1
-# if defined(__INTEL_COMPILER) && defined(__cplusplus) \
-    && __INTEL_COMPILER < 800
-#  undef __GNUCLIKE_BUILTIN_CONSTANT_P
-# endif
-
-#if (__GNUC_MINOR__ > 95 || __GNUC__ >= 3) && !defined(__INTEL_COMPILER)
-# define __GNUCLIKE_BUILTIN_VARARGS 1
-# define __GNUCLIKE_BUILTIN_STDARG 1
-# define __GNUCLIKE_BUILTIN_VAALIST 1
-#endif
-
-#if defined(__GNUC__)
-# define __GNUC_VA_LIST_COMPATIBILITY 1
-#endif
-
-#ifndef __INTEL_COMPILER
-# define __GNUCLIKE_BUILTIN_NEXT_ARG 1
-# define __GNUCLIKE_MATH_BUILTIN_RELOPS
-#endif
-
-#define __GNUCLIKE_BUILTIN_MEMCPY 1
-
-/* XXX: if __GNUC__ >= 2: not tested everywhere originally, where replaced */
-#define __CC_SUPPORTS_INLINE 1
-#define __CC_SUPPORTS___INLINE 1
-#define __CC_SUPPORTS___INLINE__ 1
-
-#define __CC_SUPPORTS___FUNC__ 1
-#define __CC_SUPPORTS_WARNING 1
-
-#define __CC_SUPPORTS_VARADIC_XXX 1 /* see varargs.h */
-
-#define __CC_SUPPORTS_DYNAMIC_ARRAY_INIT 1
-
-#endif /* __GNUC__ || __INTEL_COMPILER */
-
-/*
- * Macro to test if we're using a specific version of gcc or later.
- */
-#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
-#define        __GNUC_PREREQ__(ma, mi) \
-       (__GNUC__ > (ma) || __GNUC__ == (ma) && __GNUC_MINOR__ >= (mi))
-#else
-#define        __GNUC_PREREQ__(ma, mi) 0
-#endif
-
-/*
- * The __CONCAT macro is used to concatenate parts of symbol names, e.g.
- * with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo.
- * The __CONCAT macro is a bit tricky to use if it must work in non-ANSI
- * mode -- there must be no spaces between its arguments, and for nested
- * __CONCAT's, all the __CONCAT's must be at the left.  __CONCAT can also
- * concatenate double-quoted strings produced by the __STRING macro, but
- * this only works with ANSI C.
- *
- * __XSTRING is like __STRING, but it expands any macros in its argument
- * first.  It is only available with ANSI C.
- */
-#if defined(__STDC__) || defined(__cplusplus)
-#define        __P(protos)     protos          /* full-blown ANSI C */
-#define        __CONCAT1(x,y)  x ## y
-#define        __CONCAT(x,y)   __CONCAT1(x,y)
-#define        __STRING(x)     #x              /* stringify without expanding x */
-#define        __XSTRING(x)    __STRING(x)     /* expand x, then stringify */
-
-#define        __const         const           /* define reserved names to standard */
-#define        __signed        signed
-#define        __volatile      volatile
-#if defined(__cplusplus)
-#define        __inline        inline          /* convert to C++ keyword */
-#else
-#if !(defined(__CC_SUPPORTS___INLINE))
-#define        __inline                        /* delete GCC keyword */
-#endif /* ! __CC_SUPPORTS___INLINE */
-#endif /* !__cplusplus */
-
-#else  /* !(__STDC__ || __cplusplus) */
-#define        __P(protos)     ()              /* traditional C preprocessor */
-#define        __CONCAT(x,y)   x/**/y
-#define        __STRING(x)     "x"
-
-#if !defined(__CC_SUPPORTS___INLINE)
-#define        __const                         /* delete pseudo-ANSI C keywords */
-#define        __inline
-#define        __signed
-#define        __volatile
-/*
- * In non-ANSI C environments, new programs will want ANSI-only C keywords
- * deleted from the program and old programs will want them left alone.
- * When using a compiler other than gcc, programs using the ANSI C keywords
- * const, inline etc. as normal identifiers should define -DNO_ANSI_KEYWORDS.
- * When using "gcc -traditional", we assume that this is the intent; if
- * __GNUC__ is defined but __STDC__ is not, we leave the new keywords alone.
- */
-#ifndef        NO_ANSI_KEYWORDS
-#define        const                           /* delete ANSI C keywords */
-#define        inline
-#define        signed
-#define        volatile
-#endif /* !NO_ANSI_KEYWORDS */
-#endif /* !__CC_SUPPORTS___INLINE */
-#endif /* !(__STDC__ || __cplusplus) */
-
-/*
- * Compiler-dependent macros to help declare dead (non-returning) and
- * pure (no side effects) functions, and unused variables.  They are
- * null except for versions of gcc that are known to support the features
- * properly (old versions of gcc-2 supported the dead and pure features
- * in a different (wrong) way).  If we do not provide an implementation
- * for a given compiler, let the compile fail if it is told to use
- * a feature that we cannot live without.
- */
-#ifdef lint
-#define        __dead2
-#define        __pure2
-#define        __unused
-#define        __packed
-#define        __aligned(x)
-#define        __section(x)
-#else
-#if !__GNUC_PREREQ__(2, 5) && !defined(__INTEL_COMPILER)
-#define        __dead2
-#define        __pure2
-#define        __unused
-#endif
-#if __GNUC__ == 2 && __GNUC_MINOR__ >= 5 && __GNUC_MINOR__ < 7 && !defined(__INTEL_COMPILER)
-#define        __dead2         __attribute__((__noreturn__))
-#define        __pure2         __attribute__((__const__))
-#define        __unused
-/* XXX Find out what to do for __packed, __aligned and __section */
-#endif
-#if __GNUC_PREREQ__(2, 7)
-#define        __dead2         __attribute__((__noreturn__))
-#define        __pure2         __attribute__((__const__))
-#define        __unused        __attribute__((__unused__))
-#define        __used          __attribute__((__used__))
-#define        __packed        __attribute__((__packed__))
-#define        __aligned(x)    __attribute__((__aligned__(x)))
-#define        __section(x)    __attribute__((__section__(x)))
-#endif
-#if defined(__INTEL_COMPILER)
-#define __dead2                __attribute__((__noreturn__))
-#define __pure2                __attribute__((__const__))
-#define __unused       __attribute__((__unused__))
-#define __used         __attribute__((__used__))
-#define __packed       __attribute__((__packed__))
-#define __aligned(x)   __attribute__((__aligned__(x)))
-#define __section(x)   __attribute__((__section__(x)))
-#endif
-#endif
-
-#if !__GNUC_PREREQ__(2, 95)
-#define        __alignof(x)    __offsetof(struct { char __a; x __b; }, __b)
-#endif
-
-/*
- * Keywords added in C11.
- */
-#if defined(__cplusplus) && __cplusplus >= 201103L
-#define        _Alignas(e)             alignas(e)
-#define        _Alignof(e)             alignof(e)
-#define        _Noreturn               [[noreturn]]
-#define        _Static_assert(e, s)    static_assert(e, s)
-/* FIXME: change this to thread_local when clang in base supports it */
-#define        _Thread_local           __thread
-#elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
-/* Do nothing.  They are language keywords. */
-#else
-/* Not supported.  Implement them using our versions. */
-#define        _Alignas(x)             __aligned(x)
-#define        _Alignof(x)             __alignof(x)
-#define        _Noreturn               __dead2
-#define        _Thread_local           __thread
-#ifdef __COUNTER__
-#define        _Static_assert(x, y)    __Static_assert(x, __COUNTER__)
-#define        __Static_assert(x, y)   ___Static_assert(x, y)
-#define        ___Static_assert(x, y)  typedef char __assert_ ## y[(x) ? 1 : -1]
-#else
-#define        _Static_assert(x, y)    struct __hack
-#endif
-#endif
-
-/*
- * Emulation of C11 _Generic().  Unlike the previously defined C11
- * keywords, it is not possible to implement this using exactly the same
- * syntax.  Therefore implement something similar under the name
- * __generic().  Unlike _Generic(), this macro can only distinguish
- * between a single type, so it requires nested invocations to
- * distinguish multiple cases.
- */
-
-#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
-#define        __generic(expr, t, yes, no)                                     \
-       _Generic(expr, t: yes, default: no)
-#elif __GNUC_PREREQ__(3, 1) && !defined(__cplusplus)
-#define        __generic(expr, t, yes, no)                                     \
-       __builtin_choose_expr(                                          \
-           __builtin_types_compatible_p(__typeof(expr), t), yes, no)
-#endif
-
-#if __GNUC_PREREQ__(2, 96)
-#define        __malloc_like   __attribute__((__malloc__))
-#define        __pure          __attribute__((__pure__))
-#else
-#define        __malloc_like
-#define        __pure
-#endif
-
-#if __GNUC_PREREQ__(3, 1) || (defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 800)
-#define        __always_inline __attribute__((__always_inline__))
-#else
-#define        __always_inline
-#endif
-
-#if __GNUC_PREREQ__(3, 1)
-#define        __noinline      __attribute__ ((__noinline__))
-#define        __deprecated    __attribute__ ((__deprecated__))
-#else
-#define        __noinline
-#define        __deprecated
-#endif
-
-#if __GNUC_PREREQ__(3, 3)
-#define __nonnull(x)   __attribute__((__nonnull__(x)))
-#else
-#define __nonnull(x)
-#endif
-
-#if __GNUC_PREREQ__(3, 4)
-#define        __fastcall      __attribute__((__fastcall__))
-#else
-#define        __fastcall
-#endif
-
-#if __GNUC_PREREQ__(4, 1)
-#define        __returns_twice __attribute__((__returns_twice__))
-#else
-#define        __returns_twice
-#endif
-
-/* XXX: should use `#if __STDC_VERSION__ < 199901'. */
-#if !__GNUC_PREREQ__(2, 7) && !defined(__INTEL_COMPILER)
-#define        __func__        NULL
-#endif
-
-#if (defined(__INTEL_COMPILER) || (defined(__GNUC__) && __GNUC__ >= 2)) && !defined(__STRICT_ANSI__) || __STDC_VERSION__ >= 199901
-#define        __LONG_LONG_SUPPORTED
-#endif
-
-/* C++11 exposes a load of C99 stuff */
-#if defined(__cplusplus) && __cplusplus >= 201103L
-#define        __LONG_LONG_SUPPORTED
-#ifndef        __STDC_LIMIT_MACROS
-#define        __STDC_LIMIT_MACROS
-#endif
-#ifndef        __STDC_CONSTANT_MACROS
-#define        __STDC_CONSTANT_MACROS
-#endif
-#endif
-
-/*
- * GCC 2.95 provides `__restrict' as an extension to C90 to support the
- * C99-specific `restrict' type qualifier.  We happen to use `__restrict' as
- * a way to define the `restrict' type qualifier without disturbing older
- * software that is unaware of C99 keywords.
- */
-#if !(__GNUC__ == 2 && __GNUC_MINOR__ == 95)
-#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901 || defined(lint)
-#define        __restrict
-#else
-#define        __restrict      restrict
-#endif
-#endif
-
-/*
- * GNU C version 2.96 adds explicit branch prediction so that
- * the CPU back-end can hint the processor and also so that
- * code blocks can be reordered such that the predicted path
- * sees a more linear flow, thus improving cache behavior, etc.
- *
- * The following two macros provide us with a way to utilize this
- * compiler feature.  Use __predict_true() if you expect the expression
- * to evaluate to true, and __predict_false() if you expect the
- * expression to evaluate to false.
- *
- * A few notes about usage:
- *
- *     * Generally, __predict_false() error condition checks (unless
- *       you have some _strong_ reason to do otherwise, in which case
- *       document it), and/or __predict_true() `no-error' condition
- *       checks, assuming you want to optimize for the no-error case.
- *
- *     * Other than that, if you don't know the likelihood of a test
- *       succeeding from empirical or other `hard' evidence, don't
- *       make predictions.
- *
- *     * These are meant to be used in places that are run `a lot'.
- *       It is wasteful to make predictions in code that is run
- *       seldomly (e.g. at subsystem initialization time) as the
- *       basic block reordering that this affects can often generate
- *       larger code.
- */
-#if __GNUC_PREREQ__(2, 96)
-#define __predict_true(exp)     __builtin_expect((exp), 1)
-#define __predict_false(exp)    __builtin_expect((exp), 0)
-#else
-#define __predict_true(exp)     (exp)
-#define __predict_false(exp)    (exp)
-#endif
-
-#if __GNUC_PREREQ__(4, 2)
-#define        __hidden        __attribute__((__visibility__("hidden")))
-#define        __exported      __attribute__((__visibility__("default")))
-#else
-#define        __hidden
-#define        __exported
-#endif
-
-/*
- * We define this here since <stddef.h>, <sys/queue.h>, and <sys/types.h>
- * require it.
- */
-#if __GNUC_PREREQ__(4, 1)
-#define __offsetof(type, field)         __builtin_offsetof(type, field)
-#else
-#ifndef __cplusplus
-#define        __offsetof(type, field) \
-       ((__size_t)(__uintptr_t)((const volatile void *)&((type *)0)->field))
-#else
-#define __offsetof(type, field)                                        \
-  (__offsetof__ (reinterpret_cast <__size_t>                   \
-                 (&reinterpret_cast <const volatile char &>    \
-                  (static_cast<type *> (0)->field))))
-#endif
-#endif
-#define        __rangeof(type, start, end) \
-       (__offsetof(type, end) - __offsetof(type, start))
-
-/*
- * Given the pointer x to the member m of the struct s, return
- * a pointer to the containing structure.  When using GCC, we first
- * assign pointer x to a local variable, to check that its type is
- * compatible with member m.
- */
-#if __GNUC_PREREQ__(3, 1)
-#define        __containerof(x, s, m) ({                                       \
-       const volatile __typeof(((s *)0)->m) *__x = (x);                \
-       __DEQUALIFY(s *, (const volatile char *)__x - __offsetof(s, m));\
-})
-#else
-#define        __containerof(x, s, m)                                          \
-       __DEQUALIFY(s *, (const volatile char *)(x) - __offsetof(s, m))
-#endif
-
-/*
- * Compiler-dependent macros to declare that functions take printf-like
- * or scanf-like arguments.  They are null except for versions of gcc
- * that are known to support the features properly (old versions of gcc-2
- * didn't permit keeping the keywords out of the application namespace).
- */
-#if !__GNUC_PREREQ__(2, 7) && !defined(__INTEL_COMPILER)
-#define        __printflike(fmtarg, firstvararg)
-#define        __scanflike(fmtarg, firstvararg)
-#define        __format_arg(fmtarg)
-#define        __strfmonlike(fmtarg, firstvararg)
-#define        __strftimelike(fmtarg, firstvararg)
-#else
-#define        __printflike(fmtarg, firstvararg) \
-           __attribute__((__format__ (__printf__, fmtarg, firstvararg)))
-#define        __scanflike(fmtarg, firstvararg) \
-           __attribute__((__format__ (__scanf__, fmtarg, firstvararg)))
-#define        __format_arg(fmtarg)    __attribute__((__format_arg__ (fmtarg)))
-#define        __strfmonlike(fmtarg, firstvararg) \
-           __attribute__((__format__ (__strfmon__, fmtarg, firstvararg)))
-#define        __strftimelike(fmtarg, firstvararg) \
-           __attribute__((__format__ (__strftime__, fmtarg, firstvararg)))
-#endif
-
-/* Compiler-dependent macros that rely on FreeBSD-specific extensions. */
-#if __FreeBSD_cc_version >= 300001 && defined(__GNUC__) && !defined(__INTEL_COMPILER)
-#define        __printf0like(fmtarg, firstvararg) \
-           __attribute__((__format__ (__printf0__, fmtarg, firstvararg)))
-#else
-#define        __printf0like(fmtarg, firstvararg)
-#endif
-
-#if defined(__GNUC__) || defined(__INTEL_COMPILER)
-#ifndef __INTEL_COMPILER
-#define        __strong_reference(sym,aliassym)        \
-       extern __typeof (sym) aliassym __attribute__ ((__alias__ (#sym)))
-#endif
-#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")
-#define        __sym_compat(sym,impl,verid)    \
-       __asm__(".symver " #impl ", " #sym "@" #verid)
-#define        __sym_default(sym,impl,verid)   \
-       __asm__(".symver " #impl ", " #sym "@@" #verid)
-#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")
-#define        __sym_compat(sym,impl,verid)    \
-       __asm__(".symver impl, sym@verid")
-#define        __sym_default(impl,sym,verid)   \
-       __asm__(".symver impl, sym@@verid")
-#endif /* __STDC__ */
-#endif /* __GNUC__ || __INTEL_COMPILER */
-
-#define        __GLOBL1(sym)   __asm__(".globl " #sym)
-#define        __GLOBL(sym)    __GLOBL1(sym)
-
-#if defined(__GNUC__) || defined(__INTEL_COMPILER)
-#define        __IDSTRING(name,string) __asm__(".ident\t\"" string "\"")
-#else
-/*
- * The following definition might not work well if used in header files,
- * but it should be better than nothing.  If you want a "do nothing"
- * version, then it should generate some harmless declaration, such as:
- *    #define __IDSTRING(name,string)  struct __hack
- */
-#define        __IDSTRING(name,string) static const char name[] __unused = string
-#endif
-
-/*
- * Embed the rcs id of a source file in the resulting library.  Note that in
- * more recent ELF binutils, we use .ident allowing the ID to be stripped.
- * Usage:
- *     __FBSDID("$FreeBSD$");
- */
-#ifndef        __FBSDID
-#if !defined(lint) && !defined(STRIP_FBSDID)
-#define        __FBSDID(s)     __IDSTRING(__CONCAT(__rcsid_,__LINE__),s)
-#else
-#define        __FBSDID(s)     struct __hack
-#endif
-#endif
-
-#ifndef        __RCSID
-#ifndef        NO__RCSID
-#define        __RCSID(s)      __IDSTRING(__CONCAT(__rcsid_,__LINE__),s)
-#else
-#define        __RCSID(s)      struct __hack
-#endif
-#endif
-
-#ifndef        __RCSID_SOURCE
-#ifndef        NO__RCSID_SOURCE
-#define        __RCSID_SOURCE(s)       __IDSTRING(__CONCAT(__rcsid_source_,__LINE__),s)
-#else
-#define        __RCSID_SOURCE(s)       struct __hack
-#endif
-#endif
-
-#ifndef        __SCCSID
-#ifndef        NO__SCCSID
-#define        __SCCSID(s)     __IDSTRING(__CONCAT(__sccsid_,__LINE__),s)
-#else
-#define        __SCCSID(s)     struct __hack
-#endif
-#endif
-
-#ifndef        __COPYRIGHT
-#ifndef        NO__COPYRIGHT
-#define        __COPYRIGHT(s)  __IDSTRING(__CONCAT(__copyright_,__LINE__),s)
-#else
-#define        __COPYRIGHT(s)  struct __hack
-#endif
-#endif
-
-#ifndef        __DECONST
-#define        __DECONST(type, var)    ((type)(__uintptr_t)(const void *)(var))
-#endif
-
-#ifndef        __DEVOLATILE
-#define        __DEVOLATILE(type, var) ((type)(__uintptr_t)(volatile void *)(var))
-#endif
-
-#ifndef        __DEQUALIFY
-#define        __DEQUALIFY(type, var)  ((type)(__uintptr_t)(const volatile void *)(var))
-#endif
-
-/*-
- * The following definitions are an extension of the behavior originally
- * implemented in <sys/_posix.h>, but with a different level of granularity.
- * POSIX.1 requires that the macros we test be defined before any standard
- * header file is included.
- *
- * Here's a quick run-down of the versions:
- *  defined(_POSIX_SOURCE)             1003.1-1988
- *  _POSIX_C_SOURCE == 1               1003.1-1990
- *  _POSIX_C_SOURCE == 2               1003.2-1992 C Language Binding Option
- *  _POSIX_C_SOURCE == 199309          1003.1b-1993
- *  _POSIX_C_SOURCE == 199506          1003.1c-1995, 1003.1i-1995,
- *                                     and the omnibus ISO/IEC 9945-1: 1996
- *  _POSIX_C_SOURCE == 200112          1003.1-2001
- *  _POSIX_C_SOURCE == 200809          1003.1-2008
- *
- * In addition, the X/Open Portability Guide, which is now the Single UNIX
- * Specification, defines a feature-test macro which indicates the version of
- * that specification, and which subsumes _POSIX_C_SOURCE.
- *
- * Our macros begin with two underscores to avoid namespace screwage.
- */
-
-/* Deal with IEEE Std. 1003.1-1990, in which _POSIX_C_SOURCE == 1. */
-#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE == 1
-#undef _POSIX_C_SOURCE         /* Probably illegal, but beyond caring now. */
-#define        _POSIX_C_SOURCE         199009
-#endif
-
-/* Deal with IEEE Std. 1003.2-1992, in which _POSIX_C_SOURCE == 2. */
-#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE == 2
-#undef _POSIX_C_SOURCE
-#define        _POSIX_C_SOURCE         199209
-#endif
-
-/* Deal with various X/Open Portability Guides and Single UNIX Spec. */
-#ifdef _XOPEN_SOURCE
-#if _XOPEN_SOURCE - 0 >= 700
-#define        __XSI_VISIBLE           700
-#undef _POSIX_C_SOURCE
-#define        _POSIX_C_SOURCE         200809
-#elif _XOPEN_SOURCE - 0 >= 600
-#define        __XSI_VISIBLE           600
-#undef _POSIX_C_SOURCE
-#define        _POSIX_C_SOURCE         200112
-#elif _XOPEN_SOURCE - 0 >= 500
-#define        __XSI_VISIBLE           500
-#undef _POSIX_C_SOURCE
-#define        _POSIX_C_SOURCE         199506
-#endif
-#endif
-
-/*
- * Deal with all versions of POSIX.  The ordering relative to the tests above is
- * important.
- */
-#if defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE)
-#define        _POSIX_C_SOURCE         198808
-#endif
-#ifdef _POSIX_C_SOURCE
-#if _POSIX_C_SOURCE >= 200809
-#define        __POSIX_VISIBLE         200809
-#define        __ISO_C_VISIBLE         1999
-#elif _POSIX_C_SOURCE >= 200112
-#define        __POSIX_VISIBLE         200112
-#define        __ISO_C_VISIBLE         1999
-#elif _POSIX_C_SOURCE >= 199506
-#define        __POSIX_VISIBLE         199506
-#define        __ISO_C_VISIBLE         1990
-#elif _POSIX_C_SOURCE >= 199309
-#define        __POSIX_VISIBLE         199309
-#define        __ISO_C_VISIBLE         1990
-#elif _POSIX_C_SOURCE >= 199209
-#define        __POSIX_VISIBLE         199209
-#define        __ISO_C_VISIBLE         1990
-#elif _POSIX_C_SOURCE >= 199009
-#define        __POSIX_VISIBLE         199009
-#define        __ISO_C_VISIBLE         1990
-#else
-#define        __POSIX_VISIBLE         198808
-#define        __ISO_C_VISIBLE         0
-#endif /* _POSIX_C_SOURCE */
-#else
-/*-
- * Deal with _ANSI_SOURCE:
- * If it is defined, and no other compilation environment is explicitly
- * requested, then define our internal feature-test macros to zero.  This
- * makes no difference to the preprocessor (undefined symbols in preprocessing
- * expressions are defined to have value zero), but makes it more convenient for
- * a test program to print out the values.
- *
- * If a program mistakenly defines _ANSI_SOURCE and some other macro such as
- * _POSIX_C_SOURCE, we will assume that it wants the broader compilation
- * environment (and in fact we will never get here).
- */
-#if defined(_ANSI_SOURCE)      /* Hide almost everything. */
-#define        __POSIX_VISIBLE         0
-#define        __XSI_VISIBLE           0
-#define        __BSD_VISIBLE           0
-#define        __ISO_C_VISIBLE         1990
-#elif defined(_C99_SOURCE)     /* Localism to specify strict C99 env. */
-#define        __POSIX_VISIBLE         0
-#define        __XSI_VISIBLE           0
-#define        __BSD_VISIBLE           0
-#define        __ISO_C_VISIBLE         1999
-#else                          /* Default environment: show everything. */
-#define        __POSIX_VISIBLE         200809
-#define        __XSI_VISIBLE           700
-#define        __BSD_VISIBLE           1
-#define        __ISO_C_VISIBLE         1999
-#endif
-#endif
-
-#ifndef        __has_feature
-#define        __has_feature(x) 0
-#endif
-#ifndef        __has_include
-#define        __has_include(x) 0
-#endif
-#ifndef        __has_builtin
-#define        __has_builtin(x) 0
-#endif
-
-#if defined(__mips) || defined(__powerpc64__) || defined(__arm__)
-#define __NO_TLS 1
-#endif
-
-#endif /* !_SYS_CDEFS_H_ */
diff --git a/include/lib/stdlib/sys/ctype.h b/include/lib/stdlib/sys/ctype.h
deleted file mode 100644 (file)
index f2758b7..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-/*-
- * Copyright (c) 1982, 1988, 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.
- *
- * 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.
- * 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.
- *
- * $FreeBSD$
- */
-
-/*
- * Portions copyright (c) 2009-2014, ARM Limited and Contributors.
- * All rights reserved.
- */
-
-#ifndef _SYS_CTYPE_H_
-#define        _SYS_CTYPE_H_
-
-#define isspace(c)     ((c) == ' ' || ((c) >= '\t' && (c) <= '\r'))
-#define isascii(c)     (((c) & ~0x7f) == 0)
-#define isupper(c)     ((c) >= 'A' && (c) <= 'Z')
-#define islower(c)     ((c) >= 'a' && (c) <= 'z')
-#define isalpha(c)     (isupper(c) || islower(c))
-#define isdigit(c)     ((c) >= '0' && (c) <= '9')
-#define isxdigit(c)    (isdigit(c) \
-                         || ((c) >= 'A' && (c) <= 'F') \
-                         || ((c) >= 'a' && (c) <= 'f'))
-#define isprint(c)     ((c) >= ' ' && (c) <= '~')
-
-#define toupper(c)     ((c) - 0x20 * (((c) >= 'a') && ((c) <= 'z')))
-#define tolower(c)     ((c) + 0x20 * (((c) >= 'A') && ((c) <= 'Z')))
-
-#endif /* !_SYS_CTYPE_H_ */
diff --git a/include/lib/stdlib/sys/endian.h b/include/lib/stdlib/sys/endian.h
deleted file mode 100644 (file)
index d50110c..0000000
+++ /dev/null
@@ -1,205 +0,0 @@
-/*-
- * Copyright (c) 2002 Thomas Moestl <tmm@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$
- */
-
-#ifndef _SYS_ENDIAN_H_
-#define _SYS_ENDIAN_H_
-
-#include <sys/cdefs.h>
-#include <sys/_types.h>
-#include <machine/endian.h>
-
-#ifndef _UINT8_T_DECLARED
-typedef        __uint8_t       uint8_t;
-#define        _UINT8_T_DECLARED
-#endif
-#ifndef _UINT16_T_DECLARED
-typedef        __uint16_t      uint16_t;
-#define        _UINT16_T_DECLARED
-#endif
-#ifndef _UINT32_T_DECLARED
-typedef        __uint32_t      uint32_t;
-#define        _UINT32_T_DECLARED
-#endif
-#ifndef _UINT64_T_DECLARED
-typedef        __uint64_t      uint64_t;
-#define        _UINT64_T_DECLARED
-#endif
-/*
- * General byte order swapping functions.
- */
-#define        bswap16(x)      __bswap16(x)
-#define        bswap32(x)      __bswap32(x)
-#define        bswap64(x)      __bswap64(x)
-
-/*
- * Host to big endian, host to little endian, big endian to host, and little
- * endian to host byte order functions as detailed in byteorder(9).
- */
-#if _BYTE_ORDER == _LITTLE_ENDIAN
-#define        htobe16(x)      bswap16((x))
-#define        htobe32(x)      bswap32((x))
-#define        htobe64(x)      bswap64((x))
-#define        htole16(x)      ((uint16_t)(x))
-#define        htole32(x)      ((uint32_t)(x))
-#define        htole64(x)      ((uint64_t)(x))
-
-#define        be16toh(x)      bswap16((x))
-#define        be32toh(x)      bswap32((x))
-#define        be64toh(x)      bswap64((x))
-#define        le16toh(x)      ((uint16_t)(x))
-#define        le32toh(x)      ((uint32_t)(x))
-#define        le64toh(x)      ((uint64_t)(x))
-#else /* _BYTE_ORDER != _LITTLE_ENDIAN */
-#define        htobe16(x)      ((uint16_t)(x))
-#define        htobe32(x)      ((uint32_t)(x))
-#define        htobe64(x)      ((uint64_t)(x))
-#define        htole16(x)      bswap16((x))
-#define        htole32(x)      bswap32((x))
-#define        htole64(x)      bswap64((x))
-
-#define        be16toh(x)      ((uint16_t)(x))
-#define        be32toh(x)      ((uint32_t)(x))
-#define        be64toh(x)      ((uint64_t)(x))
-#define        le16toh(x)      bswap16((x))
-#define        le32toh(x)      bswap32((x))
-#define        le64toh(x)      bswap64((x))
-#endif /* _BYTE_ORDER == _LITTLE_ENDIAN */
-
-/* Alignment-agnostic encode/decode bytestream to/from little/big endian. */
-
-static __inline uint16_t
-be16dec(const void *pp)
-{
-       uint8_t const *p = (uint8_t const *)pp;
-
-       return ((p[0] << 8) | p[1]);
-}
-
-static __inline uint32_t
-be32dec(const void *pp)
-{
-       uint8_t const *p = (uint8_t const *)pp;
-
-       return (((unsigned)p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3]);
-}
-
-static __inline uint64_t
-be64dec(const void *pp)
-{
-       uint8_t const *p = (uint8_t const *)pp;
-
-       return (((uint64_t)be32dec(p) << 32) | be32dec(p + 4));
-}
-
-static __inline uint16_t
-le16dec(const void *pp)
-{
-       uint8_t const *p = (uint8_t const *)pp;
-
-       return ((p[1] << 8) | p[0]);
-}
-
-static __inline uint32_t
-le32dec(const void *pp)
-{
-       uint8_t const *p = (uint8_t const *)pp;
-
-       return (((unsigned)p[3] << 24) | (p[2] << 16) | (p[1] << 8) | p[0]);
-}
-
-static __inline uint64_t
-le64dec(const void *pp)
-{
-       uint8_t const *p = (uint8_t const *)pp;
-
-       return (((uint64_t)le32dec(p + 4) << 32) | le32dec(p));
-}
-
-static __inline void
-be16enc(void *pp, uint16_t u)
-{
-       uint8_t *p = (uint8_t *)pp;
-
-       p[0] = (u >> 8) & 0xff;
-       p[1] = u & 0xff;
-}
-
-static __inline void
-be32enc(void *pp, uint32_t u)
-{
-       uint8_t *p = (uint8_t *)pp;
-
-       p[0] = (u >> 24) & 0xff;
-       p[1] = (u >> 16) & 0xff;
-       p[2] = (u >> 8) & 0xff;
-       p[3] = u & 0xff;
-}
-
-static __inline void
-be64enc(void *pp, uint64_t u)
-{
-       uint8_t *p = (uint8_t *)pp;
-
-       be32enc(p, (uint32_t)(u >> 32));
-       be32enc(p + 4, (uint32_t)(u & 0xffffffffU));
-}
-
-static __inline void
-le16enc(void *pp, uint16_t u)
-{
-       uint8_t *p = (uint8_t *)pp;
-
-       p[0] = u & 0xff;
-       p[1] = (u >> 8) & 0xff;
-}
-
-static __inline void
-le32enc(void *pp, uint32_t u)
-{
-       uint8_t *p = (uint8_t *)pp;
-
-       p[0] = u & 0xff;
-       p[1] = (u >> 8) & 0xff;
-       p[2] = (u >> 16) & 0xff;
-       p[3] = (u >> 24) & 0xff;
-}
-
-static __inline void
-le64enc(void *pp, uint64_t u)
-{
-       uint8_t *p = (uint8_t *)pp;
-
-       le32enc(p, (uint32_t)(u & 0xffffffffU));
-       le32enc(p + 4, (uint32_t)(u >> 32));
-}
-
-#endif /* _SYS_ENDIAN_H_ */
diff --git a/include/lib/stdlib/sys/errno.h b/include/lib/stdlib/sys/errno.h
deleted file mode 100644 (file)
index f595514..0000000
+++ /dev/null
@@ -1,193 +0,0 @@
-/*-
- * Copyright (c) 1982, 1986, 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.
- * 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.
- *
- *     @(#)errno.h     8.5 (Berkeley) 1/21/94
- * $FreeBSD$
- */
-
-#ifndef _SYS_ERRNO_H_
-#define _SYS_ERRNO_H_
-
-#ifndef _KERNEL
-#include <sys/cdefs.h>
-__BEGIN_DECLS
-int *  __error(void);
-__END_DECLS
-#define        errno           (* __error())
-#endif
-
-#define        EPERM           1               /* Operation not permitted */
-#define        ENOENT          2               /* No such file or directory */
-#define        ESRCH           3               /* No such process */
-#define        EINTR           4               /* Interrupted system call */
-#define        EIO             5               /* Input/output error */
-#define        ENXIO           6               /* Device not configured */
-#define        E2BIG           7               /* Argument list too long */
-#define        ENOEXEC         8               /* Exec format error */
-#define        EBADF           9               /* Bad file descriptor */
-#define        ECHILD          10              /* No child processes */
-#define        EDEADLK         11              /* Resource deadlock avoided */
-                                       /* 11 was EAGAIN */
-#define        ENOMEM          12              /* Cannot allocate memory */
-#define        EACCES          13              /* Permission denied */
-#define        EFAULT          14              /* Bad address */
-#ifndef _POSIX_SOURCE
-#define        ENOTBLK         15              /* Block device required */
-#endif
-#define        EBUSY           16              /* Device busy */
-#define        EEXIST          17              /* File exists */
-#define        EXDEV           18              /* Cross-device link */
-#define        ENODEV          19              /* Operation not supported by 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              /* Inappropriate ioctl for device */
-#ifndef _POSIX_SOURCE
-#define        ETXTBSY         26              /* Text file busy */
-#endif
-#define        EFBIG           27              /* File too large */
-#define        ENOSPC          28              /* No space left on device */
-#define        ESPIPE          29              /* Illegal seek */
-#define        EROFS           30              /* Read-only filesystem */
-#define        EMLINK          31              /* Too many links */
-#define        EPIPE           32              /* Broken pipe */
-
-/* math software */
-#define        EDOM            33              /* Numerical argument out of domain */
-#define        ERANGE          34              /* Result too large */
-
-/* non-blocking and interrupt i/o */
-#define        EAGAIN          35              /* Resource temporarily unavailable */
-#ifndef _POSIX_SOURCE
-#define        EWOULDBLOCK     EAGAIN          /* Operation would block */
-#define        EINPROGRESS     36              /* Operation now in progress */
-#define        EALREADY        37              /* Operation already in progress */
-
-/* ipc/network software -- argument errors */
-#define        ENOTSOCK        38              /* Socket operation on non-socket */
-#define        EDESTADDRREQ    39              /* Destination address required */
-#define        EMSGSIZE        40              /* Message too long */
-#define        EPROTOTYPE      41              /* Protocol wrong type for socket */
-#define        ENOPROTOOPT     42              /* Protocol not available */
-#define        EPROTONOSUPPORT 43              /* Protocol not supported */
-#define        ESOCKTNOSUPPORT 44              /* Socket type not supported */
-#define        EOPNOTSUPP      45              /* Operation not supported */
-#define        ENOTSUP         EOPNOTSUPP      /* Operation not supported */
-#define        EPFNOSUPPORT    46              /* Protocol family not supported */
-#define        EAFNOSUPPORT    47              /* Address family not supported by protocol family */
-#define        EADDRINUSE      48              /* Address already in use */
-#define        EADDRNOTAVAIL   49              /* Can't assign requested address */
-
-/* ipc/network software -- operational errors */
-#define        ENETDOWN        50              /* Network is down */
-#define        ENETUNREACH     51              /* Network is unreachable */
-#define        ENETRESET       52              /* Network dropped connection on reset */
-#define        ECONNABORTED    53              /* Software caused connection abort */
-#define        ECONNRESET      54              /* Connection reset by peer */
-#define        ENOBUFS         55              /* No buffer space available */
-#define        EISCONN         56              /* Socket is already connected */
-#define        ENOTCONN        57              /* Socket is not connected */
-#define        ESHUTDOWN       58              /* Can't send after socket shutdown */
-#define        ETOOMANYREFS    59              /* Too many references: can't splice */
-#define        ETIMEDOUT       60              /* Operation timed out */
-#define        ECONNREFUSED    61              /* Connection refused */
-
-#define        ELOOP           62              /* Too many levels of symbolic links */
-#endif /* _POSIX_SOURCE */
-#define        ENAMETOOLONG    63              /* File name too long */
-
-/* should be rearranged */
-#ifndef _POSIX_SOURCE
-#define        EHOSTDOWN       64              /* Host is down */
-#define        EHOSTUNREACH    65              /* No route to host */
-#endif /* _POSIX_SOURCE */
-#define        ENOTEMPTY       66              /* Directory not empty */
-
-/* quotas & mush */
-#ifndef _POSIX_SOURCE
-#define        EPROCLIM        67              /* Too many processes */
-#define        EUSERS          68              /* Too many users */
-#define        EDQUOT          69              /* Disc quota exceeded */
-
-/* Network File System */
-#define        ESTALE          70              /* Stale NFS file handle */
-#define        EREMOTE         71              /* Too many levels of remote in path */
-#define        EBADRPC         72              /* RPC struct is bad */
-#define        ERPCMISMATCH    73              /* RPC version wrong */
-#define        EPROGUNAVAIL    74              /* RPC prog. not avail */
-#define        EPROGMISMATCH   75              /* Program version wrong */
-#define        EPROCUNAVAIL    76              /* Bad procedure for program */
-#endif /* _POSIX_SOURCE */
-
-#define        ENOLCK          77              /* No locks available */
-#define        ENOSYS          78              /* Function not implemented */
-
-#ifndef _POSIX_SOURCE
-#define        EFTYPE          79              /* Inappropriate file type or format */
-#define        EAUTH           80              /* Authentication error */
-#define        ENEEDAUTH       81              /* Need authenticator */
-#define        EIDRM           82              /* Identifier removed */
-#define        ENOMSG          83              /* No message of desired type */
-#define        EOVERFLOW       84              /* Value too large to be stored in data type */
-#define        ECANCELED       85              /* Operation canceled */
-#define        EILSEQ          86              /* Illegal byte sequence */
-#define        ENOATTR         87              /* Attribute not found */
-
-#define        EDOOFUS         88              /* Programming error */
-#endif /* _POSIX_SOURCE */
-
-#define        EBADMSG         89              /* Bad message */
-#define        EMULTIHOP       90              /* Multihop attempted */
-#define        ENOLINK         91              /* Link has been severed */
-#define        EPROTO          92              /* Protocol error */
-
-#ifndef _POSIX_SOURCE
-#define        ENOTCAPABLE     93              /* Capabilities insufficient */
-#define        ECAPMODE        94              /* Not permitted in capability mode */
-#endif /* _POSIX_SOURCE */
-
-#ifndef _POSIX_SOURCE
-#define        ELAST           94              /* Must be equal largest errno */
-#endif /* _POSIX_SOURCE */
-
-#ifdef _KERNEL
-/* pseudo-errors returned inside kernel to modify return to process */
-#define        ERESTART        (-1)            /* restart syscall */
-#define        EJUSTRETURN     (-2)            /* don't modify regs, just return */
-#define        ENOIOCTL        (-3)            /* ioctl not handled by this layer */
-#define        EDIRIOCTL       (-4)            /* do direct ioctl in GEOM */
-#endif
-
-#endif
diff --git a/include/lib/stdlib/sys/limits.h b/include/lib/stdlib/sys/limits.h
deleted file mode 100644 (file)
index c56a337..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/*-
- * 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.
- * 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _SYS_LIMITS_H_
-#define        _SYS_LIMITS_H_
-
-#include <sys/cdefs.h>
-#include <machine/_limits.h>
-
-#define        CHAR_BIT        __CHAR_BIT      /* number of bits in a char */
-
-#define        SCHAR_MAX       __SCHAR_MAX     /* max value for a signed char */
-#define        SCHAR_MIN       __SCHAR_MIN     /* min value for a signed char */
-
-#define        UCHAR_MAX       __UCHAR_MAX     /* max value for an unsigned char */
-
-#ifdef __CHAR_UNSIGNED__
-#define        CHAR_MAX        UCHAR_MAX       /* max value for a char */
-#define        CHAR_MIN        0               /* min value for a char */
-#else
-#define        CHAR_MAX        SCHAR_MAX
-#define        CHAR_MIN        SCHAR_MIN
-#endif
-
-#define        USHRT_MAX       __USHRT_MAX     /* max value for an unsigned short */
-#define        SHRT_MAX        __SHRT_MAX      /* max value for a short */
-#define        SHRT_MIN        __SHRT_MIN      /* min value for a short */
-
-#define        UINT_MAX        __UINT_MAX      /* max value for an unsigned int */
-#define        INT_MAX         __INT_MAX       /* max value for an int */
-#define        INT_MIN         __INT_MIN       /* min value for an int */
-
-#define        ULONG_MAX       __ULONG_MAX     /* max for an unsigned long */
-#define        LONG_MAX        __LONG_MAX      /* max for a long */
-#define        LONG_MIN        __LONG_MIN      /* min for a long */
-
-#ifdef __LONG_LONG_SUPPORTED
-#define        ULLONG_MAX      __ULLONG_MAX    /* max for an unsigned long long */
-#define        LLONG_MAX       __LLONG_MAX     /* max for a long long */
-#define        LLONG_MIN       __LLONG_MIN     /* min for a long long */
-#endif
-
-#if __POSIX_VISIBLE || __XSI_VISIBLE
-#define        SSIZE_MAX       __SSIZE_MAX     /* max value for an ssize_t */
-#endif
-
-#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE
-#define        SIZE_T_MAX      __SIZE_T_MAX    /* max value for a size_t */
-
-#define        OFF_MAX         __OFF_MAX       /* max value for an off_t */
-#define        OFF_MIN         __OFF_MIN       /* min value for an off_t */
-#endif
-
-#if __BSD_VISIBLE
-#define        GID_MAX         UINT_MAX        /* max value for a gid_t */
-#define        UID_MAX         UINT_MAX        /* max value for a uid_t */
-
-#define        UQUAD_MAX       (__UQUAD_MAX)   /* max value for a uquad_t */
-#define        QUAD_MAX        (__QUAD_MAX)    /* max value for a quad_t */
-#define        QUAD_MIN        (__QUAD_MIN)    /* min value for a quad_t */
-#endif
-
-#if __XSI_VISIBLE || __POSIX_VISIBLE >= 200809
-#define        LONG_BIT        __LONG_BIT
-#define        WORD_BIT        __WORD_BIT
-#endif
-
-#if __POSIX_VISIBLE
-#define        MQ_PRIO_MAX     64
-#endif
-
-#endif /* !_SYS_LIMITS_H_ */
diff --git a/include/lib/stdlib/sys/stdarg.h b/include/lib/stdlib/sys/stdarg.h
deleted file mode 100644 (file)
index c315dfc..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/*-
- * Copyright (c) 2002 David E. O'Brien.  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. 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 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$
- */
-
-#ifndef _MACHINE_STDARG_H_
-#define        _MACHINE_STDARG_H_
-
-#include <sys/cdefs.h>
-#include <sys/_types.h>
-
-#ifndef _VA_LIST_DECLARED
-#define        _VA_LIST_DECLARED
-typedef        __va_list       va_list;
-#endif
-
-#ifdef __GNUCLIKE_BUILTIN_STDARG
-
-#define        va_start(ap, last) \
-       __builtin_va_start((ap), (last))
-
-#define        va_arg(ap, type) \
-       __builtin_va_arg((ap), type)
-
-#define        __va_copy(dest, src) \
-       __builtin_va_copy((dest), (src))
-
-#if __ISO_C_VISIBLE >= 1999
-#define        va_copy(dest, src) \
-       __va_copy(dest, src)
-#endif
-
-#define        va_end(ap) \
-       __builtin_va_end(ap)
-
-#elif defined(lint)
-/* Provide a fake implementation for lint's benefit */
-#define        __va_size(type) \
-       (((sizeof(type) + sizeof(long) - 1) / sizeof(long)) * sizeof(long))
-#define        va_start(ap, last) \
-       ((ap) = (va_list)&(last) + __va_size(last))
-#define        va_arg(ap, type) \
-       (*(type *)((ap) += __va_size(type), (ap) - __va_size(type)))
-#define        va_end(ap)
-
-#else
-#error this file needs to be ported to your compiler
-#endif
-
-#endif /* !_MACHINE_STDARG_H_ */
diff --git a/include/lib/stdlib/sys/stdint.h b/include/lib/stdlib/sys/stdint.h
deleted file mode 100644 (file)
index aa5ac81..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/*-
- * Copyright (c) 2001 Mike Barcroft <mike@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$
- */
-
-#ifndef _SYS_STDINT_H_
-#define _SYS_STDINT_H_
-
-#include <sys/cdefs.h>
-#include <sys/_types.h>
-
-#include <machine/_stdint.h>
-#include <sys/_stdint.h>
-
-typedef        __int_least8_t          int_least8_t;
-typedef        __int_least16_t         int_least16_t;
-typedef        __int_least32_t         int_least32_t;
-typedef        __int_least64_t         int_least64_t;
-
-typedef        __uint_least8_t         uint_least8_t;
-typedef        __uint_least16_t        uint_least16_t;
-typedef        __uint_least32_t        uint_least32_t;
-typedef        __uint_least64_t        uint_least64_t;
-
-typedef        __int_fast8_t           int_fast8_t;
-typedef        __int_fast16_t          int_fast16_t;
-typedef        __int_fast32_t          int_fast32_t;
-typedef        __int_fast64_t          int_fast64_t;
-
-typedef        __uint_fast8_t          uint_fast8_t;
-typedef        __uint_fast16_t         uint_fast16_t;
-typedef        __uint_fast32_t         uint_fast32_t;
-typedef        __uint_fast64_t         uint_fast64_t;
-
-#ifndef _INTMAX_T_DECLARED
-typedef        __intmax_t              intmax_t;
-#define        _INTMAX_T_DECLARED
-#endif
-#ifndef _UINTMAX_T_DECLARED
-typedef        __uintmax_t             uintmax_t;
-#define        _UINTMAX_T_DECLARED
-#endif
-
-/* GNU and Darwin define this and people seem to think it's portable */
-#if defined(UINTPTR_MAX) && defined(UINT64_MAX) && (UINTPTR_MAX == UINT64_MAX)
-#define        __WORDSIZE              64
-#else
-#define        __WORDSIZE              32
-#endif
-
-#endif /* !_SYS_STDINT_H_ */
diff --git a/include/lib/stdlib/sys/timespec.h b/include/lib/stdlib/sys/timespec.h
deleted file mode 100644 (file)
index 2505cef..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/*-
- * Copyright (c) 1982, 1986, 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.
- * 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.
- *
- *     @(#)time.h      8.5 (Berkeley) 5/4/95
- * from: FreeBSD: src/sys/sys/time.h,v 1.43 2000/03/20 14:09:05 phk Exp
- *     $FreeBSD$
- */
-
-#ifndef _SYS_TIMESPEC_H_
-#define _SYS_TIMESPEC_H_
-
-#include <sys/cdefs.h>
-#include <sys/_timespec.h>
-
-#if __BSD_VISIBLE
-#define        TIMEVAL_TO_TIMESPEC(tv, ts)                                     \
-       do {                                                            \
-               (ts)->tv_sec = (tv)->tv_sec;                            \
-               (ts)->tv_nsec = (tv)->tv_usec * 1000;                   \
-       } while (0)
-#define        TIMESPEC_TO_TIMEVAL(tv, ts)                                     \
-       do {                                                            \
-               (tv)->tv_sec = (ts)->tv_sec;                            \
-               (tv)->tv_usec = (ts)->tv_nsec / 1000;                   \
-       } while (0)
-
-#endif /* __BSD_VISIBLE */
-
-/*
- * Structure defined by POSIX.1b to be like a itimerval, but with
- * timespecs. Used in the timer_*() system calls.
- */
-struct itimerspec {
-       struct timespec  it_interval;
-       struct timespec  it_value;
-};
-
-#endif /* _SYS_TIMESPEC_H_ */
diff --git a/include/lib/stdlib/sys/types.h b/include/lib/stdlib/sys/types.h
deleted file mode 100644 (file)
index ae2ea33..0000000
+++ /dev/null
@@ -1,245 +0,0 @@
-/*-
- * Copyright (c) 1982, 1986, 1991, 1993, 1994
- *     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.
- * 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.
- *
- *     @(#)types.h     8.6 (Berkeley) 2/19/95
- * $FreeBSD$
- */
-
-#ifndef _SYS_TYPES_H_
-#define        _SYS_TYPES_H_
-
-#include <sys/cdefs.h>
-
-/* Machine type dependent parameters. */
-#include <sys/_types.h>
-
-#if __BSD_VISIBLE
-typedef        unsigned char   u_char;
-typedef        unsigned short  u_short;
-typedef        unsigned int    u_int;
-typedef        unsigned long   u_long;
-#ifndef _KERNEL
-typedef        unsigned short  ushort;         /* Sys V compatibility */
-typedef        unsigned int    uint;           /* Sys V compatibility */
-#endif
-#endif
-
-/*
- * XXX POSIX sized integrals that should appear only in <sys/stdint.h>.
- */
-#include <sys/_stdint.h>
-
-typedef __uint8_t      u_int8_t;       /* unsigned integrals (deprecated) */
-typedef __uint16_t     u_int16_t;
-typedef __uint32_t     u_int32_t;
-typedef __uint64_t     u_int64_t;
-
-typedef        __uint64_t      u_quad_t;       /* quads (deprecated) */
-typedef        __int64_t       quad_t;
-typedef        quad_t          *qaddr_t;
-
-typedef        char            *caddr_t;       /* core address */
-typedef        const char      *c_caddr_t;     /* core address, pointer to const */
-
-#ifndef _BLKSIZE_T_DECLARED
-typedef        __blksize_t     blksize_t;
-#define        _BLKSIZE_T_DECLARED
-#endif
-
-typedef        __cpuwhich_t    cpuwhich_t;
-typedef        __cpulevel_t    cpulevel_t;
-typedef        __cpusetid_t    cpusetid_t;
-
-#ifndef _BLKCNT_T_DECLARED
-typedef        __blkcnt_t      blkcnt_t;
-#define        _BLKCNT_T_DECLARED
-#endif
-
-#ifndef _CLOCK_T_DECLARED
-typedef        __clock_t       clock_t;
-#define        _CLOCK_T_DECLARED
-#endif
-
-#ifndef _CLOCKID_T_DECLARED
-typedef        __clockid_t     clockid_t;
-#define        _CLOCKID_T_DECLARED
-#endif
-
-typedef        __critical_t    critical_t;     /* Critical section value */
-typedef        __int64_t       daddr_t;        /* disk address */
-
-#ifndef _DEV_T_DECLARED
-typedef        __dev_t         dev_t;          /* device number or struct cdev */
-#define        _DEV_T_DECLARED
-#endif
-
-#ifndef _FFLAGS_T_DECLARED
-typedef        __fflags_t      fflags_t;       /* file flags */
-#define        _FFLAGS_T_DECLARED
-#endif
-
-typedef        __fixpt_t       fixpt_t;        /* fixed point number */
-
-#ifndef _FSBLKCNT_T_DECLARED           /* for statvfs() */
-typedef        __fsblkcnt_t    fsblkcnt_t;
-typedef        __fsfilcnt_t    fsfilcnt_t;
-#define        _FSBLKCNT_T_DECLARED
-#endif
-
-#ifndef _GID_T_DECLARED
-typedef        __gid_t         gid_t;          /* group id */
-#define        _GID_T_DECLARED
-#endif
-
-#ifndef _IN_ADDR_T_DECLARED
-typedef        __uint32_t      in_addr_t;      /* base type for internet address */
-#define        _IN_ADDR_T_DECLARED
-#endif
-
-#ifndef _IN_PORT_T_DECLARED
-typedef        __uint16_t      in_port_t;
-#define        _IN_PORT_T_DECLARED
-#endif
-
-#ifndef _ID_T_DECLARED
-typedef        __id_t          id_t;           /* can hold a uid_t or pid_t */
-#define        _ID_T_DECLARED
-#endif
-
-#ifndef _INO_T_DECLARED
-typedef        __ino_t         ino_t;          /* inode number */
-#define        _INO_T_DECLARED
-#endif
-
-#ifndef _KEY_T_DECLARED
-typedef        __key_t         key_t;          /* IPC key (for Sys V IPC) */
-#define        _KEY_T_DECLARED
-#endif
-
-#ifndef _LWPID_T_DECLARED
-typedef        __lwpid_t       lwpid_t;        /* Thread ID (a.k.a. LWP) */
-#define        _LWPID_T_DECLARED
-#endif
-
-#ifndef _MODE_T_DECLARED
-typedef        __mode_t        mode_t;         /* permissions */
-#define        _MODE_T_DECLARED
-#endif
-
-#ifndef _ACCMODE_T_DECLARED
-typedef        __accmode_t     accmode_t;      /* access permissions */
-#define        _ACCMODE_T_DECLARED
-#endif
-
-#ifndef _NLINK_T_DECLARED
-typedef        __nlink_t       nlink_t;        /* link count */
-#define        _NLINK_T_DECLARED
-#endif
-
-#ifndef _OFF_T_DECLARED
-typedef        __off_t         off_t;          /* file offset */
-#define        _OFF_T_DECLARED
-#endif
-
-#ifndef _PID_T_DECLARED
-typedef        __pid_t         pid_t;          /* process id */
-#define        _PID_T_DECLARED
-#endif
-
-typedef        __register_t    register_t;
-
-#ifndef _RLIM_T_DECLARED
-typedef        __rlim_t        rlim_t;         /* resource limit */
-#define        _RLIM_T_DECLARED
-#endif
-
-typedef        __int64_t       sbintime_t;
-
-typedef        __segsz_t       segsz_t;        /* segment size (in pages) */
-
-#ifndef _SIZE_T_DECLARED
-typedef        __size_t        size_t;
-#define        _SIZE_T_DECLARED
-#endif
-
-#ifndef _SSIZE_T_DECLARED
-typedef        __ssize_t       ssize_t;
-#define        _SSIZE_T_DECLARED
-#endif
-
-#ifndef _SUSECONDS_T_DECLARED
-typedef        __suseconds_t   suseconds_t;    /* microseconds (signed) */
-#define        _SUSECONDS_T_DECLARED
-#endif
-
-#ifndef _TIME_T_DECLARED
-typedef        __time_t        time_t;
-#define        _TIME_T_DECLARED
-#endif
-
-#ifndef _TIMER_T_DECLARED
-typedef        __timer_t       timer_t;
-#define        _TIMER_T_DECLARED
-#endif
-
-#ifndef _MQD_T_DECLARED
-typedef        __mqd_t mqd_t;
-#define        _MQD_T_DECLARED
-#endif
-
-typedef        __u_register_t  u_register_t;
-
-#ifndef _UID_T_DECLARED
-typedef        __uid_t         uid_t;          /* user id */
-#define        _UID_T_DECLARED
-#endif
-
-#ifndef _USECONDS_T_DECLARED
-typedef        __useconds_t    useconds_t;     /* microseconds (unsigned) */
-#define        _USECONDS_T_DECLARED
-#endif
-
-#ifndef _CAP_RIGHTS_T_DECLARED
-#define        _CAP_RIGHTS_T_DECLARED
-struct cap_rights;
-
-typedef        struct cap_rights       cap_rights_t;
-#endif
-
-typedef        __vm_offset_t   vm_offset_t;
-typedef        __vm_ooffset_t  vm_ooffset_t;
-typedef        __vm_paddr_t    vm_paddr_t;
-typedef        __vm_pindex_t   vm_pindex_t;
-typedef        __vm_size_t     vm_size_t;
-
-#endif /* !_SYS_TYPES_H_ */
diff --git a/include/lib/stdlib/time.h b/include/lib/stdlib/time.h
deleted file mode 100644 (file)
index 08200cf..0000000
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * 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. 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.
- *
- *     @(#)time.h      8.3 (Berkeley) 1/21/94
- */
-
-/*
- * $FreeBSD$
- */
-
-#ifndef _TIME_H_
-#define        _TIME_H_
-
-#include <sys/cdefs.h>
-#include <sys/_null.h>
-#include <sys/_types.h>
-
-#if __POSIX_VISIBLE > 0 && __POSIX_VISIBLE < 200112 || __BSD_VISIBLE
-/*
- * Frequency of the clock ticks reported by times().  Deprecated - use
- * sysconf(_SC_CLK_TCK) instead.  (Removed in 1003.1-2001.)
- */
-#define        CLK_TCK         128
-#endif
-
-/* Frequency of the clock ticks reported by clock().  */
-#define        CLOCKS_PER_SEC  128
-
-#ifndef _CLOCK_T_DECLARED
-typedef        __clock_t       clock_t;
-#define        _CLOCK_T_DECLARED
-#endif
-
-#ifndef _TIME_T_DECLARED
-typedef        __time_t        time_t;
-#define        _TIME_T_DECLARED
-#endif
-
-#ifndef _SIZE_T_DECLARED
-typedef        __size_t        size_t;
-#define        _SIZE_T_DECLARED
-#endif
-
-#if __POSIX_VISIBLE >= 199309
-/*
- * New in POSIX 1003.1b-1993.
- */
-#ifndef _CLOCKID_T_DECLARED
-typedef        __clockid_t     clockid_t;
-#define        _CLOCKID_T_DECLARED
-#endif
-
-#ifndef _TIMER_T_DECLARED
-typedef        __timer_t       timer_t;
-#define        _TIMER_T_DECLARED
-#endif
-
-#include <sys/timespec.h>
-#endif /* __POSIX_VISIBLE >= 199309 */
-
-#if __POSIX_VISIBLE >= 200112
-#ifndef _PID_T_DECLARED
-typedef        __pid_t         pid_t;
-#define        _PID_T_DECLARED
-#endif
-#endif
-
-/* These macros are also in sys/time.h. */
-#if !defined(CLOCK_REALTIME) && __POSIX_VISIBLE >= 200112
-#define CLOCK_REALTIME 0
-#ifdef __BSD_VISIBLE
-#define CLOCK_VIRTUAL  1
-#define CLOCK_PROF     2
-#endif
-#define CLOCK_MONOTONIC        4
-#define CLOCK_UPTIME   5               /* FreeBSD-specific. */
-#define CLOCK_UPTIME_PRECISE   7       /* FreeBSD-specific. */
-#define CLOCK_UPTIME_FAST      8       /* FreeBSD-specific. */
-#define CLOCK_REALTIME_PRECISE 9       /* FreeBSD-specific. */
-#define CLOCK_REALTIME_FAST    10      /* FreeBSD-specific. */
-#define CLOCK_MONOTONIC_PRECISE        11      /* FreeBSD-specific. */
-#define CLOCK_MONOTONIC_FAST   12      /* FreeBSD-specific. */
-#define CLOCK_SECOND   13              /* FreeBSD-specific. */
-#define CLOCK_THREAD_CPUTIME_ID        14
-#define        CLOCK_PROCESS_CPUTIME_ID        15
-#endif /* !defined(CLOCK_REALTIME) && __POSIX_VISIBLE >= 200112 */
-
-#if !defined(TIMER_ABSTIME) && __POSIX_VISIBLE >= 200112
-#if __BSD_VISIBLE
-#define TIMER_RELTIME  0x0     /* relative timer */
-#endif
-#define TIMER_ABSTIME  0x1     /* absolute timer */
-#endif /* !defined(TIMER_ABSTIME) && __POSIX_VISIBLE >= 200112 */
-
-struct tm {
-       int     tm_sec;         /* seconds after the minute [0-60] */
-       int     tm_min;         /* minutes after the hour [0-59] */
-       int     tm_hour;        /* hours since midnight [0-23] */
-       int     tm_mday;        /* day of the month [1-31] */
-       int     tm_mon;         /* months since January [0-11] */
-       int     tm_year;        /* years since 1900 */
-       int     tm_wday;        /* days since Sunday [0-6] */
-       int     tm_yday;        /* days since January 1 [0-365] */
-       int     tm_isdst;       /* Daylight Savings Time flag */
-       long    tm_gmtoff;      /* offset from UTC in seconds */
-       char    *tm_zone;       /* timezone abbreviation */
-};
-
-#if __POSIX_VISIBLE
-extern char *tzname[];
-#endif
-
-__BEGIN_DECLS
-char *asctime(const struct tm *);
-clock_t clock(void);
-char *ctime(const time_t *);
-double difftime(time_t, time_t);
-/* XXX missing: getdate() */
-struct tm *gmtime(const time_t *);
-struct tm *localtime(const time_t *);
-time_t mktime(struct tm *);
-size_t strftime(char *__restrict, size_t, const char *__restrict,
-    const struct tm *__restrict);
-time_t time(time_t *);
-#if __POSIX_VISIBLE >= 200112
-struct sigevent;
-int timer_create(clockid_t, struct sigevent *__restrict, timer_t *__restrict);
-int timer_delete(timer_t);
-int timer_gettime(timer_t, struct itimerspec *);
-int timer_getoverrun(timer_t);
-int timer_settime(timer_t, int, const struct itimerspec *__restrict,
-       struct itimerspec *__restrict);
-#endif
-#if __POSIX_VISIBLE
-void tzset(void);
-#endif
-
-#if __POSIX_VISIBLE >= 199309
-int clock_getres(clockid_t, struct timespec *);
-int clock_gettime(clockid_t, struct timespec *);
-int clock_settime(clockid_t, const struct timespec *);
-/* XXX missing: clock_nanosleep() */
-int nanosleep(const struct timespec *, struct timespec *);
-#endif /* __POSIX_VISIBLE >= 199309 */
-
-#if __POSIX_VISIBLE >= 200112
-int clock_getcpuclockid(pid_t, clockid_t *);
-#endif
-
-#if __POSIX_VISIBLE >= 199506
-char *asctime_r(const struct tm *, char *);
-char *ctime_r(const time_t *, char *);
-struct tm *gmtime_r(const time_t *, struct tm *);
-struct tm *localtime_r(const time_t *, struct tm *);
-#endif
-
-#if __XSI_VISIBLE
-char *strptime(const char *__restrict, const char *__restrict,
-    struct tm *__restrict);
-#endif
-
-#if __BSD_VISIBLE
-char *timezone(int, int);      /* XXX XSI conflict */
-void tzsetwall(void);
-time_t timelocal(struct tm * const);
-time_t timegm(struct tm * const);
-#endif /* __BSD_VISIBLE */
-
-#if __POSIX_VISIBLE >= 200809 || defined(_XLOCALE_H_)
-#include <xlocale/_time.h>
-#endif
-__END_DECLS
-
-#endif /* !_TIME_H_ */
diff --git a/include/lib/stdlib/xlocale/_strings.h b/include/lib/stdlib/xlocale/_strings.h
deleted file mode 100644 (file)
index da1cff3..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-/*-
- * Copyright (c) 2011, 2012 The FreeBSD Foundation
- * 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$
- */
-
-#ifndef _LOCALE_T_DEFINED
-#define _LOCALE_T_DEFINED
-typedef struct _xlocale *locale_t;
-#endif
-
-/*
- * This file is included from both strings.h and xlocale.h.  We need to expose
- * the declarations unconditionally if we are included from xlocale.h, but only
- * if we are in POSIX2008 mode if included from string.h.
- */
-
-#ifndef _XLOCALE_STRINGS1_H
-#define _XLOCALE_STRINGS1_H
-
-/*
- * POSIX2008 functions
- */
-int     strcasecmp_l(const char *, const char *, locale_t);
-int     strncasecmp_l(const char *, const char *, size_t, locale_t);
-#endif /* _XLOCALE_STRINGS1_H */
diff --git a/include/lib/stdlib/xlocale/_time.h b/include/lib/stdlib/xlocale/_time.h
deleted file mode 100644 (file)
index 6da49a4..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/*-
- * Copyright (c) 2011, 2012 The FreeBSD Foundation
- * All rights reserved.
- *
- * This software was developed by David Chisnall under sponsorship from
- * the FreeBSD Foundation.
- *
- * 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$
- */
-
-#ifndef _LOCALE_T_DEFINED
-#define _LOCALE_T_DEFINED
-typedef struct _xlocale *locale_t;
-#endif
-
-/*
- * This file is included from both locale.h and xlocale.h.  We need to expose
- * the declarations unconditionally if we are included from xlocale.h, but only
- * if we are in POSIX2008 mode if included from locale.h.
- */
-#ifndef _XLOCALE_LOCALE1_H
-#define _XLOCALE_LOCALE1_H
-
-size_t  strftime_l(char *__restrict, size_t, const char *__restrict,
-           const struct tm *__restrict, locale_t) __strftimelike(3, 0);
-
-#endif /* _XLOCALE_LOCALE1_H */
-
-#ifdef _XLOCALE_H_
-#ifndef _XLOCALE_LOCALE2_H
-#define _XLOCALE_LOCALE2_H
-
-char   *strptime_l(const char *__restrict, const char *__restrict,
-               struct tm *__restrict, locale_t);
-
-#endif /* _XLOCALE_LOCALE2_H */
-#endif /* _XLOCALE_H_ */
diff --git a/lib/libc/abort.c b/lib/libc/abort.c
new file mode 100644 (file)
index 0000000..65ce4cc
--- /dev/null
@@ -0,0 +1,17 @@
+/*
+ * Copyright (c) 2013-2018, ARM Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <debug.h>
+#include <stdlib.h>
+
+/*
+ * This is a basic implementation. This could be improved.
+ */
+void abort (void)
+{
+       ERROR("ABORT\n");
+       panic();
+}
diff --git a/lib/libc/assert.c b/lib/libc/assert.c
new file mode 100644 (file)
index 0000000..97fab4b
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <assert.h>
+#include <console.h>
+#include <debug.h>
+#include <platform.h>
+
+/*
+* Only print the output if PLAT_LOG_LEVEL_ASSERT is higher or equal to
+* LOG_LEVEL_INFO, which is the default value for builds with DEBUG=1.
+*/
+
+#if PLAT_LOG_LEVEL_ASSERT >= LOG_LEVEL_VERBOSE
+void __assert(const char *file, unsigned int line, const char *assertion)
+{
+       tf_printf("ASSERT: %s:%d:%s\n", file, line, assertion);
+       console_flush();
+       plat_panic_handler();
+}
+#elif PLAT_LOG_LEVEL_ASSERT >= LOG_LEVEL_INFO
+void __assert(const char *file, unsigned int line)
+{
+       tf_printf("ASSERT: %s:%d\n", file, line);
+       console_flush();
+       plat_panic_handler();
+}
+#else
+void __assert(void)
+{
+       plat_panic_handler();
+}
+#endif
diff --git a/lib/libc/exit.c b/lib/libc/exit.c
new file mode 100644 (file)
index 0000000..afc3f93
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+ * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <debug.h>
+#include <stdlib.h>
+
+void exit(int v)
+{
+       ERROR("EXIT\n");
+       panic();
+}
diff --git a/lib/libc/libc.mk b/lib/libc/libc.mk
new file mode 100644 (file)
index 0000000..ded3d74
--- /dev/null
@@ -0,0 +1,25 @@
+#
+# Copyright (c) 2016-2017, ARM Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+LIBC_SRCS      :=      $(addprefix lib/libc/,  \
+                       abort.c                         \
+                       assert.c                        \
+                       exit.c                          \
+                       mem.c                           \
+                       printf.c                        \
+                       putchar.c                       \
+                       puts.c                          \
+                       sscanf.c                        \
+                       strchr.c                        \
+                       strcmp.c                        \
+                       strlen.c                        \
+                       strncmp.c                       \
+                       strnlen.c                       \
+                       subr_prf.c                      \
+                       timingsafe_bcmp.c)
+
+INCLUDES       +=      -Iinclude/lib/libc              \
+                       -Iinclude/lib/libc/sys
diff --git a/lib/libc/mem.c b/lib/libc/mem.c
new file mode 100644 (file)
index 0000000..65b62fd
--- /dev/null
@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) 2013-2014, ARM Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <stddef.h> /* size_t */
+
+/*
+ * Fill @count bytes of memory pointed to by @dst with @val
+ */
+void *memset(void *dst, int val, size_t count)
+{
+       char *ptr = dst;
+
+       while (count--)
+               *ptr++ = val;
+
+       return dst;
+}
+
+/*
+ * Compare @len bytes of @s1 and @s2
+ */
+int memcmp(const void *s1, const void *s2, size_t len)
+{
+       const unsigned char *s = s1;
+       const unsigned char *d = s2;
+       unsigned char sc;
+       unsigned char dc;
+
+       while (len--) {
+               sc = *s++;
+               dc = *d++;
+               if (sc - dc)
+                       return (sc - dc);
+       }
+
+       return 0;
+}
+
+/*
+ * Copy @len bytes from @src to @dst
+ */
+void *memcpy(void *dst, const void *src, size_t len)
+{
+       const char *s = src;
+       char *d = dst;
+
+       while (len--)
+               *d++ = *s++;
+
+       return dst;
+}
+
+/*
+ * Move @len bytes from @src to @dst
+ */
+void *memmove(void *dst, const void *src, size_t len)
+{
+       /*
+        * The following test makes use of unsigned arithmetic overflow to
+        * more efficiently test the condition !(src <= dst && dst < str+len).
+        * It also avoids the situation where the more explicit test would give
+        * incorrect results were the calculation str+len to overflow (though
+        * that issue is probably moot as such usage is probably undefined
+        * behaviour and a bug anyway.
+        */
+       if ((size_t)dst - (size_t)src >= len) {
+               /* destination not in source data, so can safely use memcpy */
+               return memcpy(dst, src, len);
+       } else {
+               /* copy backwards... */
+               const char *end = dst;
+               const char *s = (const char *)src + len;
+               char *d = (char *)dst + len;
+               while (d != end)
+                       *--d = *--s;
+       }
+       return dst;
+}
+
+/*
+ * Scan @len bytes of @src for value @c
+ */
+void *memchr(const void *src, int c, size_t len)
+{
+       const char *s = src;
+
+       while (len--) {
+               if (*s == c)
+                       return (void *) s;
+               s++;
+       }
+
+       return NULL;
+}
diff --git a/lib/libc/printf.c b/lib/libc/printf.c
new file mode 100644 (file)
index 0000000..f615641
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2013-2014, ARM Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <stdio.h>
+#include <stdarg.h>
+
+/* Choose max of 128 chars for now. */
+#define PRINT_BUFFER_SIZE 128
+int printf(const char *fmt, ...)
+{
+       va_list args;
+       char buf[PRINT_BUFFER_SIZE];
+       int count;
+
+       va_start(args, fmt);
+       vsnprintf(buf, sizeof(buf) - 1, fmt, args);
+       va_end(args);
+
+       /* Use putchar directly as 'puts()' adds a newline. */
+       buf[PRINT_BUFFER_SIZE - 1] = '\0';
+       count = 0;
+       while (buf[count])
+       {
+               if (putchar(buf[count]) != EOF) {
+                       count++;
+               } else {
+                       count = EOF;
+                       break;
+               }
+       }
+
+       return count;
+}
diff --git a/lib/libc/putchar.c b/lib/libc/putchar.c
new file mode 100644 (file)
index 0000000..8265667
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 2013-2014, ARM Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <stdio.h>
+#include <console.h>
+
+/* Putchar() should either return the character printed or EOF in case of error.
+ * Our current console_putc() function assumes success and returns the
+ * character. Write all other printing functions in terms of putchar(), if
+ * possible, so they all benefit when this is improved.
+ */
+int putchar(int c)
+{
+       int res;
+       if (console_putc((unsigned char)c) >= 0)
+               res = c;
+       else
+               res = EOF;
+
+       return res;
+}
diff --git a/lib/libc/puts.c b/lib/libc/puts.c
new file mode 100644 (file)
index 0000000..284cf8c
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2013-2014, ARM Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <stdio.h>
+
+int puts(const char *s)
+{
+       int count = 0;
+       while(*s) {
+               if (putchar(*s++) == EOF)
+                       return EOF;
+               count++;
+       }
+
+       /* According to the puts(3) manpage, the function should write a
+        * trailing newline.
+        */
+       if (putchar('\n') == EOF)
+               return EOF;
+
+       return count + 1;
+}
diff --git a/lib/libc/sscanf.c b/lib/libc/sscanf.c
new file mode 100644 (file)
index 0000000..a5876cf
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <stdio.h>
+#include <sys/cdefs.h>
+
+/*
+ * TODO: This is not a real implementation of the sscanf() function. It just
+ * returns the number of expected arguments based on the number of '%' found
+ * in the format string.
+ */
+int
+sscanf(const char *__restrict str, char const *__restrict fmt, ...)
+{
+       int ret = 0;
+
+       while (*fmt != '\0') {
+               if (*fmt++ == '%') {
+                       ret++;
+               }
+       }
+
+       return ret;
+}
diff --git a/lib/libc/strchr.c b/lib/libc/strchr.c
new file mode 100644 (file)
index 0000000..4247dcd
--- /dev/null
@@ -0,0 +1,52 @@
+/*-
+ * Copyright (c) 1990, 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.
+ * 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.
+ */
+
+/*
+ * Portions copyright (c) 2013-2014, ARM Limited and Contributors.
+ * All rights reserved.
+ */
+
+#include <sys/cdefs.h>
+#include <stddef.h>
+#include <string.h>
+
+char *
+strchr(const char *p, int ch)
+{
+       char c;
+
+       c = ch;
+       for (;; ++p) {
+               if (*p == c)
+                       return ((char *)p);
+               if (*p == '\0')
+                       return (NULL);
+       }
+       /* NOTREACHED */
+}
diff --git a/lib/libc/strcmp.c b/lib/libc/strcmp.c
new file mode 100644 (file)
index 0000000..bb86e0f
--- /dev/null
@@ -0,0 +1,66 @@
+/*-
+ * Copyright (c) 1990, 1993
+ *     The Regents of the University of California.  All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Chris Torek.
+ *
+ * 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.
+ * 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.
+ */
+
+/*
+ * Portions copyright (c) 2014, ARM Limited and Contributors.
+ * All rights reserved.
+ */
+
+#include <sys/cdefs.h>
+#include <sys/ctype.h>
+#include <string.h>
+
+/*
+ * Compare strings.
+ */
+int
+strcmp(const char *s1, const char *s2)
+{
+       while (*s1 == *s2++)
+               if (*s1++ == '\0')
+                       return 0;
+       return *(const unsigned char *)s1 - *(const unsigned char *)(s2 - 1);
+}
+
+int
+strcasecmp(const char *s1, const char *s2)
+{
+       const unsigned char *us1 = (const unsigned char *)s1;
+       const unsigned char *us2 = (const unsigned char *)s2;
+
+       while (tolower(*us1) == tolower(*us2)) {
+               if (*us1++ == '\0')
+                       return 0;
+               us2++;
+       }
+       return tolower(*us1) - tolower(*us2);
+}
diff --git a/lib/libc/strlen.c b/lib/libc/strlen.c
new file mode 100644 (file)
index 0000000..23c3d39
--- /dev/null
@@ -0,0 +1,44 @@
+/*-
+ * Copyright (c) 1990, 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.
+ * 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.
+ */
+
+/*
+ * Portions copyright (c) 2009-2014, ARM Limited and Contributors. All rights reserved.
+ */
+
+#include <stddef.h>
+
+size_t
+strlen(str)
+       const char *str;
+{
+       register const char *s;
+
+       for (s = str; *s; ++s);
+       return(s - str);
+}
diff --git a/lib/libc/strncmp.c b/lib/libc/strncmp.c
new file mode 100644 (file)
index 0000000..f45f4a2
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 1989, 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.
+ * 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.
+ */
+
+/*
+ * Portions copyright (c) 2014, ARM Limited and Contributors.
+ * All rights reserved.
+ */
+
+#include <sys/cdefs.h>
+#include <string.h>
+
+int
+strncmp(const char *s1, const char *s2, size_t n)
+{
+
+       if (n == 0)
+               return 0;
+       do {
+               if (*s1 != *s2++)
+                       return (*(const unsigned char *)s1 -
+                               *(const unsigned char *)(s2 - 1));
+               if (*s1++ == '\0')
+                       break;
+       } while (--n != 0);
+       return 0;
+}
diff --git a/lib/libc/strnlen.c b/lib/libc/strnlen.c
new file mode 100644 (file)
index 0000000..d48502b
--- /dev/null
@@ -0,0 +1,45 @@
+/*-
+ * Copyright (c) 2009 David Schultz <das@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.
+ */
+
+/*
+ * Portions copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
+ */
+
+#include <sys/cdefs.h>
+
+#include <string.h>
+
+size_t
+strnlen(const char *s, size_t maxlen)
+{
+       size_t len;
+
+       for (len = 0; len < maxlen; len++, s++) {
+               if (!*s)
+                       break;
+       }
+       return (len);
+}
diff --git a/lib/libc/subr_prf.c b/lib/libc/subr_prf.c
new file mode 100644 (file)
index 0000000..c103562
--- /dev/null
@@ -0,0 +1,548 @@
+/*-
+ * Copyright (c) 1986, 1988, 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.
+ *
+ * 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.
+ * 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.
+ *
+ *     @(#)subr_prf.c  8.3 (Berkeley) 1/21/94
+ */
+
+/*
+ * Portions copyright (c) 2009-2014, ARM Limited and Contributors.
+ * All rights reserved.
+ */
+
+#include <stdio.h>
+#include <stdint.h>
+#include <stdarg.h>
+#include <stddef.h>
+#include <string.h>
+#include <ctype.h>
+
+typedef unsigned char u_char;
+typedef unsigned int u_int;
+typedef int64_t quad_t;
+typedef uint64_t u_quad_t;
+typedef unsigned long u_long;
+typedef unsigned short u_short;
+
+static inline int imax(int a, int b) { return (a > b ? a : b); }
+
+/*
+ * Note that stdarg.h and the ANSI style va_start macro is used for both
+ * ANSI and traditional C compilers.
+ */
+
+#define TOCONS 0x01
+#define TOTTY  0x02
+#define TOLOG  0x04
+
+/* Max number conversion buffer length: a u_quad_t in base 2, plus NUL byte. */
+#define MAXNBUF        (sizeof(intmax_t) * 8 + 1)
+
+struct putchar_arg {
+       int     flags;
+       int     pri;
+       struct  tty *tty;
+       char    *p_bufr;
+       size_t  n_bufr;
+       char    *p_next;
+       size_t  remain;
+};
+
+struct snprintf_arg {
+       char    *str;
+       size_t  remain;
+};
+
+extern int log_open;
+
+static char *ksprintn(char *nbuf, uintmax_t num, int base, int *len, int upper);
+static void  snprintf_func(int ch, void *arg);
+static int kvprintf(char const *fmt, void (*func)(int, void*), void *arg, int radix, va_list ap);
+
+int vsnprintf(char *str, size_t size, const char *format, va_list ap);
+
+static char const hex2ascii_data[] = "0123456789abcdefghijklmnopqrstuvwxyz";
+#define hex2ascii(hex) (hex2ascii_data[hex])
+
+/*
+ * Scaled down version of sprintf(3).
+ */
+int
+sprintf(char *buf, const char *cfmt, ...)
+{
+       int retval;
+       va_list ap;
+
+       va_start(ap, cfmt);
+       retval = kvprintf(cfmt, NULL, (void *)buf, 10, ap);
+       buf[retval] = '\0';
+       va_end(ap);
+       return (retval);
+}
+
+/*
+ * Scaled down version of vsprintf(3).
+ */
+int
+vsprintf(char *buf, const char *cfmt, va_list ap)
+{
+       int retval;
+
+       retval = kvprintf(cfmt, NULL, (void *)buf, 10, ap);
+       buf[retval] = '\0';
+       return (retval);
+}
+
+/*
+ * Scaled down version of snprintf(3).
+ */
+int
+snprintf(char *str, size_t size, const char *format, ...)
+{
+       int retval;
+       va_list ap;
+
+       va_start(ap, format);
+       retval = vsnprintf(str, size, format, ap);
+       va_end(ap);
+       return(retval);
+}
+
+/*
+ * Scaled down version of vsnprintf(3).
+ */
+int
+vsnprintf(char *str, size_t size, const char *format, va_list ap)
+{
+       struct snprintf_arg info;
+       int retval;
+
+       info.str = str;
+       info.remain = size;
+       retval = kvprintf(format, snprintf_func, &info, 10, ap);
+       if (info.remain >= 1)
+               *info.str++ = '\0';
+       return (retval);
+}
+
+static void
+snprintf_func(int ch, void *arg)
+{
+       struct snprintf_arg *const info = arg;
+
+       if (info->remain >= 2) {
+               *info->str++ = ch;
+               info->remain--;
+       }
+}
+
+
+/*
+ * Kernel version which takes radix argument vsnprintf(3).
+ */
+int
+vsnrprintf(char *str, size_t size, int radix, const char *format, va_list ap)
+{
+       struct snprintf_arg info;
+       int retval;
+
+       info.str = str;
+       info.remain = size;
+       retval = kvprintf(format, snprintf_func, &info, radix, ap);
+       if (info.remain >= 1)
+               *info.str++ = '\0';
+       return (retval);
+}
+
+
+/*
+ * Put a NUL-terminated ASCII number (base <= 36) in a buffer in reverse
+ * order; return an optional length and a pointer to the last character
+ * written in the buffer (i.e., the first character of the string).
+ * The buffer pointed to by `nbuf' must have length >= MAXNBUF.
+ */
+static char *
+ksprintn(char *nbuf, uintmax_t num, int base, int *lenp, int upper)
+{
+       char *p, c;
+
+       p = nbuf;
+       *p = '\0';
+       do {
+               c = hex2ascii(num % base);
+               *++p = upper ? toupper(c) : c;
+       } while (num /= base);
+       if (lenp)
+               *lenp = p - nbuf;
+       return (p);
+}
+
+/*
+ * Scaled down version of printf(3).
+ *
+ * Two additional formats:
+ *
+ * The format %b is supported to decode error registers.
+ * Its usage is:
+ *
+ *     printf("reg=%b\n", regval, "<base><arg>*");
+ *
+ * where <base> is the output base expressed as a control character, e.g.
+ * \10 gives octal; \20 gives hex.  Each arg is a sequence of characters,
+ * the first of which gives the bit number to be inspected (origin 1), and
+ * the next characters (up to a control character, i.e. a character <= 32),
+ * give the name of the register.  Thus:
+ *
+ *     kvprintf("reg=%b\n", 3, "\10\2BITTWO\1BITONE\n");
+ *
+ * would produce output:
+ *
+ *     reg=3<BITTWO,BITONE>
+ *
+ * XXX:  %D  -- Hexdump, takes pointer and separator string:
+ *             ("%6D", ptr, ":")   -> XX:XX:XX:XX:XX:XX
+ *             ("%*D", len, ptr, " " -> XX XX XX XX ...
+ */
+int
+kvprintf(char const *fmt, void (*func)(int, void*), void *arg, int radix, va_list ap)
+{
+#define PCHAR(c) {int cc=(c); if (func) (*func)(cc,arg); else *d++ = cc; retval++; }
+       char nbuf[MAXNBUF];
+       char *d;
+       const char *p, *percent, *q;
+       u_char *up;
+       int ch, n;
+       uintmax_t num;
+       int base, lflag, qflag, tmp, width, ladjust, sharpflag, neg, sign, dot;
+       int cflag, hflag, jflag, tflag, zflag;
+       int dwidth, upper;
+       char padc;
+       int stop = 0, retval = 0;
+
+       num = 0;
+       if (!func)
+               d = (char *) arg;
+       else
+               d = NULL;
+
+       if (fmt == NULL)
+               fmt = "(fmt null)\n";
+
+       if (radix < 2 || radix > 36)
+               radix = 10;
+
+       for (;;) {
+               padc = ' ';
+               width = 0;
+               while ((ch = (u_char)*fmt++) != '%' || stop) {
+                       if (ch == '\0')
+                               return (retval);
+                       PCHAR(ch);
+               }
+               percent = fmt - 1;
+               qflag = 0; lflag = 0; ladjust = 0; sharpflag = 0; neg = 0;
+               sign = 0; dot = 0; dwidth = 0; upper = 0;
+               cflag = 0; hflag = 0; jflag = 0; tflag = 0; zflag = 0;
+reswitch:      switch (ch = (u_char)*fmt++) {
+               case '.':
+                       dot = 1;
+                       goto reswitch;
+               case '#':
+                       sharpflag = 1;
+                       goto reswitch;
+               case '+':
+                       sign = 1;
+                       goto reswitch;
+               case '-':
+                       ladjust = 1;
+                       goto reswitch;
+               case '%':
+                       PCHAR(ch);
+                       break;
+               case '*':
+                       if (!dot) {
+                               width = va_arg(ap, int);
+                               if (width < 0) {
+                                       ladjust = !ladjust;
+                                       width = -width;
+                               }
+                       } else {
+                               dwidth = va_arg(ap, int);
+                       }
+                       goto reswitch;
+               case '0':
+                       if (!dot) {
+                               padc = '0';
+                               goto reswitch;
+                       }
+               case '1': case '2': case '3': case '4':
+               case '5': case '6': case '7': case '8': case '9':
+                               for (n = 0;; ++fmt) {
+                                       n = n * 10 + ch - '0';
+                                       ch = *fmt;
+                                       if (ch < '0' || ch > '9')
+                                               break;
+                               }
+                       if (dot)
+                               dwidth = n;
+                       else
+                               width = n;
+                       goto reswitch;
+               case 'b':
+                       num = (u_int)va_arg(ap, int);
+                       p = va_arg(ap, char *);
+                       for (q = ksprintn(nbuf, num, *p++, NULL, 0); *q;)
+                               PCHAR(*q--);
+
+                       if (num == 0)
+                               break;
+
+                       for (tmp = 0; *p;) {
+                               n = *p++;
+                               if (num & (1 << (n - 1))) {
+                                       PCHAR(tmp ? ',' : '<');
+                                       for (; (n = *p) > ' '; ++p)
+                                               PCHAR(n);
+                                       tmp = 1;
+                               } else
+                                       for (; *p > ' '; ++p)
+                                               continue;
+                       }
+                       if (tmp)
+                               PCHAR('>');
+                       break;
+               case 'c':
+                       PCHAR(va_arg(ap, int));
+                       break;
+               case 'D':
+                       up = va_arg(ap, u_char *);
+                       p = va_arg(ap, char *);
+                       if (!width)
+                               width = 16;
+                       while(width--) {
+                               PCHAR(hex2ascii(*up >> 4));
+                               PCHAR(hex2ascii(*up & 0x0f));
+                               up++;
+                               if (width)
+                                       for (q=p;*q;q++)
+                                               PCHAR(*q);
+                       }
+                       break;
+               case 'd':
+               case 'i':
+                       base = 10;
+                       sign = 1;
+                       goto handle_sign;
+               case 'h':
+                       if (hflag) {
+                               hflag = 0;
+                               cflag = 1;
+                       } else
+                               hflag = 1;
+                       goto reswitch;
+               case 'j':
+                       jflag = 1;
+                       goto reswitch;
+               case 'l':
+                       if (lflag) {
+                               lflag = 0;
+                               qflag = 1;
+                       } else
+                               lflag = 1;
+                       goto reswitch;
+               case 'n':
+                       if (jflag)
+                               *(va_arg(ap, intmax_t *)) = retval;
+                       else if (qflag)
+                               *(va_arg(ap, quad_t *)) = retval;
+                       else if (lflag)
+                               *(va_arg(ap, long *)) = retval;
+                       else if (zflag)
+                               *(va_arg(ap, size_t *)) = retval;
+                       else if (hflag)
+                               *(va_arg(ap, short *)) = retval;
+                       else if (cflag)
+                               *(va_arg(ap, char *)) = retval;
+                       else
+                               *(va_arg(ap, int *)) = retval;
+                       break;
+               case 'o':
+                       base = 8;
+                       goto handle_nosign;
+               case 'p':
+                       base = 16;
+                       sharpflag = (width == 0);
+                       sign = 0;
+                       num = (uintptr_t)va_arg(ap, void *);
+                       goto number;
+               case 'q':
+                       qflag = 1;
+                       goto reswitch;
+               case 'r':
+                       base = radix;
+                       if (sign)
+                               goto handle_sign;
+                       goto handle_nosign;
+               case 's':
+                       p = va_arg(ap, char *);
+                       if (p == NULL)
+                               p = "(null)";
+                       if (!dot)
+                               n = strlen (p);
+                       else
+                               for (n = 0; n < dwidth && p[n]; n++)
+                                       continue;
+
+                       width -= n;
+
+                       if (!ladjust && width > 0)
+                               while (width--)
+                                       PCHAR(padc);
+                       while (n--)
+                               PCHAR(*p++);
+                       if (ladjust && width > 0)
+                               while (width--)
+                                       PCHAR(padc);
+                       break;
+               case 't':
+                       tflag = 1;
+                       goto reswitch;
+               case 'u':
+                       base = 10;
+                       goto handle_nosign;
+               case 'X':
+                       upper = 1;
+               case 'x':
+                       base = 16;
+                       goto handle_nosign;
+               case 'y':
+                       base = 16;
+                       sign = 1;
+                       goto handle_sign;
+               case 'z':
+                       zflag = 1;
+                       goto reswitch;
+handle_nosign:
+                       sign = 0;
+                       if (jflag)
+                               num = va_arg(ap, uintmax_t);
+                       else if (qflag)
+                               num = va_arg(ap, u_quad_t);
+                       else if (tflag)
+                               num = va_arg(ap, ptrdiff_t);
+                       else if (lflag)
+                               num = va_arg(ap, u_long);
+                       else if (zflag)
+                               num = va_arg(ap, size_t);
+                       else if (hflag)
+                               num = (u_short)va_arg(ap, int);
+                       else if (cflag)
+                               num = (u_char)va_arg(ap, int);
+                       else
+                               num = va_arg(ap, u_int);
+                       goto number;
+handle_sign:
+                       if (jflag)
+                               num = va_arg(ap, intmax_t);
+                       else if (qflag)
+                               num = va_arg(ap, quad_t);
+                       else if (tflag)
+                               num = va_arg(ap, ptrdiff_t);
+                       else if (lflag)
+                               num = va_arg(ap, long);
+                       else if (zflag)
+                               num = va_arg(ap, ssize_t);
+                       else if (hflag)
+                               num = (short)va_arg(ap, int);
+                       else if (cflag)
+                               num = (char)va_arg(ap, int);
+                       else
+                               num = va_arg(ap, int);
+number:
+                       if (sign && (intmax_t)num < 0) {
+                               neg = 1;
+                               num = -(intmax_t)num;
+                       }
+                       p = ksprintn(nbuf, num, base, &n, upper);
+                       tmp = 0;
+                       if (sharpflag && num != 0) {
+                               if (base == 8)
+                                       tmp++;
+                               else if (base == 16)
+                                       tmp += 2;
+                       }
+                       if (neg)
+                               tmp++;
+
+                       if (!ladjust && padc == '0')
+                               dwidth = width - tmp;
+                       width -= tmp + imax(dwidth, n);
+                       dwidth -= n;
+                       if (!ladjust)
+                               while (width-- > 0)
+                                       PCHAR(' ');
+                       if (neg)
+                               PCHAR('-');
+                       if (sharpflag && num != 0) {
+                               if (base == 8) {
+                                       PCHAR('0');
+                               } else if (base == 16) {
+                                       PCHAR('0');
+                                       PCHAR('x');
+                               }
+                       }
+                       while (dwidth-- > 0)
+                               PCHAR('0');
+
+                       while (*p)
+                               PCHAR(*p--);
+
+                       if (ladjust)
+                               while (width-- > 0)
+                                       PCHAR(' ');
+
+                       break;
+               default:
+                       while (percent < fmt)
+                               PCHAR(*percent++);
+                       /*
+                        * Since we ignore an formatting argument it is no 
+                        * longer safe to obey the remaining formatting
+                        * arguments as the arguments will no longer match
+                        * the format specs.
+                        */
+                       stop = 1;
+                       break;
+               }
+       }
+#undef PCHAR
+}
diff --git a/lib/libc/timingsafe_bcmp.c b/lib/libc/timingsafe_bcmp.c
new file mode 100644 (file)
index 0000000..d098158
--- /dev/null
@@ -0,0 +1,36 @@
+/*     $OpenBSD: timingsafe_bcmp.c,v 1.3 2015/08/31 02:53:57 guenther Exp $    */
+/*
+ * Copyright (c) 2010 Damien Miller.  All rights reserved.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <string.h>
+
+int __timingsafe_bcmp(const void *, const void *, size_t);
+
+int
+__timingsafe_bcmp(const void *b1, const void *b2, size_t n)
+{
+       const unsigned char *p1 = b1, *p2 = b2;
+       int ret = 0;
+
+       for (; n > 0; n--)
+               ret |= *p1++ ^ *p2++;
+       return (ret != 0);
+}
+
+__weak_reference(__timingsafe_bcmp, timingsafe_bcmp);
diff --git a/lib/stdlib/abort.c b/lib/stdlib/abort.c
deleted file mode 100644 (file)
index 65ce4cc..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * Copyright (c) 2013-2018, ARM Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#include <debug.h>
-#include <stdlib.h>
-
-/*
- * This is a basic implementation. This could be improved.
- */
-void abort (void)
-{
-       ERROR("ABORT\n");
-       panic();
-}
diff --git a/lib/stdlib/assert.c b/lib/stdlib/assert.c
deleted file mode 100644 (file)
index 97fab4b..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#include <assert.h>
-#include <console.h>
-#include <debug.h>
-#include <platform.h>
-
-/*
-* Only print the output if PLAT_LOG_LEVEL_ASSERT is higher or equal to
-* LOG_LEVEL_INFO, which is the default value for builds with DEBUG=1.
-*/
-
-#if PLAT_LOG_LEVEL_ASSERT >= LOG_LEVEL_VERBOSE
-void __assert(const char *file, unsigned int line, const char *assertion)
-{
-       tf_printf("ASSERT: %s:%d:%s\n", file, line, assertion);
-       console_flush();
-       plat_panic_handler();
-}
-#elif PLAT_LOG_LEVEL_ASSERT >= LOG_LEVEL_INFO
-void __assert(const char *file, unsigned int line)
-{
-       tf_printf("ASSERT: %s:%d\n", file, line);
-       console_flush();
-       plat_panic_handler();
-}
-#else
-void __assert(void)
-{
-       plat_panic_handler();
-}
-#endif
diff --git a/lib/stdlib/exit.c b/lib/stdlib/exit.c
deleted file mode 100644 (file)
index afc3f93..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#include <debug.h>
-#include <stdlib.h>
-
-void exit(int v)
-{
-       ERROR("EXIT\n");
-       panic();
-}
diff --git a/lib/stdlib/mem.c b/lib/stdlib/mem.c
deleted file mode 100644 (file)
index 65b62fd..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (c) 2013-2014, ARM Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#include <stddef.h> /* size_t */
-
-/*
- * Fill @count bytes of memory pointed to by @dst with @val
- */
-void *memset(void *dst, int val, size_t count)
-{
-       char *ptr = dst;
-
-       while (count--)
-               *ptr++ = val;
-
-       return dst;
-}
-
-/*
- * Compare @len bytes of @s1 and @s2
- */
-int memcmp(const void *s1, const void *s2, size_t len)
-{
-       const unsigned char *s = s1;
-       const unsigned char *d = s2;
-       unsigned char sc;
-       unsigned char dc;
-
-       while (len--) {
-               sc = *s++;
-               dc = *d++;
-               if (sc - dc)
-                       return (sc - dc);
-       }
-
-       return 0;
-}
-
-/*
- * Copy @len bytes from @src to @dst
- */
-void *memcpy(void *dst, const void *src, size_t len)
-{
-       const char *s = src;
-       char *d = dst;
-
-       while (len--)
-               *d++ = *s++;
-
-       return dst;
-}
-
-/*
- * Move @len bytes from @src to @dst
- */
-void *memmove(void *dst, const void *src, size_t len)
-{
-       /*
-        * The following test makes use of unsigned arithmetic overflow to
-        * more efficiently test the condition !(src <= dst && dst < str+len).
-        * It also avoids the situation where the more explicit test would give
-        * incorrect results were the calculation str+len to overflow (though
-        * that issue is probably moot as such usage is probably undefined
-        * behaviour and a bug anyway.
-        */
-       if ((size_t)dst - (size_t)src >= len) {
-               /* destination not in source data, so can safely use memcpy */
-               return memcpy(dst, src, len);
-       } else {
-               /* copy backwards... */
-               const char *end = dst;
-               const char *s = (const char *)src + len;
-               char *d = (char *)dst + len;
-               while (d != end)
-                       *--d = *--s;
-       }
-       return dst;
-}
-
-/*
- * Scan @len bytes of @src for value @c
- */
-void *memchr(const void *src, int c, size_t len)
-{
-       const char *s = src;
-
-       while (len--) {
-               if (*s == c)
-                       return (void *) s;
-               s++;
-       }
-
-       return NULL;
-}
diff --git a/lib/stdlib/printf.c b/lib/stdlib/printf.c
deleted file mode 100644 (file)
index f615641..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 2013-2014, ARM Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#include <stdio.h>
-#include <stdarg.h>
-
-/* Choose max of 128 chars for now. */
-#define PRINT_BUFFER_SIZE 128
-int printf(const char *fmt, ...)
-{
-       va_list args;
-       char buf[PRINT_BUFFER_SIZE];
-       int count;
-
-       va_start(args, fmt);
-       vsnprintf(buf, sizeof(buf) - 1, fmt, args);
-       va_end(args);
-
-       /* Use putchar directly as 'puts()' adds a newline. */
-       buf[PRINT_BUFFER_SIZE - 1] = '\0';
-       count = 0;
-       while (buf[count])
-       {
-               if (putchar(buf[count]) != EOF) {
-                       count++;
-               } else {
-                       count = EOF;
-                       break;
-               }
-       }
-
-       return count;
-}
diff --git a/lib/stdlib/putchar.c b/lib/stdlib/putchar.c
deleted file mode 100644 (file)
index 8265667..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (c) 2013-2014, ARM Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#include <stdio.h>
-#include <console.h>
-
-/* Putchar() should either return the character printed or EOF in case of error.
- * Our current console_putc() function assumes success and returns the
- * character. Write all other printing functions in terms of putchar(), if
- * possible, so they all benefit when this is improved.
- */
-int putchar(int c)
-{
-       int res;
-       if (console_putc((unsigned char)c) >= 0)
-               res = c;
-       else
-               res = EOF;
-
-       return res;
-}
diff --git a/lib/stdlib/puts.c b/lib/stdlib/puts.c
deleted file mode 100644 (file)
index 284cf8c..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2013-2014, ARM Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#include <stdio.h>
-
-int puts(const char *s)
-{
-       int count = 0;
-       while(*s) {
-               if (putchar(*s++) == EOF)
-                       return EOF;
-               count++;
-       }
-
-       /* According to the puts(3) manpage, the function should write a
-        * trailing newline.
-        */
-       if (putchar('\n') == EOF)
-               return EOF;
-
-       return count + 1;
-}
diff --git a/lib/stdlib/sscanf.c b/lib/stdlib/sscanf.c
deleted file mode 100644 (file)
index a5876cf..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#include <stdio.h>
-#include <sys/cdefs.h>
-
-/*
- * TODO: This is not a real implementation of the sscanf() function. It just
- * returns the number of expected arguments based on the number of '%' found
- * in the format string.
- */
-int
-sscanf(const char *__restrict str, char const *__restrict fmt, ...)
-{
-       int ret = 0;
-
-       while (*fmt != '\0') {
-               if (*fmt++ == '%') {
-                       ret++;
-               }
-       }
-
-       return ret;
-}
diff --git a/lib/stdlib/stdlib.mk b/lib/stdlib/stdlib.mk
deleted file mode 100644 (file)
index 8211623..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# Copyright (c) 2016-2017, ARM Limited and Contributors. All rights reserved.
-#
-# SPDX-License-Identifier: BSD-3-Clause
-#
-
-STDLIB_SRCS    :=      $(addprefix lib/stdlib/,        \
-                       abort.c                         \
-                       assert.c                        \
-                       exit.c                          \
-                       mem.c                           \
-                       printf.c                        \
-                       putchar.c                       \
-                       puts.c                          \
-                       sscanf.c                        \
-                       strchr.c                        \
-                       strcmp.c                        \
-                       strlen.c                        \
-                       strncmp.c                       \
-                       strnlen.c                       \
-                       subr_prf.c                      \
-                       timingsafe_bcmp.c)
-
-INCLUDES       +=      -Iinclude/lib/stdlib            \
-                       -Iinclude/lib/stdlib/sys
diff --git a/lib/stdlib/strchr.c b/lib/stdlib/strchr.c
deleted file mode 100644 (file)
index 4247dcd..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/*-
- * Copyright (c) 1990, 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.
- * 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.
- */
-
-/*
- * Portions copyright (c) 2013-2014, ARM Limited and Contributors.
- * All rights reserved.
- */
-
-#include <sys/cdefs.h>
-#include <stddef.h>
-#include <string.h>
-
-char *
-strchr(const char *p, int ch)
-{
-       char c;
-
-       c = ch;
-       for (;; ++p) {
-               if (*p == c)
-                       return ((char *)p);
-               if (*p == '\0')
-                       return (NULL);
-       }
-       /* NOTREACHED */
-}
diff --git a/lib/stdlib/strcmp.c b/lib/stdlib/strcmp.c
deleted file mode 100644 (file)
index bb86e0f..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-/*-
- * Copyright (c) 1990, 1993
- *     The Regents of the University of California.  All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Chris Torek.
- *
- * 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.
- * 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.
- */
-
-/*
- * Portions copyright (c) 2014, ARM Limited and Contributors.
- * All rights reserved.
- */
-
-#include <sys/cdefs.h>
-#include <sys/ctype.h>
-#include <string.h>
-
-/*
- * Compare strings.
- */
-int
-strcmp(const char *s1, const char *s2)
-{
-       while (*s1 == *s2++)
-               if (*s1++ == '\0')
-                       return 0;
-       return *(const unsigned char *)s1 - *(const unsigned char *)(s2 - 1);
-}
-
-int
-strcasecmp(const char *s1, const char *s2)
-{
-       const unsigned char *us1 = (const unsigned char *)s1;
-       const unsigned char *us2 = (const unsigned char *)s2;
-
-       while (tolower(*us1) == tolower(*us2)) {
-               if (*us1++ == '\0')
-                       return 0;
-               us2++;
-       }
-       return tolower(*us1) - tolower(*us2);
-}
diff --git a/lib/stdlib/strlen.c b/lib/stdlib/strlen.c
deleted file mode 100644 (file)
index 23c3d39..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*-
- * Copyright (c) 1990, 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.
- * 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.
- */
-
-/*
- * Portions copyright (c) 2009-2014, ARM Limited and Contributors. All rights reserved.
- */
-
-#include <stddef.h>
-
-size_t
-strlen(str)
-       const char *str;
-{
-       register const char *s;
-
-       for (s = str; *s; ++s);
-       return(s - str);
-}
diff --git a/lib/stdlib/strncmp.c b/lib/stdlib/strncmp.c
deleted file mode 100644 (file)
index f45f4a2..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 1989, 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.
- * 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.
- */
-
-/*
- * Portions copyright (c) 2014, ARM Limited and Contributors.
- * All rights reserved.
- */
-
-#include <sys/cdefs.h>
-#include <string.h>
-
-int
-strncmp(const char *s1, const char *s2, size_t n)
-{
-
-       if (n == 0)
-               return 0;
-       do {
-               if (*s1 != *s2++)
-                       return (*(const unsigned char *)s1 -
-                               *(const unsigned char *)(s2 - 1));
-               if (*s1++ == '\0')
-                       break;
-       } while (--n != 0);
-       return 0;
-}
diff --git a/lib/stdlib/strnlen.c b/lib/stdlib/strnlen.c
deleted file mode 100644 (file)
index d48502b..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/*-
- * Copyright (c) 2009 David Schultz <das@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.
- */
-
-/*
- * Portions copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
- */
-
-#include <sys/cdefs.h>
-
-#include <string.h>
-
-size_t
-strnlen(const char *s, size_t maxlen)
-{
-       size_t len;
-
-       for (len = 0; len < maxlen; len++, s++) {
-               if (!*s)
-                       break;
-       }
-       return (len);
-}
diff --git a/lib/stdlib/subr_prf.c b/lib/stdlib/subr_prf.c
deleted file mode 100644 (file)
index c103562..0000000
+++ /dev/null
@@ -1,548 +0,0 @@
-/*-
- * Copyright (c) 1986, 1988, 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.
- *
- * 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.
- * 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.
- *
- *     @(#)subr_prf.c  8.3 (Berkeley) 1/21/94
- */
-
-/*
- * Portions copyright (c) 2009-2014, ARM Limited and Contributors.
- * All rights reserved.
- */
-
-#include <stdio.h>
-#include <stdint.h>
-#include <stdarg.h>
-#include <stddef.h>
-#include <string.h>
-#include <ctype.h>
-
-typedef unsigned char u_char;
-typedef unsigned int u_int;
-typedef int64_t quad_t;
-typedef uint64_t u_quad_t;
-typedef unsigned long u_long;
-typedef unsigned short u_short;
-
-static inline int imax(int a, int b) { return (a > b ? a : b); }
-
-/*
- * Note that stdarg.h and the ANSI style va_start macro is used for both
- * ANSI and traditional C compilers.
- */
-
-#define TOCONS 0x01
-#define TOTTY  0x02
-#define TOLOG  0x04
-
-/* Max number conversion buffer length: a u_quad_t in base 2, plus NUL byte. */
-#define MAXNBUF        (sizeof(intmax_t) * 8 + 1)
-
-struct putchar_arg {
-       int     flags;
-       int     pri;
-       struct  tty *tty;
-       char    *p_bufr;
-       size_t  n_bufr;
-       char    *p_next;
-       size_t  remain;
-};
-
-struct snprintf_arg {
-       char    *str;
-       size_t  remain;
-};
-
-extern int log_open;
-
-static char *ksprintn(char *nbuf, uintmax_t num, int base, int *len, int upper);
-static void  snprintf_func(int ch, void *arg);
-static int kvprintf(char const *fmt, void (*func)(int, void*), void *arg, int radix, va_list ap);
-
-int vsnprintf(char *str, size_t size, const char *format, va_list ap);
-
-static char const hex2ascii_data[] = "0123456789abcdefghijklmnopqrstuvwxyz";
-#define hex2ascii(hex) (hex2ascii_data[hex])
-
-/*
- * Scaled down version of sprintf(3).
- */
-int
-sprintf(char *buf, const char *cfmt, ...)
-{
-       int retval;
-       va_list ap;
-
-       va_start(ap, cfmt);
-       retval = kvprintf(cfmt, NULL, (void *)buf, 10, ap);
-       buf[retval] = '\0';
-       va_end(ap);
-       return (retval);
-}
-
-/*
- * Scaled down version of vsprintf(3).
- */
-int
-vsprintf(char *buf, const char *cfmt, va_list ap)
-{
-       int retval;
-
-       retval = kvprintf(cfmt, NULL, (void *)buf, 10, ap);
-       buf[retval] = '\0';
-       return (retval);
-}
-
-/*
- * Scaled down version of snprintf(3).
- */
-int
-snprintf(char *str, size_t size, const char *format, ...)
-{
-       int retval;
-       va_list ap;
-
-       va_start(ap, format);
-       retval = vsnprintf(str, size, format, ap);
-       va_end(ap);
-       return(retval);
-}
-
-/*
- * Scaled down version of vsnprintf(3).
- */
-int
-vsnprintf(char *str, size_t size, const char *format, va_list ap)
-{
-       struct snprintf_arg info;
-       int retval;
-
-       info.str = str;
-       info.remain = size;
-       retval = kvprintf(format, snprintf_func, &info, 10, ap);
-       if (info.remain >= 1)
-               *info.str++ = '\0';
-       return (retval);
-}
-
-static void
-snprintf_func(int ch, void *arg)
-{
-       struct snprintf_arg *const info = arg;
-
-       if (info->remain >= 2) {
-               *info->str++ = ch;
-               info->remain--;
-       }
-}
-
-
-/*
- * Kernel version which takes radix argument vsnprintf(3).
- */
-int
-vsnrprintf(char *str, size_t size, int radix, const char *format, va_list ap)
-{
-       struct snprintf_arg info;
-       int retval;
-
-       info.str = str;
-       info.remain = size;
-       retval = kvprintf(format, snprintf_func, &info, radix, ap);
-       if (info.remain >= 1)
-               *info.str++ = '\0';
-       return (retval);
-}
-
-
-/*
- * Put a NUL-terminated ASCII number (base <= 36) in a buffer in reverse
- * order; return an optional length and a pointer to the last character
- * written in the buffer (i.e., the first character of the string).
- * The buffer pointed to by `nbuf' must have length >= MAXNBUF.
- */
-static char *
-ksprintn(char *nbuf, uintmax_t num, int base, int *lenp, int upper)
-{
-       char *p, c;
-
-       p = nbuf;
-       *p = '\0';
-       do {
-               c = hex2ascii(num % base);
-               *++p = upper ? toupper(c) : c;
-       } while (num /= base);
-       if (lenp)
-               *lenp = p - nbuf;
-       return (p);
-}
-
-/*
- * Scaled down version of printf(3).
- *
- * Two additional formats:
- *
- * The format %b is supported to decode error registers.
- * Its usage is:
- *
- *     printf("reg=%b\n", regval, "<base><arg>*");
- *
- * where <base> is the output base expressed as a control character, e.g.
- * \10 gives octal; \20 gives hex.  Each arg is a sequence of characters,
- * the first of which gives the bit number to be inspected (origin 1), and
- * the next characters (up to a control character, i.e. a character <= 32),
- * give the name of the register.  Thus:
- *
- *     kvprintf("reg=%b\n", 3, "\10\2BITTWO\1BITONE\n");
- *
- * would produce output:
- *
- *     reg=3<BITTWO,BITONE>
- *
- * XXX:  %D  -- Hexdump, takes pointer and separator string:
- *             ("%6D", ptr, ":")   -> XX:XX:XX:XX:XX:XX
- *             ("%*D", len, ptr, " " -> XX XX XX XX ...
- */
-int
-kvprintf(char const *fmt, void (*func)(int, void*), void *arg, int radix, va_list ap)
-{
-#define PCHAR(c) {int cc=(c); if (func) (*func)(cc,arg); else *d++ = cc; retval++; }
-       char nbuf[MAXNBUF];
-       char *d;
-       const char *p, *percent, *q;
-       u_char *up;
-       int ch, n;
-       uintmax_t num;
-       int base, lflag, qflag, tmp, width, ladjust, sharpflag, neg, sign, dot;
-       int cflag, hflag, jflag, tflag, zflag;
-       int dwidth, upper;
-       char padc;
-       int stop = 0, retval = 0;
-
-       num = 0;
-       if (!func)
-               d = (char *) arg;
-       else
-               d = NULL;
-
-       if (fmt == NULL)
-               fmt = "(fmt null)\n";
-
-       if (radix < 2 || radix > 36)
-               radix = 10;
-
-       for (;;) {
-               padc = ' ';
-               width = 0;
-               while ((ch = (u_char)*fmt++) != '%' || stop) {
-                       if (ch == '\0')
-                               return (retval);
-                       PCHAR(ch);
-               }
-               percent = fmt - 1;
-               qflag = 0; lflag = 0; ladjust = 0; sharpflag = 0; neg = 0;
-               sign = 0; dot = 0; dwidth = 0; upper = 0;
-               cflag = 0; hflag = 0; jflag = 0; tflag = 0; zflag = 0;
-reswitch:      switch (ch = (u_char)*fmt++) {
-               case '.':
-                       dot = 1;
-                       goto reswitch;
-               case '#':
-                       sharpflag = 1;
-                       goto reswitch;
-               case '+':
-                       sign = 1;
-                       goto reswitch;
-               case '-':
-                       ladjust = 1;
-                       goto reswitch;
-               case '%':
-                       PCHAR(ch);
-                       break;
-               case '*':
-                       if (!dot) {
-                               width = va_arg(ap, int);
-                               if (width < 0) {
-                                       ladjust = !ladjust;
-                                       width = -width;
-                               }
-                       } else {
-                               dwidth = va_arg(ap, int);
-                       }
-                       goto reswitch;
-               case '0':
-                       if (!dot) {
-                               padc = '0';
-                               goto reswitch;
-                       }
-               case '1': case '2': case '3': case '4':
-               case '5': case '6': case '7': case '8': case '9':
-                               for (n = 0;; ++fmt) {
-                                       n = n * 10 + ch - '0';
-                                       ch = *fmt;
-                                       if (ch < '0' || ch > '9')
-                                               break;
-                               }
-                       if (dot)
-                               dwidth = n;
-                       else
-                               width = n;
-                       goto reswitch;
-               case 'b':
-                       num = (u_int)va_arg(ap, int);
-                       p = va_arg(ap, char *);
-                       for (q = ksprintn(nbuf, num, *p++, NULL, 0); *q;)
-                               PCHAR(*q--);
-
-                       if (num == 0)
-                               break;
-
-                       for (tmp = 0; *p;) {
-                               n = *p++;
-                               if (num & (1 << (n - 1))) {
-                                       PCHAR(tmp ? ',' : '<');
-                                       for (; (n = *p) > ' '; ++p)
-                                               PCHAR(n);
-                                       tmp = 1;
-                               } else
-                                       for (; *p > ' '; ++p)
-                                               continue;
-                       }
-                       if (tmp)
-                               PCHAR('>');
-                       break;
-               case 'c':
-                       PCHAR(va_arg(ap, int));
-                       break;
-               case 'D':
-                       up = va_arg(ap, u_char *);
-                       p = va_arg(ap, char *);
-                       if (!width)
-                               width = 16;
-                       while(width--) {
-                               PCHAR(hex2ascii(*up >> 4));
-                               PCHAR(hex2ascii(*up & 0x0f));
-                               up++;
-                               if (width)
-                                       for (q=p;*q;q++)
-                                               PCHAR(*q);
-                       }
-                       break;
-               case 'd':
-               case 'i':
-                       base = 10;
-                       sign = 1;
-                       goto handle_sign;
-               case 'h':
-                       if (hflag) {
-                               hflag = 0;
-                               cflag = 1;
-                       } else
-                               hflag = 1;
-                       goto reswitch;
-               case 'j':
-                       jflag = 1;
-                       goto reswitch;
-               case 'l':
-                       if (lflag) {
-                               lflag = 0;
-                               qflag = 1;
-                       } else
-                               lflag = 1;
-                       goto reswitch;
-               case 'n':
-                       if (jflag)
-                               *(va_arg(ap, intmax_t *)) = retval;
-                       else if (qflag)
-                               *(va_arg(ap, quad_t *)) = retval;
-                       else if (lflag)
-                               *(va_arg(ap, long *)) = retval;
-                       else if (zflag)
-                               *(va_arg(ap, size_t *)) = retval;
-                       else if (hflag)
-                               *(va_arg(ap, short *)) = retval;
-                       else if (cflag)
-                               *(va_arg(ap, char *)) = retval;
-                       else
-                               *(va_arg(ap, int *)) = retval;
-                       break;
-               case 'o':
-                       base = 8;
-                       goto handle_nosign;
-               case 'p':
-                       base = 16;
-                       sharpflag = (width == 0);
-                       sign = 0;
-                       num = (uintptr_t)va_arg(ap, void *);
-                       goto number;
-               case 'q':
-                       qflag = 1;
-                       goto reswitch;
-               case 'r':
-                       base = radix;
-                       if (sign)
-                               goto handle_sign;
-                       goto handle_nosign;
-               case 's':
-                       p = va_arg(ap, char *);
-                       if (p == NULL)
-                               p = "(null)";
-                       if (!dot)
-                               n = strlen (p);
-                       else
-                               for (n = 0; n < dwidth && p[n]; n++)
-                                       continue;
-
-                       width -= n;
-
-                       if (!ladjust && width > 0)
-                               while (width--)
-                                       PCHAR(padc);
-                       while (n--)
-                               PCHAR(*p++);
-                       if (ladjust && width > 0)
-                               while (width--)
-                                       PCHAR(padc);
-                       break;
-               case 't':
-                       tflag = 1;
-                       goto reswitch;
-               case 'u':
-                       base = 10;
-                       goto handle_nosign;
-               case 'X':
-                       upper = 1;
-               case 'x':
-                       base = 16;
-                       goto handle_nosign;
-               case 'y':
-                       base = 16;
-                       sign = 1;
-                       goto handle_sign;
-               case 'z':
-                       zflag = 1;
-                       goto reswitch;
-handle_nosign:
-                       sign = 0;
-                       if (jflag)
-                               num = va_arg(ap, uintmax_t);
-                       else if (qflag)
-                               num = va_arg(ap, u_quad_t);
-                       else if (tflag)
-                               num = va_arg(ap, ptrdiff_t);
-                       else if (lflag)
-                               num = va_arg(ap, u_long);
-                       else if (zflag)
-                               num = va_arg(ap, size_t);
-                       else if (hflag)
-                               num = (u_short)va_arg(ap, int);
-                       else if (cflag)
-                               num = (u_char)va_arg(ap, int);
-                       else
-                               num = va_arg(ap, u_int);
-                       goto number;
-handle_sign:
-                       if (jflag)
-                               num = va_arg(ap, intmax_t);
-                       else if (qflag)
-                               num = va_arg(ap, quad_t);
-                       else if (tflag)
-                               num = va_arg(ap, ptrdiff_t);
-                       else if (lflag)
-                               num = va_arg(ap, long);
-                       else if (zflag)
-                               num = va_arg(ap, ssize_t);
-                       else if (hflag)
-                               num = (short)va_arg(ap, int);
-                       else if (cflag)
-                               num = (char)va_arg(ap, int);
-                       else
-                               num = va_arg(ap, int);
-number:
-                       if (sign && (intmax_t)num < 0) {
-                               neg = 1;
-                               num = -(intmax_t)num;
-                       }
-                       p = ksprintn(nbuf, num, base, &n, upper);
-                       tmp = 0;
-                       if (sharpflag && num != 0) {
-                               if (base == 8)
-                                       tmp++;
-                               else if (base == 16)
-                                       tmp += 2;
-                       }
-                       if (neg)
-                               tmp++;
-
-                       if (!ladjust && padc == '0')
-                               dwidth = width - tmp;
-                       width -= tmp + imax(dwidth, n);
-                       dwidth -= n;
-                       if (!ladjust)
-                               while (width-- > 0)
-                                       PCHAR(' ');
-                       if (neg)
-                               PCHAR('-');
-                       if (sharpflag && num != 0) {
-                               if (base == 8) {
-                                       PCHAR('0');
-                               } else if (base == 16) {
-                                       PCHAR('0');
-                                       PCHAR('x');
-                               }
-                       }
-                       while (dwidth-- > 0)
-                               PCHAR('0');
-
-                       while (*p)
-                               PCHAR(*p--);
-
-                       if (ladjust)
-                               while (width-- > 0)
-                                       PCHAR(' ');
-
-                       break;
-               default:
-                       while (percent < fmt)
-                               PCHAR(*percent++);
-                       /*
-                        * Since we ignore an formatting argument it is no 
-                        * longer safe to obey the remaining formatting
-                        * arguments as the arguments will no longer match
-                        * the format specs.
-                        */
-                       stop = 1;
-                       break;
-               }
-       }
-#undef PCHAR
-}
diff --git a/lib/stdlib/timingsafe_bcmp.c b/lib/stdlib/timingsafe_bcmp.c
deleted file mode 100644 (file)
index d098158..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/*     $OpenBSD: timingsafe_bcmp.c,v 1.3 2015/08/31 02:53:57 guenther Exp $    */
-/*
- * Copyright (c) 2010 Damien Miller.  All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <string.h>
-
-int __timingsafe_bcmp(const void *, const void *, size_t);
-
-int
-__timingsafe_bcmp(const void *b1, const void *b2, size_t n)
-{
-       const unsigned char *p1 = b1, *p2 = b2;
-       int ret = 0;
-
-       for (; n > 0; n--)
-               ret |= *p1++ ^ *p2++;
-       return (ret != 0);
-}
-
-__weak_reference(__timingsafe_bcmp, timingsafe_bcmp);