This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[glibc/zack/no-nested-includes] Move most headers installed by top-level Makefile to misc/.


https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=11945dbb61c386b1670d38c86d7e3a6da9d2fa11

commit 11945dbb61c386b1670d38c86d7e3a6da9d2fa11
Author: Zack Weinberg <zackw@panix.com>
Date:   Sat Feb 23 19:08:54 2019 -0500

    Move most headers installed by top-level Makefile to misc/.
    
    The Makefile glue to run tests on installed headers is currently
    duplicated between the top-level Makefile and Rules, because the
    top-level Makefile doesn't read Rules but does install some headers.
    
    This patch moves most of the headers installed by the top-level Makefile
    to misc/ (chosen arbitrarily; I'm open to putting them somewhere else
    if reviewers feel it would be better) and removes the duplicated logic
    from the top-level Makefile.  I believe this also means that none of
    the headers in include/ are installed headers anymore.
    
    gnu/lib-names*.h are still generated by code in Makerules and installed
    by the top-level Makefile.  I tried to move them to misc/ as well, but
    that broke the generation process in a manner that didn't make any sense
    so I gave up.  The tests performed on installed headers are not
    especially useful for gnu/lib-names*.h so I think we can live with this
    for now.
    
    	* include/bits/xopen_lim.h
    	* include/features.h
    	* include/gnu-versions.h
    	* include/gnu/libc-version.h
    	* include/limits.h
    	* include/stdc-predef.h
    	* include/values.h:
    	Move to misc/ and replace with a trivial wrapper.
    	* Makefile (headers): Remove all headers moved to misc/.
    	Don't set a vpath for %.h.
    	(check-installed-headers-c.out, check-installed-headers-cxx.out)
    	(check-wrapper-headers.out): Remove rules.
    	* misc/Makefile (headers): Add all of the above headers and
    	sort the list.
    	* sysdeps/mach/hurd/bits/errno.h: Regenerate.

Diff:
---
 Makefile                       |  38 +---
 include/bits/xopen_lim.h       | 149 +------------
 include/features.h             | 478 +----------------------------------------
 include/gnu-versions.h         |  53 +----
 include/gnu/libc-version.h     |  35 +--
 include/limits.h               | 193 +----------------
 include/stdc-predef.h          |  61 +-----
 include/values.h               |  69 +-----
 misc/Makefile                  |  31 +--
 misc/bits/xopen_lim.h          | 148 +++++++++++++
 misc/features.h                | 477 ++++++++++++++++++++++++++++++++++++++++
 misc/gnu-versions.h            |  52 +++++
 misc/gnu/libc-version.h        |  34 +++
 misc/limits.h                  | 192 +++++++++++++++++
 misc/stdc-predef.h             |  60 ++++++
 misc/values.h                  |  68 ++++++
 sysdeps/mach/hurd/bits/errno.h |   1 +
 17 files changed, 1057 insertions(+), 1082 deletions(-)

diff --git a/Makefile b/Makefile
index dc5de7a..d34aa8b 100644
--- a/Makefile
+++ b/Makefile
@@ -59,17 +59,11 @@ endif # $(AUTOCONF) = no
 		   subdir_objs subdir_stubs subdir_testclean		\
 		   $(addprefix install-, no-libc.a bin lib data headers others)
 
-headers := limits.h values.h features.h gnu-versions.h \
-	   bits/xopen_lim.h gnu/libc-version.h stdc-predef.h \
-	   bits/libc-header-start.h
+headers :=
 
 echo-headers: subdir_echo-headers
 
-# The headers are in the include directory.
-subdir-dirs = include
-vpath %.h $(subdir-dirs)
-
-# What to install.
+# This header is created during the install process.  See below.
 install-others = $(inst_includedir)/gnu/stubs.h
 install-bin-script =
 
@@ -311,34 +305,6 @@ $(objpfx)check-local-headers.out: scripts/check-local-headers.sh
 	  "$(includedir)" "$(objpfx)" < /dev/null > $@; \
 	$(evaluate-test)
 
-ifneq "$(headers)" ""
-# Special test of all the installed headers in this directory.
-tests-special += $(objpfx)check-installed-headers-c.out
-libof-check-installed-headers-c := testsuite
-$(objpfx)check-installed-headers-c.out: \
-    scripts/check-installed-headers.sh $(headers)
-	$(SHELL) $(..)scripts/check-installed-headers.sh c \
-	  "$(CC) $(filter-out -std=%,$(CFLAGS)) -D_ISOMAC $(+includes)" \
-	  $(headers) > $@; \
-	$(evaluate-test)
-
-ifneq "$(CXX)" ""
-tests-special += $(objpfx)check-installed-headers-cxx.out
-libof-check-installed-headers-cxx := testsuite
-$(objpfx)check-installed-headers-cxx.out: \
-    scripts/check-installed-headers.sh $(headers)
-	$(SHELL) $(..)scripts/check-installed-headers.sh c++ \
-	  "$(CXX) $(filter-out -std=%,$(CXXFLAGS)) -D_ISOMAC $(+includes)" \
-	  $(headers) > $@; \
-	$(evaluate-test)
-endif # $(CXX)
-
-tests-special += $(objpfx)check-wrapper-headers.out
-$(objpfx)check-wrapper-headers.out: scripts/check-wrapper-headers.py $(headers)
-	$(PYTHON) $< --root=. --subdir=. $(headers) \
-	  --generated $(common-generated) > $@; $(evaluate-test)
-endif # $(headers)
-
 define summarize-tests
 @egrep -v '^(PASS|XFAIL):' $(objpfx)$1 || true
 @echo "Summary of test results$2:"
diff --git a/include/bits/xopen_lim.h b/include/bits/xopen_lim.h
index b76a94b..9c2c1ec 100644
--- a/include/bits/xopen_lim.h
+++ b/include/bits/xopen_lim.h
@@ -1,148 +1 @@
-/* Copyright (C) 1996-2019 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/*
- * Never include this file directly; use <limits.h> instead.
- */
-
-/* Additional definitions from X/Open Portability Guide, Issue 4, Version 2
-   System Interfaces and Headers, 4.16 <limits.h>
-
-   Please note only the values which are not greater than the minimum
-   stated in the standard document are listed.  The `sysconf' functions
-   should be used to obtain the actual value.  */
-
-#ifndef _XOPEN_LIM_H
-#define _XOPEN_LIM_H	1
-
-/* We do not provide fixed values for
-
-   ARG_MAX	Maximum length of argument to the `exec' function
-		including environment data.
-
-   ATEXIT_MAX	Maximum number of functions that may be registered
-		with `atexit'.
-
-   CHILD_MAX	Maximum number of simultaneous processes per real
-		user ID.
-
-   OPEN_MAX	Maximum number of files that one process can have open
-		at anyone time.
-
-   PAGESIZE
-   PAGE_SIZE	Size of bytes of a page.
-
-   PASS_MAX	Maximum number of significant bytes in a password.
-
-   We only provide a fixed limit for
-
-   IOV_MAX	Maximum number of `iovec' structures that one process has
-		available for use with `readv' or writev'.
-
-   if this is indeed fixed by the underlying system.
-*/
-
-
-/* Maximum number of `iovec' structures that may be used in a single call
-   to `readv', `writev', etc.  */
-#define	_XOPEN_IOV_MAX	_POSIX_UIO_MAXIOV
-
-#include <bits/uio_lim.h>
-#ifdef __IOV_MAX
-# define IOV_MAX __IOV_MAX
-#else
-# undef IOV_MAX
-#endif
-
-/* Maximum value of `digit' in calls to the `printf' and `scanf'
-   functions.  We have no limit, so return a reasonable value.  */
-#define NL_ARGMAX	_POSIX_ARG_MAX
-
-/* Maximum number of bytes in a `LANG' name.  We have no limit.  */
-#define NL_LANGMAX	_POSIX2_LINE_MAX
-
-/* Maximum message number.  We have no limit.  */
-#define NL_MSGMAX	INT_MAX
-
-/* Maximum number of bytes in N-to-1 collation mapping.  We have no
-   limit.  */
-#if defined __USE_GNU || !defined __USE_XOPEN2K8
-# define NL_NMAX	INT_MAX
-#endif
-
-/* Maximum set number.  We have no limit.  */
-#define NL_SETMAX	INT_MAX
-
-/* Maximum number of bytes in a message.  We have no limit.  */
-#define NL_TEXTMAX	INT_MAX
-
-/* Default process priority.  */
-#define NZERO		20
-
-
-/* Number of bits in a word of type `int'.  */
-#ifdef INT_MAX
-# if INT_MAX == 32767
-#  define WORD_BIT	16
-# else
-#  if INT_MAX == 2147483647
-#   define WORD_BIT	32
-#  else
-/* Safe assumption.  */
-#   define WORD_BIT	64
-#  endif
-# endif
-#elif defined __INT_MAX__
-# if __INT_MAX__ == 32767
-#  define WORD_BIT	16
-# else
-#  if __INT_MAX__ == 2147483647
-#   define WORD_BIT	32
-#  else
-/* Safe assumption.  */
-#   define WORD_BIT	64
-#  endif
-# endif
-#else
-# define WORD_BIT	32
-#endif
-
-/* Number of bits in a word of type `long int'.  */
-#ifdef LONG_MAX
-# if LONG_MAX == 2147483647
-#  define LONG_BIT	32
-# else
-/* Safe assumption.  */
-#  define LONG_BIT	64
-# endif
-#elif defined __LONG_MAX__
-# if __LONG_MAX__ == 2147483647
-#  define LONG_BIT	32
-# else
-/* Safe assumption.  */
-#  define LONG_BIT	64
-# endif
-#else
-# include <bits/wordsize.h>
-# if __WORDSIZE == 64
-#  define LONG_BIT	64
-# else
-#  define LONG_BIT	32
-# endif
-#endif
-
-#endif /* bits/xopen_lim.h */
+#include <misc/bits/xopen_lim.h>
diff --git a/include/features.h b/include/features.h
index e016b3e..504a684 100644
--- a/include/features.h
+++ b/include/features.h
@@ -1,477 +1 @@
-/* Copyright (C) 1991-2019 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef	_FEATURES_H
-#define	_FEATURES_H	1
-
-/* These are defined by the user (or the compiler)
-   to specify the desired environment:
-
-   __STRICT_ANSI__	ISO Standard C.
-   _ISOC99_SOURCE	Extensions to ISO C89 from ISO C99.
-   _ISOC11_SOURCE	Extensions to ISO C99 from ISO C11.
-   __STDC_WANT_LIB_EXT2__
-			Extensions to ISO C99 from TR 27431-2:2010.
-   __STDC_WANT_IEC_60559_BFP_EXT__
-			Extensions to ISO C11 from TS 18661-1:2014.
-   __STDC_WANT_IEC_60559_FUNCS_EXT__
-			Extensions to ISO C11 from TS 18661-4:2015.
-   __STDC_WANT_IEC_60559_TYPES_EXT__
-			Extensions to ISO C11 from TS 18661-3:2015.
-
-   _POSIX_SOURCE	IEEE Std 1003.1.
-   _POSIX_C_SOURCE	If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
-			if >=199309L, add IEEE Std 1003.1b-1993;
-			if >=199506L, add IEEE Std 1003.1c-1995;
-			if >=200112L, all of IEEE 1003.1-2004
-			if >=200809L, all of IEEE 1003.1-2008
-   _XOPEN_SOURCE	Includes POSIX and XPG things.  Set to 500 if
-			Single Unix conformance is wanted, to 600 for the
-			sixth revision, to 700 for the seventh revision.
-   _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
-   _LARGEFILE_SOURCE	Some more functions for correct standard I/O.
-   _LARGEFILE64_SOURCE	Additional functionality from LFS for large files.
-   _FILE_OFFSET_BITS=N	Select default filesystem interface.
-   _ATFILE_SOURCE	Additional *at interfaces.
-   _GNU_SOURCE		All of the above, plus GNU extensions.
-   _DEFAULT_SOURCE	The default set of features (taking precedence over
-			__STRICT_ANSI__).
-
-   _FORTIFY_SOURCE	Add security hardening to many library functions.
-			Set to 1 or 2; 2 performs stricter checks than 1.
-
-   _REENTRANT, _THREAD_SAFE
-			Obsolete; equivalent to _POSIX_C_SOURCE=199506L.
-
-   The `-ansi' switch to the GNU C compiler, and standards conformance
-   options such as `-std=c99', define __STRICT_ANSI__.  If none of
-   these are defined, or if _DEFAULT_SOURCE is defined, the default is
-   to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to
-   200809L, as well as enabling miscellaneous functions from BSD and
-   SVID.  If more than one of these are defined, they accumulate.  For
-   example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together
-   give you ISO C, 1003.1, and 1003.2, but nothing else.
-
-   These are defined by this file and are used by the
-   header files to decide what to declare or define:
-
-   __GLIBC_USE (F)	Define things from feature set F.  This is defined
-			to 1 or 0; the subsequent macros are either defined
-			or undefined, and those tests should be moved to
-			__GLIBC_USE.
-   __USE_ISOC11		Define ISO C11 things.
-   __USE_ISOC99		Define ISO C99 things.
-   __USE_ISOC95		Define ISO C90 AMD1 (C95) things.
-   __USE_ISOCXX11	Define ISO C++11 things.
-   __USE_POSIX		Define IEEE Std 1003.1 things.
-   __USE_POSIX2		Define IEEE Std 1003.2 things.
-   __USE_POSIX199309	Define IEEE Std 1003.1, and .1b things.
-   __USE_POSIX199506	Define IEEE Std 1003.1, .1b, .1c and .1i things.
-   __USE_XOPEN		Define XPG things.
-   __USE_XOPEN_EXTENDED	Define X/Open Unix things.
-   __USE_UNIX98		Define Single Unix V2 things.
-   __USE_XOPEN2K        Define XPG6 things.
-   __USE_XOPEN2KXSI     Define XPG6 XSI things.
-   __USE_XOPEN2K8       Define XPG7 things.
-   __USE_XOPEN2K8XSI    Define XPG7 XSI things.
-   __USE_LARGEFILE	Define correct standard I/O things.
-   __USE_LARGEFILE64	Define LFS things with separate names.
-   __USE_FILE_OFFSET64	Define 64bit interface as default.
-   __USE_MISC		Define things from 4.3BSD or System V Unix.
-   __USE_ATFILE		Define *at interfaces and AT_* constants for them.
-   __USE_GNU		Define GNU extensions.
-   __USE_FORTIFY_LEVEL	Additional security measures used, according to level.
-
-   The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
-   defined by this file unconditionally.  `__GNU_LIBRARY__' is provided
-   only for compatibility.  All new code should use the other symbols
-   to test for features.
-
-   All macros listed above as possibly being defined by this file are
-   explicitly undefined if they are not explicitly defined.
-   Feature-test macros that are not defined by the user or compiler
-   but are implied by the other feature-test macros defined (or by the
-   lack of any definitions) are defined by the file.
-
-   ISO C feature test macros depend on the definition of the macro
-   when an affected header is included, not when the first system
-   header is included, and so they are handled in
-   <bits/libc-header-start.h>, which does not have a multiple include
-   guard.  Feature test macros that can be handled from the first
-   system header included are handled here.  */
-
-
-/* Undefine everything, so we get a clean slate.  */
-#undef	__USE_ISOC11
-#undef	__USE_ISOC99
-#undef	__USE_ISOC95
-#undef	__USE_ISOCXX11
-#undef	__USE_POSIX
-#undef	__USE_POSIX2
-#undef	__USE_POSIX199309
-#undef	__USE_POSIX199506
-#undef	__USE_XOPEN
-#undef	__USE_XOPEN_EXTENDED
-#undef	__USE_UNIX98
-#undef	__USE_XOPEN2K
-#undef	__USE_XOPEN2KXSI
-#undef	__USE_XOPEN2K8
-#undef	__USE_XOPEN2K8XSI
-#undef	__USE_LARGEFILE
-#undef	__USE_LARGEFILE64
-#undef	__USE_FILE_OFFSET64
-#undef	__USE_MISC
-#undef	__USE_ATFILE
-#undef	__USE_GNU
-#undef	__USE_FORTIFY_LEVEL
-#undef	__KERNEL_STRICT_NAMES
-#undef	__GLIBC_USE_DEPRECATED_GETS
-#undef	__GLIBC_USE_DEPRECATED_SCANF
-
-/* Suppress kernel-name space pollution unless user expressedly asks
-   for it.  */
-#ifndef _LOOSE_KERNEL_NAMES
-# define __KERNEL_STRICT_NAMES
-#endif
-
-/* Convenience macro to test the version of gcc.
-   Use like this:
-   #if __GNUC_PREREQ (2,8)
-   ... code requiring gcc 2.8 or later ...
-   #endif
-   Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was
-   added in 2.0.  */
-#if defined __GNUC__ && defined __GNUC_MINOR__
-# define __GNUC_PREREQ(maj, min) \
-	((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
-#else
-# define __GNUC_PREREQ(maj, min) 0
-#endif
-
-/* Similarly for clang.  Features added to GCC after version 4.2 may
-   or may not also be available in clang, and clang's definitions of
-   __GNUC(_MINOR)__ are fixed at 4 and 2 respectively.  Not all such
-   features can be queried via __has_extension/__has_feature.  */
-#if defined __clang_major__ && defined __clang_minor__
-# define __glibc_clang_prereq(maj, min) \
-  ((__clang_major__ << 16) + __clang_minor__ >= ((maj) << 16) + (min))
-#else
-# define __glibc_clang_prereq(maj, min) 0
-#endif
-
-/* Whether to use feature set F.  */
-#define __GLIBC_USE(F)	__GLIBC_USE_ ## F
-
-/* _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for
-   _DEFAULT_SOURCE.  If _DEFAULT_SOURCE is present we do not
-   issue a warning; the expectation is that the source is being
-   transitioned to use the new macro.  */
-#if (defined _BSD_SOURCE || defined _SVID_SOURCE) \
-    && !defined _DEFAULT_SOURCE
-# warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"
-# undef  _DEFAULT_SOURCE
-# define _DEFAULT_SOURCE	1
-#endif
-
-/* If _GNU_SOURCE was defined by the user, turn on all the other features.  */
-#ifdef _GNU_SOURCE
-# undef  _ISOC95_SOURCE
-# define _ISOC95_SOURCE	1
-# undef  _ISOC99_SOURCE
-# define _ISOC99_SOURCE	1
-# undef  _ISOC11_SOURCE
-# define _ISOC11_SOURCE	1
-# undef  _POSIX_SOURCE
-# define _POSIX_SOURCE	1
-# undef  _POSIX_C_SOURCE
-# define _POSIX_C_SOURCE	200809L
-# undef  _XOPEN_SOURCE
-# define _XOPEN_SOURCE	700
-# undef  _XOPEN_SOURCE_EXTENDED
-# define _XOPEN_SOURCE_EXTENDED	1
-# undef	 _LARGEFILE64_SOURCE
-# define _LARGEFILE64_SOURCE	1
-# undef  _DEFAULT_SOURCE
-# define _DEFAULT_SOURCE	1
-# undef  _ATFILE_SOURCE
-# define _ATFILE_SOURCE	1
-#endif
-
-/* If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined,
-   define _DEFAULT_SOURCE.  */
-#if (defined _DEFAULT_SOURCE					\
-     || (!defined __STRICT_ANSI__				\
-	 && !defined _ISOC99_SOURCE && !defined _ISOC11_SOURCE	\
-	 && !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE	\
-	 && !defined _XOPEN_SOURCE))
-# undef  _DEFAULT_SOURCE
-# define _DEFAULT_SOURCE	1
-#endif
-
-/* This is to enable the ISO C11 extension.  */
-#if (defined _ISOC11_SOURCE \
-     || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 201112L))
-# define __USE_ISOC11	1
-#endif
-
-/* This is to enable the ISO C99 extension.  */
-#if (defined _ISOC99_SOURCE || defined _ISOC11_SOURCE \
-     || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L))
-# define __USE_ISOC99	1
-#endif
-
-/* This is to enable the ISO C90 Amendment 1:1995 extension.  */
-#if (defined _ISOC99_SOURCE || defined _ISOC11_SOURCE \
-     || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199409L))
-# define __USE_ISOC95	1
-#endif
-
-#ifdef __cplusplus
-/* This is to enable compatibility for ISO C++17.  */
-# if __cplusplus >= 201703L
-#  define __USE_ISOC11	1
-# endif
-/* This is to enable compatibility for ISO C++11.
-   Check the temporary macro for now, too.  */
-# if __cplusplus >= 201103L || defined __GXX_EXPERIMENTAL_CXX0X__
-#  define __USE_ISOCXX11	1
-#  define __USE_ISOC99	1
-# endif
-#endif
-
-/* If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE
-   is defined, use POSIX.1-2008 (or another version depending on
-   _XOPEN_SOURCE).  */
-#ifdef _DEFAULT_SOURCE
-# if !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE
-#  define __USE_POSIX_IMPLICITLY	1
-# endif
-# undef  _POSIX_SOURCE
-# define _POSIX_SOURCE	1
-# undef  _POSIX_C_SOURCE
-# define _POSIX_C_SOURCE	200809L
-#endif
-
-#if ((!defined __STRICT_ANSI__					\
-      || (defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 500))	\
-     && !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE)
-# define _POSIX_SOURCE	1
-# if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 500
-#  define _POSIX_C_SOURCE	2
-# elif defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 600
-#  define _POSIX_C_SOURCE	199506L
-# elif defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 700
-#  define _POSIX_C_SOURCE	200112L
-# else
-#  define _POSIX_C_SOURCE	200809L
-# endif
-# define __USE_POSIX_IMPLICITLY	1
-#endif
-
-/* Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be
-   defined in all multithreaded code.  GNU libc has not required this
-   for many years.  We now treat them as compatibility synonyms for
-   _POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with
-   comprehensive support for multithreaded code.  Using them never
-   lowers the selected level of POSIX conformance, only raises it.  */
-#if ((!defined _POSIX_C_SOURCE || (_POSIX_C_SOURCE - 0) < 199506L) \
-     && (defined _REENTRANT || defined _THREAD_SAFE))
-# define _POSIX_SOURCE   1
-# undef  _POSIX_C_SOURCE
-# define _POSIX_C_SOURCE 199506L
-#endif
-
-#if (defined _POSIX_SOURCE					\
-     || (defined _POSIX_C_SOURCE && _POSIX_C_SOURCE >= 1)	\
-     || defined _XOPEN_SOURCE)
-# define __USE_POSIX	1
-#endif
-
-#if defined _POSIX_C_SOURCE && _POSIX_C_SOURCE >= 2 || defined _XOPEN_SOURCE
-# define __USE_POSIX2	1
-#endif
-
-#if defined _POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 199309L
-# define __USE_POSIX199309	1
-#endif
-
-#if defined _POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 199506L
-# define __USE_POSIX199506	1
-#endif
-
-#if defined _POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 200112L
-# define __USE_XOPEN2K		1
-# undef __USE_ISOC95
-# define __USE_ISOC95		1
-# undef __USE_ISOC99
-# define __USE_ISOC99		1
-#endif
-
-#if defined _POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 200809L
-# define __USE_XOPEN2K8		1
-# undef  _ATFILE_SOURCE
-# define _ATFILE_SOURCE	1
-#endif
-
-#ifdef	_XOPEN_SOURCE
-# define __USE_XOPEN	1
-# if (_XOPEN_SOURCE - 0) >= 500
-#  define __USE_XOPEN_EXTENDED	1
-#  define __USE_UNIX98	1
-#  undef _LARGEFILE_SOURCE
-#  define _LARGEFILE_SOURCE	1
-#  if (_XOPEN_SOURCE - 0) >= 600
-#   if (_XOPEN_SOURCE - 0) >= 700
-#    define __USE_XOPEN2K8	1
-#    define __USE_XOPEN2K8XSI	1
-#   endif
-#   define __USE_XOPEN2K	1
-#   define __USE_XOPEN2KXSI	1
-#   undef __USE_ISOC95
-#   define __USE_ISOC95		1
-#   undef __USE_ISOC99
-#   define __USE_ISOC99		1
-#  endif
-# else
-#  ifdef _XOPEN_SOURCE_EXTENDED
-#   define __USE_XOPEN_EXTENDED	1
-#  endif
-# endif
-#endif
-
-#ifdef _LARGEFILE_SOURCE
-# define __USE_LARGEFILE	1
-#endif
-
-#ifdef _LARGEFILE64_SOURCE
-# define __USE_LARGEFILE64	1
-#endif
-
-#if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS == 64
-# define __USE_FILE_OFFSET64	1
-#endif
-
-#if defined _DEFAULT_SOURCE
-# define __USE_MISC	1
-#endif
-
-#ifdef	_ATFILE_SOURCE
-# define __USE_ATFILE	1
-#endif
-
-#ifdef	_GNU_SOURCE
-# define __USE_GNU	1
-#endif
-
-#if defined _FORTIFY_SOURCE && _FORTIFY_SOURCE > 0
-# if !defined __OPTIMIZE__ || __OPTIMIZE__ <= 0
-#  warning _FORTIFY_SOURCE requires compiling with optimization (-O)
-# elif !__GNUC_PREREQ (4, 1)
-#  warning _FORTIFY_SOURCE requires GCC 4.1 or later
-# elif _FORTIFY_SOURCE > 1
-#  define __USE_FORTIFY_LEVEL 2
-# else
-#  define __USE_FORTIFY_LEVEL 1
-# endif
-#endif
-#ifndef __USE_FORTIFY_LEVEL
-# define __USE_FORTIFY_LEVEL 0
-#endif
-
-/* The function 'gets' existed in C89, but is impossible to use
-   safely.  It has been removed from ISO C11 and ISO C++14.  Note: for
-   compatibility with various implementations of <cstdio>, this test
-   must consider only the value of __cplusplus when compiling C++.  */
-#if defined __cplusplus ? __cplusplus >= 201402L : defined __USE_ISOC11
-# define __GLIBC_USE_DEPRECATED_GETS 0
-#else
-# define __GLIBC_USE_DEPRECATED_GETS 1
-#endif
-
-/* GNU formerly extended the scanf functions with modified format
-   specifiers %as, %aS, and %a[...] that allocate a buffer for the
-   input using malloc.  This extension conflicts with ISO C99, which
-   defines %a as a standalone format specifier that reads a floating-
-   point number; moreover, POSIX.1-2008 provides the same feature
-   using the modifier letter 'm' instead (%ms, %mS, %m[...]).
-
-   We now follow C99 unless GNU extensions are active and the compiler
-   is specifically in C89 or C++98 mode (strict or not).  For
-   instance, with GCC, -std=gnu11 will have C99-compliant scanf with
-   or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the
-   old extension.  */
-#if (defined __USE_GNU							\
-     && (defined __cplusplus						\
-	 ? (__cplusplus < 201103L && !defined __GXX_EXPERIMENTAL_CXX0X__) \
-	 : (!defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L)))
-# define __GLIBC_USE_DEPRECATED_SCANF 1
-#else
-# define __GLIBC_USE_DEPRECATED_SCANF 0
-#endif
-
-/* Get definitions of __STDC_* predefined macros, if the compiler has
-   not preincluded this header automatically.  */
-#include <stdc-predef.h>
-
-/* This macro indicates that the installed library is the GNU C Library.
-   For historic reasons the value now is 6 and this will stay from now
-   on.  The use of this variable is deprecated.  Use __GLIBC__ and
-   __GLIBC_MINOR__ now (see below) when you want to test for a specific
-   GNU C library version and use the values in <gnu/lib-names.h> to get
-   the sonames of the shared libraries.  */
-#undef  __GNU_LIBRARY__
-#define __GNU_LIBRARY__ 6
-
-/* Major and minor version number of the GNU C library package.  Use
-   these macros to test for features in specific releases.  */
-#define	__GLIBC__	2
-#define	__GLIBC_MINOR__	29
-
-#define __GLIBC_PREREQ(maj, min) \
-	((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))
-
-/* This is here only because every header file already includes this one.  */
-#ifndef __ASSEMBLER__
-# ifndef _SYS_CDEFS_H
-#  include <sys/cdefs.h>
-# endif
-
-/* If we don't have __REDIRECT, prototypes will be missing if
-   __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64]. */
-# if defined __USE_FILE_OFFSET64 && !defined __REDIRECT
-#  define __USE_LARGEFILE	1
-#  define __USE_LARGEFILE64	1
-# endif
-
-#endif	/* !ASSEMBLER */
-
-/* Decide whether we can define 'extern inline' functions in headers.  */
-#if __GNUC_PREREQ (2, 7) && defined __OPTIMIZE__ \
-    && !defined __OPTIMIZE_SIZE__ && !defined __NO_INLINE__ \
-    && defined __extern_inline
-# define __USE_EXTERN_INLINES	1
-#endif
-
-
-/* This is here only because every header file already includes this one.
-   Get the definitions of all the appropriate `__stub_FUNCTION' symbols.
-   <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
-   that will always return failure (and set errno to ENOSYS).  */
-#include <gnu/stubs.h>
-
-
-#endif	/* features.h  */
+#include <misc/features.h>
diff --git a/include/gnu-versions.h b/include/gnu-versions.h
index 6db552a..eafc8c8 100644
--- a/include/gnu-versions.h
+++ b/include/gnu-versions.h
@@ -1,52 +1 @@
-/* Header with interface version macros for library pieces copied elsewhere.
-   Copyright (C) 1995-2019 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _GNU_VERSIONS_H
-#define	_GNU_VERSIONS_H	1
-
-/* This file exists to define these few macros.  Each specifies a version
-   number associated with the library interface of a piece of the C library
-   which is also distributed with other GNU packages.  These pieces are
-   both part of the GNU C library and also distributed with other GNU
-   packages so those packages may use their facilities on systems lacking
-   the GNU C library.  The source files for each piece surround all their
-   code with `#ifndef ELIDE_CODE' after defining it with this:
-
-   #define OBSTACK_INTERFACE_VERSION 1
-   #if !defined (_LIBC) && defined (__GNU_LIBRARY__) && __GNU_LIBRARY__ > 1
-   #include <gnu-versions.h>
-   #if _GNU_OBSTACK_INTERFACE_VERSION == OBSTACK_INTERFACE_VERSION
-   #define ELIDE_CODE
-   #endif
-   #endif
-
-   This allows those one to avoid compiling those files when part of a GNU
-   package not libc, on a system using a GNU C library that supports the
-   same interface.
-
-   Please preserve the format of the comments after each macro.  And
-   remember, if any of these versions change, the libc.so major version
-   number must change too (so avoid it)!  */
-
-#define _GNU_OBSTACK_INTERFACE_VERSION	1 /* vs malloc/obstack.c */
-#define _GNU_REGEX_INTERFACE_VERSION	1 /* vs posix/regex.c */
-#define _GNU_GLOB_INTERFACE_VERSION	2 /* vs posix/glob.c */
-#define _GNU_GETOPT_INTERFACE_VERSION	2 /* vs posix/getopt.c and
-					     posix/getopt1.c */
-
-#endif	/* gnu-versions.h */
+#include <misc/gnu-versions.h>
diff --git a/include/gnu/libc-version.h b/include/gnu/libc-version.h
index 0e2e91b..745fb5b 100644
--- a/include/gnu/libc-version.h
+++ b/include/gnu/libc-version.h
@@ -1,34 +1 @@
-/* Interface to GNU libc specific functions for version information.
-   Copyright (C) 1998-2019 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _GNU_LIBC_VERSION_H
-#define	_GNU_LIBC_VERSION_H	1
-
-#include <features.h>
-
-__BEGIN_DECLS
-
-/* Return string describing release status of currently running GNU libc.  */
-extern const char *gnu_get_libc_release (void) __THROW;
-
-/* Return string describing version of currently running GNU libc.  */
-extern const char *gnu_get_libc_version (void) __THROW;
-
-__END_DECLS
-
-#endif	/* gnu/libc-version.h */
+#include <misc/gnu/libc-version.h>
diff --git a/include/limits.h b/include/limits.h
index 08bb524..9eb278c 100644
--- a/include/limits.h
+++ b/include/limits.h
@@ -1,192 +1 @@
-/* Copyright (C) 1991-2019 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/*
- *	ISO C99 Standard: 7.10/5.2.4.2.1 Sizes of integer types	<limits.h>
- */
-
-#ifndef _LIBC_LIMITS_H_
-#define _LIBC_LIMITS_H_	1
-
-#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
-#include <bits/libc-header-start.h>
-
-
-/* Maximum length of any multibyte character in any locale.
-   We define this value here since the gcc header does not define
-   the correct value.  */
-#define MB_LEN_MAX	16
-
-
-/* If we are not using GNU CC we have to define all the symbols ourself.
-   Otherwise use gcc's definitions (see below).  */
-#if !defined __GNUC__ || __GNUC__ < 2
-
-/* We only protect from multiple inclusion here, because all the other
-   #include's protect themselves, and in GCC 2 we may #include_next through
-   multiple copies of this file before we get to GCC's.  */
-# ifndef _LIMITS_H
-#  define _LIMITS_H	1
-
-#include <bits/wordsize.h>
-
-/* We don't have #include_next.
-   Define ANSI <limits.h> for standard 32-bit words.  */
-
-/* These assume 8-bit `char's, 16-bit `short int's,
-   and 32-bit `int's and `long int's.  */
-
-/* Number of bits in a `char'.	*/
-#  define CHAR_BIT	8
-
-/* Minimum and maximum values a `signed char' can hold.  */
-#  define SCHAR_MIN	(-128)
-#  define SCHAR_MAX	127
-
-/* Maximum value an `unsigned char' can hold.  (Minimum is 0.)  */
-#  define UCHAR_MAX	255
-
-/* Minimum and maximum values a `char' can hold.  */
-#  ifdef __CHAR_UNSIGNED__
-#   define CHAR_MIN	0
-#   define CHAR_MAX	UCHAR_MAX
-#  else
-#   define CHAR_MIN	SCHAR_MIN
-#   define CHAR_MAX	SCHAR_MAX
-#  endif
-
-/* Minimum and maximum values a `signed short int' can hold.  */
-#  define SHRT_MIN	(-32768)
-#  define SHRT_MAX	32767
-
-/* Maximum value an `unsigned short int' can hold.  (Minimum is 0.)  */
-#  define USHRT_MAX	65535
-
-/* Minimum and maximum values a `signed int' can hold.  */
-#  define INT_MIN	(-INT_MAX - 1)
-#  define INT_MAX	2147483647
-
-/* Maximum value an `unsigned int' can hold.  (Minimum is 0.)  */
-#  define UINT_MAX	4294967295U
-
-/* Minimum and maximum values a `signed long int' can hold.  */
-#  if __WORDSIZE == 64
-#   define LONG_MAX	9223372036854775807L
-#  else
-#   define LONG_MAX	2147483647L
-#  endif
-#  define LONG_MIN	(-LONG_MAX - 1L)
-
-/* Maximum value an `unsigned long int' can hold.  (Minimum is 0.)  */
-#  if __WORDSIZE == 64
-#   define ULONG_MAX	18446744073709551615UL
-#  else
-#   define ULONG_MAX	4294967295UL
-#  endif
-
-#  ifdef __USE_ISOC99
-
-/* Minimum and maximum values a `signed long long int' can hold.  */
-#   define LLONG_MAX	9223372036854775807LL
-#   define LLONG_MIN	(-LLONG_MAX - 1LL)
-
-/* Maximum value an `unsigned long long int' can hold.  (Minimum is 0.)  */
-#   define ULLONG_MAX	18446744073709551615ULL
-
-#  endif /* ISO C99 */
-
-# endif	/* limits.h  */
-#endif	/* GCC 2.  */
-
-#endif	/* !_LIBC_LIMITS_H_ */
-
- /* Get the compiler's limits.h, which defines almost all the ISO constants.
-
-    We put this #include_next outside the double inclusion check because
-    it should be possible to include this file more than once and still get
-    the definitions from gcc's header.  */
-#if defined __GNUC__ && !defined _GCC_LIMITS_H_
-/* `_GCC_LIMITS_H_' is what GCC's file defines.  */
-# include_next <limits.h>
-#endif
-
-/* The <limits.h> files in some gcc versions don't define LLONG_MIN,
-   LLONG_MAX, and ULLONG_MAX.  Instead only the values gcc defined for
-   ages are available.  */
-#if defined __USE_ISOC99 && defined __GNUC__
-# ifndef LLONG_MIN
-#  define LLONG_MIN	(-LLONG_MAX-1)
-# endif
-# ifndef LLONG_MAX
-#  define LLONG_MAX	__LONG_LONG_MAX__
-# endif
-# ifndef ULLONG_MAX
-#  define ULLONG_MAX	(LLONG_MAX * 2ULL + 1)
-# endif
-#endif
-
-/* The integer width macros are not defined by GCC's <limits.h> before
-   GCC 7, or if _GNU_SOURCE rather than
-   __STDC_WANT_IEC_60559_BFP_EXT__ is used to enable this feature.  */
-#if __GLIBC_USE (IEC_60559_BFP_EXT)
-# ifndef CHAR_WIDTH
-#  define CHAR_WIDTH 8
-# endif
-# ifndef SCHAR_WIDTH
-#  define SCHAR_WIDTH 8
-# endif
-# ifndef UCHAR_WIDTH
-#  define UCHAR_WIDTH 8
-# endif
-# ifndef SHRT_WIDTH
-#  define SHRT_WIDTH 16
-# endif
-# ifndef USHRT_WIDTH
-#  define USHRT_WIDTH 16
-# endif
-# ifndef INT_WIDTH
-#  define INT_WIDTH 32
-# endif
-# ifndef UINT_WIDTH
-#  define UINT_WIDTH 32
-# endif
-# ifndef LONG_WIDTH
-#  define LONG_WIDTH __WORDSIZE
-# endif
-# ifndef ULONG_WIDTH
-#  define ULONG_WIDTH __WORDSIZE
-# endif
-# ifndef LLONG_WIDTH
-#  define LLONG_WIDTH 64
-# endif
-# ifndef ULLONG_WIDTH
-#  define ULLONG_WIDTH 64
-# endif
-#endif /* Use IEC_60559_BFP_EXT.  */
-
-#ifdef	__USE_POSIX
-/* POSIX adds things to <limits.h>.  */
-# include <bits/posix1_lim.h>
-#endif
-
-#ifdef	__USE_POSIX2
-# include <bits/posix2_lim.h>
-#endif
-
-#ifdef	__USE_XOPEN
-# include <bits/xopen_lim.h>
-#endif
+#include <misc/limits.h>
diff --git a/include/stdc-predef.h b/include/stdc-predef.h
index 5cc5eef..0a8122a 100644
--- a/include/stdc-predef.h
+++ b/include/stdc-predef.h
@@ -1,60 +1 @@
-/* Copyright (C) 1991-2019 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef	_STDC_PREDEF_H
-#define	_STDC_PREDEF_H	1
-
-/* This header is separate from features.h so that the compiler can
-   include it implicitly at the start of every compilation.  It must
-   not itself include <features.h> or any other header that includes
-   <features.h> because the implicit include comes before any feature
-   test macros that may be defined in a source file before it first
-   explicitly includes a system header.  GCC knows the name of this
-   header in order to preinclude it.  */
-
-/* glibc's intent is to support the IEC 559 math functionality, real
-   and complex.  If the GCC (4.9 and later) predefined macros
-   specifying compiler intent are available, use them to determine
-   whether the overall intent is to support these features; otherwise,
-   presume an older compiler has intent to support these features and
-   define these macros by default.  */
-
-#ifdef __GCC_IEC_559
-# if __GCC_IEC_559 > 0
-#  define __STDC_IEC_559__		1
-# endif
-#else
-# define __STDC_IEC_559__		1
-#endif
-
-#ifdef __GCC_IEC_559_COMPLEX
-# if __GCC_IEC_559_COMPLEX > 0
-#  define __STDC_IEC_559_COMPLEX__	1
-# endif
-#else
-# define __STDC_IEC_559_COMPLEX__	1
-#endif
-
-/* wchar_t uses Unicode 10.0.0.  Version 10.0 of the Unicode Standard is
-   synchronized with ISO/IEC 10646:2017, fifth edition, plus
-   the following additions from Amendment 1 to the fifth edition:
-   - 56 emoji characters
-   - 285 hentaigana
-   - 3 additional Zanabazar Square characters */
-#define __STDC_ISO_10646__		201706L
-
-#endif
+#include <misc/stdc-predef.h>
diff --git a/include/values.h b/include/values.h
index ae987a5..56ad18e 100644
--- a/include/values.h
+++ b/include/values.h
@@ -1,68 +1 @@
-/* Old compatibility names for <limits.h> and <float.h> constants.
-   Copyright (C) 1995-2019 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* This interface is obsolete.  New programs should use
-   <limits.h> and/or <float.h> instead of <values.h>.  */
-
-#ifndef	_VALUES_H
-#define	_VALUES_H	1
-
-#include <features.h>
-
-#include <limits.h>
-
-#define _TYPEBITS(type)	(sizeof (type) * CHAR_BIT)
-
-#define CHARBITS	_TYPEBITS (char)
-#define SHORTBITS	_TYPEBITS (short int)
-#define INTBITS		_TYPEBITS (int)
-#define LONGBITS	_TYPEBITS (long int)
-#define PTRBITS		_TYPEBITS (char *)
-#define DOUBLEBITS	_TYPEBITS (double)
-#define FLOATBITS	_TYPEBITS (float)
-
-#define MINSHORT	SHRT_MIN
-#define	MININT		INT_MIN
-#define	MINLONG		LONG_MIN
-
-#define	MAXSHORT	SHRT_MAX
-#define	MAXINT		INT_MAX
-#define	MAXLONG		LONG_MAX
-
-#define HIBITS		MINSHORT
-#define HIBITL		MINLONG
-
-
-#include <float.h>
-
-#define	MAXDOUBLE	DBL_MAX
-#define	MAXFLOAT	FLT_MAX
-#define	MINDOUBLE	DBL_MIN
-#define	MINFLOAT	FLT_MIN
-#define	DMINEXP		DBL_MIN_EXP
-#define	FMINEXP		FLT_MIN_EXP
-#define	DMAXEXP		DBL_MAX_EXP
-#define	FMAXEXP		FLT_MAX_EXP
-
-
-#ifdef __USE_MISC
-/* Some systems define this name instead of CHAR_BIT or CHARBITS.  */
-# define BITSPERBYTE	CHAR_BIT
-#endif
-
-#endif	/* values.h */
+#include <misc/values.h>
diff --git a/misc/Makefile b/misc/Makefile
index 032f28f..e6c7389 100644
--- a/misc/Makefile
+++ b/misc/Makefile
@@ -23,21 +23,22 @@ subdir	:= misc
 
 include ../Makeconfig
 
-headers	:= sys/uio.h bits/uio-ext.h bits/uio_lim.h \
-	   sys/ioctl.h bits/ioctls.h bits/ioctl-types.h \
-	   sys/ptrace.h sys/file.h sys/dir.h sys/cdefs.h \
-	   ar.h a.out.h libgen.h stab.h bits/stab.def sgtty.h \
-	   ttyent.h paths.h sys/reboot.h \
-	   sys/mman.h sys/param.h bits/param.h \
-	   fstab.h mntent.h search.h err.h error.h \
-	   sys/queue.h sysexits.h syscall.h sys/syscall.h sys/swap.h \
-	   sys/select.h sys/sysinfo.h \
-	   regexp.h bits/select.h bits/mman.h sys/xattr.h \
-	   syslog.h sys/syslog.h \
-	   bits/syslog.h bits/syslog-ldbl.h bits/syslog-path.h bits/error.h \
-	   bits/select2.h bits/hwcap.h sys/auxv.h \
-	   sys/sysmacros.h bits/sysmacros.h bits/types/struct_iovec.h \
-	   bits/err-ldbl.h bits/error-ldbl.h
+headers :=								\
+	a.out.h ar.h err.h error.h features.h fstab.h gnu-versions.h	\
+	libgen.h limits.h mntent.h paths.h regexp.h search.h sgtty.h	\
+	stab.h stdc-predef.h syscall.h sysexits.h syslog.h ttyent.h	\
+	values.h							\
+	bits/err-ldbl.h bits/error-ldbl.h bits/error.h bits/hwcap.h	\
+	bits/ioctl-types.h bits/ioctls.h bits/libc-header-start.h	\
+	bits/mman.h bits/param.h bits/select.h bits/select2.h		\
+	bits/stab.def bits/syslog-ldbl.h bits/syslog-path.h		\
+	bits/syslog.h bits/sysmacros.h bits/types/struct_iovec.h	\
+	bits/uio-ext.h bits/uio_lim.h bits/xopen_lim.h			\
+	gnu/libc-version.h						\
+	sys/auxv.h sys/cdefs.h sys/dir.h sys/file.h sys/ioctl.h		\
+	sys/mman.h sys/param.h sys/ptrace.h sys/queue.h sys/reboot.h	\
+	sys/select.h sys/swap.h sys/syscall.h sys/sysinfo.h		\
+	sys/syslog.h sys/sysmacros.h sys/uio.h sys/xattr.h
 
 routines := brk sbrk sstk ioctl \
 	    readv writev preadv preadv64 pwritev pwritev64 \
diff --git a/misc/bits/xopen_lim.h b/misc/bits/xopen_lim.h
new file mode 100644
index 0000000..b76a94b
--- /dev/null
+++ b/misc/bits/xopen_lim.h
@@ -0,0 +1,148 @@
+/* Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/*
+ * Never include this file directly; use <limits.h> instead.
+ */
+
+/* Additional definitions from X/Open Portability Guide, Issue 4, Version 2
+   System Interfaces and Headers, 4.16 <limits.h>
+
+   Please note only the values which are not greater than the minimum
+   stated in the standard document are listed.  The `sysconf' functions
+   should be used to obtain the actual value.  */
+
+#ifndef _XOPEN_LIM_H
+#define _XOPEN_LIM_H	1
+
+/* We do not provide fixed values for
+
+   ARG_MAX	Maximum length of argument to the `exec' function
+		including environment data.
+
+   ATEXIT_MAX	Maximum number of functions that may be registered
+		with `atexit'.
+
+   CHILD_MAX	Maximum number of simultaneous processes per real
+		user ID.
+
+   OPEN_MAX	Maximum number of files that one process can have open
+		at anyone time.
+
+   PAGESIZE
+   PAGE_SIZE	Size of bytes of a page.
+
+   PASS_MAX	Maximum number of significant bytes in a password.
+
+   We only provide a fixed limit for
+
+   IOV_MAX	Maximum number of `iovec' structures that one process has
+		available for use with `readv' or writev'.
+
+   if this is indeed fixed by the underlying system.
+*/
+
+
+/* Maximum number of `iovec' structures that may be used in a single call
+   to `readv', `writev', etc.  */
+#define	_XOPEN_IOV_MAX	_POSIX_UIO_MAXIOV
+
+#include <bits/uio_lim.h>
+#ifdef __IOV_MAX
+# define IOV_MAX __IOV_MAX
+#else
+# undef IOV_MAX
+#endif
+
+/* Maximum value of `digit' in calls to the `printf' and `scanf'
+   functions.  We have no limit, so return a reasonable value.  */
+#define NL_ARGMAX	_POSIX_ARG_MAX
+
+/* Maximum number of bytes in a `LANG' name.  We have no limit.  */
+#define NL_LANGMAX	_POSIX2_LINE_MAX
+
+/* Maximum message number.  We have no limit.  */
+#define NL_MSGMAX	INT_MAX
+
+/* Maximum number of bytes in N-to-1 collation mapping.  We have no
+   limit.  */
+#if defined __USE_GNU || !defined __USE_XOPEN2K8
+# define NL_NMAX	INT_MAX
+#endif
+
+/* Maximum set number.  We have no limit.  */
+#define NL_SETMAX	INT_MAX
+
+/* Maximum number of bytes in a message.  We have no limit.  */
+#define NL_TEXTMAX	INT_MAX
+
+/* Default process priority.  */
+#define NZERO		20
+
+
+/* Number of bits in a word of type `int'.  */
+#ifdef INT_MAX
+# if INT_MAX == 32767
+#  define WORD_BIT	16
+# else
+#  if INT_MAX == 2147483647
+#   define WORD_BIT	32
+#  else
+/* Safe assumption.  */
+#   define WORD_BIT	64
+#  endif
+# endif
+#elif defined __INT_MAX__
+# if __INT_MAX__ == 32767
+#  define WORD_BIT	16
+# else
+#  if __INT_MAX__ == 2147483647
+#   define WORD_BIT	32
+#  else
+/* Safe assumption.  */
+#   define WORD_BIT	64
+#  endif
+# endif
+#else
+# define WORD_BIT	32
+#endif
+
+/* Number of bits in a word of type `long int'.  */
+#ifdef LONG_MAX
+# if LONG_MAX == 2147483647
+#  define LONG_BIT	32
+# else
+/* Safe assumption.  */
+#  define LONG_BIT	64
+# endif
+#elif defined __LONG_MAX__
+# if __LONG_MAX__ == 2147483647
+#  define LONG_BIT	32
+# else
+/* Safe assumption.  */
+#  define LONG_BIT	64
+# endif
+#else
+# include <bits/wordsize.h>
+# if __WORDSIZE == 64
+#  define LONG_BIT	64
+# else
+#  define LONG_BIT	32
+# endif
+#endif
+
+#endif /* bits/xopen_lim.h */
diff --git a/misc/features.h b/misc/features.h
new file mode 100644
index 0000000..e016b3e
--- /dev/null
+++ b/misc/features.h
@@ -0,0 +1,477 @@
+/* Copyright (C) 1991-2019 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef	_FEATURES_H
+#define	_FEATURES_H	1
+
+/* These are defined by the user (or the compiler)
+   to specify the desired environment:
+
+   __STRICT_ANSI__	ISO Standard C.
+   _ISOC99_SOURCE	Extensions to ISO C89 from ISO C99.
+   _ISOC11_SOURCE	Extensions to ISO C99 from ISO C11.
+   __STDC_WANT_LIB_EXT2__
+			Extensions to ISO C99 from TR 27431-2:2010.
+   __STDC_WANT_IEC_60559_BFP_EXT__
+			Extensions to ISO C11 from TS 18661-1:2014.
+   __STDC_WANT_IEC_60559_FUNCS_EXT__
+			Extensions to ISO C11 from TS 18661-4:2015.
+   __STDC_WANT_IEC_60559_TYPES_EXT__
+			Extensions to ISO C11 from TS 18661-3:2015.
+
+   _POSIX_SOURCE	IEEE Std 1003.1.
+   _POSIX_C_SOURCE	If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
+			if >=199309L, add IEEE Std 1003.1b-1993;
+			if >=199506L, add IEEE Std 1003.1c-1995;
+			if >=200112L, all of IEEE 1003.1-2004
+			if >=200809L, all of IEEE 1003.1-2008
+   _XOPEN_SOURCE	Includes POSIX and XPG things.  Set to 500 if
+			Single Unix conformance is wanted, to 600 for the
+			sixth revision, to 700 for the seventh revision.
+   _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
+   _LARGEFILE_SOURCE	Some more functions for correct standard I/O.
+   _LARGEFILE64_SOURCE	Additional functionality from LFS for large files.
+   _FILE_OFFSET_BITS=N	Select default filesystem interface.
+   _ATFILE_SOURCE	Additional *at interfaces.
+   _GNU_SOURCE		All of the above, plus GNU extensions.
+   _DEFAULT_SOURCE	The default set of features (taking precedence over
+			__STRICT_ANSI__).
+
+   _FORTIFY_SOURCE	Add security hardening to many library functions.
+			Set to 1 or 2; 2 performs stricter checks than 1.
+
+   _REENTRANT, _THREAD_SAFE
+			Obsolete; equivalent to _POSIX_C_SOURCE=199506L.
+
+   The `-ansi' switch to the GNU C compiler, and standards conformance
+   options such as `-std=c99', define __STRICT_ANSI__.  If none of
+   these are defined, or if _DEFAULT_SOURCE is defined, the default is
+   to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to
+   200809L, as well as enabling miscellaneous functions from BSD and
+   SVID.  If more than one of these are defined, they accumulate.  For
+   example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together
+   give you ISO C, 1003.1, and 1003.2, but nothing else.
+
+   These are defined by this file and are used by the
+   header files to decide what to declare or define:
+
+   __GLIBC_USE (F)	Define things from feature set F.  This is defined
+			to 1 or 0; the subsequent macros are either defined
+			or undefined, and those tests should be moved to
+			__GLIBC_USE.
+   __USE_ISOC11		Define ISO C11 things.
+   __USE_ISOC99		Define ISO C99 things.
+   __USE_ISOC95		Define ISO C90 AMD1 (C95) things.
+   __USE_ISOCXX11	Define ISO C++11 things.
+   __USE_POSIX		Define IEEE Std 1003.1 things.
+   __USE_POSIX2		Define IEEE Std 1003.2 things.
+   __USE_POSIX199309	Define IEEE Std 1003.1, and .1b things.
+   __USE_POSIX199506	Define IEEE Std 1003.1, .1b, .1c and .1i things.
+   __USE_XOPEN		Define XPG things.
+   __USE_XOPEN_EXTENDED	Define X/Open Unix things.
+   __USE_UNIX98		Define Single Unix V2 things.
+   __USE_XOPEN2K        Define XPG6 things.
+   __USE_XOPEN2KXSI     Define XPG6 XSI things.
+   __USE_XOPEN2K8       Define XPG7 things.
+   __USE_XOPEN2K8XSI    Define XPG7 XSI things.
+   __USE_LARGEFILE	Define correct standard I/O things.
+   __USE_LARGEFILE64	Define LFS things with separate names.
+   __USE_FILE_OFFSET64	Define 64bit interface as default.
+   __USE_MISC		Define things from 4.3BSD or System V Unix.
+   __USE_ATFILE		Define *at interfaces and AT_* constants for them.
+   __USE_GNU		Define GNU extensions.
+   __USE_FORTIFY_LEVEL	Additional security measures used, according to level.
+
+   The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
+   defined by this file unconditionally.  `__GNU_LIBRARY__' is provided
+   only for compatibility.  All new code should use the other symbols
+   to test for features.
+
+   All macros listed above as possibly being defined by this file are
+   explicitly undefined if they are not explicitly defined.
+   Feature-test macros that are not defined by the user or compiler
+   but are implied by the other feature-test macros defined (or by the
+   lack of any definitions) are defined by the file.
+
+   ISO C feature test macros depend on the definition of the macro
+   when an affected header is included, not when the first system
+   header is included, and so they are handled in
+   <bits/libc-header-start.h>, which does not have a multiple include
+   guard.  Feature test macros that can be handled from the first
+   system header included are handled here.  */
+
+
+/* Undefine everything, so we get a clean slate.  */
+#undef	__USE_ISOC11
+#undef	__USE_ISOC99
+#undef	__USE_ISOC95
+#undef	__USE_ISOCXX11
+#undef	__USE_POSIX
+#undef	__USE_POSIX2
+#undef	__USE_POSIX199309
+#undef	__USE_POSIX199506
+#undef	__USE_XOPEN
+#undef	__USE_XOPEN_EXTENDED
+#undef	__USE_UNIX98
+#undef	__USE_XOPEN2K
+#undef	__USE_XOPEN2KXSI
+#undef	__USE_XOPEN2K8
+#undef	__USE_XOPEN2K8XSI
+#undef	__USE_LARGEFILE
+#undef	__USE_LARGEFILE64
+#undef	__USE_FILE_OFFSET64
+#undef	__USE_MISC
+#undef	__USE_ATFILE
+#undef	__USE_GNU
+#undef	__USE_FORTIFY_LEVEL
+#undef	__KERNEL_STRICT_NAMES
+#undef	__GLIBC_USE_DEPRECATED_GETS
+#undef	__GLIBC_USE_DEPRECATED_SCANF
+
+/* Suppress kernel-name space pollution unless user expressedly asks
+   for it.  */
+#ifndef _LOOSE_KERNEL_NAMES
+# define __KERNEL_STRICT_NAMES
+#endif
+
+/* Convenience macro to test the version of gcc.
+   Use like this:
+   #if __GNUC_PREREQ (2,8)
+   ... code requiring gcc 2.8 or later ...
+   #endif
+   Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was
+   added in 2.0.  */
+#if defined __GNUC__ && defined __GNUC_MINOR__
+# define __GNUC_PREREQ(maj, min) \
+	((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
+#else
+# define __GNUC_PREREQ(maj, min) 0
+#endif
+
+/* Similarly for clang.  Features added to GCC after version 4.2 may
+   or may not also be available in clang, and clang's definitions of
+   __GNUC(_MINOR)__ are fixed at 4 and 2 respectively.  Not all such
+   features can be queried via __has_extension/__has_feature.  */
+#if defined __clang_major__ && defined __clang_minor__
+# define __glibc_clang_prereq(maj, min) \
+  ((__clang_major__ << 16) + __clang_minor__ >= ((maj) << 16) + (min))
+#else
+# define __glibc_clang_prereq(maj, min) 0
+#endif
+
+/* Whether to use feature set F.  */
+#define __GLIBC_USE(F)	__GLIBC_USE_ ## F
+
+/* _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for
+   _DEFAULT_SOURCE.  If _DEFAULT_SOURCE is present we do not
+   issue a warning; the expectation is that the source is being
+   transitioned to use the new macro.  */
+#if (defined _BSD_SOURCE || defined _SVID_SOURCE) \
+    && !defined _DEFAULT_SOURCE
+# warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"
+# undef  _DEFAULT_SOURCE
+# define _DEFAULT_SOURCE	1
+#endif
+
+/* If _GNU_SOURCE was defined by the user, turn on all the other features.  */
+#ifdef _GNU_SOURCE
+# undef  _ISOC95_SOURCE
+# define _ISOC95_SOURCE	1
+# undef  _ISOC99_SOURCE
+# define _ISOC99_SOURCE	1
+# undef  _ISOC11_SOURCE
+# define _ISOC11_SOURCE	1
+# undef  _POSIX_SOURCE
+# define _POSIX_SOURCE	1
+# undef  _POSIX_C_SOURCE
+# define _POSIX_C_SOURCE	200809L
+# undef  _XOPEN_SOURCE
+# define _XOPEN_SOURCE	700
+# undef  _XOPEN_SOURCE_EXTENDED
+# define _XOPEN_SOURCE_EXTENDED	1
+# undef	 _LARGEFILE64_SOURCE
+# define _LARGEFILE64_SOURCE	1
+# undef  _DEFAULT_SOURCE
+# define _DEFAULT_SOURCE	1
+# undef  _ATFILE_SOURCE
+# define _ATFILE_SOURCE	1
+#endif
+
+/* If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined,
+   define _DEFAULT_SOURCE.  */
+#if (defined _DEFAULT_SOURCE					\
+     || (!defined __STRICT_ANSI__				\
+	 && !defined _ISOC99_SOURCE && !defined _ISOC11_SOURCE	\
+	 && !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE	\
+	 && !defined _XOPEN_SOURCE))
+# undef  _DEFAULT_SOURCE
+# define _DEFAULT_SOURCE	1
+#endif
+
+/* This is to enable the ISO C11 extension.  */
+#if (defined _ISOC11_SOURCE \
+     || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 201112L))
+# define __USE_ISOC11	1
+#endif
+
+/* This is to enable the ISO C99 extension.  */
+#if (defined _ISOC99_SOURCE || defined _ISOC11_SOURCE \
+     || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L))
+# define __USE_ISOC99	1
+#endif
+
+/* This is to enable the ISO C90 Amendment 1:1995 extension.  */
+#if (defined _ISOC99_SOURCE || defined _ISOC11_SOURCE \
+     || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199409L))
+# define __USE_ISOC95	1
+#endif
+
+#ifdef __cplusplus
+/* This is to enable compatibility for ISO C++17.  */
+# if __cplusplus >= 201703L
+#  define __USE_ISOC11	1
+# endif
+/* This is to enable compatibility for ISO C++11.
+   Check the temporary macro for now, too.  */
+# if __cplusplus >= 201103L || defined __GXX_EXPERIMENTAL_CXX0X__
+#  define __USE_ISOCXX11	1
+#  define __USE_ISOC99	1
+# endif
+#endif
+
+/* If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE
+   is defined, use POSIX.1-2008 (or another version depending on
+   _XOPEN_SOURCE).  */
+#ifdef _DEFAULT_SOURCE
+# if !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE
+#  define __USE_POSIX_IMPLICITLY	1
+# endif
+# undef  _POSIX_SOURCE
+# define _POSIX_SOURCE	1
+# undef  _POSIX_C_SOURCE
+# define _POSIX_C_SOURCE	200809L
+#endif
+
+#if ((!defined __STRICT_ANSI__					\
+      || (defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 500))	\
+     && !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE)
+# define _POSIX_SOURCE	1
+# if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 500
+#  define _POSIX_C_SOURCE	2
+# elif defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 600
+#  define _POSIX_C_SOURCE	199506L
+# elif defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 700
+#  define _POSIX_C_SOURCE	200112L
+# else
+#  define _POSIX_C_SOURCE	200809L
+# endif
+# define __USE_POSIX_IMPLICITLY	1
+#endif
+
+/* Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be
+   defined in all multithreaded code.  GNU libc has not required this
+   for many years.  We now treat them as compatibility synonyms for
+   _POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with
+   comprehensive support for multithreaded code.  Using them never
+   lowers the selected level of POSIX conformance, only raises it.  */
+#if ((!defined _POSIX_C_SOURCE || (_POSIX_C_SOURCE - 0) < 199506L) \
+     && (defined _REENTRANT || defined _THREAD_SAFE))
+# define _POSIX_SOURCE   1
+# undef  _POSIX_C_SOURCE
+# define _POSIX_C_SOURCE 199506L
+#endif
+
+#if (defined _POSIX_SOURCE					\
+     || (defined _POSIX_C_SOURCE && _POSIX_C_SOURCE >= 1)	\
+     || defined _XOPEN_SOURCE)
+# define __USE_POSIX	1
+#endif
+
+#if defined _POSIX_C_SOURCE && _POSIX_C_SOURCE >= 2 || defined _XOPEN_SOURCE
+# define __USE_POSIX2	1
+#endif
+
+#if defined _POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 199309L
+# define __USE_POSIX199309	1
+#endif
+
+#if defined _POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 199506L
+# define __USE_POSIX199506	1
+#endif
+
+#if defined _POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 200112L
+# define __USE_XOPEN2K		1
+# undef __USE_ISOC95
+# define __USE_ISOC95		1
+# undef __USE_ISOC99
+# define __USE_ISOC99		1
+#endif
+
+#if defined _POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 200809L
+# define __USE_XOPEN2K8		1
+# undef  _ATFILE_SOURCE
+# define _ATFILE_SOURCE	1
+#endif
+
+#ifdef	_XOPEN_SOURCE
+# define __USE_XOPEN	1
+# if (_XOPEN_SOURCE - 0) >= 500
+#  define __USE_XOPEN_EXTENDED	1
+#  define __USE_UNIX98	1
+#  undef _LARGEFILE_SOURCE
+#  define _LARGEFILE_SOURCE	1
+#  if (_XOPEN_SOURCE - 0) >= 600
+#   if (_XOPEN_SOURCE - 0) >= 700
+#    define __USE_XOPEN2K8	1
+#    define __USE_XOPEN2K8XSI	1
+#   endif
+#   define __USE_XOPEN2K	1
+#   define __USE_XOPEN2KXSI	1
+#   undef __USE_ISOC95
+#   define __USE_ISOC95		1
+#   undef __USE_ISOC99
+#   define __USE_ISOC99		1
+#  endif
+# else
+#  ifdef _XOPEN_SOURCE_EXTENDED
+#   define __USE_XOPEN_EXTENDED	1
+#  endif
+# endif
+#endif
+
+#ifdef _LARGEFILE_SOURCE
+# define __USE_LARGEFILE	1
+#endif
+
+#ifdef _LARGEFILE64_SOURCE
+# define __USE_LARGEFILE64	1
+#endif
+
+#if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS == 64
+# define __USE_FILE_OFFSET64	1
+#endif
+
+#if defined _DEFAULT_SOURCE
+# define __USE_MISC	1
+#endif
+
+#ifdef	_ATFILE_SOURCE
+# define __USE_ATFILE	1
+#endif
+
+#ifdef	_GNU_SOURCE
+# define __USE_GNU	1
+#endif
+
+#if defined _FORTIFY_SOURCE && _FORTIFY_SOURCE > 0
+# if !defined __OPTIMIZE__ || __OPTIMIZE__ <= 0
+#  warning _FORTIFY_SOURCE requires compiling with optimization (-O)
+# elif !__GNUC_PREREQ (4, 1)
+#  warning _FORTIFY_SOURCE requires GCC 4.1 or later
+# elif _FORTIFY_SOURCE > 1
+#  define __USE_FORTIFY_LEVEL 2
+# else
+#  define __USE_FORTIFY_LEVEL 1
+# endif
+#endif
+#ifndef __USE_FORTIFY_LEVEL
+# define __USE_FORTIFY_LEVEL 0
+#endif
+
+/* The function 'gets' existed in C89, but is impossible to use
+   safely.  It has been removed from ISO C11 and ISO C++14.  Note: for
+   compatibility with various implementations of <cstdio>, this test
+   must consider only the value of __cplusplus when compiling C++.  */
+#if defined __cplusplus ? __cplusplus >= 201402L : defined __USE_ISOC11
+# define __GLIBC_USE_DEPRECATED_GETS 0
+#else
+# define __GLIBC_USE_DEPRECATED_GETS 1
+#endif
+
+/* GNU formerly extended the scanf functions with modified format
+   specifiers %as, %aS, and %a[...] that allocate a buffer for the
+   input using malloc.  This extension conflicts with ISO C99, which
+   defines %a as a standalone format specifier that reads a floating-
+   point number; moreover, POSIX.1-2008 provides the same feature
+   using the modifier letter 'm' instead (%ms, %mS, %m[...]).
+
+   We now follow C99 unless GNU extensions are active and the compiler
+   is specifically in C89 or C++98 mode (strict or not).  For
+   instance, with GCC, -std=gnu11 will have C99-compliant scanf with
+   or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the
+   old extension.  */
+#if (defined __USE_GNU							\
+     && (defined __cplusplus						\
+	 ? (__cplusplus < 201103L && !defined __GXX_EXPERIMENTAL_CXX0X__) \
+	 : (!defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L)))
+# define __GLIBC_USE_DEPRECATED_SCANF 1
+#else
+# define __GLIBC_USE_DEPRECATED_SCANF 0
+#endif
+
+/* Get definitions of __STDC_* predefined macros, if the compiler has
+   not preincluded this header automatically.  */
+#include <stdc-predef.h>
+
+/* This macro indicates that the installed library is the GNU C Library.
+   For historic reasons the value now is 6 and this will stay from now
+   on.  The use of this variable is deprecated.  Use __GLIBC__ and
+   __GLIBC_MINOR__ now (see below) when you want to test for a specific
+   GNU C library version and use the values in <gnu/lib-names.h> to get
+   the sonames of the shared libraries.  */
+#undef  __GNU_LIBRARY__
+#define __GNU_LIBRARY__ 6
+
+/* Major and minor version number of the GNU C library package.  Use
+   these macros to test for features in specific releases.  */
+#define	__GLIBC__	2
+#define	__GLIBC_MINOR__	29
+
+#define __GLIBC_PREREQ(maj, min) \
+	((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))
+
+/* This is here only because every header file already includes this one.  */
+#ifndef __ASSEMBLER__
+# ifndef _SYS_CDEFS_H
+#  include <sys/cdefs.h>
+# endif
+
+/* If we don't have __REDIRECT, prototypes will be missing if
+   __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64]. */
+# if defined __USE_FILE_OFFSET64 && !defined __REDIRECT
+#  define __USE_LARGEFILE	1
+#  define __USE_LARGEFILE64	1
+# endif
+
+#endif	/* !ASSEMBLER */
+
+/* Decide whether we can define 'extern inline' functions in headers.  */
+#if __GNUC_PREREQ (2, 7) && defined __OPTIMIZE__ \
+    && !defined __OPTIMIZE_SIZE__ && !defined __NO_INLINE__ \
+    && defined __extern_inline
+# define __USE_EXTERN_INLINES	1
+#endif
+
+
+/* This is here only because every header file already includes this one.
+   Get the definitions of all the appropriate `__stub_FUNCTION' symbols.
+   <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
+   that will always return failure (and set errno to ENOSYS).  */
+#include <gnu/stubs.h>
+
+
+#endif	/* features.h  */
diff --git a/misc/gnu-versions.h b/misc/gnu-versions.h
new file mode 100644
index 0000000..6db552a
--- /dev/null
+++ b/misc/gnu-versions.h
@@ -0,0 +1,52 @@
+/* Header with interface version macros for library pieces copied elsewhere.
+   Copyright (C) 1995-2019 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _GNU_VERSIONS_H
+#define	_GNU_VERSIONS_H	1
+
+/* This file exists to define these few macros.  Each specifies a version
+   number associated with the library interface of a piece of the C library
+   which is also distributed with other GNU packages.  These pieces are
+   both part of the GNU C library and also distributed with other GNU
+   packages so those packages may use their facilities on systems lacking
+   the GNU C library.  The source files for each piece surround all their
+   code with `#ifndef ELIDE_CODE' after defining it with this:
+
+   #define OBSTACK_INTERFACE_VERSION 1
+   #if !defined (_LIBC) && defined (__GNU_LIBRARY__) && __GNU_LIBRARY__ > 1
+   #include <gnu-versions.h>
+   #if _GNU_OBSTACK_INTERFACE_VERSION == OBSTACK_INTERFACE_VERSION
+   #define ELIDE_CODE
+   #endif
+   #endif
+
+   This allows those one to avoid compiling those files when part of a GNU
+   package not libc, on a system using a GNU C library that supports the
+   same interface.
+
+   Please preserve the format of the comments after each macro.  And
+   remember, if any of these versions change, the libc.so major version
+   number must change too (so avoid it)!  */
+
+#define _GNU_OBSTACK_INTERFACE_VERSION	1 /* vs malloc/obstack.c */
+#define _GNU_REGEX_INTERFACE_VERSION	1 /* vs posix/regex.c */
+#define _GNU_GLOB_INTERFACE_VERSION	2 /* vs posix/glob.c */
+#define _GNU_GETOPT_INTERFACE_VERSION	2 /* vs posix/getopt.c and
+					     posix/getopt1.c */
+
+#endif	/* gnu-versions.h */
diff --git a/misc/gnu/libc-version.h b/misc/gnu/libc-version.h
new file mode 100644
index 0000000..0e2e91b
--- /dev/null
+++ b/misc/gnu/libc-version.h
@@ -0,0 +1,34 @@
+/* Interface to GNU libc specific functions for version information.
+   Copyright (C) 1998-2019 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _GNU_LIBC_VERSION_H
+#define	_GNU_LIBC_VERSION_H	1
+
+#include <features.h>
+
+__BEGIN_DECLS
+
+/* Return string describing release status of currently running GNU libc.  */
+extern const char *gnu_get_libc_release (void) __THROW;
+
+/* Return string describing version of currently running GNU libc.  */
+extern const char *gnu_get_libc_version (void) __THROW;
+
+__END_DECLS
+
+#endif	/* gnu/libc-version.h */
diff --git a/misc/limits.h b/misc/limits.h
new file mode 100644
index 0000000..08bb524
--- /dev/null
+++ b/misc/limits.h
@@ -0,0 +1,192 @@
+/* Copyright (C) 1991-2019 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/*
+ *	ISO C99 Standard: 7.10/5.2.4.2.1 Sizes of integer types	<limits.h>
+ */
+
+#ifndef _LIBC_LIMITS_H_
+#define _LIBC_LIMITS_H_	1
+
+#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
+#include <bits/libc-header-start.h>
+
+
+/* Maximum length of any multibyte character in any locale.
+   We define this value here since the gcc header does not define
+   the correct value.  */
+#define MB_LEN_MAX	16
+
+
+/* If we are not using GNU CC we have to define all the symbols ourself.
+   Otherwise use gcc's definitions (see below).  */
+#if !defined __GNUC__ || __GNUC__ < 2
+
+/* We only protect from multiple inclusion here, because all the other
+   #include's protect themselves, and in GCC 2 we may #include_next through
+   multiple copies of this file before we get to GCC's.  */
+# ifndef _LIMITS_H
+#  define _LIMITS_H	1
+
+#include <bits/wordsize.h>
+
+/* We don't have #include_next.
+   Define ANSI <limits.h> for standard 32-bit words.  */
+
+/* These assume 8-bit `char's, 16-bit `short int's,
+   and 32-bit `int's and `long int's.  */
+
+/* Number of bits in a `char'.	*/
+#  define CHAR_BIT	8
+
+/* Minimum and maximum values a `signed char' can hold.  */
+#  define SCHAR_MIN	(-128)
+#  define SCHAR_MAX	127
+
+/* Maximum value an `unsigned char' can hold.  (Minimum is 0.)  */
+#  define UCHAR_MAX	255
+
+/* Minimum and maximum values a `char' can hold.  */
+#  ifdef __CHAR_UNSIGNED__
+#   define CHAR_MIN	0
+#   define CHAR_MAX	UCHAR_MAX
+#  else
+#   define CHAR_MIN	SCHAR_MIN
+#   define CHAR_MAX	SCHAR_MAX
+#  endif
+
+/* Minimum and maximum values a `signed short int' can hold.  */
+#  define SHRT_MIN	(-32768)
+#  define SHRT_MAX	32767
+
+/* Maximum value an `unsigned short int' can hold.  (Minimum is 0.)  */
+#  define USHRT_MAX	65535
+
+/* Minimum and maximum values a `signed int' can hold.  */
+#  define INT_MIN	(-INT_MAX - 1)
+#  define INT_MAX	2147483647
+
+/* Maximum value an `unsigned int' can hold.  (Minimum is 0.)  */
+#  define UINT_MAX	4294967295U
+
+/* Minimum and maximum values a `signed long int' can hold.  */
+#  if __WORDSIZE == 64
+#   define LONG_MAX	9223372036854775807L
+#  else
+#   define LONG_MAX	2147483647L
+#  endif
+#  define LONG_MIN	(-LONG_MAX - 1L)
+
+/* Maximum value an `unsigned long int' can hold.  (Minimum is 0.)  */
+#  if __WORDSIZE == 64
+#   define ULONG_MAX	18446744073709551615UL
+#  else
+#   define ULONG_MAX	4294967295UL
+#  endif
+
+#  ifdef __USE_ISOC99
+
+/* Minimum and maximum values a `signed long long int' can hold.  */
+#   define LLONG_MAX	9223372036854775807LL
+#   define LLONG_MIN	(-LLONG_MAX - 1LL)
+
+/* Maximum value an `unsigned long long int' can hold.  (Minimum is 0.)  */
+#   define ULLONG_MAX	18446744073709551615ULL
+
+#  endif /* ISO C99 */
+
+# endif	/* limits.h  */
+#endif	/* GCC 2.  */
+
+#endif	/* !_LIBC_LIMITS_H_ */
+
+ /* Get the compiler's limits.h, which defines almost all the ISO constants.
+
+    We put this #include_next outside the double inclusion check because
+    it should be possible to include this file more than once and still get
+    the definitions from gcc's header.  */
+#if defined __GNUC__ && !defined _GCC_LIMITS_H_
+/* `_GCC_LIMITS_H_' is what GCC's file defines.  */
+# include_next <limits.h>
+#endif
+
+/* The <limits.h> files in some gcc versions don't define LLONG_MIN,
+   LLONG_MAX, and ULLONG_MAX.  Instead only the values gcc defined for
+   ages are available.  */
+#if defined __USE_ISOC99 && defined __GNUC__
+# ifndef LLONG_MIN
+#  define LLONG_MIN	(-LLONG_MAX-1)
+# endif
+# ifndef LLONG_MAX
+#  define LLONG_MAX	__LONG_LONG_MAX__
+# endif
+# ifndef ULLONG_MAX
+#  define ULLONG_MAX	(LLONG_MAX * 2ULL + 1)
+# endif
+#endif
+
+/* The integer width macros are not defined by GCC's <limits.h> before
+   GCC 7, or if _GNU_SOURCE rather than
+   __STDC_WANT_IEC_60559_BFP_EXT__ is used to enable this feature.  */
+#if __GLIBC_USE (IEC_60559_BFP_EXT)
+# ifndef CHAR_WIDTH
+#  define CHAR_WIDTH 8
+# endif
+# ifndef SCHAR_WIDTH
+#  define SCHAR_WIDTH 8
+# endif
+# ifndef UCHAR_WIDTH
+#  define UCHAR_WIDTH 8
+# endif
+# ifndef SHRT_WIDTH
+#  define SHRT_WIDTH 16
+# endif
+# ifndef USHRT_WIDTH
+#  define USHRT_WIDTH 16
+# endif
+# ifndef INT_WIDTH
+#  define INT_WIDTH 32
+# endif
+# ifndef UINT_WIDTH
+#  define UINT_WIDTH 32
+# endif
+# ifndef LONG_WIDTH
+#  define LONG_WIDTH __WORDSIZE
+# endif
+# ifndef ULONG_WIDTH
+#  define ULONG_WIDTH __WORDSIZE
+# endif
+# ifndef LLONG_WIDTH
+#  define LLONG_WIDTH 64
+# endif
+# ifndef ULLONG_WIDTH
+#  define ULLONG_WIDTH 64
+# endif
+#endif /* Use IEC_60559_BFP_EXT.  */
+
+#ifdef	__USE_POSIX
+/* POSIX adds things to <limits.h>.  */
+# include <bits/posix1_lim.h>
+#endif
+
+#ifdef	__USE_POSIX2
+# include <bits/posix2_lim.h>
+#endif
+
+#ifdef	__USE_XOPEN
+# include <bits/xopen_lim.h>
+#endif
diff --git a/misc/stdc-predef.h b/misc/stdc-predef.h
new file mode 100644
index 0000000..5cc5eef
--- /dev/null
+++ b/misc/stdc-predef.h
@@ -0,0 +1,60 @@
+/* Copyright (C) 1991-2019 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef	_STDC_PREDEF_H
+#define	_STDC_PREDEF_H	1
+
+/* This header is separate from features.h so that the compiler can
+   include it implicitly at the start of every compilation.  It must
+   not itself include <features.h> or any other header that includes
+   <features.h> because the implicit include comes before any feature
+   test macros that may be defined in a source file before it first
+   explicitly includes a system header.  GCC knows the name of this
+   header in order to preinclude it.  */
+
+/* glibc's intent is to support the IEC 559 math functionality, real
+   and complex.  If the GCC (4.9 and later) predefined macros
+   specifying compiler intent are available, use them to determine
+   whether the overall intent is to support these features; otherwise,
+   presume an older compiler has intent to support these features and
+   define these macros by default.  */
+
+#ifdef __GCC_IEC_559
+# if __GCC_IEC_559 > 0
+#  define __STDC_IEC_559__		1
+# endif
+#else
+# define __STDC_IEC_559__		1
+#endif
+
+#ifdef __GCC_IEC_559_COMPLEX
+# if __GCC_IEC_559_COMPLEX > 0
+#  define __STDC_IEC_559_COMPLEX__	1
+# endif
+#else
+# define __STDC_IEC_559_COMPLEX__	1
+#endif
+
+/* wchar_t uses Unicode 10.0.0.  Version 10.0 of the Unicode Standard is
+   synchronized with ISO/IEC 10646:2017, fifth edition, plus
+   the following additions from Amendment 1 to the fifth edition:
+   - 56 emoji characters
+   - 285 hentaigana
+   - 3 additional Zanabazar Square characters */
+#define __STDC_ISO_10646__		201706L
+
+#endif
diff --git a/misc/values.h b/misc/values.h
new file mode 100644
index 0000000..ae987a5
--- /dev/null
+++ b/misc/values.h
@@ -0,0 +1,68 @@
+/* Old compatibility names for <limits.h> and <float.h> constants.
+   Copyright (C) 1995-2019 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* This interface is obsolete.  New programs should use
+   <limits.h> and/or <float.h> instead of <values.h>.  */
+
+#ifndef	_VALUES_H
+#define	_VALUES_H	1
+
+#include <features.h>
+
+#include <limits.h>
+
+#define _TYPEBITS(type)	(sizeof (type) * CHAR_BIT)
+
+#define CHARBITS	_TYPEBITS (char)
+#define SHORTBITS	_TYPEBITS (short int)
+#define INTBITS		_TYPEBITS (int)
+#define LONGBITS	_TYPEBITS (long int)
+#define PTRBITS		_TYPEBITS (char *)
+#define DOUBLEBITS	_TYPEBITS (double)
+#define FLOATBITS	_TYPEBITS (float)
+
+#define MINSHORT	SHRT_MIN
+#define	MININT		INT_MIN
+#define	MINLONG		LONG_MIN
+
+#define	MAXSHORT	SHRT_MAX
+#define	MAXINT		INT_MAX
+#define	MAXLONG		LONG_MAX
+
+#define HIBITS		MINSHORT
+#define HIBITL		MINLONG
+
+
+#include <float.h>
+
+#define	MAXDOUBLE	DBL_MAX
+#define	MAXFLOAT	FLT_MAX
+#define	MINDOUBLE	DBL_MIN
+#define	MINFLOAT	FLT_MIN
+#define	DMINEXP		DBL_MIN_EXP
+#define	FMINEXP		FLT_MIN_EXP
+#define	DMAXEXP		DBL_MAX_EXP
+#define	FMAXEXP		FLT_MAX_EXP
+
+
+#ifdef __USE_MISC
+/* Some systems define this name instead of CHAR_BIT or CHARBITS.  */
+# define BITSPERBYTE	CHAR_BIT
+#endif
+
+#endif	/* values.h */
diff --git a/sysdeps/mach/hurd/bits/errno.h b/sysdeps/mach/hurd/bits/errno.h
index 8f2fbfd..8e8d1cc 100644
--- a/sysdeps/mach/hurd/bits/errno.h
+++ b/sysdeps/mach/hurd/bits/errno.h
@@ -1,6 +1,7 @@
 /* This file generated by errnos.awk from
      errno.texi
      stdc-predef.h
+     ../misc/stdc-predef.h
      libc-symbols.h
      mach/message.h
      mach/kern_return.h


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]