update toolchain to gcc 5.3.0
Change-Id: I364d98fc389381b929ed2ada8873a823ada1650f
diff --git a/Build.Info/0001-Build-libraries-statically-to-make-hermetic-builds-w.patch b/Build.Info/0001-Build-libraries-statically-to-make-hermetic-builds-w.patch
index 86d2322..82b354d 100644
--- a/Build.Info/0001-Build-libraries-statically-to-make-hermetic-builds-w.patch
+++ b/Build.Info/0001-Build-libraries-statically-to-make-hermetic-builds-w.patch
@@ -1,25 +1,26 @@
-From 39c92fa91756747fa8eaf1fc898214658d1f8451 Mon Sep 17 00:00:00 2001
-From: John Newlin <jnewlin@google.com>
-Date: Fri, 3 Oct 2014 21:58:51 -0700
-Subject: [PATCH 1/5] Build libraries statically to make hermetic builds work.
+From e50317af941c76d97b72b8c847db83e4f134a1d7 Mon Sep 17 00:00:00 2001
+From: Dan Padgett <dpadgett@google.com>
+Date: Thu, 24 Mar 2016 13:37:57 -0700
+Subject: [PATCH 01/17] Build libraries statically to make hermetic builds
+ work.
---
package/pkg-autotools.mk | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package/pkg-autotools.mk b/package/pkg-autotools.mk
-index 4404f15..e4e4df9 100644
+index 502eeea..bb1c9a7 100644
--- a/package/pkg-autotools.mk
+++ b/package/pkg-autotools.mk
-@@ -165,7 +165,7 @@ define $(2)_CONFIGURE_CMDS
- ./configure \
+@@ -223,7 +223,7 @@ define $(2)_CONFIGURE_CMDS
--prefix="$$(HOST_DIR)/usr" \
--sysconfdir="$$(HOST_DIR)/etc" \
+ --localstatedir="$$(HOST_DIR)/var" \
- --enable-shared --disable-static \
+ --disable-shared --enable-static \
--disable-gtk-doc \
+ --disable-gtk-doc-html \
--disable-doc \
- --disable-docs \
--
-2.1.0.rc2.206.gedb03e5
+2.8.0.rc3.226.g39d4020
diff --git a/Build.Info/0002-Disable-XLOCALE-to-match-old-bruno-toolchain.patch b/Build.Info/0002-Disable-XLOCALE-to-match-old-bruno-toolchain.patch
index 9245b20..f59beab 100644
--- a/Build.Info/0002-Disable-XLOCALE-to-match-old-bruno-toolchain.patch
+++ b/Build.Info/0002-Disable-XLOCALE-to-match-old-bruno-toolchain.patch
@@ -1,17 +1,17 @@
-From 4ee11a53dfc888ed02e1c76b6414442364fa1600 Mon Sep 17 00:00:00 2001
-From: John Newlin <jnewlin@google.com>
-Date: Tue, 14 Oct 2014 20:13:25 -0700
-Subject: [PATCH 2/5] Disable XLOCALE to match old bruno toolchain.
+From ce95763f4d61c88c958bc426d66765aa4b7ef08c Mon Sep 17 00:00:00 2001
+From: Dan Padgett <dpadgett@google.com>
+Date: Thu, 24 Mar 2016 13:39:50 -0700
+Subject: [PATCH 02/17] Disable XLOCALE to match old bruno toolchain.
---
package/uclibc/uclibc.mk | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package/uclibc/uclibc.mk b/package/uclibc/uclibc.mk
-index 5933973..3180885 100644
+index 200de04..db741d5 100644
--- a/package/uclibc/uclibc.mk
+++ b/package/uclibc/uclibc.mk
-@@ -362,7 +362,7 @@ define UCLIBC_LOCALE_CONFIG
+@@ -311,7 +311,7 @@ define UCLIBC_LOCALE_CONFIG
$(call KCONFIG_SET_OPT,UCLIBC_BUILD_MINIMAL_LOCALES,"$(UCLIBC_LOCALES)",$(@D)/.config)
$(call KCONFIG_DISABLE_OPT,UCLIBC_PREGENERATED_LOCALE_DATA,$(@D)/.config)
$(call KCONFIG_DISABLE_OPT,DOWNLOAD_PREGENERATED_LOCALE_DATA,$(@D)/.config)
@@ -21,5 +21,5 @@
endef
else
--
-2.1.0.rc2.206.gedb03e5
+2.8.0.rc3.226.g39d4020
diff --git a/Build.Info/0003-Change-config-options-to-match-the-.config-from-brcm.patch b/Build.Info/0003-Change-config-options-to-match-the-.config-from-brcm.patch
index 654064f..2b4364e 100644
--- a/Build.Info/0003-Change-config-options-to-match-the-.config-from-brcm.patch
+++ b/Build.Info/0003-Change-config-options-to-match-the-.config-from-brcm.patch
@@ -1,47 +1,33 @@
-From 25368852f896b9b4c0fe4434da36c71a34f2eae0 Mon Sep 17 00:00:00 2001
-From: John Newlin <jnewlin@google.com>
-Date: Thu, 16 Oct 2014 12:03:21 -0700
-Subject: [PATCH 3/5] Change config options to match the .config from brcm.
+From e081fea8223529c97bc8cea10efccd738ff2a188 Mon Sep 17 00:00:00 2001
+From: Dan Padgett <dpadgett@google.com>
+Date: Thu, 24 Mar 2016 13:48:43 -0700
+Subject: [PATCH 03/17] Change config options to match the .config from brcm.
---
- package/uclibc/uClibc-0.9.33.config | 9 +++++----
- 1 file changed, 5 insertions(+), 4 deletions(-)
+ package/uclibc/uClibc-ng.config | 3 +++
+ 1 file changed, 3 insertions(+)
-diff --git a/package/uclibc/uClibc-0.9.33.config b/package/uclibc/uClibc-0.9.33.config
-index eb39df6..6b9d2ed 100644
---- a/package/uclibc/uClibc-0.9.33.config
-+++ b/package/uclibc/uClibc-0.9.33.config
-@@ -56,8 +56,9 @@ TARGET_SUBARCH=""
- #
- # Target Architecture Features and Options
- #
--TARGET_ARCH="none"
+diff --git a/package/uclibc/uClibc-ng.config b/package/uclibc/uClibc-ng.config
+index c17603d..66c7688 100644
+--- a/package/uclibc/uClibc-ng.config
++++ b/package/uclibc/uClibc-ng.config
+@@ -2,6 +2,8 @@ DO_C99_MATH=y
+ KERNEL_HEADERS="/usr/src/linux/include"
+ # LDSO_CACHE_SUPPORT is not set
+ # UCLIBC_STATIC_LDCONFIG is not set
+TARGET_ARCH="mips"
- FORCE_OPTIONS_FOR_ARCH=y
+CONFIG_MIPS_O32_ABI=y
- #
- # Using ELF file format
- #
-@@ -205,8 +206,8 @@ UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y
- # UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set
- # UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set
- # UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set
--# UCLIBC_HAS_STDIO_GETC_MACRO is not set
--# UCLIBC_HAS_STDIO_PUTC_MACRO is not set
-+UCLIBC_HAS_STDIO_GETC_MACRO=y
-+UCLIBC_HAS_STDIO_PUTC_MACRO=y
- UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y
- # UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set
- UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y
-@@ -271,7 +272,7 @@ DOSTRIP=y
- # SUPPORT_LD_DEBUG is not set
- # SUPPORT_LD_DEBUG_EARLY is not set
- # UCLIBC_MALLOC_DEBUGGING is not set
--# UCLIBC_HAS_BACKTRACE is not set
+ LDSO_RUNPATH=y
+ LDSO_RUNPATH_OF_EXECUTABLE=y
+ MALLOC_GLIBC_COMPAT=y
+@@ -34,6 +36,7 @@ UCLIBC_HAS_PRINTF_M_SPEC=y
+ UCLIBC_HAS_NFTW=y
+ UCLIBC_HAS_FTW=y
+ UCLIBC_HAS_GNU_GLOB=y
+UCLIBC_HAS_BACKTRACE=y
- WARNINGS="-Wall"
- # EXTRA_WARNINGS is not set
- # DOMULTI is not set
+ RUNTIME_PREFIX="/"
+ DEVEL_PREFIX="/usr/"
+ UCLIBC_HAS_SSP=y
--
-2.1.0.rc2.206.gedb03e5
+2.8.0.rc3.226.g39d4020
diff --git a/Build.Info/0004-Add-broadcom-s-memcpy-patch.patch b/Build.Info/0004-Add-broadcom-s-memcpy-patch.patch
index 9ebfe00..898b40a 100644
--- a/Build.Info/0004-Add-broadcom-s-memcpy-patch.patch
+++ b/Build.Info/0004-Add-broadcom-s-memcpy-patch.patch
@@ -1,19 +1,19 @@
-From 131dad5082834d5c21d81973d51e939dfb1a573c Mon Sep 17 00:00:00 2001
-From: John Newlin <jnewlin@google.com>
-Date: Mon, 20 Oct 2014 10:28:00 -0700
-Subject: [PATCH 4/5] Add broadcom's memcpy patch.
+From 3dcf0493f4305736238da1e92b56f78274e02ad6 Mon Sep 17 00:00:00 2001
+From: Dan Padgett <dpadgett@google.com>
+Date: Thu, 24 Mar 2016 13:52:08 -0700
+Subject: [PATCH 04/17] Add broadcom's memcpy patch.
---
- .../uclibc/0.9.33.2/uclibc-0063-brcm-memcpy.patch | 2120 ++++++++++++++++++++
- 1 file changed, 2120 insertions(+)
- create mode 100644 package/uclibc/0.9.33.2/uclibc-0063-brcm-memcpy.patch
+ package/uclibc/uclibc-0063-brcm-memcpy.patch | 2091 ++++++++++++++++++++++++++
+ 1 file changed, 2091 insertions(+)
+ create mode 100644 package/uclibc/uclibc-0063-brcm-memcpy.patch
-diff --git a/package/uclibc/0.9.33.2/uclibc-0063-brcm-memcpy.patch b/package/uclibc/0.9.33.2/uclibc-0063-brcm-memcpy.patch
+diff --git a/package/uclibc/uclibc-0063-brcm-memcpy.patch b/package/uclibc/uclibc-0063-brcm-memcpy.patch
new file mode 100644
-index 0000000..2112f81
+index 0000000..3108abe
--- /dev/null
-+++ b/package/uclibc/0.9.33.2/uclibc-0063-brcm-memcpy.patch
-@@ -0,0 +1,2120 @@
++++ b/package/uclibc/uclibc-0063-brcm-memcpy.patch
+@@ -0,0 +1,2091 @@
+commit e4756b4171ce4f6d4f58e0454335a09c3e7d6e6f
+Author: Kevin Cernekee <cernekee@gmail.com>
+Date: Sat Apr 16 19:39:05 2011 -0700
@@ -2081,47 +2081,18 @@
++
++#endif /* !defined(__mips64) */
+diff --git a/libc/string/mips/memcpy.S b/libc/string/mips/memcpy.S
-+index 9b05ee6..8ee76fd 100644
++index 59f9f0a..bf47d67 100644
+--- a/libc/string/mips/memcpy.S
++++ b/libc/string/mips/memcpy.S
-+@@ -40,7 +40,7 @@
-+ # define SDLO sdl /* low part is left in little-endian */
++@@ -197,7 +197,7 @@
++
++ /* Allow the routine to be named something else if desired. */
++ #ifndef MEMCPY_NAME
++-# define MEMCPY_NAME memcpy
+++# define MEMCPY_NAME __uclibc_memcpy
+ #endif
+
-+-ENTRY (memcpy)
-++ENTRY (__uclibc_memcpy)
-+ .set noreorder
-+
-+ slti t0, a2, 16 # Less than 16?
-+@@ -137,7 +137,7 @@ L(shfth):
-+ move a2, t0
-+
-+ .set reorder
-+-END (memcpy)
-++END (__uclibc_memcpy)
-+
-+ #else /* !__mips64 */
-+
-+@@ -153,7 +153,7 @@ END (memcpy)
-+ # define SWLO swl /* low part is left in little-endian */
-+ #endif
-+
-+-ENTRY (memcpy)
-++ENTRY (__uclibc_memcpy)
-+ .set noreorder
-+
-+ slti t0, a2, 8 # Less than 8?
-+@@ -250,8 +250,8 @@ L(shfth):
-+ move a2, t0
-+
-+ .set reorder
-+-END (memcpy)
-++END (__uclibc_memcpy)
-+
-+ #endif /* !__mips64 */
-+
-+-libc_hidden_def(memcpy)
-++libc_hidden_def(__uclibc_memcpy)
++ /* We use these 32/64 bit registers as temporaries to do the copying. */
+diff --git a/extra/Configs/Config.mips b/extra/Configs/Config.mips
+index 063b07c..4482ea3 100644
+--- a/extra/Configs/Config.mips
@@ -2135,5 +2106,5 @@
++ bool
++ default y
--
-2.1.0.rc2.206.gedb03e5
+2.8.0.rc3.226.g39d4020
diff --git a/Build.Info/0005-brcm-auxv-patch.patch b/Build.Info/0005-brcm-auxv-patch.patch
index a2305e9..666dad5 100644
--- a/Build.Info/0005-brcm-auxv-patch.patch
+++ b/Build.Info/0005-brcm-auxv-patch.patch
@@ -1,19 +1,19 @@
-From fd4ec7febe5532b15fc66e213b589f22d543beb1 Mon Sep 17 00:00:00 2001
-From: John Newlin <jnewlin@google.com>
-Date: Mon, 20 Oct 2014 10:35:14 -0700
-Subject: [PATCH 5/5] brcm auxv patch.
+From d8f3041c669e04d001299d45ac9273988dd4bab8 Mon Sep 17 00:00:00 2001
+From: Dan Padgett <dpadgett@google.com>
+Date: Thu, 24 Mar 2016 13:53:15 -0700
+Subject: [PATCH 05/17] brcm auxv patch.
---
- .../uclibc/0.9.33.2/uclibc-0064-brcm-auxvec.patch | 80 ++++++++++++++++++++++
- 1 file changed, 80 insertions(+)
- create mode 100644 package/uclibc/0.9.33.2/uclibc-0064-brcm-auxvec.patch
+ package/uclibc/uclibc-0064-brcm-auxvec.patch | 81 ++++++++++++++++++++++++++++
+ 1 file changed, 81 insertions(+)
+ create mode 100644 package/uclibc/uclibc-0064-brcm-auxvec.patch
-diff --git a/package/uclibc/0.9.33.2/uclibc-0064-brcm-auxvec.patch b/package/uclibc/0.9.33.2/uclibc-0064-brcm-auxvec.patch
+diff --git a/package/uclibc/uclibc-0064-brcm-auxvec.patch b/package/uclibc/uclibc-0064-brcm-auxvec.patch
new file mode 100644
-index 0000000..121084c
+index 0000000..4dc0310
--- /dev/null
-+++ b/package/uclibc/0.9.33.2/uclibc-0064-brcm-auxvec.patch
-@@ -0,0 +1,80 @@
++++ b/package/uclibc/uclibc-0064-brcm-auxvec.patch
+@@ -0,0 +1,81 @@
+commit c8a44ca1203244e18be053bd90b6b6df88d93d67
+Author: Kevin Cernekee <cernekee@gmail.com>
+Date: Wed Apr 13 19:34:46 2011 -0700
@@ -43,19 +43,19 @@
+ extern void __chk_fail(void) attribute_noreturn;
+ libc_hidden_proto(__chk_fail)
+diff --git a/libc/misc/internals/__uClibc_main.c b/libc/misc/internals/__uClibc_main.c
-+index 315365a..bc2e253 100644
++index 632a252..4bb36cc 100644
+--- a/libc/misc/internals/__uClibc_main.c
++++ b/libc/misc/internals/__uClibc_main.c
-+@@ -30,6 +30,7 @@
++@@ -28,6 +28,7 @@
++ #ifndef __ARCH_HAS_NO_LDSO__
+ #include <fcntl.h>
-+ #include <sys/stat.h>
-+ #include <sys/sysmacros.h>
++ #endif
++#include <libc-internal.h>
+ #ifdef __UCLIBC_HAS_THREADS_NATIVE__
-+ #include <errno.h>
+ #include <pthread-functions.h>
-+@@ -156,6 +157,12 @@ weak_alias (program_invocation_short_name, __progname)
-+ weak_alias (program_invocation_name, __progname_full)
++ #include <not-cancel.h>
++@@ -173,6 +174,12 @@ weak_alias (__progname_full, program_invocation_name)
++ # endif
+ #endif
+
++/* Highest numbered auxvec entry to copy into auxvt[] */
@@ -67,16 +67,16 @@
+ /*
+ * Declare the __environ global variable and create a weak alias environ.
+ * This must be initialized; we cannot have a weak alias into bss.
-+@@ -321,7 +328,7 @@ void __uClibc_main(int (*main)(int, char **, char **), int argc,
++@@ -342,7 +349,7 @@ void __uClibc_main(int (*main)(int, char **, char **), int argc,
+ {
-+ #ifndef __ARCH_HAS_NO_LDSO__
++ #if !defined __ARCH_HAS_NO_LDSO__ && !defined SHARED
+ unsigned long *aux_dat;
+- ElfW(auxv_t) auxvt[AT_EGID + 1];
++ ElfW(auxv_t) auxvt[AT_MAX + 1];
+ #endif
+
+ #ifdef __UCLIBC_HAS_THREADS_NATIVE__
-+@@ -355,7 +362,7 @@ void __uClibc_main(int (*main)(int, char **, char **), int argc,
++@@ -376,7 +383,7 @@ void __uClibc_main(int (*main)(int, char **, char **), int argc,
+ aux_dat++;
+ while (*aux_dat) {
+ ElfW(auxv_t) *auxv_entry = (ElfW(auxv_t) *) aux_dat;
@@ -85,15 +85,16 @@
+ memcpy(&(auxvt[auxv_entry->a_type]), auxv_entry, sizeof(ElfW(auxv_t)));
+ }
+ aux_dat += 2;
-+@@ -376,6 +383,8 @@ void __uClibc_main(int (*main)(int, char **, char **), int argc,
-+ #ifndef __ARCH_HAS_NO_LDSO__
-+ /* Make certain getpagesize() gives the correct answer */
-+ __pagesize = (auxvt[AT_PAGESZ].a_un.a_val)? auxvt[AT_PAGESZ].a_un.a_val : PAGE_SIZE;
++@@ -398,6 +405,9 @@ void __uClibc_main(int (*main)(int, char **, char **), int argc,
++ __pagesize = _dl_pagesize;
++
++ #ifndef SHARED
++ __auxv_platform = (char *)auxvt[AT_PLATFORM].a_un.a_val;
++ __auxv_l1d_cacheshape = (int)auxvt[AT_L1D_CACHESHAPE].a_un.a_val;
-+
+++
+ /* Prevent starting SUID binaries where the stdin. stdout, and
+ * stderr file descriptors are not already opened. */
++ if ((auxvt[AT_UID].a_un.a_val == (size_t)-1 && __check_suid()) ||
--
-2.1.0.rc2.206.gedb03e5
+2.8.0.rc3.226.g39d4020
diff --git a/Build.Info/0006-uclibc-updates-for-Chromium.patch b/Build.Info/0006-uclibc-updates-for-Chromium.patch
index 2c6b44b..dd4313d 100644
--- a/Build.Info/0006-uclibc-updates-for-Chromium.patch
+++ b/Build.Info/0006-uclibc-updates-for-Chromium.patch
@@ -1,3471 +1,27 @@
-From 1ec63d4d2358f97e6a184987660ec1a4a58fe723 Mon Sep 17 00:00:00 2001
-From: Stephen McGruer <smcgruer@google.com>
-Date: Wed, 17 Jun 2015 14:39:19 -0400
-Subject: [PATCH] uclibc: updates for Chromium
-
-+ pull in part of:
-http://lists.busybox.net/pipermail/buildroot/2015-March/123387.html
-to add fmaxf/fminf
-
-+ pull in
-http://git.uclibc.org/uClibc/commit/?id=a8dc90eaaa5e6474beac828558d969b1aafee4af
-to add context methods
+From 3a782ed1df5d7b59ea3f62444789537b4073f089 Mon Sep 17 00:00:00 2001
+From: Dan Padgett <dpadgett@google.com>
+Date: Thu, 24 Mar 2016 16:16:31 -0700
+Subject: [PATCH 06/17] uclibc: updates for Chromium
+ enable UCLIBC_SUSV3_LEGACY and UCLIBC_HAS_CONTEXT_FUNCS for
getcontext/setcontent
---
- ...bc-0069-Add-missing-C99-float-ld-wrappers.patch | 870 +++++++
- ...t-set-swap-make-context-user-context-mani.patch | 2550 ++++++++++++++++++++
- package/uclibc/uclibc.mk | 2 +
- 3 files changed, 3422 insertions(+)
- create mode 100644 package/uclibc/0.9.33.2/uclibc-0069-Add-missing-C99-float-ld-wrappers.patch
- create mode 100644 package/uclibc/0.9.33.2/uclibc-0070-libc-add-get-set-swap-make-context-user-context-mani.patch
+ package/uclibc/uclibc.mk | 2 ++
+ 1 file changed, 2 insertions(+)
-diff --git a/package/uclibc/0.9.33.2/uclibc-0069-Add-missing-C99-float-ld-wrappers.patch b/package/uclibc/0.9.33.2/uclibc-0069-Add-missing-C99-float-ld-wrappers.patch
-new file mode 100644
-index 0000000..35cf3e4
---- /dev/null
-+++ b/package/uclibc/0.9.33.2/uclibc-0069-Add-missing-C99-float-ld-wrappers.patch
-@@ -0,0 +1,870 @@
-+From 6c4538905e65ceb203f59aaa9a61728e81c6bc0a Mon Sep 17 00:00:00 2001
-+From: Bernhard Reutner-Fischer <rep.dot.nop at gmail.com>
-+Date: Wed, 18 Mar 2015 21:32:22 +0000
-+Subject: libm: Add missing C99 float/ld wrappers
-+
-+Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop at gmail.com>
-+
-+Status: upstream [uClibc]
-+http://git.uclibc.org/uClibc/commit/?id=6c4538905e65ceb203f59aaa9a61728e81c6bc0a
-+
-+Removed patch for ./TODO.
-+Needed to avoid run-time errors with mesa3d which depends on fminf
-+
-+Signed-off-by: Bernd Kuhls <bernd.kuhls at t-online.de>
-+---
-+diff --git a/include/complex.h b/include/complex.h
-+index 91efc0d..ed7e502 100644
-+--- a/include/complex.h
-++++ b/include/complex.h
-+@@ -79,6 +79,7 @@ __BEGIN_DECLS
-+ #endif
-+ #include <bits/cmathcalls.h>
-+ #undef _Mdouble_
-++#undef _Mfloat_
-+ #undef __MATH_PRECNAME
-+
-+ /* And the long double versions. It is non-critical to define them
-+@@ -97,6 +98,7 @@ __BEGIN_DECLS
-+ # include <bits/cmathcalls.h>
-+ #endif
-+ #undef _Mdouble_
-++#undef _Mlong_double_
-+ #undef __MATH_PRECNAME
-+ #undef __MATHDECL_1
-+ #undef __MATHDECL
-+diff --git a/include/math.h b/include/math.h
-+index ecb9aa6..1b54c9e 100644
-+--- a/include/math.h
-++++ b/include/math.h
-+@@ -129,6 +129,7 @@ __BEGIN_DECLS
-+ # undef _Mdouble_
-+ # undef _Mdouble_BEGIN_NAMESPACE
-+ # undef _Mdouble_END_NAMESPACE
-++# undef _Mfloat_
-+ # undef __MATH_PRECNAME
-+ # undef __MATH_maybe_libm_hidden_proto
-+
-+@@ -176,6 +177,7 @@ extern long double __REDIRECT_NTH (nexttowardl, (long double __x, long double __
-+ # undef _Mdouble_
-+ # undef _Mdouble_BEGIN_NAMESPACE
-+ # undef _Mdouble_END_NAMESPACE
-++# undef _Mlong_double_
-+ # undef __MATH_PRECNAME
-+ # undef __MATH_maybe_libm_hidden_proto
-+
-+diff --git a/libc/sysdeps/linux/common/bits/mathcalls.h b/libc/sysdeps/linux/common/bits/mathcalls.h
-+index 84b793c..9bebb51 100644
-+--- a/libc/sysdeps/linux/common/bits/mathcalls.h
-++++ b/libc/sysdeps/linux/common/bits/mathcalls.h
-+@@ -74,8 +74,22 @@ __MATHCALLI (atan2,, (_Mdouble_ __y, _Mdouble_ __x))
-+
-+ /* Cosine of X. */
-+ __MATHCALLI (cos,, (_Mdouble_ __x))
-++# if defined _LIBC && defined _Mlong_double_
-++libm_hidden_proto(cosl)
-++# endif
-++# if defined _LIBC && defined _Mfloat_
-++libm_hidden_proto(cosf)
-++# endif
-++
-+ /* Sine of X. */
-+ __MATHCALLI (sin,, (_Mdouble_ __x))
-++# if defined _LIBC && defined _Mlong_double_
-++libm_hidden_proto(sinl)
-++# endif
-++# if defined _LIBC && defined _Mfloat_
-++libm_hidden_proto(sinf)
-++# endif
-++
-+ /* Tangent of X. */
-+ __MATHCALLI (tan,, (_Mdouble_ __x))
-+
-+@@ -111,6 +125,9 @@ __END_NAMESPACE_C99
-+ _Mdouble_BEGIN_NAMESPACE
-+ /* Exponential function of X. */
-+ __MATHCALLI (exp,, (_Mdouble_ __x))
-++# if defined _LIBC && defined _Mlong_double_
-++libm_hidden_proto(expl)
-++# endif
-+
-+ /* Break VALUE into a normalized fraction and an integral power of 2. */
-+ __MATHCALLI (frexp,, (_Mdouble_ __x, int *__exponent))
-+@@ -173,6 +190,9 @@ _Mdouble_END_NAMESPACE
-+ __BEGIN_NAMESPACE_C99
-+ /* Return `sqrt(X*X + Y*Y)'. */
-+ __MATHCALLI (hypot,, (_Mdouble_ __x, _Mdouble_ __y))
-++# if defined _LIBC && defined _Mlong_double_
-++libm_hidden_proto(hypotl)
-++# endif
-+ __END_NAMESPACE_C99
-+ #endif
-+
-+@@ -298,6 +318,9 @@ __MATHCALLI (rint,, (_Mdouble_ __x))
-+
-+ /* Return X + epsilon if X < Y, X - epsilon if X > Y. */
-+ __MATHCALLX (nextafter,, (_Mdouble_ __x, _Mdouble_ __y), (__const__))
-++# if defined _LIBC && defined _Mlong_double_
-++libm_hidden_proto(nextafterl)
-++# endif
-+ # if defined __USE_ISOC99 && !defined __LDBL_COMPAT
-+ __MATHCALLX (nexttoward,, (_Mdouble_ __x, long double __y), (__const__))
-+ # endif
-+diff --git a/libm/Makefile.in b/libm/Makefile.in
-+index 7511706..d886cdb 100644
-+--- a/libm/Makefile.in
-++++ b/libm/Makefile.in
-+@@ -75,9 +75,6 @@ libm_CSRC := \
-+ s_remquo.c w_exp2.c \
-+ cexp.c sincos.c
-+
-+-# Not implemented [yet?], see comment in float_wrappers.c:
-+-# fdimf.o fmaf.o fmaxf.o fminf.o
-+-# nearbyintf.o remquof.o scalblnf.o tgammaf.o
-+ FL_MOBJ := \
-+ acosf.o \
-+ acoshf.o \
-+@@ -98,7 +95,11 @@ FL_MOBJ := \
-+ expf.o \
-+ expm1f.o \
-+ fabsf.o \
-++ fdimf.o \
-+ floorf.o \
-++ fmaf.o \
-++ fmaxf.o \
-++ fminf.o \
-+ fmodf.o \
-+ frexpf.o \
-+ gammaf.o \
-+@@ -116,11 +117,14 @@ FL_MOBJ := \
-+ lrintf.o \
-+ lroundf.o \
-+ modff.o \
-++ nearbyintf.o \
-++ nexttowardf.o \
-+ powf.o \
-+ remainderf.o \
-++ remquof.o \
-+ rintf.o \
-+ roundf.o \
-+- scalbf.o \
-++ scalblnf.o \
-+ scalbnf.o \
-+ significandf.o \
-+ sinf.o \
-+@@ -128,9 +132,24 @@ FL_MOBJ := \
-+ sqrtf.o \
-+ tanf.o \
-+ tanhf.o \
-++ tgammaf.o \
-+ truncf.o \
-+
-+-# Not implemented [yet?]: nexttowardl.o
-++ifeq ($(UCLIBC_SUSV3_LEGACY),y)
-++FL_MOBJ += scalbf.o
-++endif
-++
-++# Do not (yet?) implement the float variants of bessel functions
-++ifeq (not-yet-implemented-$(DO_XSI_MATH),y)
-++FL_MOBJ += \
-++ j0f.o \
-++ j1f.o \
-++ jnf.o \
-++ y0f.o \
-++ y1f.o \
-++ ynf.o
-++endif
-++
-+ LD_MOBJ := \
-+ __finitel.o \
-+ __fpclassifyl.o \
-+@@ -180,6 +199,7 @@ LD_MOBJ := \
-+ modfl.o \
-+ nearbyintl.o \
-+ nextafterl.o \
-++ nexttowardl.o \
-+ powl.o \
-+ remainderl.o \
-+ remquol.o \
-+@@ -196,6 +216,17 @@ LD_MOBJ := \
-+ tgammal.o \
-+ truncl.o \
-+
-++# Do not (yet?) implement the long double variants of bessel functions
-++ifeq (not-yet-implemented-$(DO_XSI_MATH),y)
-++LD_MOBJ += \
-++ j0l.o \
-++ j1l.o \
-++ jnl.o \
-++ y0l.o \
-++ y1l.o \
-++ ynl.o
-++endif
-++
-+ else
-+
-+ # This list of math functions was taken from POSIX/IEEE 1003.1b-1993
-+diff --git a/libm/float_wrappers.c b/libm/float_wrappers.c
-+index 82b7963..105486e 100644
-+--- a/libm/float_wrappers.c
-++++ b/libm/float_wrappers.c
-+@@ -38,19 +38,14 @@ long long func##f (float x) \
-+ return func((double)x); \
-+ }
-+
-+-
-+-/* For the time being, do _NOT_ implement these functions
-+- * that are defined by SuSv3 [because we don't need them
-+- * and nobody asked to include them] */
-+-#undef L_fdimf /*float fdimf(float, float);*/
-+-#undef L_fmaf /*float fmaf(float, float, float);*/
-+-#undef L_fmaxf /*float fmaxf(float, float);*/
-+-#undef L_fminf /*float fminf(float, float);*/
-+-#undef L_nearbyintf /*float nearbyintf(float);*/
-+-#undef L_nexttowardf /*float nexttowardf(float, long double);*/
-+-#undef L_remquof /*float remquof(float, float, int *);*/
-+-#undef L_scalblnf /*float scalblnf(float, long);*/
-+-#undef L_tgammaf /*float tgammaf(float);*/
-++#ifndef __DO_XSI_MATH__
-++# undef L_j0f /* float j0f(float x); */
-++# undef L_j1f /* float j1f(float x); */
-++# undef L_jnf /* float jnf(int n, float x); */
-++# undef L_y0f /* float y0f(float x); */
-++# undef L_y1f /* float y1f(float x); */
-++# undef L_ynf /* float ynf(int n, float x); */
-++#endif
-+
-+ /* Implement the following, as defined by SuSv3 */
-+ #if 0
-+@@ -155,6 +150,7 @@ float copysignf (float x, float y)
-+
-+ #ifdef L_cosf
-+ WRAPPER1(cos)
-++libm_hidden_def(cosf)
-+ #endif
-+
-+ #ifdef L_coshf
-+@@ -242,6 +238,21 @@ float hypotf (float x, float y)
-+ int_WRAPPER1(ilogb)
-+ #endif
-+
-++#ifdef L_j0f
-++WRAPPER1(j0)
-++#endif
-++
-++#ifdef L_j1f
-++WRAPPER1(j1)
-++#endif
-++
-++#ifdef L_jnf
-++float jnf(int n, float x)
-++{
-++ return (float) jn(n, (double)x);
-++}
-++#endif
-++
-+ #ifdef L_ldexpf
-+ float ldexpf (float x, int _exp)
-+ {
-+@@ -306,7 +317,7 @@ WRAPPER1(nearbyint)
-+ #ifdef L_nexttowardf
-+ float nexttowardf (float x, long double y)
-+ {
-+- return (float) nexttoward( (double)x, (double)y );
-++ return (float) nexttoward( (double)x, (long double)y );
-+ }
-+ #endif
-+
-+@@ -355,6 +366,7 @@ float scalbnf (float x, int _exp)
-+
-+ #ifdef L_sinf
-+ WRAPPER1(sin)
-++libm_hidden_def(sinf)
-+ #endif
-+
-+ #ifdef L_sinhf
-+@@ -381,13 +393,6 @@ WRAPPER1(tgamma)
-+ WRAPPER1(trunc)
-+ #endif
-+
-+-#ifdef L_fmaf
-+-float fmaf (float x, float y, float z)
-+-{
-+- return (float) fma( (double)x, (double)y, (double)z );
-+-}
-+-#endif
-+-
-+ #if defined L_scalbf && defined __UCLIBC_SUSV3_LEGACY__
-+ float scalbf (float x, float y)
-+ {
-+@@ -402,3 +407,18 @@ WRAPPER1(gamma)
-+ #ifdef L_significandf
-+ WRAPPER1(significand)
-+ #endif
-++
-++#ifdef L_y0f
-++WRAPPER1(y0)
-++#endif
-++
-++#ifdef L_y1f
-++WRAPPER1(y1)
-++#endif
-++
-++#ifdef L_ynf
-++float ynf(int n, float x)
-++{
-++ return (float) yn(n, (double)x);
-++}
-++#endif
-+diff --git a/libm/ldouble_wrappers.c b/libm/ldouble_wrappers.c
-+index 118a78f..b4215cb 100644
-+--- a/libm/ldouble_wrappers.c
-++++ b/libm/ldouble_wrappers.c
-+@@ -42,6 +42,15 @@ long long func##l(long double x) \
-+ return func((double) x); \
-+ }
-+
-++#ifndef __DO_XSI_MATH__
-++# undef L_j0l /* long double j0l(long double x); */
-++# undef L_j1l /* long double j1l(long double x); */
-++# undef L_jnl /* long double jnl(int n, long double x); */
-++# undef L_y0l /* long double y0l(long double x); */
-++# undef L_y1l /* long double y1l(long double x); */
-++# undef L_ynl /* long double ynl(int n, long double x); */
-++#endif
-++
-+ /* Implement the following, as defined by SuSv3 */
-+ #if 0
-+ long double acoshl(long double);
-+@@ -156,6 +165,7 @@ WRAPPER1(cosh)
-+
-+ #ifdef L_cosl
-+ WRAPPER1(cos)
-++libm_hidden_def(cosl)
-+ #endif
-+
-+ #ifdef L_erfcl
-+@@ -172,6 +182,7 @@ WRAPPER1(exp2)
-+
-+ #ifdef L_expl
-+ WRAPPER1(exp)
-++libm_hidden_def(expl)
-+ #endif
-+
-+ #ifdef L_expm1l
-+@@ -222,12 +233,28 @@ WRAPPER1(gamma)
-+
-+ #ifdef L_hypotl
-+ WRAPPER2(hypot)
-++libm_hidden_def(hypotl)
-+ #endif
-+
-+ #ifdef L_ilogbl
-+ int_WRAPPER1(ilogb)
-+ #endif
-+
-++#ifdef L_j0l
-++ WRAPPER1(j0)
-++#endif
-++
-++#ifdef L_j1l
-++ WRAPPER1(j1)
-++#endif
-++
-++#ifdef L_jnl
-++long double jnl(int n, long double x)
-++{
-++ return (long double) jn(n, (double)x);
-++}
-++#endif
-++
-+ #ifdef L_ldexpl
-+ long double ldexpl (long double x, int ex)
-+ {
-+@@ -291,12 +318,18 @@ WRAPPER1(nearbyint)
-+
-+ #ifdef L_nextafterl
-+ WRAPPER2(nextafter)
-++libm_hidden_def(nextafterl)
-+ #endif
-+
-+-/* Disabled in Makefile.in */
-+-#if 0 /* def L_nexttowardl */
-+-WRAPPER2(nexttoward)
-+-libm_hidden_def(nexttowardl)
-++#ifdef L_nexttowardl
-++# if 0 /* TODO */
-++strong_alias(nextafterl, nexttowardl)
-++# else
-++long double nexttowardl(long double x, long double y)
-++{
-++ return nextafterl(x, y);
-++}
-++#endif
-+ #endif
-+
-+ #ifdef L_powl
-+@@ -344,6 +377,7 @@ WRAPPER1(sinh)
-+
-+ #ifdef L_sinl
-+ WRAPPER1(sin)
-++libm_hidden_def(sinl)
-+ #endif
-+
-+ #ifdef L_sqrtl
-+@@ -370,6 +404,22 @@ WRAPPER1(trunc)
-+ WRAPPER1(significand)
-+ #endif
-+
-++#ifdef L_y0l
-++WRAPPER1(y0)
-++#endif
-++
-++#ifdef L_y1l
-++WRAPPER1(y1)
-++#endif
-++
-++#ifdef L_ynl
-++long double ynl(int n, long double x)
-++{
-++ return (long double) yn(n, (double)x);
-++}
-++#endif
-++
-++
-+ #if defined __DO_C99_MATH__ && !defined __NO_LONG_DOUBLE_MATH
-+
-+ # ifdef L___fpclassifyl
-+diff --git a/libm/s_fdim.c b/libm/s_fdim.c
-+index 6249219..6ed695c 100644
-+--- a/libm/s_fdim.c
-++++ b/libm/s_fdim.c
-+@@ -6,13 +6,22 @@
-+
-+ #include "math.h"
-+ #include "math_private.h"
-++#include <errno.h>
-+
-+ double fdim(double x, double y)
-+ {
-+- int c = __fpclassify(x);
-+- if (c == FP_NAN || c == FP_INFINITE)
-+- return HUGE_VAL;
-++ int cx = __fpclassify(x); /* need both NAN and INF */
-++ int cy = __fpclassify(y); /* need both NAN and INF */
-++ if (cx == FP_NAN || cy == NAN)
-++ return x - y;
-+
-+- return x > y ? x - y : 0.0;
-++ if (x <= y)
-++ return .0;
-++
-++ double z = x - y;
-++ if (isinf(z) && cx != FP_INFINITE && cy != FP_INFINITE)
-++ __set_errno(ERANGE);
-++
-++ return z;
-+ }
-+ libm_hidden_def(fdim)
-+diff --git a/libm/s_fmax.c b/libm/s_fmax.c
-+index 21dfaa9..5f29ad8 100644
-+--- a/libm/s_fmax.c
-++++ b/libm/s_fmax.c
-+@@ -9,10 +9,10 @@
-+
-+ double fmax(double x, double y)
-+ {
-+- if (__fpclassify(x) == FP_NAN)
-+- return x;
-+- if (__fpclassify(y) == FP_NAN)
-++ if (isnan(x))
-+ return y;
-++ if (isnan(y))
-++ return x;
-+
-+ return x > y ? x : y;
-+ }
-+diff --git a/libm/s_fmin.c b/libm/s_fmin.c
-+index 674d9a5..a549678 100644
-+--- a/libm/s_fmin.c
-++++ b/libm/s_fmin.c
-+@@ -9,10 +9,10 @@
-+
-+ double fmin(double x, double y)
-+ {
-+- if (__fpclassify(x) == FP_NAN)
-+- return x;
-+- if (__fpclassify(y) == FP_NAN)
-++ if (isnan(x))
-+ return y;
-++ if (isnan(y))
-++ return x;
-+
-+ return x < y ? x : y;
-+ }
-+diff --git a/libm/s_nextafter.c b/libm/s_nextafter.c
-+index ee4621c..73a8ab2 100644
-+--- a/libm/s_nextafter.c
-++++ b/libm/s_nextafter.c
-+@@ -32,7 +32,7 @@ double nextafter(double x, double y)
-+ if(((ix>=0x7ff00000)&&((ix-0x7ff00000)|lx)!=0) || /* x is nan */
-+ ((iy>=0x7ff00000)&&((iy-0x7ff00000)|ly)!=0)) /* y is nan */
-+ return x+y;
-+- if(x==y) return x; /* x=y, return x */
-++ if(x==y) return y; /* x=y, return y */
-+ if((ix|lx)==0) { /* x == 0 */
-+ INSERT_WORDS(x,hy&0x80000000,1); /* return +-minsubnormal */
-+ y = x*x;
-+@@ -68,3 +68,5 @@ double nextafter(double x, double y)
-+ return x;
-+ }
-+ libm_hidden_def(nextafter)
-++strong_alias_untyped(nextafter, nexttoward)
-++libm_hidden_def(nexttoward)
-+diff --git a/test/math/compile_test.c b/test/math/compile_test.c
-+index ab8c40c..aedfde6 100644
-+--- a/test/math/compile_test.c
-++++ b/test/math/compile_test.c
-+@@ -22,11 +22,11 @@ r += exp2f(float_x);
-+ r += expf(float_x);
-+ r += expm1f(float_x);
-+ r += fabsf(float_x);
-+-/*r += fdimf(float_x, float_x); - uclibc does not have it (yet?) */
-++r += fdimf(float_x, float_x);
-+ r += floorf(float_x);
-+-/*r += fmaf(float_x, float_x, float_x); - uclibc does not have it (yet?) */
-+-/*r += fmaxf(float_x, float_x); - uclibc does not have it (yet?) */
-+-/*r += fminf(float_x, float_x); - uclibc does not have it (yet?) */
-++r += fmaf(float_x, float_x, float_x);
-++r += fmaxf(float_x, float_x);
-++r += fminf(float_x, float_x);
-+ r += fmodf(float_x, float_x);
-+ r += frexpf(float_x, &int_x);
-+ r += gammaf(float_x);
-+@@ -44,17 +44,17 @@ r += logf(float_x);
-+ r += lrintf(float_x);
-+ r += lroundf(float_x);
-+ r += modff(float_x, &float_x);
-+-/*r += nearbyintf(float_x); - uclibc does not have it (yet?) */
-+-/*r += nexttowardf(float_x, long_double_x); - uclibc does not have it (yet?) */
-++r += nearbyintf(float_x);
-++r += nexttowardf(float_x, long_double_x);
-+ r += powf(float_x, float_x);
-+ r += remainderf(float_x, float_x);
-+-/*r += remquof(float_x, float_x, &int_x); - uclibc does not have it (yet?) */
-++r += remquof(float_x, float_x, &int_x);
-+ r += rintf(float_x);
-+ r += roundf(float_x);
-+ #ifdef __UCLIBC_SUSV3_LEGACY__
-+ r += scalbf(float_x, float_x);
-+ #endif
-+-/*r += scalblnf(float_x, long_x); - uclibc does not have it (yet?) */
-++r += scalblnf(float_x, long_x);
-+ r += scalbnf(float_x, int_x);
-+ r += significandf(float_x);
-+ r += sinf(float_x);
-+@@ -62,7 +62,7 @@ r += sinhf(float_x);
-+ r += sqrtf(float_x);
-+ r += tanf(float_x);
-+ r += tanhf(float_x);
-+-/*r += tgammaf(float_x); - uclibc does not have it (yet?) */
-++r += tgammaf(float_x);
-+ r += truncf(float_x);
-+ return r;
-+ }
-+@@ -116,7 +116,7 @@ r += lroundl(long_double_x);
-+ r += modfl(long_double_x, &long_double_x);
-+ r += nearbyintl(long_double_x);
-+ r += nextafterl(long_double_x, long_double_x);
-+-/* r += nexttowardl(long_double_x, long_double_x); - uclibc doesn't provide this [yet?] */
-++r += nexttowardl(long_double_x, long_double_x);
-+ r += powl(long_double_x, long_double_x);
-+ r += remainderl(long_double_x, long_double_x);
-+ r += remquol(long_double_x, long_double_x, &int_x);
-+diff --git a/test/math/libm-test.inc b/test/math/libm-test.inc
-+index d0f0a0c..8f0db3c 100644
-+--- a/test/math/libm-test.inc
-++++ b/test/math/libm-test.inc
-+@@ -115,6 +115,9 @@
-+ # define _GNU_SOURCE
-+ #endif
-+
-++#undef __CHK_COMPLEX_STUFF
-++#define __CHK_COMPLEX_STUFF 0
-++
-+ #include "libm-test-ulps.h"
-+ #include <complex.h>
-+ #include <math.h>
-+@@ -1120,8 +1123,10 @@ cacosh_test (void)
-+
-+ END (cacosh, complex);
-+ }
-++#endif
-+
-+
-++#if __CHK_COMPLEX_STUFF
-+ static void
-+ carg_test (void)
-+ {
-+@@ -1188,7 +1193,9 @@ carg_test (void)
-+
-+ END (carg);
-+ }
-++#endif /* __CHK_COMPLEX_STUFF */
-+
-++#if 0
-+ static void
-+ casin_test (void)
-+ {
-+@@ -1683,7 +1690,7 @@ ceil_test (void)
-+ }
-+
-+
-+-#if 0
-++#if __CHK_COMPLEX_STUFF
-+ static void
-+ cexp_test (void)
-+ {
-+@@ -1746,8 +1753,9 @@ cexp_test (void)
-+
-+ END (cexp, complex);
-+ }
-++#endif /* __CHK_COMPLEX_STUFF */
-+
-+-
-++#if 0
-+ static void
-+ cimag_test (void)
-+ {
-+@@ -2588,7 +2596,6 @@ fabs_test (void)
-+ }
-+
-+
-+-#if 0
-+ static void
-+ fdim_test (void)
-+ {
-+@@ -2624,7 +2631,6 @@ fdim_test (void)
-+
-+ END (fdim);
-+ }
-+-#endif
-+
-+
-+ static void
-+@@ -2694,7 +2700,6 @@ floor_test (void)
-+ }
-+
-+
-+-#if 0
-+ static void
-+ fma_test (void)
-+ {
-+@@ -2797,7 +2802,6 @@ fmin_test (void)
-+
-+ END (fmin);
-+ }
-+-#endif
-+
-+
-+ static void
-+@@ -3002,7 +3006,7 @@ isnormal_test (void)
-+ END (isnormal);
-+ }
-+
-+-#if defined __DO_XSI_MATH__
-++#if defined __DO_XSI_MATH__ && !(defined TEST_LDOUBLE || defined TEST_FLOAT)
-+ static void
-+ j0_test (void)
-+ {
-+@@ -3629,7 +3633,6 @@ modf_test (void)
-+ }
-+
-+
-+-#if 0
-+ static void
-+ nearbyint_test (void)
-+ {
-+@@ -3710,7 +3713,6 @@ nexttoward_test (void)
-+
-+ END (nexttoward);
-+ }
-+-#endif
-+
-+
-+ static void
-+@@ -3950,7 +3952,6 @@ remainder_test (void)
-+ END (remainder);
-+ }
-+
-+-#if 0
-+ static void
-+ remquo_test (void)
-+ {
-+@@ -3981,7 +3982,6 @@ remquo_test (void)
-+
-+ END (remquo);
-+ }
-+-#endif
-+
-+ static void
-+ rint_test (void)
-+@@ -4229,12 +4229,12 @@ round_test (void)
-+ #endif
-+
-+
-++#ifdef __UCLIBC_SUSV3_LEGACY__
-+ static void
-+ scalb_test (void)
-+ {
-+ START (scalb);
-+ #ifndef TEST_LDOUBLE /* uclibc doesn't have scalbl */
-+-#ifdef __UCLIBC_SUSV3_LEGACY__ /* scalbf is susv3 legacy */
-+
-+ TEST_ff_f (scalb, 2.0, 0.5, nan_value, INVALID_EXCEPTION);
-+ TEST_ff_f (scalb, 3.0, -2.5, nan_value, INVALID_EXCEPTION);
-+@@ -4285,11 +4285,10 @@ scalb_test (void)
-+
-+ TEST_ff_f (scalb, 0.8L, 4, 12.8L);
-+ TEST_ff_f (scalb, -0.854375L, 5, -27.34L);
-+-#endif /* __UCLIBC_SUSV3_LEGACY__ */
-+ #endif /* TEST_LDOUBLE */
-+ END (scalb);
-+ }
-+-
-++#endif
-+
-+ static void
-+ scalbn_test (void)
-+@@ -4313,7 +4312,6 @@ scalbn_test (void)
-+ }
-+
-+
-+-#if 0
-+ static void
-+ scalbln_test (void)
-+ {
-+@@ -4334,7 +4332,6 @@ scalbln_test (void)
-+
-+ END (scalbn);
-+ }
-+-#endif
-+
-+
-+ static void
-+@@ -4539,7 +4536,6 @@ tanh_test (void)
-+ END (tanh);
-+ }
-+
-+-#if 0
-+ static void
-+ tgamma_test (void)
-+ {
-+@@ -4571,7 +4567,6 @@ tgamma_test (void)
-+
-+ END (tgamma);
-+ }
-+-#endif
-+
-+
-+ #if 0
-+@@ -4651,7 +4646,7 @@ trunc_test (void)
-+ }
-+ #endif
-+
-+-#if defined __DO_XSI_MATH__
-++#if defined __DO_XSI_MATH__ && !(defined TEST_LDOUBLE || defined TEST_FLOAT)
-+ static void
-+ y0_test (void)
-+ {
-+@@ -4979,11 +4974,11 @@ main (int argc, char **argv)
-+ logb_test ();
-+ modf_test ();
-+ ilogb_test ();
-++#ifdef __UCLIBC_SUSV3_LEGACY__
-+ scalb_test ();
-++#endif
-+ scalbn_test ();
-+-#if 0
-+ scalbln_test ();
-+-#endif
-+ significand_test ();
-+
-+ /* Power and absolute value functions: */
-+@@ -4998,16 +4993,12 @@ main (int argc, char **argv)
-+ erfc_test ();
-+ gamma_test ();
-+ lgamma_test ();
-+-#if 0
-+ tgamma_test ();
-+-#endif
-+
-+ /* Nearest integer functions: */
-+ ceil_test ();
-+ floor_test ();
-+-#if 0
-+ nearbyint_test ();
-+-#endif
-+ rint_test ();
-+ #if 0
-+ rint_test_tonearest ();
-+@@ -5025,13 +5016,10 @@ main (int argc, char **argv)
-+ /* Remainder functions: */
-+ fmod_test ();
-+ remainder_test ();
-+-#if 0
-+ remquo_test ();
-+-#endif
-+
-+ /* Manipulation functions: */
-+ copysign_test ();
-+-#if 0
-+ nextafter_test ();
-+ nexttoward_test ();
-+
-+@@ -5043,24 +5031,29 @@ main (int argc, char **argv)
-+ /* Multiply and add: */
-+ fma_test ();
-+
-++
-+ /* Complex functions: */
-+ cabs_test ();
-++#if __CHK_COMPLEX_STUFF
-++#if 0
-+ cacos_test ();
-+ cacosh_test ();
-++#endif
-+ carg_test ();
-++#if 0
-+ casin_test ();
-+ casinh_test ();
-+ catan_test ();
-+ catanh_test ();
-+ ccos_test ();
-+ ccosh_test ();
-++#endif
-+ cexp_test ();
-++#if 0
-+ cimag_test ();
-+ clog10_test ();
-+ clog_test ();
-+-#if 0
-+ conj_test ();
-+-#endif
-+ cpow_test ();
-+ cproj_test ();
-+ creal_test ();
-+@@ -5070,9 +5063,10 @@ main (int argc, char **argv)
-+ ctan_test ();
-+ ctanh_test ();
-+ #endif
-++#endif /* __CHK_COMPLEX_STUFF */
-+
-+ /* Bessel functions: */
-+-#if defined __DO_XSI_MATH__
-++#if defined __DO_XSI_MATH__ && !(defined TEST_LDOUBLE || defined TEST_FLOAT)
-+ j0_test ();
-+ j1_test ();
-+ jn_test ();
-+--
-+cgit v0.9.1
-diff --git a/package/uclibc/0.9.33.2/uclibc-0070-libc-add-get-set-swap-make-context-user-context-mani.patch b/package/uclibc/0.9.33.2/uclibc-0070-libc-add-get-set-swap-make-context-user-context-mani.patch
-new file mode 100644
-index 0000000..c955b00
---- /dev/null
-+++ b/package/uclibc/0.9.33.2/uclibc-0070-libc-add-get-set-swap-make-context-user-context-mani.patch
-@@ -0,0 +1,2550 @@
-+From a8dc90eaaa5e6474beac828558d969b1aafee4af Mon Sep 17 00:00:00 2001
-+From: Florian Fainelli <florian@openwrt.org>
-+Date: Wed, 9 Jan 2013 16:17:21 +0100
-+Subject: [PATCH] libc: add {get,set,swap,make}context user context
-+ manipulation functions
-+
-+Add the obsolescent SUSv3 family of user context manipulating functions
-+for arm, i386, mips, x86_64.
-+
-+Signed-off-by: Timon ter Braak <timonterbraak@gmail.com>
-+Signed-off-by: Florian Fainelli <florian@openwrt.org>
-+Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
-+Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
-+Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
-+---
-+ Rules.mak | 2 +
-+ extra/Configs/Config.arm | 1 +
-+ extra/Configs/Config.i386 | 1 +
-+ extra/Configs/Config.in | 16 ++
-+ extra/Configs/Config.mips | 1 +
-+ extra/Configs/Config.x86_64 | 1 +
-+ include/ucontext.h | 32 +++-
-+ libc/.gitignore | 1 +
-+ libc/sysdeps/linux/Makefile.commonarch | 20 +-
-+ libc/sysdeps/linux/arm/Makefile.arch | 5 +
-+ libc/sysdeps/linux/arm/getcontext.S | 80 ++++++++
-+ libc/sysdeps/linux/arm/makecontext.c | 73 +++++++
-+ libc/sysdeps/linux/arm/setcontext.S | 76 ++++++++
-+ libc/sysdeps/linux/arm/swapcontext.S | 63 ++++++
-+ libc/sysdeps/linux/arm/ucontext_i.sym | 30 +++
-+ libc/sysdeps/linux/i386/Makefile.arch | 4 +
-+ libc/sysdeps/linux/i386/getcontext.S | 84 ++++++++
-+ libc/sysdeps/linux/i386/makecontext.S | 123 ++++++++++++
-+ libc/sysdeps/linux/i386/setcontext.S | 96 ++++++++++
-+ libc/sysdeps/linux/i386/swapcontext.S | 110 +++++++++++
-+ libc/sysdeps/linux/i386/ucontext_i.sym | 30 +++
-+ libc/sysdeps/linux/mips/Makefile.arch | 4 +
-+ libc/sysdeps/linux/mips/getcontext.S | 148 +++++++++++++++
-+ libc/sysdeps/linux/mips/kernel_rt_sigframe.h | 10 +
-+ libc/sysdeps/linux/mips/makecontext.S | 188 ++++++++++++++++++
-+ libc/sysdeps/linux/mips/setcontext.S | 191 +++++++++++++++++++
-+ libc/sysdeps/linux/mips/swapcontext.S | 211 +++++++++++++++++++++
-+ libc/sysdeps/linux/mips/ucontext_i.sym | 52 +++++
-+ libc/sysdeps/linux/x86_64/Makefile.arch | 5 +
-+ libc/sysdeps/linux/x86_64/__start_context.S | 49 +++++
-+ libc/sysdeps/linux/x86_64/getcontext.S | 88 +++++++++
-+ libc/sysdeps/linux/x86_64/makecontext.c | 121 ++++++++++++
-+ libc/sysdeps/linux/x86_64/setcontext.S | 103 ++++++++++
-+ libc/sysdeps/linux/x86_64/swapcontext.S | 121 ++++++++++++
-+ libc/sysdeps/linux/x86_64/ucontext_i.sym | 37 ++++
-+ libpthread/nptl/sysdeps/Makefile.commonarch | 3 +-
-+ .../sysdeps/unix/sysv/linux/Makefile.commonarch | 2 -
-+ 37 files changed, 2174 insertions(+), 8 deletions(-)
-+ create mode 100644 libc/.gitignore
-+ create mode 100644 libc/sysdeps/linux/arm/getcontext.S
-+ create mode 100644 libc/sysdeps/linux/arm/makecontext.c
-+ create mode 100644 libc/sysdeps/linux/arm/setcontext.S
-+ create mode 100644 libc/sysdeps/linux/arm/swapcontext.S
-+ create mode 100644 libc/sysdeps/linux/arm/ucontext_i.sym
-+ create mode 100644 libc/sysdeps/linux/i386/getcontext.S
-+ create mode 100644 libc/sysdeps/linux/i386/makecontext.S
-+ create mode 100644 libc/sysdeps/linux/i386/setcontext.S
-+ create mode 100644 libc/sysdeps/linux/i386/swapcontext.S
-+ create mode 100644 libc/sysdeps/linux/i386/ucontext_i.sym
-+ create mode 100644 libc/sysdeps/linux/mips/getcontext.S
-+ create mode 100644 libc/sysdeps/linux/mips/kernel_rt_sigframe.h
-+ create mode 100644 libc/sysdeps/linux/mips/makecontext.S
-+ create mode 100644 libc/sysdeps/linux/mips/setcontext.S
-+ create mode 100644 libc/sysdeps/linux/mips/swapcontext.S
-+ create mode 100644 libc/sysdeps/linux/mips/ucontext_i.sym
-+ create mode 100644 libc/sysdeps/linux/x86_64/__start_context.S
-+ create mode 100644 libc/sysdeps/linux/x86_64/getcontext.S
-+ create mode 100644 libc/sysdeps/linux/x86_64/makecontext.c
-+ create mode 100644 libc/sysdeps/linux/x86_64/setcontext.S
-+ create mode 100644 libc/sysdeps/linux/x86_64/swapcontext.S
-+ create mode 100644 libc/sysdeps/linux/x86_64/ucontext_i.sym
-+
-+diff --git a/Rules.mak b/Rules.mak
-+index 96871e1..8943fbf 100644
-+--- a/Rules.mak
-++++ b/Rules.mak
-+@@ -813,3 +813,5 @@ SHARED_END_FILES:=$(LIBGCC_DIR)crtendS.o $(top_builddir)lib/crtn.o
-+ endif
-+
-+ LOCAL_INSTALL_PATH := install_dir
-++
-++PTHREAD_GENERATE_MANGLE ?= -n "s/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*\$$/\#define \1 \2/p"
-+diff --git a/extra/Configs/Config.arm b/extra/Configs/Config.arm
-+index 0bb2971..dc53643 100644
-+--- a/extra/Configs/Config.arm
-++++ b/extra/Configs/Config.arm
-+@@ -11,6 +11,7 @@ config FORCE_OPTIONS_FOR_ARCH
-+ bool
-+ default y
-+ select ARCH_ANY_ENDIAN
-++ select ARCH_HAS_UCONTEXT
-+
-+ config CONFIG_ARM_EABI
-+ bool "Build for EABI"
-+diff --git a/extra/Configs/Config.i386 b/extra/Configs/Config.i386
-+index 288aa5e..92cee3b 100644
-+--- a/extra/Configs/Config.i386
-++++ b/extra/Configs/Config.i386
-+@@ -12,6 +12,7 @@ config FORCE_OPTIONS_FOR_ARCH
-+ default y
-+ select ARCH_LITTLE_ENDIAN
-+ select ARCH_HAS_MMU
-++ select ARCH_HAS_UCONTEXT
-+
-+ choice
-+ prompt "Target x86 Processor Family"
-+diff --git a/extra/Configs/Config.in b/extra/Configs/Config.in
-+index 4bb6812..62bcd9b 100644
-+--- a/extra/Configs/Config.in
-++++ b/extra/Configs/Config.in
-+@@ -261,6 +261,9 @@ config ARCH_HAS_NO_LDSO
-+ bool
-+ select ARCH_HAS_NO_SHARED
-+
-++config ARCH_HAS_UCONTEXT
-++ bool
-++
-+ config HAVE_SHARED
-+ bool "Enable shared libraries"
-+ depends on !ARCH_HAS_NO_SHARED
-+@@ -678,6 +681,19 @@ config UCLIBC_SUSV3_LEGACY
-+
-+ WARNING! ABI incompatibility.
-+
-++config UCLIBC_HAS_CONTEXT_FUNCS
-++ bool "Use obsolescent context control functions"
-++ depends on UCLIBC_SUSV3_LEGACY && ARCH_HAS_UCONTEXT
-++ help
-++ Add into library the SuSv3 obsolescent functions used for context
-++ control. The setcontext family allows the implementation in C of
-++ advanced control flow patterns such as iterators, fibers, and
-++ coroutines. They may be viewed as an advanced version of
-++ setjmp/longjmp; whereas the latter allows only a single non-local jump
-++ up the stack, setcontext allows the creation of multiple cooperative
-++ threads of control, each with its own stack.
-++ These functions are: setcontext, getcontext, makecontext, swapcontext.
-++
-+ config UCLIBC_SUSV3_LEGACY_MACROS
-+ bool "Enable SuSv3 LEGACY macros"
-+ help
-+diff --git a/extra/Configs/Config.mips b/extra/Configs/Config.mips
-+index 063b07c..48e0b64 100644
-+--- a/extra/Configs/Config.mips
-++++ b/extra/Configs/Config.mips
-+@@ -11,6 +11,7 @@ config FORCE_OPTIONS_FOR_ARCH
-+ bool
-+ default y
-+ select ARCH_ANY_ENDIAN
-++ select ARCH_HAS_UCONTEXT
-+
-+ choice
-+ prompt "Target ABI"
-+diff --git a/extra/Configs/Config.x86_64 b/extra/Configs/Config.x86_64
-+index 1b28088..4c8c3a9 100644
-+--- a/extra/Configs/Config.x86_64
-++++ b/extra/Configs/Config.x86_64
-+@@ -12,3 +12,4 @@ config FORCE_OPTIONS_FOR_ARCH
-+ default y
-+ select ARCH_LITTLE_ENDIAN
-+ select ARCH_HAS_MMU
-++ select ARCH_HAS_UCONTEXT
-+diff --git a/include/ucontext.h b/include/ucontext.h
-+index 14a1270..f11db77 100644
-+--- a/include/ucontext.h
-++++ b/include/ucontext.h
-+@@ -15,17 +15,43 @@
-+ License along with the GNU C Library; if not, see
-+ <http://www.gnu.org/licenses/>. */
-+
-++/* The System V ABI user-level context switching support functions
-++ are marked obsolescent by SuSv3. */
-++
-+ #ifndef _UCONTEXT_H
-+ #define _UCONTEXT_H 1
-+
-+ #include <features.h>
-+
-++#ifdef __UCLIBC_HAS_CONTEXT_FUNCS__
-++
-+ /* Get machine dependent definition of data structures. */
-+ #include <sys/ucontext.h>
-+
-+-/* The System V ABI user-level context switching support functions
-+- * are marked obsolescent by SuSv3, and are not implemented by
-+- * uClibc. This header is therefore empty. */
-++__BEGIN_DECLS
-++
-++/* Get user context and store it in variable pointed to by UCP. */
-++extern int getcontext (ucontext_t *__ucp) __THROW;
-++
-++/* Set user context from information of variable pointed to by UCP. */
-++extern int setcontext (const ucontext_t *__ucp) __THROW;
-++
-++/* Save current context in context variable pointed to by OUCP and set
-++ context from variable pointed to by UCP. */
-++extern int swapcontext (ucontext_t *__restrict __oucp,
-++ const ucontext_t *__restrict __ucp) __THROW;
-++
-++/* Manipulate user context UCP to continue with calling functions FUNC
-++ and the ARGC-1 parameters following ARGC when the context is used
-++ the next time in `setcontext' or `swapcontext'.
-++
-++ We cannot say anything about the parameters FUNC takes; `void'
-++ is as good as any other choice. */
-++extern void makecontext (ucontext_t *__ucp, void (*__func) (void),
-++ int __argc, ...) __THROW;
-++
-++__END_DECLS
-+
-++#endif
-+
-+ #endif /* ucontext.h */
-+diff --git a/libc/.gitignore b/libc/.gitignore
-+new file mode 100644
-+index 0000000..f4c0305
-+--- /dev/null
-++++ b/libc/.gitignore
-+@@ -0,0 +1 @@
-++ucontext_i.[chs]
-+diff --git a/libc/sysdeps/linux/Makefile.commonarch b/libc/sysdeps/linux/Makefile.commonarch
-+index c1bc5df..ac89e72 100644
-+--- a/libc/sysdeps/linux/Makefile.commonarch
-++++ b/libc/sysdeps/linux/Makefile.commonarch
-+@@ -37,5 +37,23 @@ headers-y += $(ARCH_HEADERS_OUT)
-+ headers_clean-y += HEADERCLEAN_$(subst $(top_builddir),,$(ARCH_OUT))
-+ HEADERCLEAN_$(subst $(top_builddir),,$(ARCH_OUT)):
-+ $(do_rm) $(ARCH_HEADERS_OUT)
-+-
-+ endif
-++
-++CFLAGS-ucontext_i.c = -S
-++
-++$(ARCH_OUT)/ucontext_i.c: $(ARCH_DIR)/ucontext_i.sym
-++ $(do_awk) $(top_srcdir)extra/scripts/gen-as-const.awk $< > $@
-++
-++$(ARCH_OUT)/ucontext_i.s: $(ARCH_OUT)/ucontext_i.c
-++ $(compile.c)
-++
-++$(ARCH_OUT)/ucontext_i.h: $(ARCH_OUT)/ucontext_i.s
-++ $(do_sed) $(PTHREAD_GENERATE_MANGLE) $< > $@
-++
-++pregen-headers-$(UCLIBC_HAS_CONTEXT_FUNCS) += $(ARCH_OUT)/ucontext_i.h
-++
-++headers_clean-$(UCLIBC_HAS_CONTEXT_FUNCS) += \
-++ HEADERCLEAN_$(subst $(top_builddir),,$(ARCH_OUT)/ucontext_i)
-++
-++HEADERCLEAN_$(subst $(top_builddir),,$(ARCH_OUT)/ucontext_i):
-++ $(do_rm) $(addprefix $(ARCH_OUT)/ucontext_i., c h s)
-+diff --git a/libc/sysdeps/linux/arm/Makefile.arch b/libc/sysdeps/linux/arm/Makefile.arch
-+index 5fc3e54..36d988b 100644
-+--- a/libc/sysdeps/linux/arm/Makefile.arch
-++++ b/libc/sysdeps/linux/arm/Makefile.arch
-+@@ -43,3 +43,8 @@ libc-static-y += $(ARCH_OUT)/aeabi_lcsts.o $(ARCH_OUT)/aeabi_math.o \
-+ libc-nonshared-y += $(ARCH_OUT)/aeabi_lcsts.os $(ARCH_OUT)/aeabi_math.os \
-+ $(ARCH_OUT)/aeabi_sighandlers.os $(ARCH_OUT)/aeabi_unwind_cpp_pr1.o
-+ endif
-++
-++ifeq ($(UCLIBC_HAS_CONTEXT_FUNCS),y)
-++CSRC += makecontext.c
-++SSRC += getcontext.S setcontext.S swapcontext.S
-++endif
-+diff --git a/libc/sysdeps/linux/arm/getcontext.S b/libc/sysdeps/linux/arm/getcontext.S
-+new file mode 100644
-+index 0000000..a987c52
-+--- /dev/null
-++++ b/libc/sysdeps/linux/arm/getcontext.S
-+@@ -0,0 +1,80 @@
-++/* Copyright (C) 2012 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/>. */
-++
-++#include <sysdep.h>
-++
-++#include "ucontext_i.h"
-++
-++ .syntax unified
-++ .text
-++
-++/* int getcontext (ucontext_t *ucp) */
-++
-++ENTRY(__getcontext)
-++ /* No need to save r0-r3, d0-d7, or d16-d31. */
-++ add r1, r0, #MCONTEXT_ARM_R4
-++ stmia r1, {r4-r11}
-++
-++ /* Save R13 separately as Thumb can't STM it. */
-++ str r13, [r0, #MCONTEXT_ARM_SP]
-++ str r14, [r0, #MCONTEXT_ARM_LR]
-++ /* Return to LR */
-++ str r14, [r0, #MCONTEXT_ARM_PC]
-++ /* Return zero */
-++ mov r2, #0
-++ str r2, [r0, #MCONTEXT_ARM_R0]
-++
-++ /* Save ucontext_t * across the next call. */
-++ mov r4, r0
-++
-++ /* __sigprocmask(SIG_BLOCK, NULL, &(ucontext->uc_sigmask)) */
-++ mov r0, #SIG_BLOCK
-++ mov r1, #0
-++ add r2, r4, #UCONTEXT_SIGMASK
-++ bl PLTJMP(sigprocmask)
-++
-++#if defined __UCLIBC_HAS_FLOATS__ && ! defined __UCLIBC_HAS_SOFT_FLOAT__
-++# ifdef __VFP_FP__
-++ /* Store the VFP registers. */
-++ /* Following instruction is fstmiax ip!, {d8-d15}. */
-++ stc p11, cr8, [r0], #64
-++ /* Store the floating-point status register. */
-++ /* Following instruction is fmrx r2, fpscr. */
-++ mrc p10, 7, r1, cr1, cr0, 0
-++ str r1, [r0], #4
-++# endif
-++#endif
-++#ifdef __IWMMXT__
-++ /* Save the call-preserved iWMMXt registers. */
-++ /* Following instructions are wstrd wr10, [r0], #8 (etc.) */
-++ stcl p1, cr10, [r0], #8
-++ stcl p1, cr11, [r0], #8
-++ stcl p1, cr12, [r0], #8
-++ stcl p1, cr13, [r0], #8
-++ stcl p1, cr14, [r0], #8
-++ stcl p1, cr15, [r0], #8
-++#endif
-++
-++ /* Restore the clobbered R4 and LR. */
-++ ldr r14, [r4, #MCONTEXT_ARM_LR]
-++ ldr r4, [r4, #MCONTEXT_ARM_R4]
-++
-++ mov r0, #0
-++ DO_RET(r14)
-++
-++END(__getcontext)
-++weak_alias(__getcontext, getcontext)
-+diff --git a/libc/sysdeps/linux/arm/makecontext.c b/libc/sysdeps/linux/arm/makecontext.c
-+new file mode 100644
-+index 0000000..d6ae6f0
-+--- /dev/null
-++++ b/libc/sysdeps/linux/arm/makecontext.c
-+@@ -0,0 +1,73 @@
-++/* Copyright (C) 2012 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/>. */
-++
-++#include <stdarg.h>
-++#include <ucontext.h>
-++
-++/* Number of arguments that go in registers. */
-++#define NREG_ARGS 4
-++
-++/* Take a context previously prepared via getcontext() and set to
-++ call func() with the given int only args. */
-++void
-++__makecontext (ucontext_t *ucp, void (*func) (void), int argc, ...)
-++{
-++ extern void __startcontext (void);
-++ unsigned long *funcstack;
-++ va_list vl;
-++ unsigned long *regptr;
-++ unsigned int reg;
-++ int misaligned;
-++
-++ /* Start at the top of stack. */
-++ funcstack = (unsigned long *) (ucp->uc_stack.ss_sp + ucp->uc_stack.ss_size);
-++
-++ /* Ensure the stack stays eight byte aligned. */
-++ misaligned = ((unsigned long) funcstack & 4) != 0;
-++
-++ if ((argc > NREG_ARGS) && (argc & 1) != 0)
-++ misaligned = !misaligned;
-++
-++ if (misaligned)
-++ funcstack -= 1;
-++
-++ va_start (vl, argc);
-++
-++ /* Reserve space for the on-stack arguments. */
-++ if (argc > NREG_ARGS)
-++ funcstack -= (argc - NREG_ARGS);
-++
-++ ucp->uc_mcontext.arm_sp = (unsigned long) funcstack;
-++ ucp->uc_mcontext.arm_pc = (unsigned long) func;
-++
-++ /* Exit to startcontext() with the next context in R4 */
-++ ucp->uc_mcontext.arm_r4 = (unsigned long) ucp->uc_link;
-++ ucp->uc_mcontext.arm_lr = (unsigned long) __startcontext;
-++
-++ /* The first four arguments go into registers. */
-++ regptr = &(ucp->uc_mcontext.arm_r0);
-++
-++ for (reg = 0; (reg < argc) && (reg < NREG_ARGS); reg++)
-++ *regptr++ = va_arg (vl, unsigned long);
-++
-++ /* And the remainder on the stack. */
-++ for (; reg < argc; reg++)
-++ *funcstack++ = va_arg (vl, unsigned long);
-++
-++ va_end (vl);
-++}
-++weak_alias (__makecontext, makecontext)
-+diff --git a/libc/sysdeps/linux/arm/setcontext.S b/libc/sysdeps/linux/arm/setcontext.S
-+new file mode 100644
-+index 0000000..a5c33a0
-+--- /dev/null
-++++ b/libc/sysdeps/linux/arm/setcontext.S
-+@@ -0,0 +1,76 @@
-++/* Copyright (C) 2012 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/>. */
-++
-++#include <sysdep.h>
-++
-++#include "ucontext_i.h"
-++
-++ .syntax unified
-++ .text
-++
-++/* int setcontext (const ucontext_t *ucp) */
-++
-++ENTRY(__setcontext)
-++ mov r4, r0
-++
-++#if defined __UCLIBC_HAS_FLOATS__ && ! defined __UCLIBC_HAS_SOFT_FLOAT__
-++# ifdef __VFP_FP__
-++ /* Following instruction is vldmia r0!, {d8-d15}. */
-++ ldc p11, cr8, [r0], #64
-++ /* Restore the floating-point status register. */
-++ ldr r1, [r0], #4
-++ /* Following instruction is fmxr fpscr, r1. */
-++ mcr p10, 7, r1, cr1, cr0, 0
-++# endif
-++#endif
-++
-++#ifdef __IWMMXT__
-++ /* Restore the call-preserved iWMMXt registers. */
-++ /* Following instructions are wldrd wr10, [r0], #8 (etc.) */
-++ ldcl p1, cr10, [r0], #8
-++ ldcl p1, cr11, [r0], #8
-++ ldcl p1, cr12, [r0], #8
-++ ldcl p1, cr13, [r0], #8
-++ ldcl p1, cr14, [r0], #8
-++ ldcl p1, cr15, [r0], #8
-++#endif
-++
-++ /* Now bring back the signal status. */
-++ mov r0, #SIG_SETMASK
-++ add r1, r4, #UCONTEXT_SIGMASK
-++ mov r2, #0
-++ bl PLTJMP(sigprocmask)
-++
-++ /* Loading r0-r3 makes makecontext easier. */
-++ add r14, r4, #MCONTEXT_ARM_R0
-++ ldmia r14, {r0-r11}
-++ ldr r13, [r14, #(MCONTEXT_ARM_SP - MCONTEXT_ARM_R0)]
-++ add r14, r14, #(MCONTEXT_ARM_LR - MCONTEXT_ARM_R0)
-++ ldmia r14, {r14, pc}
-++
-++END(setcontext)
-++weak_alias(__setcontext, setcontext)
-++
-++ /* Called when a makecontext() context returns. Start the
-++ context in R4 or fall through to exit(). */
-++ENTRY(__startcontext)
-++ movs r0, r4
-++ bne PLTJMP(__setcontext)
-++
-++ @ New context was 0 - exit
-++ b PLTJMP(_exit)
-++END(__startcontext)
-+diff --git a/libc/sysdeps/linux/arm/swapcontext.S b/libc/sysdeps/linux/arm/swapcontext.S
-+new file mode 100644
-+index 0000000..ba6e31c
-+--- /dev/null
-++++ b/libc/sysdeps/linux/arm/swapcontext.S
-+@@ -0,0 +1,63 @@
-++/* Copyright (C) 2012 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/>. */
-++
-++#include <sysdep.h>
-++
-++#include "ucontext_i.h"
-++
-++ .syntax unified
-++ .text
-++
-++/* int swapcontext (ucontext_t *oucp, const ucontext_t *ucp) */
-++
-++ENTRY(swapcontext)
-++
-++ /* Have getcontext() do most of the work then fix up
-++ LR afterwards. Save R3 to keep the stack aligned. */
-++ push {r0,r1,r3,r14}
-++ cfi_adjust_cfa_offset (16)
-++ cfi_rel_offset (r0,0)
-++ cfi_rel_offset (r1,4)
-++ cfi_rel_offset (r3,8)
-++ cfi_rel_offset (r14,12)
-++
-++ bl __getcontext
-++ mov r4, r0
-++
-++ pop {r0,r1,r3,r14}
-++ cfi_adjust_cfa_offset (-16)
-++ cfi_restore (r0)
-++ cfi_restore (r1)
-++ cfi_restore (r3)
-++ cfi_restore (r14)
-++
-++ /* Exit if getcontext() failed. */
-++ cmp r4, #0
-++ itt ne
-++ movne r0, r4
-++ RETINSTR(ne, r14)
-++
-++ /* Fix up LR and the PC. */
-++ str r13,[r0, #MCONTEXT_ARM_SP]
-++ str r14,[r0, #MCONTEXT_ARM_LR]
-++ str r14,[r0, #MCONTEXT_ARM_PC]
-++
-++ /* And swap using swapcontext(). */
-++ mov r0, r1
-++ b __setcontext
-++
-++END(swapcontext)
-+diff --git a/libc/sysdeps/linux/arm/ucontext_i.sym b/libc/sysdeps/linux/arm/ucontext_i.sym
-+new file mode 100644
-+index 0000000..9650322
-+--- /dev/null
-++++ b/libc/sysdeps/linux/arm/ucontext_i.sym
-+@@ -0,0 +1,30 @@
-++#include <inttypes.h>
-++#include <signal.h>
-++#include <stddef.h>
-++#include <sys/ucontext.h>
-++
-++SIG_BLOCK
-++SIG_SETMASK
-++
-++-- Offsets of the fields in the ucontext_t structure.
-++#define ucontext(member) offsetof (ucontext_t, member)
-++#define mcontext(member) ucontext (uc_mcontext.member)
-++
-++UCONTEXT_FLAGS ucontext (uc_flags)
-++UCONTEXT_LINK ucontext (uc_link)
-++UCONTEXT_STACK ucontext (uc_stack)
-++UCONTEXT_MCONTEXT ucontext (uc_mcontext)
-++UCONTEXT_SIGMASK ucontext (uc_sigmask)
-++
-++UCONTEXT_REGSPACE ucontext (uc_regspace)
-++
-++MCONTEXT_TRAP_NO mcontext (trap_no)
-++MCONTEXT_ERROR_CODE mcontext (error_code)
-++MCONTEXT_OLDMASK mcontext (oldmask)
-++MCONTEXT_ARM_R0 mcontext (arm_r0)
-++MCONTEXT_ARM_R4 mcontext (arm_r4)
-++MCONTEXT_ARM_SP mcontext (arm_sp)
-++MCONTEXT_ARM_LR mcontext (arm_lr)
-++MCONTEXT_ARM_PC mcontext (arm_pc)
-++MCONTEXT_ARM_CPSR mcontext (arm_cpsr)
-++MCONTEXT_FAULT_ADDRESS mcontext (fault_address)
-+diff --git a/libc/sysdeps/linux/i386/Makefile.arch b/libc/sysdeps/linux/i386/Makefile.arch
-+index a3bf32f..e7fd28e 100644
-+--- a/libc/sysdeps/linux/i386/Makefile.arch
-++++ b/libc/sysdeps/linux/i386/Makefile.arch
-+@@ -18,3 +18,7 @@ endif
-+ ifneq ($(UCLIBC_HAS_THREADS_NATIVE),y)
-+ SSRC += vfork.S clone.S
-+ endif
-++
-++ifeq ($(UCLIBC_HAS_CONTEXT_FUNCS),y)
-++SSRC += makecontext.S setcontext.S getcontext.S swapcontext.S
-++endif
-+diff --git a/libc/sysdeps/linux/i386/getcontext.S b/libc/sysdeps/linux/i386/getcontext.S
-+new file mode 100644
-+index 0000000..3221b59
-+--- /dev/null
-++++ b/libc/sysdeps/linux/i386/getcontext.S
-+@@ -0,0 +1,84 @@
-++/* Save current context.
-++ Copyright (C) 2001-2012 Free Software Foundation, Inc.
-++ This file is part of the GNU C Library.
-++ Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
-++
-++ 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/>. */
-++
-++#include <sysdep.h>
-++
-++#include "ucontext_i.h"
-++
-++
-++ENTRY(__getcontext)
-++ /* Load address of the context data structure. */
-++ movl 4(%esp), %eax
-++
-++ /* Return value of getcontext. EAX is the only register whose
-++ value is not preserved. */
-++ movl $0, oEAX(%eax)
-++
-++ /* Save the 32-bit register values and the return address. */
-++ movl %ecx, oECX(%eax)
-++ movl %edx, oEDX(%eax)
-++ movl %edi, oEDI(%eax)
-++ movl %esi, oESI(%eax)
-++ movl %ebp, oEBP(%eax)
-++ movl (%esp), %ecx
-++ movl %ecx, oEIP(%eax)
-++ leal 4(%esp), %ecx /* Exclude the return address. */
-++ movl %ecx, oESP(%eax)
-++ movl %ebx, oEBX(%eax)
-++
-++ /* Save the FS segment register. We don't touch the GS register
-++ since it is used for threads. */
-++ xorl %edx, %edx
-++ movw %fs, %dx
-++ movl %edx, oFS(%eax)
-++
-++ /* We have separate floating-point register content memory on the
-++ stack. We use the __fpregs_mem block in the context. Set the
-++ links up correctly. */
-++ leal oFPREGSMEM(%eax), %ecx
-++ movl %ecx, oFPREGS(%eax)
-++ /* Save the floating-point context. */
-++ fnstenv (%ecx)
-++ /* And load it right back since the processor changes the mask.
-++ Intel thought this opcode to be used in interrupt handlers which
-++ would block all exceptions. */
-++ fldenv (%ecx)
-++
-++ /* Save the current signal mask. */
-++ pushl %ebx
-++ cfi_adjust_cfa_offset (4)
-++ cfi_rel_offset (ebx, 0)
-++ leal oSIGMASK(%eax), %edx
-++ xorl %ecx, %ecx
-++ movl $SIG_BLOCK, %ebx
-++ movl $__NR_sigprocmask, %eax
-++ ENTER_KERNEL
-++ popl %ebx
-++ cfi_adjust_cfa_offset (-4)
-++ cfi_restore (ebx)
-++ cmpl $-4095, %eax /* Check %eax for error. */
-++ jae SYSCALL_ERROR_LABEL /* Jump to error handler if error. */
-++
-++ /* All done, return 0 for success. */
-++ xorl %eax, %eax
-++L(pseudo_end):
-++ ret
-++PSEUDO_END(__getcontext)
-++
-++weak_alias (__getcontext, getcontext)
-+diff --git a/libc/sysdeps/linux/i386/makecontext.S b/libc/sysdeps/linux/i386/makecontext.S
-+new file mode 100644
-+index 0000000..d12799d
-+--- /dev/null
-++++ b/libc/sysdeps/linux/i386/makecontext.S
-+@@ -0,0 +1,123 @@
-++/* Create new context.
-++ Copyright (C) 2001,2002,2005,2007,2008,2009 Free Software Foundation, Inc.
-++ This file is part of the GNU C Library.
-++ Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
-++
-++ 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/>. */
-++
-++#include <sysdep.h>
-++
-++#include "ucontext_i.h"
-++
-++
-++ENTRY(__makecontext)
-++ movl 4(%esp), %eax
-++
-++ /* Load the address of the function we are supposed to run. */
-++ movl 8(%esp), %ecx
-++
-++ /* Compute the address of the stack. The information comes from
-++ to us_stack element. */
-++ movl oSS_SP(%eax), %edx
-++ movl %ecx, oEIP(%eax)
-++ addl oSS_SIZE(%eax), %edx
-++
-++ /* Remember the number of parameters for the exit handler since
-++ it has to remove them. We store the number in the EBX register
-++ which the function we will call must preserve. */
-++ movl 12(%esp), %ecx
-++ movl %ecx, oEBX(%eax)
-++
-++ /* Make room on the new stack for the parameters.
-++ Room for the arguments, return address (== L(exitcode)) and
-++ oLINK pointer is needed. One of the pointer sizes is subtracted
-++ after aligning the stack. */
-++ negl %ecx
-++ leal -4(%edx,%ecx,4), %edx
-++ negl %ecx
-++
-++ /* Align the stack. */
-++ andl $0xfffffff0, %edx
-++ subl $4, %edx
-++
-++ /* Store the future stack pointer. */
-++ movl %edx, oESP(%eax)
-++
-++ /* Put the next context on the new stack (from the uc_link
-++ element). */
-++ movl oLINK(%eax), %eax
-++ movl %eax, 4(%edx,%ecx,4)
-++
-++ /* Copy all the parameters. */
-++ jecxz 2f
-++1: movl 12(%esp,%ecx,4), %eax
-++ movl %eax, (%edx,%ecx,4)
-++ decl %ecx
-++ jnz 1b
-++2:
-++
-++ /* If the function we call returns we must continue with the
-++ context which is given in the uc_link element. To do this
-++ set the return address for the function the user provides
-++ to a little bit of helper code which does the magic (see
-++ below). */
-++#ifdef __PIC__
-++ call 1f
-++ cfi_adjust_cfa_offset (4)
-++1: popl %ecx
-++ cfi_adjust_cfa_offset (-4)
-++ addl $L(exitcode)-1b, %ecx
-++ movl %ecx, (%edx)
-++#else
-++ movl $L(exitcode), (%edx)
-++#endif
-++ /* 'makecontext' returns no value. */
-++L(pseudo_end):
-++ ret
-++
-++ /* This is the helper code which gets called if a function which
-++ is registered with 'makecontext' returns. In this case we
-++ have to install the context listed in the uc_link element of
-++ the context 'makecontext' manipulated at the time of the
-++ 'makecontext' call. If the pointer is NULL the process must
-++ terminate. */
-++ cfi_endproc
-++L(exitcode):
-++ /* This removes the parameters passed to the function given to
-++ 'makecontext' from the stack. EBX contains the number of
-++ parameters (see above). */
-++ leal (%esp,%ebx,4), %esp
-++
-++#ifdef __PIC__
-++ call 1f
-++1: popl %ebx
-++ addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx
-++#endif
-++ cmpl $0, (%esp) /* Check the next context. */
-++ je 2f /* If it is zero exit. */
-++
-++ call JUMPTARGET(__setcontext)
-++ /* If this returns (which can happen if the syscall fails) we'll
-++ exit the program with the return error value (-1). */
-++
-++ movl %eax, (%esp)
-++2: call HIDDEN_JUMPTARGET(exit)
-++ /* The 'exit' call should never return. In case it does cause
-++ the process to terminate. */
-++ hlt
-++ cfi_startproc
-++END(__makecontext)
-++
-++weak_alias (__makecontext, makecontext)
-+diff --git a/libc/sysdeps/linux/i386/setcontext.S b/libc/sysdeps/linux/i386/setcontext.S
-+new file mode 100644
-+index 0000000..ae953cc
-+--- /dev/null
-++++ b/libc/sysdeps/linux/i386/setcontext.S
-+@@ -0,0 +1,96 @@
-++/* Install given context.
-++ Copyright (C) 2001-2012 Free Software Foundation, Inc.
-++ This file is part of the GNU C Library.
-++ Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
-++
-++ 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/>. */
-++
-++#include <sysdep.h>
-++
-++#include "ucontext_i.h"
-++
-++
-++ENTRY(__setcontext)
-++ /* Load address of the context data structure. */
-++ movl 4(%esp), %eax
-++
-++ /* Get the current signal mask. Note that we preserve EBX in case
-++ the system call fails and we return from the function with an
-++ error. */
-++ pushl %ebx
-++ cfi_adjust_cfa_offset (4)
-++ xorl %edx, %edx
-++ leal oSIGMASK(%eax), %ecx
-++ movl $SIG_SETMASK, %ebx
-++ cfi_rel_offset (ebx, 0)
-++ movl $__NR_sigprocmask, %eax
-++ ENTER_KERNEL
-++ popl %ebx
-++ cfi_adjust_cfa_offset (-4)
-++ cfi_restore (ebx)
-++ cmpl $-4095, %eax /* Check %eax for error. */
-++ jae SYSCALL_ERROR_LABEL /* Jump to error handler if error. */
-++
-++ /* EAX was modified, reload it. */
-++ movl 4(%esp), %eax
-++
-++ /* Restore the floating-point context. Not the registers, only the
-++ rest. */
-++ movl oFPREGS(%eax), %ecx
-++ fldenv (%ecx)
-++
-++ /* Restore the FS segment register. We don't touch the GS register
-++ since it is used for threads. */
-++ movl oFS(%eax), %ecx
-++ movw %cx, %fs
-++
-++ /* Fetch the address to return to. */
-++ movl oEIP(%eax), %ecx
-++
-++ /* Load the new stack pointer. */
-++ cfi_def_cfa (eax, 0)
-++ cfi_offset (edi, oEDI)
-++ cfi_offset (esi, oESI)
-++ cfi_offset (ebp, oEBP)
-++ cfi_offset (ebx, oEBX)
-++ cfi_offset (edx, oEDX)
-++ cfi_offset (ecx, oECX)
-++ movl oESP(%eax), %esp
-++
-++ /* Push the return address on the new stack so we can return there. */
-++ pushl %ecx
-++
-++ /* Load the values of all the 32-bit registers (except ESP).
-++ Since we are loading from EAX, it must be last. */
-++ movl oEDI(%eax), %edi
-++ movl oESI(%eax), %esi
-++ movl oEBP(%eax), %ebp
-++ movl oEBX(%eax), %ebx
-++ movl oEDX(%eax), %edx
-++ movl oECX(%eax), %ecx
-++ movl oEAX(%eax), %eax
-++
-++ /* End FDE here, we fall into another context. */
-++ cfi_endproc
-++ cfi_startproc
-++
-++ /* The following 'ret' will pop the address of the code and jump
-++ to it. */
-++
-++L(pseudo_end):
-++ ret
-++PSEUDO_END(__setcontext)
-++
-++weak_alias (__setcontext, setcontext)
-+diff --git a/libc/sysdeps/linux/i386/swapcontext.S b/libc/sysdeps/linux/i386/swapcontext.S
-+new file mode 100644
-+index 0000000..ee5d0e4
-+--- /dev/null
-++++ b/libc/sysdeps/linux/i386/swapcontext.S
-+@@ -0,0 +1,110 @@
-++/* Save current context and install the given one.
-++ Copyright (C) 2001-2012 Free Software Foundation, Inc.
-++ This file is part of the GNU C Library.
-++ Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
-++
-++ 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/>. */
-++
-++#include <sysdep.h>
-++
-++#include "ucontext_i.h"
-++
-++
-++ENTRY(__swapcontext)
-++ /* Load address of the context data structure we save in. */
-++ movl 4(%esp), %eax
-++
-++ /* Return value of swapcontext. EAX is the only register whose
-++ value is not preserved. */
-++ movl $0, oEAX(%eax)
-++
-++ /* Save the 32-bit register values and the return address. */
-++ movl %ecx, oECX(%eax)
-++ movl %edx, oEDX(%eax)
-++ movl %edi, oEDI(%eax)
-++ movl %esi, oESI(%eax)
-++ movl %ebp, oEBP(%eax)
-++ movl (%esp), %ecx
-++ movl %ecx, oEIP(%eax)
-++ leal 4(%esp), %ecx
-++ movl %ecx, oESP(%eax)
-++ movl %ebx, oEBX(%eax)
-++
-++ /* Save the FS segment register. */
-++ xorl %edx, %edx
-++ movw %fs, %dx
-++ movl %edx, oFS(%eax)
-++
-++ /* We have separate floating-point register content memory on the
-++ stack. We use the __fpregs_mem block in the context. Set the
-++ links up correctly. */
-++ leal oFPREGSMEM(%eax), %ecx
-++ movl %ecx, oFPREGS(%eax)
-++ /* Save the floating-point context. */
-++ fnstenv (%ecx)
-++
-++ /* Load address of the context data structure we have to load. */
-++ movl 8(%esp), %ecx
-++
-++ /* Save the current signal mask and install the new one. */
-++ pushl %ebx
-++ leal oSIGMASK(%eax), %edx
-++ leal oSIGMASK(%ecx), %ecx
-++ movl $SIG_SETMASK, %ebx
-++ movl $__NR_sigprocmask, %eax
-++ ENTER_KERNEL
-++ popl %ebx
-++ cmpl $-4095, %eax /* Check %eax for error. */
-++ jae SYSCALL_ERROR_LABEL /* Jump to error handler if error. */
-++
-++ /* EAX was modified, reload it. */
-++ movl 8(%esp), %eax
-++
-++ /* Restore the floating-point context. Not the registers, only the
-++ rest. */
-++ movl oFPREGS(%eax), %ecx
-++ fldenv (%ecx)
-++
-++ /* Restore the FS segment register. We don't touch the GS register
-++ since it is used for threads. */
-++ movl oFS(%eax), %edx
-++ movw %dx, %fs
-++
-++ /* Fetch the address to return to. */
-++ movl oEIP(%eax), %ecx
-++
-++ /* Load the new stack pointer. */
-++ movl oESP(%eax), %esp
-++
-++ /* Push the return address on the new stack so we can return there. */
-++ pushl %ecx
-++
-++ /* Load the values of all the 32-bit registers (except ESP).
-++ Since we are loading from EAX, it must be last. */
-++ movl oEDI(%eax), %edi
-++ movl oESI(%eax), %esi
-++ movl oEBP(%eax), %ebp
-++ movl oEBX(%eax), %ebx
-++ movl oEDX(%eax), %edx
-++ movl oECX(%eax), %ecx
-++ movl oEAX(%eax), %eax
-++
-++ /* The following 'ret' will pop the address of the code and jump
-++ to it. */
-++L(pseudo_end):
-++ ret
-++PSEUDO_END(__swapcontext)
-++
-++weak_alias (__swapcontext, swapcontext)
-+diff --git a/libc/sysdeps/linux/i386/ucontext_i.sym b/libc/sysdeps/linux/i386/ucontext_i.sym
-+new file mode 100644
-+index 0000000..b11a550
-+--- /dev/null
-++++ b/libc/sysdeps/linux/i386/ucontext_i.sym
-+@@ -0,0 +1,30 @@
-++#include <stddef.h>
-++#include <signal.h>
-++#include <sys/ucontext.h>
-++
-++--
-++
-++SIG_BLOCK
-++SIG_SETMASK
-++
-++#define ucontext(member) offsetof (ucontext_t, member)
-++#define mcontext(member) ucontext (uc_mcontext.member)
-++#define mreg(reg) mcontext (gregs[REG_##reg])
-++
-++oLINK ucontext (uc_link)
-++oSS_SP ucontext (uc_stack.ss_sp)
-++oSS_SIZE ucontext (uc_stack.ss_size)
-++oGS mreg (GS)
-++oFS mreg (FS)
-++oEDI mreg (EDI)
-++oESI mreg (ESI)
-++oEBP mreg (EBP)
-++oESP mreg (ESP)
-++oEBX mreg (EBX)
-++oEDX mreg (EDX)
-++oECX mreg (ECX)
-++oEAX mreg (EAX)
-++oEIP mreg (EIP)
-++oFPREGS mcontext (fpregs)
-++oSIGMASK ucontext (uc_sigmask)
-++oFPREGSMEM ucontext (__fpregs_mem)
-+diff --git a/libc/sysdeps/linux/mips/Makefile.arch b/libc/sysdeps/linux/mips/Makefile.arch
-+index fce99f8..00b9331 100644
-+--- a/libc/sysdeps/linux/mips/Makefile.arch
-++++ b/libc/sysdeps/linux/mips/Makefile.arch
-+@@ -27,3 +27,7 @@ ASFLAGS-syscall_error.S += -D_LIBC_REENTRANT
-+
-+ ARCH_HEADERS := sgidefs.h
-+ # regdef.h
-++
-++ifeq ($(UCLIBC_HAS_CONTEXT_FUNCS),y)
-++SSRC += makecontext.S setcontext.S getcontext.S swapcontext.S
-++endif
-+diff --git a/libc/sysdeps/linux/mips/getcontext.S b/libc/sysdeps/linux/mips/getcontext.S
-+new file mode 100644
-+index 0000000..c4ad081
-+--- /dev/null
-++++ b/libc/sysdeps/linux/mips/getcontext.S
-+@@ -0,0 +1,148 @@
-++/* Save current context.
-++ Copyright (C) 2009 Free Software Foundation, Inc.
-++ This file is part of the GNU C Library.
-++ Contributed by Maciej W. Rozycki <macro@codesourcery.com>.
-++
-++ 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/>. */
-++
-++#include <sysdep.h>
-++#include <sys/asm.h>
-++#include <sys/fpregdef.h>
-++#include <sys/regdef.h>
-++
-++#include "ucontext_i.h"
-++
-++/* int getcontext (ucontext_t *ucp) */
-++
-++ .text
-++LOCALSZ = 0
-++MASK = 0x00000000
-++#ifdef __PIC__
-++LOCALSZ = 1 /* save gp */
-++# if _MIPS_SIM != _ABIO32
-++MASK = 0x10000000
-++# endif
-++#endif
-++FRAMESZ = ((LOCALSZ * SZREG) + ALSZ) & ALMASK
-++GPOFF = FRAMESZ - (1 * SZREG)
-++
-++NESTED (__getcontext, FRAMESZ, ra)
-++ .mask MASK, 0
-++ .fmask 0x00000000, 0
-++
-++#ifdef __PIC__
-++ SETUP_GP
-++
-++ move a2, sp
-++# define _SP a2
-++
-++# if _MIPS_SIM != _ABIO32
-++ move a3, gp
-++# define _GP a3
-++# endif
-++
-++ PTR_ADDIU sp, -FRAMESZ
-++ SETUP_GP64 (GPOFF, __getcontext)
-++ SAVE_GP (GPOFF)
-++
-++#else /* ! __PIC__ */
-++# define _SP sp
-++# define _GP gp
-++
-++#endif /* ! __PIC__ */
-++
-++#ifdef PROF
-++ .set noat
-++ move AT, ra
-++ jal _mcount
-++ .set at
-++#endif
-++
-++ /* Store a magic flag. */
-++ li v1, 1
-++ REG_S v1, (0 * SZREG + MCONTEXT_GREGS)(a0) /* zero */
-++
-++ REG_S s0, (16 * SZREG + MCONTEXT_GREGS)(a0)
-++ REG_S s1, (17 * SZREG + MCONTEXT_GREGS)(a0)
-++ REG_S s2, (18 * SZREG + MCONTEXT_GREGS)(a0)
-++ REG_S s3, (19 * SZREG + MCONTEXT_GREGS)(a0)
-++ REG_S s4, (20 * SZREG + MCONTEXT_GREGS)(a0)
-++ REG_S s5, (21 * SZREG + MCONTEXT_GREGS)(a0)
-++ REG_S s6, (22 * SZREG + MCONTEXT_GREGS)(a0)
-++ REG_S s7, (23 * SZREG + MCONTEXT_GREGS)(a0)
-++#if ! defined (__PIC__) || _MIPS_SIM != _ABIO32
-++ REG_S _GP, (28 * SZREG + MCONTEXT_GREGS)(a0)
-++#endif
-++ REG_S _SP, (29 * SZREG + MCONTEXT_GREGS)(a0)
-++ REG_S fp, (30 * SZREG + MCONTEXT_GREGS)(a0)
-++ REG_S ra, (31 * SZREG + MCONTEXT_GREGS)(a0)
-++ REG_S ra, MCONTEXT_PC(a0)
-++
-++#ifdef __mips_hard_float
-++# if _MIPS_SIM == _ABI64
-++ s.d fs0, (24 * SZREG + MCONTEXT_FPREGS)(a0)
-++ s.d fs1, (25 * SZREG + MCONTEXT_FPREGS)(a0)
-++ s.d fs2, (26 * SZREG + MCONTEXT_FPREGS)(a0)
-++ s.d fs3, (27 * SZREG + MCONTEXT_FPREGS)(a0)
-++ s.d fs4, (28 * SZREG + MCONTEXT_FPREGS)(a0)
-++ s.d fs5, (29 * SZREG + MCONTEXT_FPREGS)(a0)
-++ s.d fs6, (30 * SZREG + MCONTEXT_FPREGS)(a0)
-++ s.d fs7, (31 * SZREG + MCONTEXT_FPREGS)(a0)
-++
-++# else /* _MIPS_SIM != _ABI64 */
-++ s.d fs0, (20 * SZREG + MCONTEXT_FPREGS)(a0)
-++ s.d fs1, (22 * SZREG + MCONTEXT_FPREGS)(a0)
-++ s.d fs2, (24 * SZREG + MCONTEXT_FPREGS)(a0)
-++ s.d fs3, (26 * SZREG + MCONTEXT_FPREGS)(a0)
-++ s.d fs4, (28 * SZREG + MCONTEXT_FPREGS)(a0)
-++ s.d fs5, (30 * SZREG + MCONTEXT_FPREGS)(a0)
-++
-++# endif /* _MIPS_SIM != _ABI64 */
-++
-++ cfc1 v1, fcr31
-++ sw v1, MCONTEXT_FPC_CSR(a0)
-++#endif /* __mips_hard_float */
-++
-++/* rt_sigprocmask (SIG_BLOCK, NULL, &ucp->uc_sigmask, _NSIG8) */
-++ li a3, _NSIG8
-++ PTR_ADDU a2, a0, UCONTEXT_SIGMASK
-++ move a1, zero
-++ li a0, SIG_BLOCK
-++
-++ li v0, SYS_ify (rt_sigprocmask)
-++ syscall
-++ bnez a3, 99f
-++
-++#ifdef __PIC__
-++ RESTORE_GP64
-++ PTR_ADDIU sp, FRAMESZ
-++#endif
-++ move v0, zero
-++ jr ra
-++
-++99:
-++#ifdef __PIC__
-++ PTR_LA t9, JUMPTARGET (__syscall_error)
-++ RESTORE_GP64
-++ PTR_ADDIU sp, FRAMESZ
-++ jr t9
-++
-++#else /* ! __PIC__ */
-++
-++ j JUMPTARGET (__syscall_error)
-++#endif /* ! __PIC__ */
-++PSEUDO_END (__getcontext)
-++
-++weak_alias (__getcontext, getcontext)
-+diff --git a/libc/sysdeps/linux/mips/kernel_rt_sigframe.h b/libc/sysdeps/linux/mips/kernel_rt_sigframe.h
-+new file mode 100644
-+index 0000000..77ffaf6
-+--- /dev/null
-++++ b/libc/sysdeps/linux/mips/kernel_rt_sigframe.h
-+@@ -0,0 +1,10 @@
-++/* Linux kernel RT signal frame. */
-++typedef struct kernel_rt_sigframe
-++ {
-++ uint32_t rs_ass[4];
-++ uint32_t rs_code[2];
-++ siginfo_t rs_info;
-++ struct ucontext rs_uc;
-++ uint32_t rs_altcode[8] __attribute__ ((__aligned__ (1 << 7)));
-++ }
-++kernel_rt_sigframe_t;
-+diff --git a/libc/sysdeps/linux/mips/makecontext.S b/libc/sysdeps/linux/mips/makecontext.S
-+new file mode 100644
-+index 0000000..6427339
-+--- /dev/null
-++++ b/libc/sysdeps/linux/mips/makecontext.S
-+@@ -0,0 +1,188 @@
-++/* Modify saved context.
-++ Copyright (C) 2009 Free Software Foundation, Inc.
-++ This file is part of the GNU C Library.
-++ Contributed by Maciej W. Rozycki <macro@codesourcery.com>.
-++
-++ 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/>. */
-++
-++#include <sysdep.h>
-++#include <sys/asm.h>
-++#include <sys/fpregdef.h>
-++#include <sys/regdef.h>
-++
-++#include "ucontext_i.h"
-++
-++/* int makecontext (ucontext_t *ucp, (void *func) (), int argc, ...) */
-++
-++ .text
-++LOCALSZ = 0
-++ARGSZ = 0
-++MASK = 0x00000000
-++#ifdef __PIC__
-++LOCALSZ = 1 /* save gp */
-++#endif
-++#if _MIPS_SIM != _ABIO32
-++ARGSZ = 5 /* save a3-a7 */
-++# ifdef __PIC__
-++MASK = 0x10000000
-++# endif
-++#endif
-++FRAMESZ = (((ARGSZ + LOCALSZ) * SZREG) + ALSZ) & ALMASK
-++GPOFF = FRAMESZ - ((ARGSZ + 1) * SZREG)
-++#if _MIPS_SIM != _ABIO32
-++A3OFF = FRAMESZ - (5 * SZREG) /* callee-allocated */
-++A4OFF = FRAMESZ - (4 * SZREG)
-++A5OFF = FRAMESZ - (3 * SZREG)
-++A6OFF = FRAMESZ - (2 * SZREG)
-++A7OFF = FRAMESZ - (1 * SZREG)
-++NARGREGS = 8
-++#else
-++A3OFF = FRAMESZ + (3 * SZREG) /* caller-allocated */
-++NARGREGS = 4
-++#endif
-++
-++NESTED (__makecontext, FRAMESZ, ra)
-++ .mask MASK, -(ARGSZ * SZREG)
-++ .fmask 0x00000000, 0
-++
-++98:
-++#ifdef __PIC__
-++ SETUP_GP
-++#endif
-++
-++ PTR_ADDIU sp, -FRAMESZ
-++
-++#ifdef __PIC__
-++ SETUP_GP64 (GPOFF, __makecontext)
-++ SAVE_GP (GPOFF)
-++#endif
-++
-++#ifdef PROF
-++ .set noat
-++ move AT, ra
-++ jal _mcount
-++ .set at
-++#endif
-++
-++ /* Store args to be passed. */
-++ REG_S a3, A3OFF(sp)
-++#if _MIPS_SIM != _ABIO32
-++ REG_S a4, A4OFF(sp)
-++ REG_S a5, A5OFF(sp)
-++ REG_S a6, A6OFF(sp)
-++ REG_S a7, A7OFF(sp)
-++#endif
-++
-++ /* Store a magic flag. */
-++ li v1, 1
-++ REG_S v1, (0 * SZREG + MCONTEXT_GREGS)(a0) /* zero */
-++
-++ /* Set up the stack. */
-++ PTR_L t0, STACK_SP(a0)
-++ PTR_L t2, STACK_SIZE(a0)
-++ PTR_ADDIU t1, sp, A3OFF
-++ PTR_ADDU t0, t2
-++ and t0, ALMASK
-++ blez a2, 2f /* no arguments */
-++
-++ /* Store register arguments. */
-++ PTR_ADDIU t2, a0, MCONTEXT_GREGS + 4 * SZREG
-++ move t3, zero
-++0:
-++ addiu t3, 1
-++ REG_L v1, (t1)
-++ PTR_ADDIU t1, SZREG
-++ REG_S v1, (t2)
-++ PTR_ADDIU t2, SZREG
-++ bgeu t3, a2, 2f /* all done */
-++ bltu t3, NARGREGS, 0b /* next */
-++
-++ /* Make room for stack arguments. */
-++ PTR_SUBU t2, a2, t3
-++ PTR_SLL t2, 3
-++ PTR_SUBU t0, t2
-++ and t0, ALMASK
-++
-++ /* Store stack arguments. */
-++ move t2, t0
-++1:
-++ addiu t3, 1
-++ REG_L v1, (t1)
-++ PTR_ADDIU t1, SZREG
-++ REG_S v1, (t2)
-++ PTR_ADDIU t2, SZREG
-++ bltu t3, a2, 1b /* next */
-++
-++2:
-++#if _MIPS_SIM == _ABIO32
-++ /* Make room for a0-a3 storage. */
-++ PTR_ADDIU t0, -(NARGSAVE * SZREG)
-++#endif
-++ PTR_L v1, UCONTEXT_LINK(a0)
-++#ifdef __PIC__
-++ PTR_ADDIU t9, 99f - 98b
-++#else
-++ PTR_LA t9, 99f
-++#endif
-++ REG_S t0, (29 * SZREG + MCONTEXT_GREGS)(a0) /* sp */
-++ REG_S v1, (16 * SZREG + MCONTEXT_GREGS)(a0) /* s0 */
-++#ifdef __PIC__
-++ REG_S gp, (17 * SZREG + MCONTEXT_GREGS)(a0) /* s1 */
-++#endif
-++ REG_S t9, (31 * SZREG + MCONTEXT_GREGS)(a0) /* ra */
-++ REG_S a1, MCONTEXT_PC(a0)
-++
-++#ifdef __PIC__
-++ RESTORE_GP64
-++ PTR_ADDIU sp, FRAMESZ
-++#endif
-++ jr ra
-++
-++99:
-++#ifdef __PIC__
-++ move gp, s1
-++#endif
-++ move a0, zero
-++ beqz s0, 0f
-++
-++ /* setcontext (ucp) */
-++ move a0, s0
-++#ifdef __PIC__
-++ PTR_LA t9, JUMPTARGET (__setcontext)
-++ jalr t9
-++# if _MIPS_SIM == _ABIO32
-++ move gp, s1
-++# endif
-++#else
-++ jal JUMPTARGET (__setcontext)
-++#endif
-++ move a0, v0
-++
-++0:
-++ /* exit (a0) */
-++#ifdef __PIC__
-++ PTR_LA t9, HIDDEN_JUMPTARGET (exit)
-++ jalr t9
-++#else
-++ jal HIDDEN_JUMPTARGET (exit)
-++#endif
-++
-++ /* You don't exist, you won't feel anything. */
-++1:
-++ lb zero, (zero)
-++ b 1b
-++PSEUDO_END (__makecontext)
-++
-++weak_alias (__makecontext, makecontext)
-+diff --git a/libc/sysdeps/linux/mips/setcontext.S b/libc/sysdeps/linux/mips/setcontext.S
-+new file mode 100644
-+index 0000000..d3cde0e
-+--- /dev/null
-++++ b/libc/sysdeps/linux/mips/setcontext.S
-+@@ -0,0 +1,191 @@
-++/* Set current context.
-++ Copyright (C) 2009 Free Software Foundation, Inc.
-++ This file is part of the GNU C Library.
-++ Contributed by Maciej W. Rozycki <macro@codesourcery.com>.
-++
-++ 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/>. */
-++
-++#include <sysdep.h>
-++#include <sys/asm.h>
-++#include <sys/fpregdef.h>
-++#include <sys/regdef.h>
-++
-++#include "ucontext_i.h"
-++
-++/* int setcontext (const ucontext_t *ucp) */
-++
-++ .text
-++LOCALSZ = 0
-++ARGSZ = 0
-++MASK = 0x00000000
-++#ifdef __PIC__
-++LOCALSZ = 1 /* save gp */
-++#endif
-++#if _MIPS_SIM != _ABIO32
-++ARGSZ = 1 /* save a0 */
-++# ifdef __PIC__
-++MASK = 0x10000000
-++# endif
-++#endif
-++FRAMESZ = (((ARGSZ + LOCALSZ) * SZREG) + ALSZ) & ALMASK
-++GPOFF = FRAMESZ - ((ARGSZ + 1) * SZREG)
-++#if _MIPS_SIM != _ABIO32
-++A0OFF = FRAMESZ - (1 * SZREG) /* callee-allocated */
-++#else
-++A0OFF = FRAMESZ + (0 * SZREG) /* caller-allocated */
-++#endif
-++
-++NESTED (__setcontext, FRAMESZ, ra)
-++ .mask MASK, -(ARGSZ * SZREG)
-++ .fmask 0x00000000, 0
-++
-++#ifdef __PIC__
-++ SETUP_GP
-++#endif
-++
-++ PTR_ADDIU sp, -FRAMESZ
-++
-++#ifdef __PIC__
-++ SETUP_GP64 (GPOFF, __setcontext)
-++ SAVE_GP (GPOFF)
-++#endif
-++
-++#ifdef PROF
-++ .set noat
-++ move AT, ra
-++ jal _mcount
-++ .set at
-++#endif
-++
-++ /* Check for the magic flag. */
-++ li v0, 1
-++ REG_L v1, (0 * SZREG + MCONTEXT_GREGS)(a0) /* zero */
-++ bne v0, v1, 98f
-++
-++ REG_S a0, A0OFF(sp)
-++
-++/* rt_sigprocmask (SIG_SETMASK, &ucp->uc_sigmask, NULL, _NSIG8) */
-++ li a3, _NSIG8
-++ move a2, zero
-++ PTR_ADDU a1, a0, UCONTEXT_SIGMASK
-++ li a0, SIG_SETMASK
-++
-++ li v0, SYS_ify (rt_sigprocmask)
-++ syscall
-++ bnez a3, 99f
-++
-++ REG_L v0, A0OFF(sp)
-++
-++#ifdef __mips_hard_float
-++# if _MIPS_SIM == _ABI64
-++ l.d fs0, (24 * SZREG + MCONTEXT_FPREGS)(v0)
-++ l.d fs1, (25 * SZREG + MCONTEXT_FPREGS)(v0)
-++ l.d fs2, (26 * SZREG + MCONTEXT_FPREGS)(v0)
-++ l.d fs3, (27 * SZREG + MCONTEXT_FPREGS)(v0)
-++ l.d fs4, (28 * SZREG + MCONTEXT_FPREGS)(v0)
-++ l.d fs5, (29 * SZREG + MCONTEXT_FPREGS)(v0)
-++ l.d fs6, (30 * SZREG + MCONTEXT_FPREGS)(v0)
-++ l.d fs7, (31 * SZREG + MCONTEXT_FPREGS)(v0)
-++
-++# else /* _MIPS_SIM != _ABI64 */
-++ l.d fs0, (20 * SZREG + MCONTEXT_FPREGS)(v0)
-++ l.d fs1, (22 * SZREG + MCONTEXT_FPREGS)(v0)
-++ l.d fs2, (24 * SZREG + MCONTEXT_FPREGS)(v0)
-++ l.d fs3, (26 * SZREG + MCONTEXT_FPREGS)(v0)
-++ l.d fs4, (28 * SZREG + MCONTEXT_FPREGS)(v0)
-++ l.d fs5, (30 * SZREG + MCONTEXT_FPREGS)(v0)
-++
-++# endif /* _MIPS_SIM != _ABI64 */
-++
-++ lw v1, MCONTEXT_FPC_CSR(v0)
-++ ctc1 v1, fcr31
-++#endif /* __mips_hard_float */
-++
-++ /* Note the contents of argument registers will be random
-++ unless makecontext() has been called. */
-++ REG_L a0, (4 * SZREG + MCONTEXT_GREGS)(v0)
-++ REG_L a1, (5 * SZREG + MCONTEXT_GREGS)(v0)
-++ REG_L a2, (6 * SZREG + MCONTEXT_GREGS)(v0)
-++ REG_L a3, (7 * SZREG + MCONTEXT_GREGS)(v0)
-++#if _MIPS_SIM != _ABIO32
-++ REG_L a4, (8 * SZREG + MCONTEXT_GREGS)(v0)
-++ REG_L a5, (9 * SZREG + MCONTEXT_GREGS)(v0)
-++ REG_L a6, (10 * SZREG + MCONTEXT_GREGS)(v0)
-++ REG_L a7, (11 * SZREG + MCONTEXT_GREGS)(v0)
-++#endif
-++
-++ REG_L s0, (16 * SZREG + MCONTEXT_GREGS)(v0)
-++ REG_L s1, (17 * SZREG + MCONTEXT_GREGS)(v0)
-++ REG_L s2, (18 * SZREG + MCONTEXT_GREGS)(v0)
-++ REG_L s3, (19 * SZREG + MCONTEXT_GREGS)(v0)
-++ REG_L s4, (20 * SZREG + MCONTEXT_GREGS)(v0)
-++ REG_L s5, (21 * SZREG + MCONTEXT_GREGS)(v0)
-++ REG_L s6, (22 * SZREG + MCONTEXT_GREGS)(v0)
-++ REG_L s7, (23 * SZREG + MCONTEXT_GREGS)(v0)
-++#if ! defined (__PIC__) || _MIPS_SIM != _ABIO32
-++ REG_L gp, (28 * SZREG + MCONTEXT_GREGS)(v0)
-++#endif
-++ REG_L sp, (29 * SZREG + MCONTEXT_GREGS)(v0)
-++ REG_L fp, (30 * SZREG + MCONTEXT_GREGS)(v0)
-++ REG_L ra, (31 * SZREG + MCONTEXT_GREGS)(v0)
-++ REG_L t9, MCONTEXT_PC(v0)
-++
-++ move v0, zero
-++ jr t9
-++
-++98:
-++ /* This is a context obtained from a signal handler.
-++ Perform a full restore by pushing the context
-++ passed onto a simulated signal frame on the stack
-++ and call the signal return syscall as if a signal
-++ handler exited normally. */
-++ PTR_ADDIU sp, -((RT_SIGFRAME_SIZE + ALSZ) & ALMASK)
-++
-++ /* Only ucontext is referred to from rt_sigreturn,
-++ copy it. */
-++ PTR_ADDIU t1, sp, RT_SIGFRAME_UCONTEXT
-++ li t3, ((UCONTEXT_SIZE + SZREG - 1) / SZREG) - 1
-++0:
-++ REG_L t2, (a0)
-++ PTR_ADDIU a0, SZREG
-++ REG_S t2, (t1)
-++ PTR_ADDIU t1, SZREG
-++ .set noreorder
-++ bgtz t3, 0b
-++ addiu t3, -1
-++ .set reorder
-++
-++/* rt_sigreturn () -- no arguments, sp points to struct rt_sigframe. */
-++ li v0, SYS_ify (rt_sigreturn)
-++ syscall
-++
-++ /* Restore the stack and fall through to the error
-++ path. Successful rt_sigreturn never returns to
-++ its calling place. */
-++ PTR_ADDIU sp, ((RT_SIGFRAME_SIZE + ALSZ) & ALMASK)
-++99:
-++#ifdef __PIC__
-++ PTR_LA t9, JUMPTARGET (__syscall_error)
-++ RESTORE_GP64
-++ PTR_ADDIU sp, FRAMESZ
-++ jr t9
-++
-++#else /* ! __PIC__ */
-++
-++ j JUMPTARGET (__syscall_error)
-++#endif /* ! __PIC__ */
-++PSEUDO_END (__setcontext)
-++
-++weak_alias (__setcontext, setcontext)
-+diff --git a/libc/sysdeps/linux/mips/swapcontext.S b/libc/sysdeps/linux/mips/swapcontext.S
-+new file mode 100644
-+index 0000000..c7ac19b
-+--- /dev/null
-++++ b/libc/sysdeps/linux/mips/swapcontext.S
-+@@ -0,0 +1,211 @@
-++/* Save and set current context.
-++ Copyright (C) 2009 Free Software Foundation, Inc.
-++ This file is part of the GNU C Library.
-++ Contributed by Maciej W. Rozycki <macro@codesourcery.com>.
-++
-++ 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/>. */
-++
-++#include <sysdep.h>
-++#include <sys/asm.h>
-++#include <sys/fpregdef.h>
-++#include <sys/regdef.h>
-++
-++#include "ucontext_i.h"
-++
-++/* int swapcontext (ucontext_t *oucp, const ucontext_t *ucp) */
-++
-++ .text
-++LOCALSZ = 0
-++ARGSZ = 0
-++MASK = 0x00000000
-++#ifdef __PIC__
-++LOCALSZ = 1 /* save gp */
-++#endif
-++#if _MIPS_SIM != _ABIO32
-++ARGSZ = 1 /* save a1 */
-++# ifdef __PIC__
-++MASK = 0x10000000
-++# endif
-++#endif
-++FRAMESZ = (((ARGSZ + LOCALSZ) * SZREG) + ALSZ) & ALMASK
-++GPOFF = FRAMESZ - ((ARGSZ + 1) * SZREG)
-++#if _MIPS_SIM != _ABIO32
-++A1OFF = FRAMESZ - (1 * SZREG) /* callee-allocated */
-++#else
-++A1OFF = FRAMESZ + (1 * SZREG) /* caller-allocated */
-++#endif
-++
-++NESTED (__swapcontext, FRAMESZ, ra)
-++ .mask MASK, -(ARGSZ * SZREG)
-++ .fmask 0x00000000, 0
-++
-++#ifdef __PIC__
-++ SETUP_GP
-++
-++ move a2, sp
-++# define _SP a2
-++
-++# if _MIPS_SIM != _ABIO32
-++ move a3, gp
-++# define _GP a3
-++# endif
-++
-++ PTR_ADDIU sp, -FRAMESZ
-++ SETUP_GP64 (GPOFF, __swapcontext)
-++ SAVE_GP (GPOFF)
-++
-++#else /* ! __PIC__ */
-++# define _SP sp
-++# define _GP gp
-++
-++#endif /* ! __PIC__ */
-++
-++#ifdef PROF
-++ .set noat
-++ move AT, ra
-++ jal _mcount
-++ .set at
-++#endif
-++
-++ /* Store a magic flag. */
-++ li v1, 1
-++ REG_S v1, (0 * SZREG + MCONTEXT_GREGS)(a0) /* zero */
-++
-++ REG_S s0, (16 * SZREG + MCONTEXT_GREGS)(a0)
-++ REG_S s1, (17 * SZREG + MCONTEXT_GREGS)(a0)
-++ REG_S s2, (18 * SZREG + MCONTEXT_GREGS)(a0)
-++ REG_S s3, (19 * SZREG + MCONTEXT_GREGS)(a0)
-++ REG_S s4, (20 * SZREG + MCONTEXT_GREGS)(a0)
-++ REG_S s5, (21 * SZREG + MCONTEXT_GREGS)(a0)
-++ REG_S s6, (22 * SZREG + MCONTEXT_GREGS)(a0)
-++ REG_S s7, (23 * SZREG + MCONTEXT_GREGS)(a0)
-++#if ! defined (__PIC__) || _MIPS_SIM != _ABIO32
-++ REG_S _GP, (28 * SZREG + MCONTEXT_GREGS)(a0)
-++#endif
-++ REG_S _SP, (29 * SZREG + MCONTEXT_GREGS)(a0)
-++ REG_S fp, (30 * SZREG + MCONTEXT_GREGS)(a0)
-++ REG_S ra, (31 * SZREG + MCONTEXT_GREGS)(a0)
-++ REG_S ra, MCONTEXT_PC(a0)
-++
-++#ifdef __mips_hard_float
-++# if _MIPS_SIM == _ABI64
-++ s.d fs0, (24 * SZREG + MCONTEXT_FPREGS)(a0)
-++ s.d fs1, (25 * SZREG + MCONTEXT_FPREGS)(a0)
-++ s.d fs2, (26 * SZREG + MCONTEXT_FPREGS)(a0)
-++ s.d fs3, (27 * SZREG + MCONTEXT_FPREGS)(a0)
-++ s.d fs4, (28 * SZREG + MCONTEXT_FPREGS)(a0)
-++ s.d fs5, (29 * SZREG + MCONTEXT_FPREGS)(a0)
-++ s.d fs6, (30 * SZREG + MCONTEXT_FPREGS)(a0)
-++ s.d fs7, (31 * SZREG + MCONTEXT_FPREGS)(a0)
-++
-++# else /* _MIPS_SIM != _ABI64 */
-++ s.d fs0, (20 * SZREG + MCONTEXT_FPREGS)(a0)
-++ s.d fs1, (22 * SZREG + MCONTEXT_FPREGS)(a0)
-++ s.d fs2, (24 * SZREG + MCONTEXT_FPREGS)(a0)
-++ s.d fs3, (26 * SZREG + MCONTEXT_FPREGS)(a0)
-++ s.d fs4, (28 * SZREG + MCONTEXT_FPREGS)(a0)
-++ s.d fs5, (30 * SZREG + MCONTEXT_FPREGS)(a0)
-++
-++# endif /* _MIPS_SIM != _ABI64 */
-++
-++ cfc1 v1, fcr31
-++ sw v1, MCONTEXT_FPC_CSR(a0)
-++#endif /* __mips_hard_float */
-++
-++ REG_S a1, A1OFF(sp)
-++
-++/* rt_sigprocmask (SIG_SETMASK, &ucp->uc_sigmask, &oucp->uc_sigmask, _NSIG8) */
-++ li a3, _NSIG8
-++ PTR_ADDU a2, a0, UCONTEXT_SIGMASK
-++ PTR_ADDU a1, a1, UCONTEXT_SIGMASK
-++ li a0, SIG_SETMASK
-++
-++ li v0, SYS_ify (rt_sigprocmask)
-++ syscall
-++ bnez a3, 99f
-++
-++ REG_L v0, A1OFF(sp)
-++
-++#ifdef __mips_hard_float
-++# if _MIPS_SIM == _ABI64
-++ l.d fs0, (24 * SZREG + MCONTEXT_FPREGS)(v0)
-++ l.d fs1, (25 * SZREG + MCONTEXT_FPREGS)(v0)
-++ l.d fs2, (26 * SZREG + MCONTEXT_FPREGS)(v0)
-++ l.d fs3, (27 * SZREG + MCONTEXT_FPREGS)(v0)
-++ l.d fs4, (28 * SZREG + MCONTEXT_FPREGS)(v0)
-++ l.d fs5, (29 * SZREG + MCONTEXT_FPREGS)(v0)
-++ l.d fs6, (30 * SZREG + MCONTEXT_FPREGS)(v0)
-++ l.d fs7, (31 * SZREG + MCONTEXT_FPREGS)(v0)
-++
-++# else /* _MIPS_SIM != _ABI64 */
-++ l.d fs0, (20 * SZREG + MCONTEXT_FPREGS)(v0)
-++ l.d fs1, (22 * SZREG + MCONTEXT_FPREGS)(v0)
-++ l.d fs2, (24 * SZREG + MCONTEXT_FPREGS)(v0)
-++ l.d fs3, (26 * SZREG + MCONTEXT_FPREGS)(v0)
-++ l.d fs4, (28 * SZREG + MCONTEXT_FPREGS)(v0)
-++ l.d fs5, (30 * SZREG + MCONTEXT_FPREGS)(v0)
-++
-++# endif /* _MIPS_SIM != _ABI64 */
-++
-++ lw v1, MCONTEXT_FPC_CSR(v0)
-++ ctc1 v1, fcr31
-++#endif /* __mips_hard_float */
-++
-++ /* Note the contents of argument registers will be random
-++ unless makecontext() has been called. */
-++ REG_L a0, (4 * SZREG + MCONTEXT_GREGS)(v0)
-++ REG_L a1, (5 * SZREG + MCONTEXT_GREGS)(v0)
-++ REG_L a2, (6 * SZREG + MCONTEXT_GREGS)(v0)
-++ REG_L a3, (7 * SZREG + MCONTEXT_GREGS)(v0)
-++#if _MIPS_SIM != _ABIO32
-++ REG_L a4, (8 * SZREG + MCONTEXT_GREGS)(v0)
-++ REG_L a5, (9 * SZREG + MCONTEXT_GREGS)(v0)
-++ REG_L a6, (10 * SZREG + MCONTEXT_GREGS)(v0)
-++ REG_L a7, (11 * SZREG + MCONTEXT_GREGS)(v0)
-++#endif
-++
-++ REG_L s0, (16 * SZREG + MCONTEXT_GREGS)(v0)
-++ REG_L s1, (17 * SZREG + MCONTEXT_GREGS)(v0)
-++ REG_L s2, (18 * SZREG + MCONTEXT_GREGS)(v0)
-++ REG_L s3, (19 * SZREG + MCONTEXT_GREGS)(v0)
-++ REG_L s4, (20 * SZREG + MCONTEXT_GREGS)(v0)
-++ REG_L s5, (21 * SZREG + MCONTEXT_GREGS)(v0)
-++ REG_L s6, (22 * SZREG + MCONTEXT_GREGS)(v0)
-++ REG_L s7, (23 * SZREG + MCONTEXT_GREGS)(v0)
-++#if ! defined (__PIC__) || _MIPS_SIM != _ABIO32
-++ REG_L gp, (28 * SZREG + MCONTEXT_GREGS)(v0)
-++#endif
-++ REG_L sp, (29 * SZREG + MCONTEXT_GREGS)(v0)
-++ REG_L fp, (30 * SZREG + MCONTEXT_GREGS)(v0)
-++ REG_L ra, (31 * SZREG + MCONTEXT_GREGS)(v0)
-++ REG_L t9, MCONTEXT_PC(v0)
-++
-++ move v0, zero
-++ jr t9
-++
-++99:
-++#ifdef __PIC__
-++ PTR_LA t9, JUMPTARGET (__syscall_error)
-++ RESTORE_GP64
-++ PTR_ADDIU sp, FRAMESZ
-++ jr t9
-++
-++#else /* ! __PIC__ */
-++
-++ j JUMPTARGET (__syscall_error)
-++#endif /* ! __PIC__ */
-++PSEUDO_END (__swapcontext)
-++
-++weak_alias (__swapcontext, swapcontext)
-+diff --git a/libc/sysdeps/linux/mips/ucontext_i.sym b/libc/sysdeps/linux/mips/ucontext_i.sym
-+new file mode 100644
-+index 0000000..f14b886
-+--- /dev/null
-++++ b/libc/sysdeps/linux/mips/ucontext_i.sym
-+@@ -0,0 +1,52 @@
-++#include <inttypes.h>
-++#include <signal.h>
-++#include <stddef.h>
-++#include <sys/ucontext.h>
-++
-++#include <kernel_rt_sigframe.h>
-++
-++-- Constants used by the rt_sigprocmask call.
-++
-++SIG_BLOCK
-++SIG_SETMASK
-++
-++_NSIG8 (_NSIG / 8)
-++
-++-- Offsets of the fields in the kernel rt_sigframe_t structure.
-++#define rt_sigframe(member) offsetof (kernel_rt_sigframe_t, member)
-++
-++RT_SIGFRAME_UCONTEXT rt_sigframe (rs_uc)
-++
-++RT_SIGFRAME_SIZE sizeof (kernel_rt_sigframe_t)
-++
-++-- Offsets of the fields in the ucontext_t structure.
-++#define ucontext(member) offsetof (ucontext_t, member)
-++#define stack(member) ucontext (uc_stack.member)
-++#define mcontext(member) ucontext (uc_mcontext.member)
-++
-++UCONTEXT_FLAGS ucontext (uc_flags)
-++UCONTEXT_LINK ucontext (uc_link)
-++UCONTEXT_STACK ucontext (uc_stack)
-++UCONTEXT_MCONTEXT ucontext (uc_mcontext)
-++UCONTEXT_SIGMASK ucontext (uc_sigmask)
-++
-++STACK_SP stack (ss_sp)
-++STACK_SIZE stack (ss_size)
-++STACK_FLAGS stack (ss_flags)
-++
-++MCONTEXT_GREGS mcontext (gregs)
-++MCONTEXT_FPREGS mcontext (fpregs)
-++MCONTEXT_MDHI mcontext (mdhi)
-++MCONTEXT_HI1 mcontext (hi1)
-++MCONTEXT_HI2 mcontext (hi2)
-++MCONTEXT_HI3 mcontext (hi3)
-++MCONTEXT_MDLO mcontext (mdlo)
-++MCONTEXT_LO1 mcontext (lo1)
-++MCONTEXT_LO2 mcontext (lo2)
-++MCONTEXT_LO3 mcontext (lo3)
-++MCONTEXT_PC mcontext (pc)
-++MCONTEXT_FPC_CSR mcontext (fpc_csr)
-++MCONTEXT_USED_MATH mcontext (used_math)
-++MCONTEXT_DSP mcontext (dsp)
-++
-++UCONTEXT_SIZE sizeof (ucontext_t)
-+diff --git a/libc/sysdeps/linux/x86_64/Makefile.arch b/libc/sysdeps/linux/x86_64/Makefile.arch
-+index 7491d92..93b8259 100644
-+--- a/libc/sysdeps/linux/x86_64/Makefile.arch
-++++ b/libc/sysdeps/linux/x86_64/Makefile.arch
-+@@ -20,3 +20,8 @@ ifeq ($(UCLIBC_HAS_TLS),y)
-+ SSRC += sched_getcpu.S
-+ endif
-+ endif
-++
-++ifeq ($(UCLIBC_HAS_CONTEXT_FUNCS),y)
-++CSRC += makecontext.c
-++SSRC += setcontext.S getcontext.S swapcontext.S __start_context.S
-++endif
-+diff --git a/libc/sysdeps/linux/x86_64/__start_context.S b/libc/sysdeps/linux/x86_64/__start_context.S
-+new file mode 100644
-+index 0000000..9f2ee23
-+--- /dev/null
-++++ b/libc/sysdeps/linux/x86_64/__start_context.S
-+@@ -0,0 +1,49 @@
-++/* Copyright (C) 2002-2012 Free Software Foundation, Inc.
-++ This file is part of the GNU C Library.
-++ Contributed by Andreas Jaeger <aj@suse.de>, 2002.
-++
-++ 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/>. */
-++
-++#include <sysdep.h>
-++
-++/* This is the helper code which gets called if a function which is
-++ registered with 'makecontext' returns. In this case we have to
-++ install the context listed in the uc_link element of the context
-++ 'makecontext' manipulated at the time of the 'makecontext' call.
-++ If the pointer is NULL the process must terminate. */
-++
-++
-++ENTRY(__start_context)
-++ /* This removes the parameters passed to the function given to
-++ 'makecontext' from the stack. RBX contains the address
-++ on the stack pointer for the next context. */
-++ movq %rbx, %rsp
-++
-++ popq %rdi /* This is the next context. */
-++ cfi_adjust_cfa_offset(-8)
-++ testq %rdi, %rdi
-++ je 2f /* If it is zero exit. */
-++
-++ call JUMPTARGET(__setcontext)
-++ /* If this returns (which can happen if the syscall fails) we'll
-++ exit the program with the return error value (-1). */
-++ movq %rax,%rdi
-++
-++2:
-++ call HIDDEN_JUMPTARGET(exit)
-++ /* The 'exit' call should never return. In case it does cause
-++ the process to terminate. */
-++ hlt
-++END(__start_context)
-+diff --git a/libc/sysdeps/linux/x86_64/getcontext.S b/libc/sysdeps/linux/x86_64/getcontext.S
-+new file mode 100644
-+index 0000000..dcebc4f
-+--- /dev/null
-++++ b/libc/sysdeps/linux/x86_64/getcontext.S
-+@@ -0,0 +1,88 @@
-++/* Save current context.
-++ Copyright (C) 2002-2012 Free Software Foundation, Inc.
-++ This file is part of the GNU C Library.
-++ Contributed by Andreas Jaeger <aj@suse.de>, 2002.
-++
-++ 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/>. */
-++
-++#include <sysdep.h>
-++
-++#include "ucontext_i.h"
-++
-++/* int __getcontext (ucontext_t *ucp)
-++
-++ Saves the machine context in UCP such that when it is activated,
-++ it appears as if __getcontext() returned again.
-++
-++ This implementation is intended to be used for *synchronous* context
-++ switches only. Therefore, it does not have to save anything
-++ other than the PRESERVED state. */
-++
-++
-++ENTRY(__getcontext)
-++ /* Save the preserved registers, the registers used for passing
-++ args, and the return address. */
-++ movq %rbx, oRBX(%rdi)
-++ movq %rbp, oRBP(%rdi)
-++ movq %r12, oR12(%rdi)
-++ movq %r13, oR13(%rdi)
-++ movq %r14, oR14(%rdi)
-++ movq %r15, oR15(%rdi)
-++
-++ movq %rdi, oRDI(%rdi)
-++ movq %rsi, oRSI(%rdi)
-++ movq %rdx, oRDX(%rdi)
-++ movq %rcx, oRCX(%rdi)
-++ movq %r8, oR8(%rdi)
-++ movq %r9, oR9(%rdi)
-++
-++ movq (%rsp), %rcx
-++ movq %rcx, oRIP(%rdi)
-++ leaq 8(%rsp), %rcx /* Exclude the return address. */
-++ movq %rcx, oRSP(%rdi)
-++
-++ /* We have separate floating-point register content memory on the
-++ stack. We use the __fpregs_mem block in the context. Set the
-++ links up correctly. */
-++
-++ leaq oFPREGSMEM(%rdi), %rcx
-++ movq %rcx, oFPREGS(%rdi)
-++ /* Save the floating-point environment. */
-++ fnstenv (%rcx)
-++ fldenv (%rcx)
-++ stmxcsr oMXCSR(%rdi)
-++
-++ /* Save the current signal mask with
-++ rt_sigprocmask (SIG_BLOCK, NULL, set,_NSIG/8). */
-++ leaq oSIGMASK(%rdi), %rdx
-++ xorl %esi,%esi
-++#if SIG_BLOCK == 0
-++ xorl %edi, %edi
-++#else
-++ movl $SIG_BLOCK, %edi
-++#endif
-++ movl $_NSIG8,%r10d
-++ movl $__NR_rt_sigprocmask, %eax
-++ syscall
-++ cmpq $-4095, %rax /* Check %rax for error. */
-++ jae SYSCALL_ERROR_LABEL /* Jump to error handler if error. */
-++
-++ /* All done, return 0 for success. */
-++ xorl %eax, %eax
-++L(pseudo_end):
-++ ret
-++PSEUDO_END(__getcontext)
-++
-++weak_alias (__getcontext, getcontext)
-+diff --git a/libc/sysdeps/linux/x86_64/makecontext.c b/libc/sysdeps/linux/x86_64/makecontext.c
-+new file mode 100644
-+index 0000000..5473031
-+--- /dev/null
-++++ b/libc/sysdeps/linux/x86_64/makecontext.c
-+@@ -0,0 +1,121 @@
-++/* Create new context.
-++ Copyright (C) 2002, 2004, 2005, 2008 Free Software Foundation, Inc.
-++ This file is part of the GNU C Library.
-++ Contributed by Andreas Jaeger <aj@suse.de>, 2002.
-++
-++ 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/>. */
-++
-++#include <sysdep.h>
-++#include <stdarg.h>
-++#include <stdint.h>
-++#include <ucontext.h>
-++
-++#include "ucontext_i.h"
-++
-++/* This implementation can handle any ARGC value but only
-++ normal integer parameters.
-++ makecontext sets up a stack and the registers for the
-++ user context. The stack looks like this:
-++ +-----------------------+
-++ | next context |
-++ +-----------------------+
-++ | parameter 7-n |
-++ +-----------------------+
-++ | trampoline address |
-++ %rsp -> +-----------------------+
-++
-++ The registers are set up like this:
-++ %rdi,%rsi,%rdx,%rcx,%r8,%r9: parameter 1 to 6
-++ %rbx : address of next context
-++ %rsp : stack pointer.
-++*/
-++
-++/* XXX: This implementation currently only handles integer arguments.
-++ To handle long int and pointer arguments the va_arg arguments needs
-++ to be changed to long and also the stdlib/tst-setcontext.c file needs
-++ to be changed to pass long arguments to makecontext. */
-++
-++
-++void
-++__makecontext (ucontext_t *ucp, void (*func) (void), int argc, ...)
-++{
-++ extern void __start_context (void);
-++ greg_t *sp;
-++ unsigned int idx_uc_link;
-++ va_list ap;
-++ int i;
-++
-++ /* Generate room on stack for parameter if needed and uc_link. */
-++ sp = (greg_t *) ((uintptr_t) ucp->uc_stack.ss_sp
-++ + ucp->uc_stack.ss_size);
-++ sp -= (argc > 6 ? argc - 6 : 0) + 1;
-++ /* Align stack and make space for trampoline address. */
-++ sp = (greg_t *) ((((uintptr_t) sp) & -16L) - 8);
-++
-++ idx_uc_link = (argc > 6 ? argc - 6 : 0) + 1;
-++
-++ /* Setup context ucp. */
-++ /* Address to jump to. */
-++ ucp->uc_mcontext.gregs[REG_RIP] = (uintptr_t) func;
-++ /* Setup rbx.*/
-++ ucp->uc_mcontext.gregs[REG_RBX] = (uintptr_t) &sp[idx_uc_link];
-++ ucp->uc_mcontext.gregs[REG_RSP] = (uintptr_t) sp;
-++
-++ /* Setup stack. */
-++ sp[0] = (uintptr_t) &__start_context;
-++ sp[idx_uc_link] = (uintptr_t) ucp->uc_link;
-++
-++ va_start (ap, argc);
-++ /* Handle arguments.
-++
-++ The standard says the parameters must all be int values. This is
-++ an historic accident and would be done differently today. For
-++ x86-64 all integer values are passed as 64-bit values and
-++ therefore extending the API to copy 64-bit values instead of
-++ 32-bit ints makes sense. It does not break existing
-++ functionality and it does not violate the standard which says
-++ that passing non-int values means undefined behavior. */
-++ for (i = 0; i < argc; ++i)
-++ switch (i)
-++ {
-++ case 0:
-++ ucp->uc_mcontext.gregs[REG_RDI] = va_arg (ap, greg_t);
-++ break;
-++ case 1:
-++ ucp->uc_mcontext.gregs[REG_RSI] = va_arg (ap, greg_t);
-++ break;
-++ case 2:
-++ ucp->uc_mcontext.gregs[REG_RDX] = va_arg (ap, greg_t);
-++ break;
-++ case 3:
-++ ucp->uc_mcontext.gregs[REG_RCX] = va_arg (ap, greg_t);
-++ break;
-++ case 4:
-++ ucp->uc_mcontext.gregs[REG_R8] = va_arg (ap, greg_t);
-++ break;
-++ case 5:
-++ ucp->uc_mcontext.gregs[REG_R9] = va_arg (ap, greg_t);
-++ break;
-++ default:
-++ /* Put value on stack. */
-++ sp[i - 5] = va_arg (ap, greg_t);
-++ break;
-++ }
-++ va_end (ap);
-++
-++}
-++
-++
-++weak_alias (__makecontext, makecontext)
-+diff --git a/libc/sysdeps/linux/x86_64/setcontext.S b/libc/sysdeps/linux/x86_64/setcontext.S
-+new file mode 100644
-+index 0000000..561ab9f
-+--- /dev/null
-++++ b/libc/sysdeps/linux/x86_64/setcontext.S
-+@@ -0,0 +1,103 @@
-++/* Install given context.
-++ Copyright (C) 2002-2012 Free Software Foundation, Inc.
-++ This file is part of the GNU C Library.
-++ Contributed by Andreas Jaeger <aj@suse.de>, 2002.
-++
-++ 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/>. */
-++
-++#include <sysdep.h>
-++
-++#include "ucontext_i.h"
-++
-++
-++/* int __setcontext (const ucontext_t *ucp)
-++
-++ Restores the machine context in UCP and thereby resumes execution
-++ in that context.
-++
-++ This implementation is intended to be used for *synchronous* context
-++ switches only. Therefore, it does not have to restore anything
-++ other than the PRESERVED state. */
-++
-++ENTRY(__setcontext)
-++ /* Save argument since syscall will destroy it. */
-++ pushq %rdi
-++ cfi_adjust_cfa_offset(8)
-++
-++ /* Set the signal mask with
-++ rt_sigprocmask (SIG_SETMASK, mask, NULL, _NSIG/8). */
-++ leaq oSIGMASK(%rdi), %rsi
-++ xorl %edx, %edx
-++ movl $SIG_SETMASK, %edi
-++ movl $_NSIG8,%r10d
-++ movl $__NR_rt_sigprocmask, %eax
-++ syscall
-++ popq %rdi /* Reload %rdi, adjust stack. */
-++ cfi_adjust_cfa_offset(-8)
-++ cmpq $-4095, %rax /* Check %rax for error. */
-++ jae SYSCALL_ERROR_LABEL /* Jump to error handler if error. */
-++
-++ /* Restore the floating-point context. Not the registers, only the
-++ rest. */
-++ movq oFPREGS(%rdi), %rcx
-++ fldenv (%rcx)
-++ ldmxcsr oMXCSR(%rdi)
-++
-++
-++ /* Load the new stack pointer, the preserved registers and
-++ registers used for passing args. */
-++ cfi_def_cfa(%rdi, 0)
-++ cfi_offset(%rbx,oRBX)
-++ cfi_offset(%rbp,oRBP)
-++ cfi_offset(%r12,oR12)
-++ cfi_offset(%r13,oR13)
-++ cfi_offset(%r14,oR14)
-++ cfi_offset(%r15,oR15)
-++ cfi_offset(%rsp,oRSP)
-++ cfi_offset(%rip,oRIP)
-++
-++ movq oRSP(%rdi), %rsp
-++ movq oRBX(%rdi), %rbx
-++ movq oRBP(%rdi), %rbp
-++ movq oR12(%rdi), %r12
-++ movq oR13(%rdi), %r13
-++ movq oR14(%rdi), %r14
-++ movq oR15(%rdi), %r15
-++
-++ /* The following ret should return to the address set with
-++ getcontext. Therefore push the address on the stack. */
-++ movq oRIP(%rdi), %rcx
-++ pushq %rcx
-++
-++ movq oRSI(%rdi), %rsi
-++ movq oRDX(%rdi), %rdx
-++ movq oRCX(%rdi), %rcx
-++ movq oR8(%rdi), %r8
-++ movq oR9(%rdi), %r9
-++
-++ /* Setup finally %rdi. */
-++ movq oRDI(%rdi), %rdi
-++
-++ /* End FDE here, we fall into another context. */
-++ cfi_endproc
-++ cfi_startproc
-++
-++ /* Clear rax to indicate success. */
-++ xorl %eax, %eax
-++L(pseudo_end):
-++ ret
-++PSEUDO_END(__setcontext)
-++
-++weak_alias (__setcontext, setcontext)
-+diff --git a/libc/sysdeps/linux/x86_64/swapcontext.S b/libc/sysdeps/linux/x86_64/swapcontext.S
-+new file mode 100644
-+index 0000000..6d2ebb8
-+--- /dev/null
-++++ b/libc/sysdeps/linux/x86_64/swapcontext.S
-+@@ -0,0 +1,121 @@
-++/* Save current context and install the given one.
-++ Copyright (C) 2002-2012 Free Software Foundation, Inc.
-++ This file is part of the GNU C Library.
-++ Contributed by Andreas Jaeger <aj@suse.de>, 2002.
-++
-++ 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/>. */
-++
-++#include <sysdep.h>
-++
-++#include "ucontext_i.h"
-++
-++
-++/* int __swapcontext (ucontext_t *oucp, const ucontext_t *ucp);
-++
-++ Saves the machine context in oucp such that when it is activated,
-++ it appears as if __swapcontextt() returned again, restores the
-++ machine context in ucp and thereby resumes execution in that
-++ context.
-++
-++ This implementation is intended to be used for *synchronous* context
-++ switches only. Therefore, it does not have to save anything
-++ other than the PRESERVED state. */
-++
-++ENTRY(__swapcontext)
-++ /* Save the preserved registers, the registers used for passing args,
-++ and the return address. */
-++ movq %rbx, oRBX(%rdi)
-++ movq %rbp, oRBP(%rdi)
-++ movq %r12, oR12(%rdi)
-++ movq %r13, oR13(%rdi)
-++ movq %r14, oR14(%rdi)
-++ movq %r15, oR15(%rdi)
-++
-++ movq %rdi, oRDI(%rdi)
-++ movq %rsi, oRSI(%rdi)
-++ movq %rdx, oRDX(%rdi)
-++ movq %rcx, oRCX(%rdi)
-++ movq %r8, oR8(%rdi)
-++ movq %r9, oR9(%rdi)
-++
-++ movq (%rsp), %rcx
-++ movq %rcx, oRIP(%rdi)
-++ leaq 8(%rsp), %rcx /* Exclude the return address. */
-++ movq %rcx, oRSP(%rdi)
-++
-++ /* We have separate floating-point register content memory on the
-++ stack. We use the __fpregs_mem block in the context. Set the
-++ links up correctly. */
-++ leaq oFPREGSMEM(%rdi), %rcx
-++ movq %rcx, oFPREGS(%rdi)
-++ /* Save the floating-point environment. */
-++ fnstenv (%rcx)
-++ stmxcsr oMXCSR(%rdi)
-++
-++
-++ /* The syscall destroys some registers, save them. */
-++ movq %rsi, %r12
-++
-++ /* Save the current signal mask and install the new one with
-++ rt_sigprocmask (SIG_BLOCK, newset, oldset,_NSIG/8). */
-++ leaq oSIGMASK(%rdi), %rdx
-++ leaq oSIGMASK(%rsi), %rsi
-++ movl $SIG_SETMASK, %edi
-++ movl $_NSIG8,%r10d
-++ movl $__NR_rt_sigprocmask, %eax
-++ syscall
-++ cmpq $-4095, %rax /* Check %rax for error. */
-++ jae SYSCALL_ERROR_LABEL /* Jump to error handler if error. */
-++
-++ /* Restore destroyed registers. */
-++ movq %r12, %rsi
-++
-++ /* Restore the floating-point context. Not the registers, only the
-++ rest. */
-++ movq oFPREGS(%rsi), %rcx
-++ fldenv (%rcx)
-++ ldmxcsr oMXCSR(%rsi)
-++
-++ /* Load the new stack pointer and the preserved registers. */
-++ movq oRSP(%rsi), %rsp
-++ movq oRBX(%rsi), %rbx
-++ movq oRBP(%rsi), %rbp
-++ movq oR12(%rsi), %r12
-++ movq oR13(%rsi), %r13
-++ movq oR14(%rsi), %r14
-++ movq oR15(%rsi), %r15
-++
-++ /* The following ret should return to the address set with
-++ getcontext. Therefore push the address on the stack. */
-++ movq oRIP(%rsi), %rcx
-++ pushq %rcx
-++
-++ /* Setup registers used for passing args. */
-++ movq oRDI(%rsi), %rdi
-++ movq oRDX(%rsi), %rdx
-++ movq oRCX(%rsi), %rcx
-++ movq oR8(%rsi), %r8
-++ movq oR9(%rsi), %r9
-++
-++ /* Setup finally %rsi. */
-++ movq oRSI(%rsi), %rsi
-++
-++ /* Clear rax to indicate success. */
-++ xorl %eax, %eax
-++L(pseudo_end):
-++ ret
-++PSEUDO_END(__swapcontext)
-++
-++weak_alias (__swapcontext, swapcontext)
-+diff --git a/libc/sysdeps/linux/x86_64/ucontext_i.sym b/libc/sysdeps/linux/x86_64/ucontext_i.sym
-+new file mode 100644
-+index 0000000..af3e0e5
-+--- /dev/null
-++++ b/libc/sysdeps/linux/x86_64/ucontext_i.sym
-+@@ -0,0 +1,37 @@
-++#include <stddef.h>
-++#include <signal.h>
-++#include <sys/ucontext.h>
-++
-++--
-++
-++SIG_BLOCK
-++SIG_SETMASK
-++
-++_NSIG8 (_NSIG / 8)
-++
-++#define ucontext(member) offsetof (ucontext_t, member)
-++#define mcontext(member) ucontext (uc_mcontext.member)
-++#define mreg(reg) mcontext (gregs[REG_##reg])
-++
-++oRBP mreg (RBP)
-++oRSP mreg (RSP)
-++oRBX mreg (RBX)
-++oR8 mreg (R8)
-++oR9 mreg (R9)
-++oR10 mreg (R10)
-++oR11 mreg (R11)
-++oR12 mreg (R12)
-++oR13 mreg (R13)
-++oR14 mreg (R14)
-++oR15 mreg (R15)
-++oRDI mreg (RDI)
-++oRSI mreg (RSI)
-++oRDX mreg (RDX)
-++oRAX mreg (RAX)
-++oRCX mreg (RCX)
-++oRIP mreg (RIP)
-++oEFL mreg (EFL)
-++oFPREGS mcontext (fpregs)
-++oSIGMASK ucontext (uc_sigmask)
-++oFPREGSMEM ucontext (__fpregs_mem)
-++oMXCSR ucontext (__fpregs_mem.mxcsr)
-+diff --git a/libpthread/nptl/sysdeps/Makefile.commonarch b/libpthread/nptl/sysdeps/Makefile.commonarch
-+index 0c19216..8f5d61d 100644
-+--- a/libpthread/nptl/sysdeps/Makefile.commonarch
-++++ b/libpthread/nptl/sysdeps/Makefile.commonarch
-+@@ -47,9 +47,8 @@ $(libpthread_arch_OUT)/gen_tcb-offsets.c: $(libpthread_arch_DIR)/tcb-offsets.sym
-+ $(libpthread_arch_OUT)/gen_tcb-offsets.s: $(libpthread_arch_OUT)/gen_tcb-offsets.c | headers
-+ $(compile.c)
-+ libpthread-generated-y += $(libpthread_arch_OUT)/gen_tcb-offsets.s
-+-PTHREAD_TCB_OFFSET_MANGLE ?= -n "s/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*\$$/\#define \1 \2/p"
-+ $(libpthread_arch_OUT)/tcb-offsets.h: $(libpthread_arch_OUT)/gen_tcb-offsets.s
-+- $(do_sed) $(PTHREAD_TCB_OFFSET_MANGLE) $< > $@
-++ $(do_sed) $(PTHREAD_GENERATE_MANGLE) $< > $@
-+ @if test ! -s $@ ; then rm -f $@ ; false ; fi
-+
-+ pregen-headers-$(UCLIBC_HAS_THREADS_NATIVE) += $(libpthread_arch_OUT)/tcb-offsets.h
-+diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.commonarch b/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.commonarch
-+index 477fb1a..3372214 100644
-+--- a/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.commonarch
-++++ b/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.commonarch
-+@@ -177,8 +177,6 @@ CFLAGS-gen_pthread-pi-defines.c = -S
-+ CFLAGS-gen_structsem.c = -S
-+ CFLAGS-gen_unwindbuf.c = -S
-+
-+-PTHREAD_GENERATE_MANGLE ?= -n "s/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*\$$/\#define \1 \2/p"
-+-
-+ PTHREAD_LINUX_SYM := $(notdir $(wildcard $(libpthread_linux_DIR)/*.sym))
-+ PTHREAD_LINUX_SYM_C := $(addprefix $(libpthread_linux_OUT)/gen_,$(PTHREAD_LINUX_SYM:.sym=.c))
-+ PTHREAD_LINUX_SYM_S := $(PTHREAD_LINUX_SYM_C:.c=.s)
-+--
-+2.2.0.rc0.207.ga3a616c
-+
diff --git a/package/uclibc/uclibc.mk b/package/uclibc/uclibc.mk
-index 3180885..5fb4e56 100644
+index db741d5..efed7f7 100644
--- a/package/uclibc/uclibc.mk
+++ b/package/uclibc/uclibc.mk
-@@ -409,6 +409,8 @@ define UCLIBC_KCONFIG_FIXUP_CMDS
+@@ -358,6 +358,8 @@ define UCLIBC_KCONFIG_FIXUP_CMDS
$(call KCONFIG_SET_OPT,RUNTIME_PREFIX,"/",$(@D)/.config)
$(call KCONFIG_SET_OPT,DEVEL_PREFIX,"/usr",$(@D)/.config)
$(call KCONFIG_SET_OPT,SHARED_LIB_LOADER_PREFIX,"/lib",$(@D)/.config)
+ $(call KCONFIG_ENABLE_OPT,UCLIBC_SUSV3_LEGACY,$(@D)/.config)
+ $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_CONTEXT_FUNCS,$(@D)/.config)
$(UCLIBC_MMU_CONFIG)
- $(UCLIBC_ARM_ABI_CONFIG)
- $(UCLIBC_ARM_BX_CONFIG)
+ $(UCLIBC_ARC_TYPE_CONFIG)
+ $(UCLIBC_ARC_PAGE_SIZE_CONFIG)
--
-2.4.3.573.g4eafbef
+2.8.0.rc3.226.g39d4020
diff --git a/Build.Info/0007-dlopen-use-libname-cache-before-_dl_open-ing-files.patch b/Build.Info/0007-dlopen-use-libname-cache-before-_dl_open-ing-files.patch
new file mode 100644
index 0000000..eb9d8fb
--- /dev/null
+++ b/Build.Info/0007-dlopen-use-libname-cache-before-_dl_open-ing-files.patch
@@ -0,0 +1,48 @@
+From 9ba069f8859789c85b96aaa17876534b0f3b3058 Mon Sep 17 00:00:00 2001
+From: Dan Padgett <dpadgett@google.com>
+Date: Thu, 24 Mar 2016 16:20:02 -0700
+Subject: [PATCH 07/17] dlopen: use libname cache before _dl_open-ing files
+
+---
+ .../uclibc-0071-dlopen-use-libname-cache.patch | 29 ++++++++++++++++++++++
+ 1 file changed, 29 insertions(+)
+ create mode 100644 package/uclibc/uclibc-0071-dlopen-use-libname-cache.patch
+
+diff --git a/package/uclibc/uclibc-0071-dlopen-use-libname-cache.patch b/package/uclibc/uclibc-0071-dlopen-use-libname-cache.patch
+new file mode 100644
+index 0000000..5d295cf
+--- /dev/null
++++ b/package/uclibc/uclibc-0071-dlopen-use-libname-cache.patch
+@@ -0,0 +1,29 @@
++commit d0b1894a40fff961c44a2e44840882e5e9048abf
++Author: Stephen McGruer <smcgruer@google.com>
++Date: Thu Oct 29 17:50:44 2015 -0400
++
++ [PATCH] dlopen: use libname cache before _dl_open-ing files
++
++diff --git a/ldso/ldso/dl-elf.c b/ldso/ldso/dl-elf.c
++index 5631905..282a645 100644
++--- a/ldso/ldso/dl-elf.c
+++++ b/ldso/ldso/dl-elf.c
++@@ -465,6 +465,18 @@ struct elf_resolve *_dl_load_elf_shared_library(unsigned rflags,
++ DL_LOADADDR_TYPE lib_loadaddr;
++ DL_INIT_LOADADDR_EXTRA_DECLS
++
+++ /* We can easily pre-check for already loaded absolute-path libraries. */
+++ /* TODO(smcgruer): Determine if we can handle non-absolute paths. */
+++ if (_dl_strlen(libname) && libname[0] == '/') {
+++ for (tpnt = _dl_loaded_modules; tpnt; tpnt = tpnt->next) {
+++ if (_dl_strcmp(tpnt->libname, libname) == 0) {
+++ /* Already loaded */
+++ tpnt->usage_count++;
+++ return tpnt;
+++ }
+++ }
+++ }
+++
++ libaddr = 0;
++ infile = _dl_open(libname, O_RDONLY, 0);
++ if (infile < 0) {
+--
+2.8.0.rc3.226.g39d4020
+
diff --git a/Build.Info/0007-dlopen-use-libname-cache.patch b/Build.Info/0007-dlopen-use-libname-cache.patch
deleted file mode 100644
index 7dcb1a0..0000000
--- a/Build.Info/0007-dlopen-use-libname-cache.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 4b8557ec7a4207a46bcac062c857066e1909ce33 Mon Sep 17 00:00:00 2001
-From: Stephen McGruer <smcgruer@google.com>
-Date: Thu, 29 Oct 2015 18:04:30 -0400
-Subject: [PATCH] dlopen: use libname cache before _dl_open-ing files
-
----
- .../uclibc-0071-dlopen-use-libname-cache.patch | 29 ++++++++++++++++++++++
- 1 file changed, 29 insertions(+)
- create mode 100644 package/uclibc/0.9.33.2/uclibc-0071-dlopen-use-libname-cache.patch
-
-diff --git a/package/uclibc/0.9.33.2/uclibc-0071-dlopen-use-libname-cache.patch b/package/uclibc/0.9.33.2/uclibc-0071-dlopen-use-libname-cache.patch
-new file mode 100644
-index 0000000..5d295cf
---- /dev/null
-+++ b/package/uclibc/0.9.33.2/uclibc-0071-dlopen-use-libname-cache.patch
-@@ -0,0 +1,29 @@
-+commit d0b1894a40fff961c44a2e44840882e5e9048abf
-+Author: Stephen McGruer <smcgruer@google.com>
-+Date: Thu Oct 29 17:50:44 2015 -0400
-+
-+ [PATCH] dlopen: use libname cache before _dl_open-ing files
-+
-+diff --git a/ldso/ldso/dl-elf.c b/ldso/ldso/dl-elf.c
-+index 5631905..282a645 100644
-+--- a/ldso/ldso/dl-elf.c
-++++ b/ldso/ldso/dl-elf.c
-+@@ -465,6 +465,18 @@ struct elf_resolve *_dl_load_elf_shared_library(unsigned rflags,
-+ DL_LOADADDR_TYPE lib_loadaddr;
-+ DL_INIT_LOADADDR_EXTRA_DECLS
-+
-++ /* We can easily pre-check for already loaded absolute-path libraries. */
-++ /* TODO(smcgruer): Determine if we can handle non-absolute paths. */
-++ if (_dl_strlen(libname) && libname[0] == '/') {
-++ for (tpnt = _dl_loaded_modules; tpnt; tpnt = tpnt->next) {
-++ if (_dl_strcmp(tpnt->libname, libname) == 0) {
-++ /* Already loaded */
-++ tpnt->usage_count++;
-++ return tpnt;
-++ }
-++ }
-++ }
-++
-+ libaddr = 0;
-+ infile = _dl_open(libname, O_RDONLY, 0);
-+ if (infile < 0) {
---
-2.6.0.rc2.230.g3dd15c0
-
diff --git a/Build.Info/0008-Add-patch-Implement-sysconf-_SC_PHYS_PAGES-with-sysi.patch b/Build.Info/0008-Add-patch-Implement-sysconf-_SC_PHYS_PAGES-with-sysi.patch
new file mode 100644
index 0000000..52a9308
--- /dev/null
+++ b/Build.Info/0008-Add-patch-Implement-sysconf-_SC_PHYS_PAGES-with-sysi.patch
@@ -0,0 +1,57 @@
+From 0f3fb0f1b8360ceefaf4d6b207fa700a7a3f99f8 Mon Sep 17 00:00:00 2001
+From: Dan Padgett <dpadgett@google.com>
+Date: Thu, 24 Mar 2016 16:29:43 -0700
+Subject: [PATCH 08/17] Add patch: Implement sysconf _SC_PHYS_PAGES with
+ sysinfo
+
+---
+ .../uclibc/uclibc-0072-sysconf-sc-phys-page.patch | 37 ++++++++++++++++++++++
+ 1 file changed, 37 insertions(+)
+ create mode 100644 package/uclibc/uclibc-0072-sysconf-sc-phys-page.patch
+
+diff --git a/package/uclibc/uclibc-0072-sysconf-sc-phys-page.patch b/package/uclibc/uclibc-0072-sysconf-sc-phys-page.patch
+new file mode 100644
+index 0000000..426c057
+--- /dev/null
++++ b/package/uclibc/uclibc-0072-sysconf-sc-phys-page.patch
+@@ -0,0 +1,37 @@
++commit 0a92bc274cf482bab5596c86e0c7e5c466a8f850
++Author: Jean-Francois Thibert <jfthibert@google.com>
++Date: Thu Nov 5 14:37:45 2015 -0500
++
++ Implement sysconf _SC_PHYS_PAGES with sysinfo
++
++diff --git a/libc/unistd/sysconf.c b/libc/unistd/sysconf.c
++index 503b395..06074c3 100644
++--- a/libc/unistd/sysconf.c
+++++ b/libc/unistd/sysconf.c
++@@ -112,6 +112,14 @@ static int nprocessors_conf(void)
++ return ret != 0 ? ret : 1;
++ }
++
+++static int get_phys_pages(void)
+++{
+++ struct sysinfo si;
+++ if (sysinfo(&si) == 0) {
+++ return si.totalram / getpagesize() * si.mem_unit;
+++ }
+++ return -1;
+++}
++
++ #ifndef __UCLIBC_CLK_TCK_CONST
++ #error __UCLIBC_CLK_TCK_CONST not defined!
++@@ -747,11 +755,7 @@ long int sysconf(int name)
++ RETURN_FUNCTION(nprocessors_onln());
++
++ case _SC_PHYS_PAGES:
++-#if 0
++ RETURN_FUNCTION(get_phys_pages());
++-#else
++- RETURN_NEG_1;
++-#endif
++
++ case _SC_AVPHYS_PAGES:
++ #if 0
+--
+2.8.0.rc3.226.g39d4020
+
diff --git a/Build.Info/0008-sysconf_SC_PHYS_PAGES.patch b/Build.Info/0008-sysconf_SC_PHYS_PAGES.patch
deleted file mode 100644
index 51d24c9..0000000
--- a/Build.Info/0008-sysconf_SC_PHYS_PAGES.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From ed9ef51dc1ea7ad7147cd67be92e4ae6e07055ec Mon Sep 17 00:00:00 2001
-From: Jean-Francois Thibert <jfthibert@google.com>
-Date: Thu, 5 Nov 2015 15:11:32 -0500
-Subject: [PATCH] Add patch: Implement sysconf _SC_PHYS_PAGES with sysinfo
-
-
-diff --git a/package/uclibc/0.9.33.2/uclibc-0072-sysconf-sc-phys-page.patch b/package/uclibc/0.9.33.2/uclibc-0072-sysconf-sc-phys-page.patch
-new file mode 100644
-index 0000000..426c057
---- /dev/null
-+++ b/package/uclibc/0.9.33.2/uclibc-0072-sysconf-sc-phys-page.patch
-@@ -0,0 +1,37 @@
-+commit 0a92bc274cf482bab5596c86e0c7e5c466a8f850
-+Author: Jean-Francois Thibert <jfthibert@google.com>
-+Date: Thu Nov 5 14:37:45 2015 -0500
-+
-+ Implement sysconf _SC_PHYS_PAGES with sysinfo
-+
-+diff --git a/libc/unistd/sysconf.c b/libc/unistd/sysconf.c
-+index 503b395..06074c3 100644
-+--- a/libc/unistd/sysconf.c
-++++ b/libc/unistd/sysconf.c
-+@@ -112,6 +112,14 @@ static int nprocessors_conf(void)
-+ return ret != 0 ? ret : 1;
-+ }
-+
-++static int get_phys_pages(void)
-++{
-++ struct sysinfo si;
-++ if (sysinfo(&si) == 0) {
-++ return si.totalram / getpagesize() * si.mem_unit;
-++ }
-++ return -1;
-++}
-+
-+ #ifndef __UCLIBC_CLK_TCK_CONST
-+ #error __UCLIBC_CLK_TCK_CONST not defined!
-+@@ -747,11 +755,7 @@ long int sysconf(int name)
-+ RETURN_FUNCTION(nprocessors_onln());
-+
-+ case _SC_PHYS_PAGES:
-+-#if 0
-+ RETURN_FUNCTION(get_phys_pages());
-+-#else
-+- RETURN_NEG_1;
-+-#endif
-+
-+ case _SC_AVPHYS_PAGES:
-+ #if 0
diff --git a/Build.Info/0009-Build-gold-on-mips.patch b/Build.Info/0009-Build-gold-on-mips.patch
new file mode 100644
index 0000000..f858246
--- /dev/null
+++ b/Build.Info/0009-Build-gold-on-mips.patch
@@ -0,0 +1,49 @@
+From 235e06dbc6073964298d556eb827e8087b07d7fe Mon Sep 17 00:00:00 2001
+From: Dan Padgett <dpadgett@google.com>
+Date: Thu, 24 Mar 2016 16:39:17 -0700
+Subject: [PATCH 09/17] Build gold on mips
+
+---
+ package/binutils/2.25.1/700-enable-gold-on-mips.patch | 11 +++++++++++
+ package/binutils/2.25.1/701-ignore-ld-assert.patch | 11 +++++++++++
+ 2 files changed, 22 insertions(+)
+ create mode 100644 package/binutils/2.25.1/700-enable-gold-on-mips.patch
+ create mode 100644 package/binutils/2.25.1/701-ignore-ld-assert.patch
+
+diff --git a/package/binutils/2.25.1/700-enable-gold-on-mips.patch b/package/binutils/2.25.1/700-enable-gold-on-mips.patch
+new file mode 100644
+index 0000000..85edcfd
+--- /dev/null
++++ b/package/binutils/2.25.1/700-enable-gold-on-mips.patch
+@@ -0,0 +1,11 @@
++--- a/configure
+++++ b/configure
++@@ -2972,7 +2972,7 @@ case "${ENABLE_GOLD}" in
++ # Check for target supported by gold.
++ case "${target}" in
++ i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-* | arm*-*-* \
++- | aarch64*-*-* | tilegx*-*-*)
+++ | aarch64*-*-* | tilegx*-*-* | mips*-*-*)
++ configdirs="$configdirs gold"
++ if test x${ENABLE_GOLD} = xdefault; then
++ default_ld=gold
+diff --git a/package/binutils/2.25.1/701-ignore-ld-assert.patch b/package/binutils/2.25.1/701-ignore-ld-assert.patch
+new file mode 100644
+index 0000000..e85f877
+--- /dev/null
++++ b/package/binutils/2.25.1/701-ignore-ld-assert.patch
+@@ -0,0 +1,11 @@
++--- a/ld/ldmain.c 2015-11-11 16:48:13.241128312 -0500
+++++ b/ld/ldmain.c 2015-11-11 16:41:43.982724231 -0500
++@@ -216,7 +216,8 @@
++ /* We want to notice and fail on those nasty BFD assertions which are
++ likely to signal incorrect output being generated but otherwise may
++ leave no trace. */
++- default_bfd_assert_handler = bfd_set_assert_handler (ld_bfd_assert_handler);
+++ /* TODO(jfthibert) Re-enable assert failures once openssl issues are resolved */
+++ /*default_bfd_assert_handler = bfd_set_assert_handler (ld_bfd_assert_handler);*/
++
++ xatexit (ld_cleanup);
+--
+2.8.0.rc3.226.g39d4020
+
diff --git a/Build.Info/0009-binutils-2.25.1-with-gold.patch b/Build.Info/0009-binutils-2.25.1-with-gold.patch
deleted file mode 100644
index f78fb20..0000000
--- a/Build.Info/0009-binutils-2.25.1-with-gold.patch
+++ /dev/null
@@ -1,483 +0,0 @@
-From ddc5cf60a8a32912fc166c806a316cf379a67bef Mon Sep 17 00:00:00 2001
-From: Jean-Francois Thibert <jfthibert@google.com>
-Date: Tue, 10 Nov 2015 15:48:08 -0500
-Subject: [PATCH] Add binutils 2.25.1 and build gold on mips
-
-
-diff --git a/package/binutils/2.25.1/120-sh-conf.patch b/package/binutils/2.25.1/120-sh-conf.patch
-new file mode 100644
-index 0000000..ea3d1b6
---- /dev/null
-+++ b/package/binutils/2.25.1/120-sh-conf.patch
-@@ -0,0 +1,29 @@
-+r10231 | lethal | 2005-05-02 09:58:00 -0400 (Mon, 02 May 2005) | 13 lines
-+
-+Likewise, binutils has no idea about any of these new targets either, so we
-+fix that up too.. now we're able to actually build a real toolchain for
-+sh2a_nofpu- and other more ineptly named toolchains (and yes, there are more
-+inept targets than that one, really. Go look, I promise).
-+
-+--- a/configure
-++++ b/configure
-+@@ -1495,7 +1495,7 @@
-+ mips*-*-*)
-+ noconfigdirs="$noconfigdirs gprof"
-+ ;;
-+- sh-*-* | sh64-*-*)
-++ sh*-*-* | sh64-*-*)
-+ case "${target}" in
-+ sh*-*-elf)
-+ ;;
-+--- a/configure.ac
-++++ b/configure.ac
-+@@ -712,7 +712,7 @@
-+ mips*-*-*)
-+ noconfigdirs="$noconfigdirs gprof"
-+ ;;
-+- sh-*-* | sh64-*-*)
-++ sh*-*-* | sh64-*-*)
-+ case "${target}" in
-+ sh*-*-elf)
-+ ;;
-diff --git a/package/binutils/2.25.1/300-001_ld_makefile_patch.patch b/package/binutils/2.25.1/300-001_ld_makefile_patch.patch
-new file mode 100644
-index 0000000..5cb0f61
---- /dev/null
-+++ b/package/binutils/2.25.1/300-001_ld_makefile_patch.patch
-@@ -0,0 +1,24 @@
-+diff -u binutils-2.17.50.0.17.oorig/ld/Makefile.am binutils-2.17.50.0.17/ld/Makefile.am
-+--- binutils-2.17.50.0.17.oorig/ld/Makefile.am 2007-06-18 19:29:29.000000000 +0200
-++++ binutils-2.17.50.0.17/ld/Makefile.am 2007-06-25 10:00:36.000000000 +0200
-+@@ -18,7 +18,7 @@
-+ # We put the scripts in the directory $(scriptdir)/ldscripts.
-+ # We can't put the scripts in $(datadir) because the SEARCH_DIR
-+ # directives need to be different for native and cross linkers.
-+-scriptdir = $(tooldir)/lib
-++scriptdir = $(libdir)
-+
-+ EMUL = @EMUL@
-+ EMULATION_OFILES = @EMULATION_OFILES@
-+diff -u binutils-2.17.50.0.17.oorig/ld/Makefile.in binutils-2.17.50.0.17/ld/Makefile.in
-+--- binutils-2.17.50.0.17.oorig/ld/Makefile.in 2007-06-18 19:29:29.000000000 +0200
-++++ binutils-2.17.50.0.17/ld/Makefile.in 2007-06-25 10:00:36.000000000 +0200
-+@@ -287,7 +287,7 @@
-+ # We put the scripts in the directory $(scriptdir)/ldscripts.
-+ # We can't put the scripts in $(datadir) because the SEARCH_DIR
-+ # directives need to be different for native and cross linkers.
-+-scriptdir = $(tooldir)/lib
-++scriptdir = $(libdir)
-+ BASEDIR = $(srcdir)/..
-+ BFDDIR = $(BASEDIR)/bfd
-+ INCDIR = $(BASEDIR)/include
-diff --git a/package/binutils/2.25.1/300-012_check_ldrunpath_length.patch b/package/binutils/2.25.1/300-012_check_ldrunpath_length.patch
-new file mode 100644
-index 0000000..df78310
---- /dev/null
-+++ b/package/binutils/2.25.1/300-012_check_ldrunpath_length.patch
-@@ -0,0 +1,21 @@
-+diff -Nura binutils-2.21.orig/ld/emultempl/elf32.em binutils-2.21/ld/emultempl/elf32.em
-+--- binutils-2.21.orig/ld/emultempl/elf32.em 2010-10-29 09:10:36.000000000 -0300
-++++ binutils-2.21/ld/emultempl/elf32.em 2010-12-10 09:26:56.746102724 -0300
-+@@ -1270,6 +1270,8 @@
-+ && command_line.rpath == NULL)
-+ {
-+ lib_path = (const char *) getenv ("LD_RUN_PATH");
-++ if ((lib_path) && (strlen (lib_path) == 0))
-++ lib_path = NULL;
-+ if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
-+ force))
-+ break;
-+@@ -1497,6 +1499,8 @@
-+ rpath = command_line.rpath;
-+ if (rpath == NULL)
-+ rpath = (const char *) getenv ("LD_RUN_PATH");
-++ if ((rpath) && (strlen (rpath) == 0))
-++ rpath = NULL;
-+
-+ for (abfd = link_info.input_bfds; abfd; abfd = abfd->link_next)
-+ if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
-diff --git a/package/binutils/2.25.1/500-sysroot.patch b/package/binutils/2.25.1/500-sysroot.patch
-new file mode 100644
-index 0000000..e49c795
---- /dev/null
-+++ b/package/binutils/2.25.1/500-sysroot.patch
-@@ -0,0 +1,37 @@
-+Signed-off-by: Sven Rebhan <odinshorse@googlemail.com>
-+
-+Always try to prepend the sysroot prefix to absolute filenames first.
-+
-+http://bugs.gentoo.org/275666
-+http://sourceware.org/bugzilla/show_bug.cgi?id=10340
-+
-+--- a/ld/ldfile.c
-++++ b/ld/ldfile.c
-+@@ -308,18 +308,25 @@
-+ directory first. */
-+ if (! entry->flags.maybe_archive)
-+ {
-+- if (entry->flags.sysrooted && IS_ABSOLUTE_PATH (entry->filename))
-++ /* For absolute pathnames, try to always open the file in the
-++ sysroot first. If this fails, try to open the file at the
-++ given location. */
-++ entry->flags.sysrooted = is_sysrooted_pathname (entry->filename);
-++ if (!entry->flags.sysrooted && IS_ABSOLUTE_PATH (entry->filename)
-++ && ld_sysroot)
-+ {
-+ char *name = concat (ld_sysroot, entry->filename,
-+ (const char *) NULL);
-+ if (ldfile_try_open_bfd (name, entry))
-+ {
-+ entry->filename = name;
-++ entry->flags.sysrooted = TRUE;
-+ return TRUE;
-+ }
-+ free (name);
-+ }
-+- else if (ldfile_try_open_bfd (entry->filename, entry))
-++
-++ if (ldfile_try_open_bfd (entry->filename, entry))
-+ return TRUE;
-+
-+ if (IS_ABSOLUTE_PATH (entry->filename))
-diff --git a/package/binutils/2.25.1/600-poison-system-directories.patch b/package/binutils/2.25.1/600-poison-system-directories.patch
-new file mode 100644
-index 0000000..c14c850
---- /dev/null
-+++ b/package/binutils/2.25.1/600-poison-system-directories.patch
-@@ -0,0 +1,277 @@
-+Patch adapted to binutils 2.23.2 and extended to use
-+BR_COMPILER_PARANOID_UNSAFE_PATH by Thomas Petazzoni.
-+
-+[Gustavo: adapt to binutils 2.25]
-+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-+Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-+
-+Upstream-Status: Inappropriate [distribution: codesourcery]
-+
-+Patch originally created by Mark Hatle, forward-ported to
-+binutils 2.21 by Scott Garman.
-+
-+purpose: warn for uses of system directories when cross linking
-+
-+Code Merged from Sourcery G++ binutils 2.19 - 4.4-277
-+
-+2008-07-02 Joseph Myers <joseph@codesourcery.com>
-+
-+ ld/
-+ * ld.h (args_type): Add error_poison_system_directories.
-+ * ld.texinfo (--error-poison-system-directories): Document.
-+ * ldfile.c (ldfile_add_library_path): Check
-+ command_line.error_poison_system_directories.
-+ * ldmain.c (main): Initialize
-+ command_line.error_poison_system_directories.
-+ * lexsup.c (enum option_values): Add
-+ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES.
-+ (ld_options): Add --error-poison-system-directories.
-+ (parse_args): Handle new option.
-+
-+2007-06-13 Joseph Myers <joseph@codesourcery.com>
-+
-+ ld/
-+ * config.in: Regenerate.
-+ * ld.h (args_type): Add poison_system_directories.
-+ * ld.texinfo (--no-poison-system-directories): Document.
-+ * ldfile.c (ldfile_add_library_path): Check
-+ command_line.poison_system_directories.
-+ * ldmain.c (main): Initialize
-+ command_line.poison_system_directories.
-+ * lexsup.c (enum option_values): Add
-+ OPTION_NO_POISON_SYSTEM_DIRECTORIES.
-+ (ld_options): Add --no-poison-system-directories.
-+ (parse_args): Handle new option.
-+
-+2007-04-20 Joseph Myers <joseph@codesourcery.com>
-+
-+ Merge from Sourcery G++ binutils 2.17:
-+
-+ 2007-03-20 Joseph Myers <joseph@codesourcery.com>
-+ Based on patch by Mark Hatle <mark.hatle@windriver.com>.
-+ ld/
-+ * configure.ac (--enable-poison-system-directories): New option.
-+ * configure, config.in: Regenerate.
-+ * ldfile.c (ldfile_add_library_path): If
-+ ENABLE_POISON_SYSTEM_DIRECTORIES defined, warn for use of /lib,
-+ /usr/lib, /usr/local/lib or /usr/X11R6/lib.
-+
-+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-+Signed-off-by: Scott Garman <scott.a.garman@intel.com>
-+
-+diff -Nura a/ld/config.in b/ld/config.in
-+--- a/ld/config.in 2014-10-14 04:32:04.000000000 -0300
-++++ b/ld/config.in 2014-12-24 08:07:28.997918918 -0300
-+@@ -11,6 +11,9 @@
-+ language is requested. */
-+ #undef ENABLE_NLS
-+
-++/* Define to warn for use of native system library directories */
-++#undef ENABLE_POISON_SYSTEM_DIRECTORIES
-++
-+ /* Additional extension a shared object might have. */
-+ #undef EXTRA_SHLIB_EXTENSION
-+
-+diff -Nura a/ld/configure b/ld/configure
-+--- a/ld/configure 2014-12-23 11:22:07.000000000 -0300
-++++ b/ld/configure 2014-12-24 08:07:29.002919088 -0300
-+@@ -783,6 +783,7 @@
-+ enable_targets
-+ enable_64_bit_bfd
-+ with_sysroot
-++enable_poison_system_directories
-+ enable_gold
-+ enable_got
-+ enable_werror
-+@@ -1439,6 +1440,8 @@
-+ --disable-largefile omit support for large files
-+ --enable-targets alternative target configurations
-+ --enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes)
-++ --enable-poison-system-directories
-++ warn for use of native system library directories
-+ --enable-gold[=ARG] build gold [ARG={default,yes,no}]
-+ --enable-got=<type> GOT handling scheme (target, single, negative,
-+ multigot)
-+@@ -15487,7 +15490,18 @@
-+ fi
-+
-+
-++# Check whether --enable-poison-system-directories was given.
-++if test "${enable_poison_system_directories+set}" = set; then :
-++ enableval=$enable_poison_system_directories;
-++else
-++ enable_poison_system_directories=no
-++fi
-++
-++if test "x${enable_poison_system_directories}" = "xyes"; then
-+
-++$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h
-++
-++fi
-+
-+ # Check whether --enable-got was given.
-+ if test "${enable_got+set}" = set; then :
-+diff -Nura a/ld/configure.ac b/ld/configure.ac
-+--- a/ld/configure.ac 2014-10-14 04:32:04.000000000 -0300
-++++ b/ld/configure.ac 2014-12-24 08:07:29.002919088 -0300
-+@@ -94,6 +94,16 @@
-+ AC_SUBST(TARGET_SYSTEM_ROOT)
-+ AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
-+
-++AC_ARG_ENABLE([poison-system-directories],
-++ AS_HELP_STRING([--enable-poison-system-directories],
-++ [warn for use of native system library directories]),,
-++ [enable_poison_system_directories=no])
-++if test "x${enable_poison_system_directories}" = "xyes"; then
-++ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],
-++ [1],
-++ [Define to warn for use of native system library directories])
-++fi
-++
-+ dnl Use --enable-gold to decide if this linker should be the default.
-+ dnl "install_as_default" is set to false if gold is the default linker.
-+ dnl "installed_linker" is the installed BFD linker name.
-+diff -Nura a/ld/ldfile.c b/ld/ldfile.c
-+--- a/ld/ldfile.c 2014-10-14 04:32:04.000000000 -0300
-++++ b/ld/ldfile.c 2014-12-24 08:07:29.002919088 -0300
-+@@ -114,6 +114,23 @@
-+ new_dirs->name = concat (ld_sysroot, name + 1, (const char *) NULL);
-+ else
-+ new_dirs->name = xstrdup (name);
-++
-++#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES
-++ if (command_line.poison_system_directories
-++ && ((!strncmp (name, "/lib", 4))
-++ || (!strncmp (name, "/usr/lib", 8))
-++ || (!strncmp (name, "/usr/local/lib", 14))
-++ || (!strncmp (name, "/usr/X11R6/lib", 14))))
-++ {
-++ if (command_line.error_poison_system_directories)
-++ einfo (_("%X%P: error: library search path \"%s\" is unsafe for "
-++ "cross-compilation\n"), name);
-++ else
-++ einfo (_("%P: warning: library search path \"%s\" is unsafe for "
-++ "cross-compilation\n"), name);
-++ }
-++#endif
-++
-+ }
-+
-+ /* Try to open a BFD for a lang_input_statement. */
-+diff -Nura a/ld/ld.h b/ld/ld.h
-+--- a/ld/ld.h 2014-10-14 04:32:04.000000000 -0300
-++++ b/ld/ld.h 2014-12-24 08:07:29.003919122 -0300
-+@@ -161,6 +161,14 @@
-+ /* If TRUE we'll just print the default output on stdout. */
-+ bfd_boolean print_output_format;
-+
-++ /* If TRUE (the default) warn for uses of system directories when
-++ cross linking. */
-++ bfd_boolean poison_system_directories;
-++
-++ /* If TRUE (default FALSE) give an error for uses of system
-++ directories when cross linking instead of a warning. */
-++ bfd_boolean error_poison_system_directories;
-++
-+ /* Big or little endian as set on command line. */
-+ enum endian_enum endian;
-+
-+diff -Nura a/ld/ldlex.h b/ld/ldlex.h
-+--- a/ld/ldlex.h 2014-11-04 06:54:41.000000000 -0300
-++++ b/ld/ldlex.h 2014-12-24 08:09:47.477644294 -0300
-+@@ -140,6 +140,8 @@
-+ OPTION_IGNORE_UNRESOLVED_SYMBOL,
-+ OPTION_PUSH_STATE,
-+ OPTION_POP_STATE,
-++ OPTION_NO_POISON_SYSTEM_DIRECTORIES,
-++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES,
-+ };
-+
-+ /* The initial parser states. */
-+diff -Nura a/ld/ldmain.c b/ld/ldmain.c
-+--- a/ld/ldmain.c 2014-10-14 04:32:04.000000000 -0300
-++++ b/ld/ldmain.c 2014-12-24 08:07:29.003919122 -0300
-+@@ -266,6 +266,8 @@
-+ command_line.warn_mismatch = TRUE;
-+ command_line.warn_search_mismatch = TRUE;
-+ command_line.check_section_addresses = -1;
-++ command_line.poison_system_directories = TRUE;
-++ command_line.error_poison_system_directories = FALSE;
-+
-+ /* We initialize DEMANGLING based on the environment variable
-+ COLLECT_NO_DEMANGLE. The gcc collect2 program will demangle the
-+diff -Nura a/ld/ld.texinfo b/ld/ld.texinfo
-+--- a/ld/ld.texinfo 2014-12-23 05:47:10.000000000 -0300
-++++ b/ld/ld.texinfo 2014-12-24 08:07:29.005919191 -0300
-+@@ -2212,6 +2212,18 @@
-+
-+ Passing @code{none} for @var{style} disables the setting from any
-+ @code{--build-id} options earlier on the command line.
-++
-++@kindex --no-poison-system-directories
-++@item --no-poison-system-directories
-++Do not warn for @option{-L} options using system directories such as
-++@file{/usr/lib} when cross linking. This option is intended for use
-++in chroot environments when such directories contain the correct
-++libraries for the target system rather than the host.
-++
-++@kindex --error-poison-system-directories
-++@item --error-poison-system-directories
-++Give an error instead of a warning for @option{-L} options using
-++system directories when cross linking.
-+ @end table
-+
-+ @c man end
-+diff -Nura a/ld/lexsup.c b/ld/lexsup.c
-+--- a/ld/lexsup.c 2014-11-04 06:54:41.000000000 -0300
-++++ b/ld/lexsup.c 2014-12-24 08:48:50.136583414 -0300
-+@@ -513,6 +513,14 @@
-+ { {"pop-state", no_argument, NULL, OPTION_POP_STATE},
-+ '\0', NULL, N_("Pop state of flags governing input file handling"),
-+ TWO_DASHES },
-++ { {"no-poison-system-directories", no_argument, NULL,
-++ OPTION_NO_POISON_SYSTEM_DIRECTORIES},
-++ '\0', NULL, N_("Do not warn for -L options using system directories"),
-++ TWO_DASHES },
-++ { {"error-poison-system-directories", no_argument, NULL,
-++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES},
-++ '\0', NULL, N_("Give an error for -L options using system directories"),
-++ TWO_DASHES },
-+ };
-+
-+ #define OPTION_COUNT ARRAY_SIZE (ld_options)
-+@@ -525,6 +533,7 @@
-+ int ingroup = 0;
-+ char *default_dirlist = NULL;
-+ char *shortopts;
-++ char *BR_paranoid_env;
-+ struct option *longopts;
-+ struct option *really_longopts;
-+ int last_optind;
-+@@ -1458,6 +1467,14 @@
-+ }
-+ break;
-+
-++ case OPTION_NO_POISON_SYSTEM_DIRECTORIES:
-++ command_line.poison_system_directories = FALSE;
-++ break;
-++
-++ case OPTION_ERROR_POISON_SYSTEM_DIRECTORIES:
-++ command_line.error_poison_system_directories = TRUE;
-++ break;
-++
-+ case OPTION_PUSH_STATE:
-+ input_flags.pushed = xmemdup (&input_flags,
-+ sizeof (input_flags),
-+@@ -1483,6 +1500,10 @@
-+ command_line.soname = NULL;
-+ }
-+
-++ BR_paranoid_env = getenv("BR_COMPILER_PARANOID_UNSAFE_PATH");
-++ if (BR_paranoid_env && strlen(BR_paranoid_env) > 0)
-++ command_line.error_poison_system_directories = TRUE;
-++
-+ while (ingroup)
-+ {
-+ lang_leave_group ();
-+
-diff --git a/package/binutils/2.25.1/700-enable-gold-on-mips.patch b/package/binutils/2.25.1/700-enable-gold-on-mips.patch
-new file mode 100644
-index 0000000..6b17f5b
---- /dev/null
-+++ b/package/binutils/2.25.1/700-enable-gold-on-mips.patch
-@@ -0,0 +1,12 @@
-+--- a/configure 2015-11-09 12:24:43.007572365 -0500
-++++ b/configure 2015-11-09 12:25:08.139468790 -0500
-+@@ -2972,7 +2972,7 @@
-+ # Check for target supported by gold.
-+ case "${target}" in
-+ i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-* | arm*-*-* \
-+- | aarch64*-*-* | tilegx*-*-*)
-++ | aarch64*-*-* | tilegx*-*-* | mips*-*-*)
-+ configdirs="$configdirs gold"
-+ if test x${ENABLE_GOLD} = xdefault; then
-+ default_ld=gold
-+
-diff --git a/package/binutils/2.25.1/701-ignore-ld-assert.patch b/package/binutils/2.25.1/701-ignore-ld-assert.patch
-new file mode 100644
-index 0000000..637d118
---- /dev/null
-+++ b/package/binutils/2.25.1/701-ignore-ld-assert.patch
-@@ -0,0 +1,12 @@
-+--- a/ld/ldmain.c 2015-11-11 16:48:13.241128312 -0500
-++++ b/ld/ldmain.c 2015-11-11 16:41:43.982724231 -0500
-+@@ -216,7 +216,8 @@
-+ /* We want to notice and fail on those nasty BFD assertions which are
-+ likely to signal incorrect output being generated but otherwise may
-+ leave no trace. */
-+- default_bfd_assert_handler = bfd_set_assert_handler (ld_bfd_assert_handler);
-++ /* TODO(jfthibert) Re-enable assert failures once openssl issues are resolved */
-++ /*default_bfd_assert_handler = bfd_set_assert_handler (ld_bfd_assert_handler);*/
-+
-+ xatexit (ld_cleanup);
-+
-diff --git a/package/binutils/Config.in.host b/package/binutils/Config.in.host
-index 45f604a..aace4d0 100644
---- a/package/binutils/Config.in.host
-+++ b/package/binutils/Config.in.host
-@@ -26,6 +26,10 @@ choice
- depends on !BR2_avr32 && !BR2_bfin
- bool "binutils 2.24"
-
-+ config BR2_BINUTILS_VERSION_2_25_1
-+ depends on !BR2_avr32 && !BR2_bfin
-+ bool "binutils 2.25.1"
-+
- endchoice
-
- config BR2_BINUTILS_VERSION
-@@ -35,6 +39,7 @@ config BR2_BINUTILS_VERSION
- default "2.22" if BR2_BINUTILS_VERSION_2_22
- default "2.23.2" if BR2_BINUTILS_VERSION_2_23_2
- default "2.24" if BR2_BINUTILS_VERSION_2_24
-+ default "2.25.1" if BR2_BINUTILS_VERSION_2_25_1
-
- config BR2_BINUTILS_EXTRA_CONFIG_OPTIONS
- string "Additional binutils options"
diff --git a/Build.Info/0010-Enable-xsi-math-to-fix-build-of-webrtc-b-25989577.patch b/Build.Info/0010-Enable-xsi-math-to-fix-build-of-webrtc-b-25989577.patch
new file mode 100644
index 0000000..477aaad
--- /dev/null
+++ b/Build.Info/0010-Enable-xsi-math-to-fix-build-of-webrtc-b-25989577.patch
@@ -0,0 +1,22 @@
+From 9285807f8d652e379bb4f15c7c63f4a0b2e3775c Mon Sep 17 00:00:00 2001
+From: Dan Padgett <dpadgett@google.com>
+Date: Thu, 24 Mar 2016 16:41:11 -0700
+Subject: [PATCH 10/17] Enable xsi math to fix build of webrtc (b/25989577)
+
+---
+ package/uclibc/uClibc-ng.config | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/package/uclibc/uClibc-ng.config b/package/uclibc/uClibc-ng.config
+index 66c7688..3f8bc98 100644
+--- a/package/uclibc/uClibc-ng.config
++++ b/package/uclibc/uClibc-ng.config
+@@ -1,4 +1,5 @@
+ DO_C99_MATH=y
++DO_XSI_MATH=y
+ KERNEL_HEADERS="/usr/src/linux/include"
+ # LDSO_CACHE_SUPPORT is not set
+ # UCLIBC_STATIC_LDCONFIG is not set
+--
+2.8.0.rc3.226.g39d4020
+
diff --git a/Build.Info/0010-enable-uclibc-xsi-math.patch b/Build.Info/0010-enable-uclibc-xsi-math.patch
deleted file mode 100644
index aa63c9d..0000000
--- a/Build.Info/0010-enable-uclibc-xsi-math.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-From 40a111215b69331d3c9d3d9a191df8443c7ad52f Mon Sep 17 00:00:00 2001
-From: Jean-Francois Thibert <jfthibert@google.com>
-Date: Tue, 8 Dec 2015 17:19:44 -0500
-Subject: [PATCH] Enable xsi math to fix build of webrtc (b/25989577)
-
-
-diff --git a/package/uclibc/uClibc-0.9.33.config b/package/uclibc/uClibc-0.9.33.config
-index 6b9d2ed..a84155c 100644
---- a/package/uclibc/uClibc-0.9.33.config
-+++ b/package/uclibc/uClibc-0.9.33.config
-@@ -71,7 +71,7 @@ ARCH_USE_MMU=y
- UCLIBC_HAS_FLOATS=y
- UCLIBC_HAS_FPU=y
- DO_C99_MATH=y
--# DO_XSI_MATH is not set
-+DO_XSI_MATH=y
- # UCLIBC_HAS_FENV is not set
- UCLIBC_HAS_LONG_DOUBLE_MATH=y
- KERNEL_HEADERS="/usr/src/linux/include"
diff --git a/Build.Info/0011-Enable-sys_siglist-to-fix-Cast-build-b-26441616.patch b/Build.Info/0011-Enable-sys_siglist-to-fix-Cast-build-b-26441616.patch
new file mode 100644
index 0000000..8cb8030
--- /dev/null
+++ b/Build.Info/0011-Enable-sys_siglist-to-fix-Cast-build-b-26441616.patch
@@ -0,0 +1,24 @@
+From 05564afa38bf37395aae4a39649762fe576c2841 Mon Sep 17 00:00:00 2001
+From: Dan Padgett <dpadgett@google.com>
+Date: Thu, 24 Mar 2016 16:45:11 -0700
+Subject: [PATCH 11/17] Enable sys_siglist to fix Cast build (b/26441616)
+
+---
+ package/uclibc/uClibc-ng.config | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/package/uclibc/uClibc-ng.config b/package/uclibc/uClibc-ng.config
+index 3f8bc98..b9911b7 100644
+--- a/package/uclibc/uClibc-ng.config
++++ b/package/uclibc/uClibc-ng.config
+@@ -19,6 +19,7 @@ UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y
+ UCLIBC_HAS_GETPT=y
+ UCLIBC_HAS_LIBUTIL=y
+ UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y
++UCLIBC_HAS_SYS_SIGLIST=y
+ UCLIBC_USE_NETLINK=y
+ UCLIBC_SUPPORT_AI_ADDRCONFIG=y
+ UCLIBC_HAS_RESOLVER_SUPPORT=y
+--
+2.8.0.rc3.226.g39d4020
+
diff --git a/Build.Info/0011-disable-resolv-link-warnings.patch b/Build.Info/0011-disable-resolv-link-warnings.patch
deleted file mode 100644
index 2317aac..0000000
--- a/Build.Info/0011-disable-resolv-link-warnings.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 488146b78fc256b0efdbecf19b6cc6dd9c5b8a7d Mon Sep 17 00:00:00 2001
-From: Jean-Francois Thibert <jfthibert@google.com>
-Date: Wed, 9 Dec 2015 13:43:14 -0500
-Subject: [PATCH] Disable link warnings in uclibc resolv.c
-
-
-diff --git a/package/uclibc/0.9.33.2/uclibc-0073-disable-resolv-link-warnings.patch b/package/uclibc/0.9.33.2/uclibc-0073-disable-resolv-link-warnings.patch
-new file mode 100644
-index 0000000..0bd87e9
---- /dev/null
-+++ b/package/uclibc/0.9.33.2/uclibc-0073-disable-resolv-link-warnings.patch
-@@ -0,0 +1,13 @@
-+--- a/libc/inet/resolv.c 2015-12-09 13:39:37.762677867 -0500
-++++ b/libc/inet/resolv.c 2015-12-09 12:41:27.866151199 -0500
-+@@ -320,6 +320,10 @@
-+ #include <bits/uClibc_mutex.h>
-+ #include "internal/parse_config.h"
-+
-++/* TODO(jfthibert) Patch libraries using deprecated functions */
-++#undef link_warning
-++#define link_warning(A,B)
-++
-+ /* poll() is not supported in kernel <= 2.0, therefore if __NR_poll is
-+ * not available, we assume an old Linux kernel is in use and we will
-+ * use select() instead. */
diff --git a/Build.Info/0012-Enable-long-double-on-mips-for-C-11-functions.patch b/Build.Info/0012-Enable-long-double-on-mips-for-C-11-functions.patch
new file mode 100644
index 0000000..d6a9b95
--- /dev/null
+++ b/Build.Info/0012-Enable-long-double-on-mips-for-C-11-functions.patch
@@ -0,0 +1,45 @@
+From d21634d54081e2a8cb7e21caacf6e647f7313672 Mon Sep 17 00:00:00 2001
+From: Dan Padgett <dpadgett@google.com>
+Date: Thu, 24 Mar 2016 17:09:05 -0700
+Subject: [PATCH 12/17] Enable long double on mips for C++11 functions
+
+---
+ .../uclibc-0074-allow-long-double-on-mips.patch | 26 ++++++++++++++++++++++
+ 1 file changed, 26 insertions(+)
+ create mode 100644 package/uclibc/uclibc-0074-allow-long-double-on-mips.patch
+
+diff --git a/package/uclibc/uclibc-0074-allow-long-double-on-mips.patch b/package/uclibc/uclibc-0074-allow-long-double-on-mips.patch
+new file mode 100644
+index 0000000..0fa17e6
+--- /dev/null
++++ b/package/uclibc/uclibc-0074-allow-long-double-on-mips.patch
+@@ -0,0 +1,26 @@
++--- a/extra/Configs/Config.in.arch 2012-05-15 03:20:09.000000000 -0400
+++++ b/extra/Configs/Config.in.arch 2016-01-08 11:16:53.007031385 -0500
++@@ -189,7 +189,7 @@
++ config UCLIBC_HAS_LONG_DOUBLE_MATH
++ bool "Enable long double support"
++ depends on DO_C99_MATH
++- depends on TARGET_aarch64 || TARGET_alpha || TARGET_i386 || TARGET_ia64 || TARGET_m68k || TARGET_powerpc || TARGET_s390 || TARGET_sparc || TARGET_tile || TARGET_x86_64
+++ depends on TARGET_aarch64 || TARGET_alpha || TARGET_i386 || TARGET_ia64 || TARGET_m68k || TARGET_powerpc || TARGET_s390 || TARGET_sparc || TARGET_tile || TARGET_x86_64 || TARGET_mips
++ default y
++ help
++ If you want the uClibc math library to contain the full set of C99
++
++--- a/libc/sysdeps/linux/mips/bits/mathdef.h 2012-05-15 03:20:09.000000000 -0400
+++++ b/libc/sysdeps/linux/mips/bits/mathdef.h 2016-02-03 16:09:21.976717193 -0500
++@@ -39,10 +39,6 @@
++
++ #endif /* ISO C99 */
++
++-#if ! defined __NO_LONG_DOUBLE_MATH && _MIPS_SIM == _ABIO32
++-/* Signal that we do not really have a `long double'. This disables the
++- declaration of all the `long double' function variants. */
++-# define __NO_LONG_DOUBLE_MATH 1
++-#elif !defined __NO_LONG_DOUBLE_MATH && !defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
+++#if !defined __NO_LONG_DOUBLE_MATH && !defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
++ # define __NO_LONG_DOUBLE_MATH 1
++ #endif
+--
+2.8.0.rc3.226.g39d4020
+
diff --git a/Build.Info/0012-enable-uclibc-sys-siglist.patch b/Build.Info/0012-enable-uclibc-sys-siglist.patch
deleted file mode 100644
index cbd6716..0000000
--- a/Build.Info/0012-enable-uclibc-sys-siglist.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-From 18c08c51feed6ce7953af43999e74824c9775765 Mon Sep 17 00:00:00 2001
-From: Stephen McGruer <smcgruer@google.com>
-Date: Thu, 7 Jan 2016 12:29:41 -0500
-Subject: [PATCH] Enable sys_siglist to fix Cast build (b/26441616)
-
-diff --git a/package/uclibc/uClibc-0.9.33.config b/package/uclibc/uClibc-0.9.33.config
-index eb39df6..e47c07e 100644
---- a/package/uclibc/uClibc-0.9.33.config
-+++ b/package/uclibc/uClibc-0.9.33.config
-@@ -216,7 +216,7 @@ UCLIBC_HAS_PRINTF_M_SPEC=y
- UCLIBC_HAS_ERRNO_MESSAGES=y
- # UCLIBC_HAS_SYS_ERRLIST is not set
- UCLIBC_HAS_SIGNUM_MESSAGES=y
--# UCLIBC_HAS_SYS_SIGLIST is not set
-+UCLIBC_HAS_SYS_SIGLIST=y
- UCLIBC_HAS_GNU_GETOPT=y
- # UCLIBC_HAS_GNU_GETSUBOPT is not set
diff --git a/Build.Info/0013-Expose-strdup-for-POSIX-code.patch b/Build.Info/0013-Expose-strdup-for-POSIX-code.patch
new file mode 100644
index 0000000..cfaafea
--- /dev/null
+++ b/Build.Info/0013-Expose-strdup-for-POSIX-code.patch
@@ -0,0 +1,31 @@
+From 80cfc827c8260e32a521be20988cca6399f454db Mon Sep 17 00:00:00 2001
+From: Dan Padgett <dpadgett@google.com>
+Date: Thu, 24 Mar 2016 17:11:09 -0700
+Subject: [PATCH 13/17] Expose strdup for POSIX code
+
+---
+ .../uclibc/uclibc-0075-expose-strdup-for-posix-source.patch | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+ create mode 100644 package/uclibc/uclibc-0075-expose-strdup-for-posix-source.patch
+
+diff --git a/package/uclibc/uclibc-0075-expose-strdup-for-posix-source.patch b/package/uclibc/uclibc-0075-expose-strdup-for-posix-source.patch
+new file mode 100644
+index 0000000..8e3a782
+--- /dev/null
++++ b/package/uclibc/uclibc-0075-expose-strdup-for-posix-source.patch
+@@ -0,0 +1,12 @@
++--- a/include/string.h
+++++ b/include/string.h
++@@ -141,7 +141,8 @@ extern size_t strxfrm_l (char *__dest, const char *__src, size_t __n,
++ libc_hidden_proto(strxfrm_l)
++ #endif
++
++-#if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED
+++#if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED \
+++ || defined __USE_XOPEN2K8
++ /* Duplicate S, returning an identical malloc'd string. */
++ extern char *strdup (const char *__s)
++ __THROW __attribute_malloc__ __nonnull ((1));
+--
+2.8.0.rc3.226.g39d4020
+
diff --git a/Build.Info/0013-enable-long-double.patch b/Build.Info/0013-enable-long-double.patch
deleted file mode 100644
index 266f997..0000000
--- a/Build.Info/0013-enable-long-double.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 6933f4f69d6a0f5f83b6af6070418d789a48f663 Mon Sep 17 00:00:00 2001
-From: Jean-Francois Thibert <jfthibert@google.com>
-Date: Thu, 4 Feb 2016 15:41:49 -0500
-Subject: [PATCH] Enable long double on mips for C++11 functions
-
-
-diff --git a/package/uclibc/0.9.33.2/uclibc-0074-allow-long-double-on-mips.patch b/package/uclibc/0.9.33.2/uclibc-0074-allow-long-double-on-mips.patch
-new file mode 100644
-index 0000000..e357857
---- /dev/null
-+++ b/package/uclibc/0.9.33.2/uclibc-0074-allow-long-double-on-mips.patch
-@@ -0,0 +1,26 @@
-+--- a/extra/Configs/Config.in.arch 2012-05-15 03:20:09.000000000 -0400
-++++ b/extra/Configs/Config.in.arch 2016-01-08 11:16:53.007031385 -0500
-+@@ -189,7 +189,7 @@
-+ config UCLIBC_HAS_LONG_DOUBLE_MATH
-+ bool "Enable long double support"
-+ depends on DO_C99_MATH
-+- depends on TARGET_i386 || TARGET_m68k || TARGET_sparc || TARGET_x86_64 || TARGET_powerpc || TARGET_sh || TARGET_microblaze
-++ depends on TARGET_i386 || TARGET_m68k || TARGET_sparc || TARGET_x86_64 || TARGET_powerpc || TARGET_sh || TARGET_microblaze || TARGET_mips
-+ default y
-+ help
-+ If you want the uClibc math library to contain the full set of C99
-+
-+--- a/libc/sysdeps/linux/mips/bits/mathdef.h 2012-05-15 03:20:09.000000000 -0400
-++++ b/libc/sysdeps/linux/mips/bits/mathdef.h 2016-02-03 16:09:21.976717193 -0500
-+@@ -39,10 +39,6 @@
-+
-+ #endif /* ISO C99 */
-+
-+-#if ! defined __NO_LONG_DOUBLE_MATH && _MIPS_SIM == _ABIO32
-+-/* Signal that we do not really have a `long double'. This disables the
-+- declaration of all the `long double' function variants. */
-+-# define __NO_LONG_DOUBLE_MATH 1
-+-#elif !defined __NO_LONG_DOUBLE_MATH && !defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
-++#if !defined __NO_LONG_DOUBLE_MATH && !defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
-+ # define __NO_LONG_DOUBLE_MATH 1
-+ #endif
diff --git a/Build.Info/0014-Enable-sigmask.patch b/Build.Info/0014-Enable-sigmask.patch
new file mode 100644
index 0000000..ce4d8b5
--- /dev/null
+++ b/Build.Info/0014-Enable-sigmask.patch
@@ -0,0 +1,42 @@
+From 01eefac216d6c7aa4b3c9ee60536935d223c0d80 Mon Sep 17 00:00:00 2001
+From: Dan Padgett <dpadgett@google.com>
+Date: Sat, 26 Mar 2016 02:37:14 -0700
+Subject: [PATCH 14/17] Enable sigmask
+
+---
+ package/uclibc/uclibc-0076-enable-sigmask.patch | 23 +++++++++++++++++++++++
+ 1 file changed, 23 insertions(+)
+ create mode 100644 package/uclibc/uclibc-0076-enable-sigmask.patch
+
+diff --git a/package/uclibc/uclibc-0076-enable-sigmask.patch b/package/uclibc/uclibc-0076-enable-sigmask.patch
+new file mode 100644
+index 0000000..2b73fb1
+--- /dev/null
++++ b/package/uclibc/uclibc-0076-enable-sigmask.patch
+@@ -0,0 +1,23 @@
++--- a/include/signal.h 2016-02-01 07:40:56.000000000 -0800
+++++ b/include/signal.h 2016-03-26 02:33:24.493728529 -0700
++@@ -214,15 +214,18 @@
++ #endif
++ #endif /* __UCLIBC_SUSV4_LEGACY__ */
++
+++#ifdef __USE_BSD
+++/* Compute mask for signal SIG. */
+++# define sigmask(sig) __sigmask(sig)
+++
+++#endif /* Use BSD. */
+++
++ #if 0 /*def __USE_BSD*/
++ /* None of the following functions should be used anymore. They are here
++ only for compatibility. A single word (`int') is not guaranteed to be
++ enough to hold a complete signal mask and therefore these functions
++ simply do not work in many situations. Use `sigprocmask' instead. */
++
++-/* Compute mask for signal SIG. */
++-# define sigmask(sig) __sigmask(sig)
++-
++ /* Block signals in MASK, returning the old mask. */
++ extern int sigblock (int __mask) __THROW __attribute_deprecated__;
+--
+2.8.0.rc3.226.g39d4020
+
diff --git a/Build.Info/0014-expose-strdup-for-posix-source.patch b/Build.Info/0014-expose-strdup-for-posix-source.patch
deleted file mode 100644
index 1348846..0000000
--- a/Build.Info/0014-expose-strdup-for-posix-source.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 43367ef55153c9552849611ab7f411af51641939 Mon Sep 17 00:00:00 2001
-From: Stephen McGruer <smcgruer@google.com>
-Date: Tues, 9 Feb 2016 15:46:49 -0500
-Subject: [PATCH] Expose strdup for POSIX code
-
-This enables strdup for code that defines _POSIX_C_SOURCE as >= 200809L, like
-glibc did SIX YEARS AGO.
-
-
-diff --git a/package/uclibc/0.9.33.2/uclibc-0075-expose-strdup-for-posix-source.patch b/package/uclibc/0.9.33.2/uclibc-0075-expose-strdup-for-posix-source.patch
-new file mode 100644
-index 0000000..e357857
---- /dev/null
-+++ b/package/uclibc/0.9.33.2/uclibc-0075-expose-strdup-for-posix-source.patch
-@@ -0,0 +1,12 @@
-+--- a/include/string.h 2012-05-15 03:20:09.000000000 -0400
-++++ b/include/string.h 2016-02-09 15:36:53.007031385 -0500
-+@@ -143,7 +143,8 @@
-+ #endif
-+
-+-#if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED
-++#if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED \
-++ || defined __USE_XOPEN2K8
-+ /* Duplicate S, returning an identical malloc'd string. */
-+ extern char *strdup (__const char *__s)
-+ __THROW __attribute_malloc__ __nonnull ((1));
-+ libc_hidden_proto(strdup)
diff --git a/Build.Info/0015-Build-golang-support.patch b/Build.Info/0015-Build-golang-support.patch
new file mode 100644
index 0000000..268cabb
--- /dev/null
+++ b/Build.Info/0015-Build-golang-support.patch
@@ -0,0 +1,58 @@
+From f914545ac97af24e269cdbd78dbdabce6c0b2e84 Mon Sep 17 00:00:00 2001
+From: Dan Padgett <dpadgett@google.com>
+Date: Tue, 29 Mar 2016 18:32:28 -0700
+Subject: [PATCH 15/17] Build golang support
+
+---
+ package/gcc/5.3.0/110-libgo-runtime-initialize-variable.patch | 11 +++++++++++
+ package/gcc/gcc-final/gcc-final.mk | 2 +-
+ package/gcc/gcc.mk | 2 +-
+ 3 files changed, 13 insertions(+), 2 deletions(-)
+ create mode 100644 package/gcc/5.3.0/110-libgo-runtime-initialize-variable.patch
+
+diff --git a/package/gcc/5.3.0/110-libgo-runtime-initialize-variable.patch b/package/gcc/5.3.0/110-libgo-runtime-initialize-variable.patch
+new file mode 100644
+index 0000000..f9306e7
+--- /dev/null
++++ b/package/gcc/5.3.0/110-libgo-runtime-initialize-variable.patch
+@@ -0,0 +1,11 @@
++--- a/libgo/runtime/mprof.goc 2014-07-19 14:36:26.000000000 -0700
+++++ b/libgo/runtime/mprof.goc 2016-03-29 22:13:19.272547481 -0700
++@@ -403,7 +403,7 @@
++
++ func Stack(b Slice, all bool) (n int) {
++ byte *pc, *sp;
++- bool enablegc;
+++ bool enablegc = false;
++
++ sp = runtime_getcallersp(&b);
++ pc = (byte*)(uintptr)runtime_getcallerpc(&b);
+diff --git a/package/gcc/gcc-final/gcc-final.mk b/package/gcc/gcc-final/gcc-final.mk
+index dbdb615..dfcf883 100644
+--- a/package/gcc/gcc-final/gcc-final.mk
++++ b/package/gcc/gcc-final/gcc-final.mk
+@@ -52,7 +52,7 @@ endef
+
+
+ # Languages supported by the cross-compiler
+-GCC_FINAL_CROSS_LANGUAGES-y = c
++GCC_FINAL_CROSS_LANGUAGES-y = c,go
+ GCC_FINAL_CROSS_LANGUAGES-$(BR2_INSTALL_LIBSTDCPP) += c++
+ GCC_FINAL_CROSS_LANGUAGES-$(BR2_TOOLCHAIN_BUILDROOT_FORTRAN) += fortran
+ GCC_FINAL_CROSS_LANGUAGES = $(subst $(space),$(comma),$(GCC_FINAL_CROSS_LANGUAGES-y))
+diff --git a/package/gcc/gcc.mk b/package/gcc/gcc.mk
+index 07883d0..d5e403a 100644
+--- a/package/gcc/gcc.mk
++++ b/package/gcc/gcc.mk
+@@ -49,7 +49,7 @@ define HOST_GCC_APPLY_PATCHES
+ endef
+
+ HOST_GCC_EXCLUDES = \
+- libjava/* libgo/* \
++ libjava/* \
+ gcc/testsuite/* libstdc++-v3/testsuite/*
+
+ define HOST_GCC_FAKE_TESTSUITE
+--
+2.8.0.rc3.226.g39d4020
+
diff --git a/Build.Info/0016-enable-UCLIBC_SV4_DEPRECATED-for-ustat-call.patch b/Build.Info/0016-enable-UCLIBC_SV4_DEPRECATED-for-ustat-call.patch
new file mode 100644
index 0000000..b4b9fa2
--- /dev/null
+++ b/Build.Info/0016-enable-UCLIBC_SV4_DEPRECATED-for-ustat-call.patch
@@ -0,0 +1,25 @@
+From 3573d5696772ed7d06808b345da397d918ac4f55 Mon Sep 17 00:00:00 2001
+From: Dan Padgett <dpadgett@google.com>
+Date: Wed, 30 Mar 2016 00:21:06 -0700
+Subject: [PATCH 16/17] enable UCLIBC_SV4_DEPRECATED for ustat call
+
+needed for libgo.so
+---
+ package/uclibc/uClibc-ng.config | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/package/uclibc/uClibc-ng.config b/package/uclibc/uClibc-ng.config
+index b9911b7..a76339f 100644
+--- a/package/uclibc/uClibc-ng.config
++++ b/package/uclibc/uClibc-ng.config
+@@ -15,6 +15,7 @@ UCLIBC_SUSV2_LEGACY=y
+ UCLIBC_SUSV3_LEGACY=y
+ UCLIBC_HAS_CONTEXT_FUNCS=y
+ UCLIBC_SUSV4_LEGACY=y
++UCLIBC_SV4_DEPRECATED=y
+ UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y
+ UCLIBC_HAS_GETPT=y
+ UCLIBC_HAS_LIBUTIL=y
+--
+2.8.0.rc3.226.g39d4020
+
diff --git a/Build.Info/0017-add-rpath-to-locate-missing-libgcc_s.so.patch b/Build.Info/0017-add-rpath-to-locate-missing-libgcc_s.so.patch
new file mode 100644
index 0000000..958db46
--- /dev/null
+++ b/Build.Info/0017-add-rpath-to-locate-missing-libgcc_s.so.patch
@@ -0,0 +1,42 @@
+From 17bcfa9fa4bc20f056c015929809842c1d975367 Mon Sep 17 00:00:00 2001
+From: Dan Padgett <dpadgett@google.com>
+Date: Wed, 30 Mar 2016 01:59:35 -0700
+Subject: [PATCH 17/17] add rpath to locate missing libgcc_s.so
+
+---
+ package/gcc/5.3.0/111-gotools-rpath.patch | 23 +++++++++++++++++++++++
+ 1 file changed, 23 insertions(+)
+ create mode 100644 package/gcc/5.3.0/111-gotools-rpath.patch
+
+diff --git a/package/gcc/5.3.0/111-gotools-rpath.patch b/package/gcc/5.3.0/111-gotools-rpath.patch
+new file mode 100644
+index 0000000..b77743b
+--- /dev/null
++++ b/package/gcc/5.3.0/111-gotools-rpath.patch
+@@ -0,0 +1,23 @@
++--- a/gotools/Makefile.am 2015-03-24 12:50:31.000000000 -0700
+++++ b/gotools/Makefile.am 2016-03-30 01:56:38.853458878 -0700
++@@ -38,7 +38,7 @@
++ GOCFLAGS = $(CFLAGS_FOR_TARGET)
++ GOCOMPILE = $(GOCOMPILER) $(GOCFLAGS)
++
++-AM_LDFLAGS = -L $(libgodir) -L $(libgodir)/.libs
+++AM_LDFLAGS = -L $(libgodir) -L $(libgodir)/.libs -Wl,-rpath,../gcc/
++ GOLINK = $(GOCOMPILER) $(GOCFLAGS) $(AM_GOCFLAGS) $(LDFLAGS) $(AM_LDFLAGS) -o $@
++
++ cmdsrcdir = $(srcdir)/../libgo/go/cmd
++--- a/gotools/Makefile.in 2015-03-24 12:50:31.000000000 -0700
+++++ b/gotools/Makefile.in 2016-03-30 02:15:05.424411545 -0700
++@@ -230,7 +230,7 @@
++ # Use the compiler we just built.
++ @NATIVE_TRUE@GOCOMPILER = $(GOC_FOR_TARGET)
++ GOCOMPILE = $(GOCOMPILER) $(GOCFLAGS)
++-AM_LDFLAGS = -L $(libgodir) -L $(libgodir)/.libs
+++AM_LDFLAGS = -L $(libgodir) -L $(libgodir)/.libs -Wl,-rpath,../gcc/
++ GOLINK = $(GOCOMPILER) $(GOCFLAGS) $(AM_GOCFLAGS) $(LDFLAGS) $(AM_LDFLAGS) -o $@
++ cmdsrcdir = $(srcdir)/../libgo/go/cmd
++ go_cmd_go_files = \
++
+--
+2.8.0.rc3.226.g39d4020
+
diff --git a/Build.Info/0018-enable-wordexp-in-uClibc.patch b/Build.Info/0018-enable-wordexp-in-uClibc.patch
new file mode 100644
index 0000000..d86955b
--- /dev/null
+++ b/Build.Info/0018-enable-wordexp-in-uClibc.patch
@@ -0,0 +1,24 @@
+From 3bcbad2cb08199de63e7c495d37c208be1d5ec62 Mon Sep 17 00:00:00 2001
+From: Dan Padgett <dpadgett@google.com>
+Date: Wed, 20 Apr 2016 20:38:12 -0700
+Subject: [PATCH 18/18] enable wordexp in uClibc
+
+---
+ package/uclibc/uClibc-ng.config | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/package/uclibc/uClibc-ng.config b/package/uclibc/uClibc-ng.config
+index a76339f..c2e9f72 100644
+--- a/package/uclibc/uClibc-ng.config
++++ b/package/uclibc/uClibc-ng.config
+@@ -36,6 +36,7 @@ UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
+ UCLIBC_HAS_PRINTF_M_SPEC=y
+ # UCLIBC_HAS_REGEX_OLD is not set
+ # UCLIBC_HAS_FNMATCH_OLD is not set
++UCLIBC_HAS_WORDEXP=y
+ UCLIBC_HAS_NFTW=y
+ UCLIBC_HAS_FTW=y
+ UCLIBC_HAS_GNU_GLOB=y
+--
+2.8.0.rc3.226.g39d4020
+
diff --git a/Build.Info/Readme.txt b/Build.Info/Readme.txt
index 8124f93..5434f5a 100644
--- a/Build.Info/Readme.txt
+++ b/Build.Info/Readme.txt
@@ -2,7 +2,7 @@
git clone the buildroot tree.
reset to this hash:
-b354417dcef5805adb33cb2e3249d7c7be64cac7
+2016.02
Apply the patches in this directory, and copy over the config file here to the
.config.
@@ -17,7 +17,7 @@
git clone git://git.buildroot.net/buildroot
cd buildroot
-git checkout b354417dcef5805adb33cb2e3249d7c7be64cac7
+git checkout 2016.02
patch -p1 -i <path-to-this-folder>/0001-Build-libraries-statically-to-make-hermetic-builds-w.patch
[... do for all patches in the folder...]
@@ -27,3 +27,24 @@
make
(this will bring up menuconfig, just exit and save)
make -j12
+
+-----------------------
+dpadgett's notes:
+
+Let buildroot access the toolchain thru /bin instead of /usr/bin:
+
+mkdir bin
+cd bin
+cp ../Build.Info/proxy .
+for file in $(ls -l ../usr/bin | grep -- "-> toolchain-wrapper" | awk '{print $9}'); do echo $file; ln -s proxy $file; done
+for file in $(ls -l ../usr/bin | grep -v toolchain-wrapper | grep -v "\\.br_real" | awk '{print $9}'); do ln -s ../usr/bin/$file $file; done
+
+Copy / link .so files to legacy locations:
+
+ln -s ../usr/lib/libstdc++.so ../usr/mipsel-buildroot-linux-uclibc/sysroot/lib/libstdc++.so
+cp ../usr/mipsel-buildroot-linux-uclibc/lib/libstdc++.la ../usr/mipsel-buildroot-linux-uclibc/sysroot/lib/.
+ln -s libdl.so.1 ../usr/mipsel-buildroot-linux-uclibc/sysroot/lib/libdl.so.0
+ln -s librt.so.1 ../usr/mipsel-buildroot-linux-uclibc/sysroot/lib/librt.so.0
+ln -s libpthread.so.1 ../usr/mipsel-buildroot-linux-uclibc/sysroot/lib/libpthread.so.0
+ln -s libm.so.1 ../usr/mipsel-buildroot-linux-uclibc/sysroot/lib/libm.so.0
+ln -s libc.so.1 ../usr/mipsel-buildroot-linux-uclibc/sysroot/lib/libc.so.0
diff --git a/Build.Info/defconfig b/Build.Info/defconfig
index 675e296..6e5ecbb 100644
--- a/Build.Info/defconfig
+++ b/Build.Info/defconfig
@@ -7,9 +7,9 @@
BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
BR2_PTHREAD_DEBUG=y
BR2_TOOLCHAIN_BUILDROOT_USE_SSP=y
-BR2_BINUTILS_VERSION_2_25_1=y
+BR2_BINUTILS_VERSION_2_25_X=y
BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-gold --enable-plugins"
-BR2_GCC_VERSION_4_9_X=y
+BR2_GCC_VERSION_5_X=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_ENABLE_LOCALE_PURGE=y
BR2_ENABLE_LOCALE_WHITELIST="C en_US"
@@ -17,3 +17,4 @@
# BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set
BR2_PACKAGE_MAKE=y
# BR2_TARGET_ROOTFS_TAR is not set
+BR_CROSS_PATH_REL=bin
diff --git a/Build.Info/proxy b/Build.Info/proxy
new file mode 100755
index 0000000..acadc4c
--- /dev/null
+++ b/Build.Info/proxy
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+bin=$(basename "$0")
+dir=$(realpath -s $(dirname $(realpath "$0"))/../usr/bin)
+echo cd "$(pwd)" "&&" "$0" -D_GLIBCXX_USE_CXX11_ABI=0 "$@" >> /tmp/commands
+$dir/$bin -D_GLIBCXX_USE_CXX11_ABI=0 "$@"
diff --git a/bin/ldconfig b/bin/ldconfig
deleted file mode 100755
index 6fe432c..0000000
--- a/bin/ldconfig
+++ /dev/null
Binary files differ
diff --git a/bin/ldconfig b/bin/ldconfig
new file mode 120000
index 0000000..8500f1c
--- /dev/null
+++ b/bin/ldconfig
@@ -0,0 +1 @@
+../usr/bin/ldconfig
\ No newline at end of file
diff --git a/bin/ldd b/bin/ldd
deleted file mode 100755
index 0eafc3b..0000000
--- a/bin/ldd
+++ /dev/null
Binary files differ
diff --git a/bin/ldd b/bin/ldd
new file mode 120000
index 0000000..fb77ac3
--- /dev/null
+++ b/bin/ldd
@@ -0,0 +1 @@
+../usr/bin/ldd
\ No newline at end of file
diff --git a/bin/m4 b/bin/m4
deleted file mode 100755
index 9c0e8e0..0000000
--- a/bin/m4
+++ /dev/null
Binary files differ
diff --git a/bin/m4 b/bin/m4
new file mode 120000
index 0000000..c088940
--- /dev/null
+++ b/bin/m4
@@ -0,0 +1 @@
+../usr/bin/m4
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-addr2line b/bin/mipsel-buildroot-linux-uclibc-addr2line
deleted file mode 100755
index ffa253f..0000000
--- a/bin/mipsel-buildroot-linux-uclibc-addr2line
+++ /dev/null
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-addr2line b/bin/mipsel-buildroot-linux-uclibc-addr2line
new file mode 120000
index 0000000..6a14007
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-addr2line
@@ -0,0 +1 @@
+../usr/bin/mipsel-buildroot-linux-uclibc-addr2line
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-ar b/bin/mipsel-buildroot-linux-uclibc-ar
deleted file mode 100755
index b6ddb0d..0000000
--- a/bin/mipsel-buildroot-linux-uclibc-ar
+++ /dev/null
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-ar b/bin/mipsel-buildroot-linux-uclibc-ar
new file mode 120000
index 0000000..1e167cc
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-ar
@@ -0,0 +1 @@
+../usr/bin/mipsel-buildroot-linux-uclibc-ar
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-as b/bin/mipsel-buildroot-linux-uclibc-as
deleted file mode 100755
index 38cd18d..0000000
--- a/bin/mipsel-buildroot-linux-uclibc-as
+++ /dev/null
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-as b/bin/mipsel-buildroot-linux-uclibc-as
new file mode 120000
index 0000000..e019d0b
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-as
@@ -0,0 +1 @@
+../usr/bin/mipsel-buildroot-linux-uclibc-as
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-c++ b/bin/mipsel-buildroot-linux-uclibc-c++
deleted file mode 100755
index cfca1d6..0000000
--- a/bin/mipsel-buildroot-linux-uclibc-c++
+++ /dev/null
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-c++ b/bin/mipsel-buildroot-linux-uclibc-c++
new file mode 120000
index 0000000..18cd353
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-c++
@@ -0,0 +1 @@
+proxy
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-c++filt b/bin/mipsel-buildroot-linux-uclibc-c++filt
deleted file mode 100755
index ddc4c20..0000000
--- a/bin/mipsel-buildroot-linux-uclibc-c++filt
+++ /dev/null
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-c++filt b/bin/mipsel-buildroot-linux-uclibc-c++filt
new file mode 120000
index 0000000..943e665
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-c++filt
@@ -0,0 +1 @@
+../usr/bin/mipsel-buildroot-linux-uclibc-c++filt
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-cc b/bin/mipsel-buildroot-linux-uclibc-cc
index b3fe76d..18cd353 120000
--- a/bin/mipsel-buildroot-linux-uclibc-cc
+++ b/bin/mipsel-buildroot-linux-uclibc-cc
@@ -1 +1 @@
-mipsel-buildroot-linux-uclibc-gcc
\ No newline at end of file
+proxy
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-cpp b/bin/mipsel-buildroot-linux-uclibc-cpp
deleted file mode 100755
index f548ebb..0000000
--- a/bin/mipsel-buildroot-linux-uclibc-cpp
+++ /dev/null
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-cpp b/bin/mipsel-buildroot-linux-uclibc-cpp
new file mode 120000
index 0000000..18cd353
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-cpp
@@ -0,0 +1 @@
+proxy
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-dwp b/bin/mipsel-buildroot-linux-uclibc-dwp
deleted file mode 100755
index 15e72a9..0000000
--- a/bin/mipsel-buildroot-linux-uclibc-dwp
+++ /dev/null
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-dwp b/bin/mipsel-buildroot-linux-uclibc-dwp
new file mode 120000
index 0000000..dbed41b
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-dwp
@@ -0,0 +1 @@
+../usr/bin/mipsel-buildroot-linux-uclibc-dwp
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-elfedit b/bin/mipsel-buildroot-linux-uclibc-elfedit
deleted file mode 100755
index bb8c19f..0000000
--- a/bin/mipsel-buildroot-linux-uclibc-elfedit
+++ /dev/null
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-elfedit b/bin/mipsel-buildroot-linux-uclibc-elfedit
new file mode 120000
index 0000000..d639190
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-elfedit
@@ -0,0 +1 @@
+../usr/bin/mipsel-buildroot-linux-uclibc-elfedit
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-g++ b/bin/mipsel-buildroot-linux-uclibc-g++
deleted file mode 100755
index cfca1d6..0000000
--- a/bin/mipsel-buildroot-linux-uclibc-g++
+++ /dev/null
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-g++ b/bin/mipsel-buildroot-linux-uclibc-g++
new file mode 120000
index 0000000..18cd353
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-g++
@@ -0,0 +1 @@
+proxy
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-gcc b/bin/mipsel-buildroot-linux-uclibc-gcc
deleted file mode 100755
index 64a9b5e..0000000
--- a/bin/mipsel-buildroot-linux-uclibc-gcc
+++ /dev/null
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-gcc b/bin/mipsel-buildroot-linux-uclibc-gcc
new file mode 120000
index 0000000..18cd353
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-gcc
@@ -0,0 +1 @@
+proxy
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-gcc-4.9.1 b/bin/mipsel-buildroot-linux-uclibc-gcc-4.9.1
deleted file mode 100755
index 64a9b5e..0000000
--- a/bin/mipsel-buildroot-linux-uclibc-gcc-4.9.1
+++ /dev/null
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-gcc-5.3.0 b/bin/mipsel-buildroot-linux-uclibc-gcc-5.3.0
new file mode 120000
index 0000000..18cd353
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-gcc-5.3.0
@@ -0,0 +1 @@
+proxy
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-gcc-ar b/bin/mipsel-buildroot-linux-uclibc-gcc-ar
deleted file mode 100755
index 37afddd..0000000
--- a/bin/mipsel-buildroot-linux-uclibc-gcc-ar
+++ /dev/null
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-gcc-ar b/bin/mipsel-buildroot-linux-uclibc-gcc-ar
new file mode 120000
index 0000000..9d3c465
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-gcc-ar
@@ -0,0 +1 @@
+../usr/bin/mipsel-buildroot-linux-uclibc-gcc-ar
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-gcc-nm b/bin/mipsel-buildroot-linux-uclibc-gcc-nm
deleted file mode 100755
index da6042c..0000000
--- a/bin/mipsel-buildroot-linux-uclibc-gcc-nm
+++ /dev/null
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-gcc-nm b/bin/mipsel-buildroot-linux-uclibc-gcc-nm
new file mode 120000
index 0000000..9bc0838
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-gcc-nm
@@ -0,0 +1 @@
+../usr/bin/mipsel-buildroot-linux-uclibc-gcc-nm
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-gcc-ranlib b/bin/mipsel-buildroot-linux-uclibc-gcc-ranlib
deleted file mode 100755
index 0f73d96..0000000
--- a/bin/mipsel-buildroot-linux-uclibc-gcc-ranlib
+++ /dev/null
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-gcc-ranlib b/bin/mipsel-buildroot-linux-uclibc-gcc-ranlib
new file mode 120000
index 0000000..028b4ce
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-gcc-ranlib
@@ -0,0 +1 @@
+../usr/bin/mipsel-buildroot-linux-uclibc-gcc-ranlib
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-gccgo b/bin/mipsel-buildroot-linux-uclibc-gccgo
new file mode 120000
index 0000000..91aefd8
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-gccgo
@@ -0,0 +1 @@
+../usr/bin/mipsel-buildroot-linux-uclibc-gccgo
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-gcov b/bin/mipsel-buildroot-linux-uclibc-gcov
deleted file mode 100755
index a1f75d4..0000000
--- a/bin/mipsel-buildroot-linux-uclibc-gcov
+++ /dev/null
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-gcov b/bin/mipsel-buildroot-linux-uclibc-gcov
new file mode 120000
index 0000000..61dca6f
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-gcov
@@ -0,0 +1 @@
+../usr/bin/mipsel-buildroot-linux-uclibc-gcov
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-gcov-tool b/bin/mipsel-buildroot-linux-uclibc-gcov-tool
new file mode 120000
index 0000000..3cccd5b
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-gcov-tool
@@ -0,0 +1 @@
+../usr/bin/mipsel-buildroot-linux-uclibc-gcov-tool
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-go b/bin/mipsel-buildroot-linux-uclibc-go
new file mode 120000
index 0000000..03dfa82
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-go
@@ -0,0 +1 @@
+../usr/bin/mipsel-buildroot-linux-uclibc-go
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-gofmt b/bin/mipsel-buildroot-linux-uclibc-gofmt
new file mode 120000
index 0000000..1b7d81c
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-gofmt
@@ -0,0 +1 @@
+../usr/bin/mipsel-buildroot-linux-uclibc-gofmt
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-gprof b/bin/mipsel-buildroot-linux-uclibc-gprof
deleted file mode 100755
index cfb733f..0000000
--- a/bin/mipsel-buildroot-linux-uclibc-gprof
+++ /dev/null
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-gprof b/bin/mipsel-buildroot-linux-uclibc-gprof
new file mode 120000
index 0000000..e66d53b
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-gprof
@@ -0,0 +1 @@
+../usr/bin/mipsel-buildroot-linux-uclibc-gprof
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-ld b/bin/mipsel-buildroot-linux-uclibc-ld
deleted file mode 100755
index 2769a67..0000000
--- a/bin/mipsel-buildroot-linux-uclibc-ld
+++ /dev/null
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-ld b/bin/mipsel-buildroot-linux-uclibc-ld
new file mode 120000
index 0000000..7c6428c
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-ld
@@ -0,0 +1 @@
+../usr/bin/mipsel-buildroot-linux-uclibc-ld
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-ld.bfd b/bin/mipsel-buildroot-linux-uclibc-ld.bfd
deleted file mode 100755
index 2769a67..0000000
--- a/bin/mipsel-buildroot-linux-uclibc-ld.bfd
+++ /dev/null
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-ld.bfd b/bin/mipsel-buildroot-linux-uclibc-ld.bfd
new file mode 120000
index 0000000..4b6abf2
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-ld.bfd
@@ -0,0 +1 @@
+../usr/bin/mipsel-buildroot-linux-uclibc-ld.bfd
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-ld.gold b/bin/mipsel-buildroot-linux-uclibc-ld.gold
deleted file mode 100755
index b758a92..0000000
--- a/bin/mipsel-buildroot-linux-uclibc-ld.gold
+++ /dev/null
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-ld.gold b/bin/mipsel-buildroot-linux-uclibc-ld.gold
new file mode 120000
index 0000000..d3e45ee
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-ld.gold
@@ -0,0 +1 @@
+../usr/bin/mipsel-buildroot-linux-uclibc-ld.gold
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-ldconfig b/bin/mipsel-buildroot-linux-uclibc-ldconfig
index aea3041..f4e5fd2 120000
--- a/bin/mipsel-buildroot-linux-uclibc-ldconfig
+++ b/bin/mipsel-buildroot-linux-uclibc-ldconfig
@@ -1 +1 @@
-ldconfig
\ No newline at end of file
+../usr/bin/mipsel-buildroot-linux-uclibc-ldconfig
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-ldd b/bin/mipsel-buildroot-linux-uclibc-ldd
index 033f9e7..eac528f 120000
--- a/bin/mipsel-buildroot-linux-uclibc-ldd
+++ b/bin/mipsel-buildroot-linux-uclibc-ldd
@@ -1 +1 @@
-ldd
\ No newline at end of file
+../usr/bin/mipsel-buildroot-linux-uclibc-ldd
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-nm b/bin/mipsel-buildroot-linux-uclibc-nm
deleted file mode 100755
index 042f7f0..0000000
--- a/bin/mipsel-buildroot-linux-uclibc-nm
+++ /dev/null
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-nm b/bin/mipsel-buildroot-linux-uclibc-nm
new file mode 120000
index 0000000..114d988
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-nm
@@ -0,0 +1 @@
+../usr/bin/mipsel-buildroot-linux-uclibc-nm
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-objcopy b/bin/mipsel-buildroot-linux-uclibc-objcopy
deleted file mode 100755
index 3bdc8f6..0000000
--- a/bin/mipsel-buildroot-linux-uclibc-objcopy
+++ /dev/null
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-objcopy b/bin/mipsel-buildroot-linux-uclibc-objcopy
new file mode 120000
index 0000000..abbe3d6
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-objcopy
@@ -0,0 +1 @@
+../usr/bin/mipsel-buildroot-linux-uclibc-objcopy
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-objdump b/bin/mipsel-buildroot-linux-uclibc-objdump
deleted file mode 100755
index 9e616b2..0000000
--- a/bin/mipsel-buildroot-linux-uclibc-objdump
+++ /dev/null
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-objdump b/bin/mipsel-buildroot-linux-uclibc-objdump
new file mode 120000
index 0000000..8a10334
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-objdump
@@ -0,0 +1 @@
+../usr/bin/mipsel-buildroot-linux-uclibc-objdump
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-ranlib b/bin/mipsel-buildroot-linux-uclibc-ranlib
deleted file mode 100755
index e10835e..0000000
--- a/bin/mipsel-buildroot-linux-uclibc-ranlib
+++ /dev/null
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-ranlib b/bin/mipsel-buildroot-linux-uclibc-ranlib
new file mode 120000
index 0000000..dae4724
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-ranlib
@@ -0,0 +1 @@
+../usr/bin/mipsel-buildroot-linux-uclibc-ranlib
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-readelf b/bin/mipsel-buildroot-linux-uclibc-readelf
deleted file mode 100755
index a9b5b6b..0000000
--- a/bin/mipsel-buildroot-linux-uclibc-readelf
+++ /dev/null
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-readelf b/bin/mipsel-buildroot-linux-uclibc-readelf
new file mode 120000
index 0000000..fbb19b8
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-readelf
@@ -0,0 +1 @@
+../usr/bin/mipsel-buildroot-linux-uclibc-readelf
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-size b/bin/mipsel-buildroot-linux-uclibc-size
deleted file mode 100755
index d1f3438..0000000
--- a/bin/mipsel-buildroot-linux-uclibc-size
+++ /dev/null
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-size b/bin/mipsel-buildroot-linux-uclibc-size
new file mode 120000
index 0000000..e8a46e1
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-size
@@ -0,0 +1 @@
+../usr/bin/mipsel-buildroot-linux-uclibc-size
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-strings b/bin/mipsel-buildroot-linux-uclibc-strings
deleted file mode 100755
index 1de3ac7..0000000
--- a/bin/mipsel-buildroot-linux-uclibc-strings
+++ /dev/null
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-strings b/bin/mipsel-buildroot-linux-uclibc-strings
new file mode 120000
index 0000000..51bbf75
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-strings
@@ -0,0 +1 @@
+../usr/bin/mipsel-buildroot-linux-uclibc-strings
\ No newline at end of file
diff --git a/bin/mipsel-buildroot-linux-uclibc-strip b/bin/mipsel-buildroot-linux-uclibc-strip
deleted file mode 100755
index 361c974..0000000
--- a/bin/mipsel-buildroot-linux-uclibc-strip
+++ /dev/null
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-strip b/bin/mipsel-buildroot-linux-uclibc-strip
new file mode 120000
index 0000000..c225437
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-strip
@@ -0,0 +1 @@
+../usr/bin/mipsel-buildroot-linux-uclibc-strip
\ No newline at end of file
diff --git a/bin/mipsel-linux-addr2line b/bin/mipsel-linux-addr2line
index a5dbfb1..c075e21 120000
--- a/bin/mipsel-linux-addr2line
+++ b/bin/mipsel-linux-addr2line
@@ -1 +1 @@
-mipsel-buildroot-linux-uclibc-addr2line
\ No newline at end of file
+../usr/bin/mipsel-linux-addr2line
\ No newline at end of file
diff --git a/bin/mipsel-linux-ar b/bin/mipsel-linux-ar
index 09a96fc..dd266c9 120000
--- a/bin/mipsel-linux-ar
+++ b/bin/mipsel-linux-ar
@@ -1 +1 @@
-mipsel-buildroot-linux-uclibc-ar
\ No newline at end of file
+../usr/bin/mipsel-linux-ar
\ No newline at end of file
diff --git a/bin/mipsel-linux-as b/bin/mipsel-linux-as
index 325fc37..e081e31 120000
--- a/bin/mipsel-linux-as
+++ b/bin/mipsel-linux-as
@@ -1 +1 @@
-mipsel-buildroot-linux-uclibc-as
\ No newline at end of file
+../usr/bin/mipsel-linux-as
\ No newline at end of file
diff --git a/bin/mipsel-linux-c++ b/bin/mipsel-linux-c++
index 3169f80..18cd353 120000
--- a/bin/mipsel-linux-c++
+++ b/bin/mipsel-linux-c++
@@ -1 +1 @@
-mipsel-buildroot-linux-uclibc-c++
\ No newline at end of file
+proxy
\ No newline at end of file
diff --git a/bin/mipsel-linux-c++filt b/bin/mipsel-linux-c++filt
index 09a1f76..086da70 120000
--- a/bin/mipsel-linux-c++filt
+++ b/bin/mipsel-linux-c++filt
@@ -1 +1 @@
-mipsel-buildroot-linux-uclibc-c++filt
\ No newline at end of file
+../usr/bin/mipsel-linux-c++filt
\ No newline at end of file
diff --git a/bin/mipsel-linux-cc b/bin/mipsel-linux-cc
index fef186d..18cd353 120000
--- a/bin/mipsel-linux-cc
+++ b/bin/mipsel-linux-cc
@@ -1 +1 @@
-mipsel-buildroot-linux-uclibc-cc
\ No newline at end of file
+proxy
\ No newline at end of file
diff --git a/bin/mipsel-linux-cpp b/bin/mipsel-linux-cpp
index c35295e..18cd353 120000
--- a/bin/mipsel-linux-cpp
+++ b/bin/mipsel-linux-cpp
@@ -1 +1 @@
-mipsel-buildroot-linux-uclibc-cpp
\ No newline at end of file
+proxy
\ No newline at end of file
diff --git a/bin/mipsel-linux-dwp b/bin/mipsel-linux-dwp
index de02593..56425c0 120000
--- a/bin/mipsel-linux-dwp
+++ b/bin/mipsel-linux-dwp
@@ -1 +1 @@
-mipsel-buildroot-linux-uclibc-dwp
\ No newline at end of file
+../usr/bin/mipsel-linux-dwp
\ No newline at end of file
diff --git a/bin/mipsel-linux-elfedit b/bin/mipsel-linux-elfedit
index 20c143f..241044f 120000
--- a/bin/mipsel-linux-elfedit
+++ b/bin/mipsel-linux-elfedit
@@ -1 +1 @@
-mipsel-buildroot-linux-uclibc-elfedit
\ No newline at end of file
+../usr/bin/mipsel-linux-elfedit
\ No newline at end of file
diff --git a/bin/mipsel-linux-g++ b/bin/mipsel-linux-g++
index 8165555..18cd353 120000
--- a/bin/mipsel-linux-g++
+++ b/bin/mipsel-linux-g++
@@ -1 +1 @@
-mipsel-buildroot-linux-uclibc-g++
\ No newline at end of file
+proxy
\ No newline at end of file
diff --git a/bin/mipsel-linux-gcc b/bin/mipsel-linux-gcc
index b3fe76d..18cd353 120000
--- a/bin/mipsel-linux-gcc
+++ b/bin/mipsel-linux-gcc
@@ -1 +1 @@
-mipsel-buildroot-linux-uclibc-gcc
\ No newline at end of file
+proxy
\ No newline at end of file
diff --git a/bin/mipsel-linux-gcc-4.9.1 b/bin/mipsel-linux-gcc-4.9.1
deleted file mode 120000
index 29876eb..0000000
--- a/bin/mipsel-linux-gcc-4.9.1
+++ /dev/null
@@ -1 +0,0 @@
-mipsel-buildroot-linux-uclibc-gcc-4.9.1
\ No newline at end of file
diff --git a/bin/mipsel-linux-gcc-5.3.0 b/bin/mipsel-linux-gcc-5.3.0
new file mode 120000
index 0000000..18cd353
--- /dev/null
+++ b/bin/mipsel-linux-gcc-5.3.0
@@ -0,0 +1 @@
+proxy
\ No newline at end of file
diff --git a/bin/mipsel-linux-gcc-ar b/bin/mipsel-linux-gcc-ar
index 5e3affa..b973c7c 120000
--- a/bin/mipsel-linux-gcc-ar
+++ b/bin/mipsel-linux-gcc-ar
@@ -1 +1 @@
-mipsel-buildroot-linux-uclibc-gcc-ar
\ No newline at end of file
+../usr/bin/mipsel-linux-gcc-ar
\ No newline at end of file
diff --git a/bin/mipsel-linux-gcc-nm b/bin/mipsel-linux-gcc-nm
index 3e7be5c..4d8268c 120000
--- a/bin/mipsel-linux-gcc-nm
+++ b/bin/mipsel-linux-gcc-nm
@@ -1 +1 @@
-mipsel-buildroot-linux-uclibc-gcc-nm
\ No newline at end of file
+../usr/bin/mipsel-linux-gcc-nm
\ No newline at end of file
diff --git a/bin/mipsel-linux-gcc-ranlib b/bin/mipsel-linux-gcc-ranlib
index 41d77cd..b9408df 120000
--- a/bin/mipsel-linux-gcc-ranlib
+++ b/bin/mipsel-linux-gcc-ranlib
@@ -1 +1 @@
-mipsel-buildroot-linux-uclibc-gcc-ranlib
\ No newline at end of file
+../usr/bin/mipsel-linux-gcc-ranlib
\ No newline at end of file
diff --git a/bin/mipsel-linux-gccgo b/bin/mipsel-linux-gccgo
new file mode 120000
index 0000000..25db2c0
--- /dev/null
+++ b/bin/mipsel-linux-gccgo
@@ -0,0 +1 @@
+../usr/bin/mipsel-linux-gccgo
\ No newline at end of file
diff --git a/bin/mipsel-linux-gcov b/bin/mipsel-linux-gcov
index e5401fa..5df6c17 120000
--- a/bin/mipsel-linux-gcov
+++ b/bin/mipsel-linux-gcov
@@ -1 +1 @@
-mipsel-buildroot-linux-uclibc-gcov
\ No newline at end of file
+../usr/bin/mipsel-linux-gcov
\ No newline at end of file
diff --git a/bin/mipsel-linux-gcov-tool b/bin/mipsel-linux-gcov-tool
new file mode 120000
index 0000000..2814a46
--- /dev/null
+++ b/bin/mipsel-linux-gcov-tool
@@ -0,0 +1 @@
+../usr/bin/mipsel-linux-gcov-tool
\ No newline at end of file
diff --git a/bin/mipsel-linux-go b/bin/mipsel-linux-go
new file mode 120000
index 0000000..c229140
--- /dev/null
+++ b/bin/mipsel-linux-go
@@ -0,0 +1 @@
+../usr/bin/mipsel-linux-go
\ No newline at end of file
diff --git a/bin/mipsel-linux-gofmt b/bin/mipsel-linux-gofmt
new file mode 120000
index 0000000..9722f83
--- /dev/null
+++ b/bin/mipsel-linux-gofmt
@@ -0,0 +1 @@
+../usr/bin/mipsel-linux-gofmt
\ No newline at end of file
diff --git a/bin/mipsel-linux-gprof b/bin/mipsel-linux-gprof
index c738e00..b7e1c24 120000
--- a/bin/mipsel-linux-gprof
+++ b/bin/mipsel-linux-gprof
@@ -1 +1 @@
-mipsel-buildroot-linux-uclibc-gprof
\ No newline at end of file
+../usr/bin/mipsel-linux-gprof
\ No newline at end of file
diff --git a/bin/mipsel-linux-ld b/bin/mipsel-linux-ld
index feeaaf3..d7f3f2f 120000
--- a/bin/mipsel-linux-ld
+++ b/bin/mipsel-linux-ld
@@ -1 +1 @@
-mipsel-buildroot-linux-uclibc-ld
\ No newline at end of file
+../usr/bin/mipsel-linux-ld
\ No newline at end of file
diff --git a/bin/mipsel-linux-ld.bfd b/bin/mipsel-linux-ld.bfd
index a7b97d7..d1bdee6 120000
--- a/bin/mipsel-linux-ld.bfd
+++ b/bin/mipsel-linux-ld.bfd
@@ -1 +1 @@
-mipsel-buildroot-linux-uclibc-ld.bfd
\ No newline at end of file
+../usr/bin/mipsel-linux-ld.bfd
\ No newline at end of file
diff --git a/bin/mipsel-linux-ld.gold b/bin/mipsel-linux-ld.gold
index 5b2e722..26c80cf 120000
--- a/bin/mipsel-linux-ld.gold
+++ b/bin/mipsel-linux-ld.gold
@@ -1 +1 @@
-mipsel-buildroot-linux-uclibc-ld.gold
\ No newline at end of file
+../usr/bin/mipsel-linux-ld.gold
\ No newline at end of file
diff --git a/bin/mipsel-linux-ldconfig b/bin/mipsel-linux-ldconfig
index 4674ee0..d881c9e 120000
--- a/bin/mipsel-linux-ldconfig
+++ b/bin/mipsel-linux-ldconfig
@@ -1 +1 @@
-mipsel-buildroot-linux-uclibc-ldconfig
\ No newline at end of file
+../usr/bin/mipsel-linux-ldconfig
\ No newline at end of file
diff --git a/bin/mipsel-linux-ldd b/bin/mipsel-linux-ldd
index 79b0ec7..a2fea2d 120000
--- a/bin/mipsel-linux-ldd
+++ b/bin/mipsel-linux-ldd
@@ -1 +1 @@
-mipsel-buildroot-linux-uclibc-ldd
\ No newline at end of file
+../usr/bin/mipsel-linux-ldd
\ No newline at end of file
diff --git a/bin/mipsel-linux-nm b/bin/mipsel-linux-nm
index cc13288..e898755 120000
--- a/bin/mipsel-linux-nm
+++ b/bin/mipsel-linux-nm
@@ -1 +1 @@
-mipsel-buildroot-linux-uclibc-nm
\ No newline at end of file
+../usr/bin/mipsel-linux-nm
\ No newline at end of file
diff --git a/bin/mipsel-linux-objcopy b/bin/mipsel-linux-objcopy
index c2cb624..a4ad7d8 120000
--- a/bin/mipsel-linux-objcopy
+++ b/bin/mipsel-linux-objcopy
@@ -1 +1 @@
-mipsel-buildroot-linux-uclibc-objcopy
\ No newline at end of file
+../usr/bin/mipsel-linux-objcopy
\ No newline at end of file
diff --git a/bin/mipsel-linux-objdump b/bin/mipsel-linux-objdump
index 32a99ad..2acb4d1 120000
--- a/bin/mipsel-linux-objdump
+++ b/bin/mipsel-linux-objdump
@@ -1 +1 @@
-mipsel-buildroot-linux-uclibc-objdump
\ No newline at end of file
+../usr/bin/mipsel-linux-objdump
\ No newline at end of file
diff --git a/bin/mipsel-linux-ranlib b/bin/mipsel-linux-ranlib
index 21bfcf7..672fb4d 120000
--- a/bin/mipsel-linux-ranlib
+++ b/bin/mipsel-linux-ranlib
@@ -1 +1 @@
-mipsel-buildroot-linux-uclibc-ranlib
\ No newline at end of file
+../usr/bin/mipsel-linux-ranlib
\ No newline at end of file
diff --git a/bin/mipsel-linux-readelf b/bin/mipsel-linux-readelf
index 3787188..dd690f5 120000
--- a/bin/mipsel-linux-readelf
+++ b/bin/mipsel-linux-readelf
@@ -1 +1 @@
-mipsel-buildroot-linux-uclibc-readelf
\ No newline at end of file
+../usr/bin/mipsel-linux-readelf
\ No newline at end of file
diff --git a/bin/mipsel-linux-size b/bin/mipsel-linux-size
index 19e9f1d..fe91255 120000
--- a/bin/mipsel-linux-size
+++ b/bin/mipsel-linux-size
@@ -1 +1 @@
-mipsel-buildroot-linux-uclibc-size
\ No newline at end of file
+../usr/bin/mipsel-linux-size
\ No newline at end of file
diff --git a/bin/mipsel-linux-strings b/bin/mipsel-linux-strings
index 37ea47e..ebfeb9d 120000
--- a/bin/mipsel-linux-strings
+++ b/bin/mipsel-linux-strings
@@ -1 +1 @@
-mipsel-buildroot-linux-uclibc-strings
\ No newline at end of file
+../usr/bin/mipsel-linux-strings
\ No newline at end of file
diff --git a/bin/mipsel-linux-strip b/bin/mipsel-linux-strip
index bfad82d..1f10c9c 120000
--- a/bin/mipsel-linux-strip
+++ b/bin/mipsel-linux-strip
@@ -1 +1 @@
-mipsel-buildroot-linux-uclibc-strip
\ No newline at end of file
+../usr/bin/mipsel-linux-strip
\ No newline at end of file
diff --git a/bin/proxy b/bin/proxy
new file mode 100755
index 0000000..acadc4c
--- /dev/null
+++ b/bin/proxy
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+bin=$(basename "$0")
+dir=$(realpath -s $(dirname $(realpath "$0"))/../usr/bin)
+echo cd "$(pwd)" "&&" "$0" -D_GLIBCXX_USE_CXX11_ABI=0 "$@" >> /tmp/commands
+$dir/$bin -D_GLIBCXX_USE_CXX11_ABI=0 "$@"
diff --git a/include/gmp.h b/include/gmp.h
deleted file mode 100644
index dd5b3f0..0000000
--- a/include/gmp.h
+++ /dev/null
@@ -1,2301 +0,0 @@
-/* Definitions for GNU multiple precision functions. -*- mode: c -*-
-
-Copyright 1991, 1993-1997, 1999-2014 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of either:
-
- * the GNU Lesser General Public License as published by the Free
- Software Foundation; either version 3 of the License, or (at your
- option) any later version.
-
-or
-
- * the GNU General Public License as published by the Free Software
- Foundation; either version 2 of the License, or (at your option) any
- later version.
-
-or both in parallel, as here.
-
-The GNU MP 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 General Public License
-for more details.
-
-You should have received copies of the GNU General Public License and the
-GNU Lesser General Public License along with the GNU MP Library. If not,
-see https://www.gnu.org/licenses/. */
-
-#ifndef __GMP_H__
-
-#if defined (__cplusplus)
-#include <iosfwd> /* for std::istream, std::ostream, std::string */
-#include <cstdio>
-#endif
-
-
-/* Instantiated by configure. */
-#if ! defined (__GMP_WITHIN_CONFIGURE)
-#define __GMP_HAVE_HOST_CPU_FAMILY_power 0
-#define __GMP_HAVE_HOST_CPU_FAMILY_powerpc 0
-#define GMP_LIMB_BITS 64
-#define GMP_NAIL_BITS 0
-#endif
-#define GMP_NUMB_BITS (GMP_LIMB_BITS - GMP_NAIL_BITS)
-#define GMP_NUMB_MASK ((~ __GMP_CAST (mp_limb_t, 0)) >> GMP_NAIL_BITS)
-#define GMP_NUMB_MAX GMP_NUMB_MASK
-#define GMP_NAIL_MASK (~ GMP_NUMB_MASK)
-
-
-/* The following (everything under ifndef __GNU_MP__) must be identical in
- gmp.h and mp.h to allow both to be included in an application or during
- the library build. */
-#ifndef __GNU_MP__
-#define __GNU_MP__ 5
-
-#include <stddef.h> /* for size_t */
-
-/* Instantiated by configure. */
-#if ! defined (__GMP_WITHIN_CONFIGURE)
-/* #undef _LONG_LONG_LIMB */
-#define __GMP_LIBGMP_DLL 0
-#endif
-
-
-/* __GMP_DECLSPEC supports Windows DLL versions of libgmp, and is empty in
- all other circumstances.
-
- When compiling objects for libgmp, __GMP_DECLSPEC is an export directive,
- or when compiling for an application it's an import directive. The two
- cases are differentiated by __GMP_WITHIN_GMP defined by the GMP Makefiles
- (and not defined from an application).
-
- __GMP_DECLSPEC_XX is similarly used for libgmpxx. __GMP_WITHIN_GMPXX
- indicates when building libgmpxx, and in that case libgmpxx functions are
- exports, but libgmp functions which might get called are imports.
-
- Libtool DLL_EXPORT define is not used.
-
- There's no attempt to support GMP built both static and DLL. Doing so
- would mean applications would have to tell us which of the two is going
- to be used when linking, and that seems very tedious and error prone if
- using GMP by hand, and equally tedious from a package since autoconf and
- automake don't give much help.
-
- __GMP_DECLSPEC is required on all documented global functions and
- variables, the various internals in gmp-impl.h etc can be left unadorned.
- But internals used by the test programs or speed measuring programs
- should have __GMP_DECLSPEC, and certainly constants or variables must
- have it or the wrong address will be resolved.
-
- In gcc __declspec can go at either the start or end of a prototype.
-
- In Microsoft C __declspec must go at the start, or after the type like
- void __declspec(...) *foo()". There's no __dllexport or anything to
- guard against someone foolish #defining dllexport. _export used to be
- available, but no longer.
-
- In Borland C _export still exists, but needs to go after the type, like
- "void _export foo();". Would have to change the __GMP_DECLSPEC syntax to
- make use of that. Probably more trouble than it's worth. */
-
-#if defined (__GNUC__)
-#define __GMP_DECLSPEC_EXPORT __declspec(__dllexport__)
-#define __GMP_DECLSPEC_IMPORT __declspec(__dllimport__)
-#endif
-#if defined (_MSC_VER) || defined (__BORLANDC__)
-#define __GMP_DECLSPEC_EXPORT __declspec(dllexport)
-#define __GMP_DECLSPEC_IMPORT __declspec(dllimport)
-#endif
-#ifdef __WATCOMC__
-#define __GMP_DECLSPEC_EXPORT __export
-#define __GMP_DECLSPEC_IMPORT __import
-#endif
-#ifdef __IBMC__
-#define __GMP_DECLSPEC_EXPORT _Export
-#define __GMP_DECLSPEC_IMPORT _Import
-#endif
-
-#if __GMP_LIBGMP_DLL
-#ifdef __GMP_WITHIN_GMP
-/* compiling to go into a DLL libgmp */
-#define __GMP_DECLSPEC __GMP_DECLSPEC_EXPORT
-#else
-/* compiling to go into an application which will link to a DLL libgmp */
-#define __GMP_DECLSPEC __GMP_DECLSPEC_IMPORT
-#endif
-#else
-/* all other cases */
-#define __GMP_DECLSPEC
-#endif
-
-
-#ifdef __GMP_SHORT_LIMB
-typedef unsigned int mp_limb_t;
-typedef int mp_limb_signed_t;
-#else
-#ifdef _LONG_LONG_LIMB
-typedef unsigned long long int mp_limb_t;
-typedef long long int mp_limb_signed_t;
-#else
-typedef unsigned long int mp_limb_t;
-typedef long int mp_limb_signed_t;
-#endif
-#endif
-typedef unsigned long int mp_bitcnt_t;
-
-/* For reference, note that the name __mpz_struct gets into C++ mangled
- function names, which means although the "__" suggests an internal, we
- must leave this name for binary compatibility. */
-typedef struct
-{
- int _mp_alloc; /* Number of *limbs* allocated and pointed
- to by the _mp_d field. */
- int _mp_size; /* abs(_mp_size) is the number of limbs the
- last field points to. If _mp_size is
- negative this is a negative number. */
- mp_limb_t *_mp_d; /* Pointer to the limbs. */
-} __mpz_struct;
-
-#endif /* __GNU_MP__ */
-
-
-typedef __mpz_struct MP_INT; /* gmp 1 source compatibility */
-typedef __mpz_struct mpz_t[1];
-
-typedef mp_limb_t * mp_ptr;
-typedef const mp_limb_t * mp_srcptr;
-#if defined (_CRAY) && ! defined (_CRAYMPP)
-/* plain `int' is much faster (48 bits) */
-#define __GMP_MP_SIZE_T_INT 1
-typedef int mp_size_t;
-typedef int mp_exp_t;
-#else
-#define __GMP_MP_SIZE_T_INT 0
-typedef long int mp_size_t;
-typedef long int mp_exp_t;
-#endif
-
-typedef struct
-{
- __mpz_struct _mp_num;
- __mpz_struct _mp_den;
-} __mpq_struct;
-
-typedef __mpq_struct MP_RAT; /* gmp 1 source compatibility */
-typedef __mpq_struct mpq_t[1];
-
-typedef struct
-{
- int _mp_prec; /* Max precision, in number of `mp_limb_t's.
- Set by mpf_init and modified by
- mpf_set_prec. The area pointed to by the
- _mp_d field contains `prec' + 1 limbs. */
- int _mp_size; /* abs(_mp_size) is the number of limbs the
- last field points to. If _mp_size is
- negative this is a negative number. */
- mp_exp_t _mp_exp; /* Exponent, in the base of `mp_limb_t'. */
- mp_limb_t *_mp_d; /* Pointer to the limbs. */
-} __mpf_struct;
-
-/* typedef __mpf_struct MP_FLOAT; */
-typedef __mpf_struct mpf_t[1];
-
-/* Available random number generation algorithms. */
-typedef enum
-{
- GMP_RAND_ALG_DEFAULT = 0,
- GMP_RAND_ALG_LC = GMP_RAND_ALG_DEFAULT /* Linear congruential. */
-} gmp_randalg_t;
-
-/* Random state struct. */
-typedef struct
-{
- mpz_t _mp_seed; /* _mp_d member points to state of the generator. */
- gmp_randalg_t _mp_alg; /* Currently unused. */
- union {
- void *_mp_lc; /* Pointer to function pointers structure. */
- } _mp_algdata;
-} __gmp_randstate_struct;
-typedef __gmp_randstate_struct gmp_randstate_t[1];
-
-/* Types for function declarations in gmp files. */
-/* ??? Should not pollute user name space with these ??? */
-typedef const __mpz_struct *mpz_srcptr;
-typedef __mpz_struct *mpz_ptr;
-typedef const __mpf_struct *mpf_srcptr;
-typedef __mpf_struct *mpf_ptr;
-typedef const __mpq_struct *mpq_srcptr;
-typedef __mpq_struct *mpq_ptr;
-
-
-/* This is not wanted in mp.h, so put it outside the __GNU_MP__ common
- section. */
-#if __GMP_LIBGMP_DLL
-#ifdef __GMP_WITHIN_GMPXX
-/* compiling to go into a DLL libgmpxx */
-#define __GMP_DECLSPEC_XX __GMP_DECLSPEC_EXPORT
-#else
-/* compiling to go into a application which will link to a DLL libgmpxx */
-#define __GMP_DECLSPEC_XX __GMP_DECLSPEC_IMPORT
-#endif
-#else
-/* all other cases */
-#define __GMP_DECLSPEC_XX
-#endif
-
-
-#ifndef __MPN
-#define __MPN(x) __gmpn_##x
-#endif
-
-/* For reference, "defined(EOF)" cannot be used here. In g++ 2.95.4,
- <iostream> defines EOF but not FILE. */
-#if defined (FILE) \
- || defined (H_STDIO) \
- || defined (_H_STDIO) /* AIX */ \
- || defined (_STDIO_H) /* glibc, Sun, SCO */ \
- || defined (_STDIO_H_) /* BSD, OSF */ \
- || defined (__STDIO_H) /* Borland */ \
- || defined (__STDIO_H__) /* IRIX */ \
- || defined (_STDIO_INCLUDED) /* HPUX */ \
- || defined (__dj_include_stdio_h_) /* DJGPP */ \
- || defined (_FILE_DEFINED) /* Microsoft */ \
- || defined (__STDIO__) /* Apple MPW MrC */ \
- || defined (_MSL_STDIO_H) /* Metrowerks */ \
- || defined (_STDIO_H_INCLUDED) /* QNX4 */ \
- || defined (_ISO_STDIO_ISO_H) /* Sun C++ */ \
- || defined (__STDIO_LOADED) /* VMS */
-#define _GMP_H_HAVE_FILE 1
-#endif
-
-/* In ISO C, if a prototype involving "struct obstack *" is given without
- that structure defined, then the struct is scoped down to just the
- prototype, causing a conflict if it's subsequently defined for real. So
- only give prototypes if we've got obstack.h. */
-#if defined (_OBSTACK_H) /* glibc <obstack.h> */
-#define _GMP_H_HAVE_OBSTACK 1
-#endif
-
-/* The prototypes for gmp_vprintf etc are provided only if va_list is defined,
- via an application having included <stdarg.h>. Usually va_list is a typedef
- so can't be tested directly, but C99 specifies that va_start is a macro.
-
- <stdio.h> will define some sort of va_list for vprintf and vfprintf, but
- let's not bother trying to use that since it's not standard and since
- application uses for gmp_vprintf etc will almost certainly require the
- whole <stdarg.h> anyway. */
-
-#ifdef va_start
-#define _GMP_H_HAVE_VA_LIST 1
-#endif
-
-/* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */
-#if defined (__GNUC__) && defined (__GNUC_MINOR__)
-#define __GMP_GNUC_PREREQ(maj, min) \
- ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
-#else
-#define __GMP_GNUC_PREREQ(maj, min) 0
-#endif
-
-/* "pure" is in gcc 2.96 and up, see "(gcc)Function Attributes". Basically
- it means a function does nothing but examine its arguments and memory
- (global or via arguments) to generate a return value, but changes nothing
- and has no side-effects. __GMP_NO_ATTRIBUTE_CONST_PURE lets
- tune/common.c etc turn this off when trying to write timing loops. */
-#if __GMP_GNUC_PREREQ (2,96) && ! defined (__GMP_NO_ATTRIBUTE_CONST_PURE)
-#define __GMP_ATTRIBUTE_PURE __attribute__ ((__pure__))
-#else
-#define __GMP_ATTRIBUTE_PURE
-#endif
-
-
-/* __GMP_CAST allows us to use static_cast in C++, so our macros are clean
- to "g++ -Wold-style-cast".
-
- Casts in "extern inline" code within an extern "C" block don't induce
- these warnings, so __GMP_CAST only needs to be used on documented
- macros. */
-
-#ifdef __cplusplus
-#define __GMP_CAST(type, expr) (static_cast<type> (expr))
-#else
-#define __GMP_CAST(type, expr) ((type) (expr))
-#endif
-
-
-/* An empty "throw ()" means the function doesn't throw any C++ exceptions,
- this can save some stack frame info in applications.
-
- Currently it's given only on functions which never divide-by-zero etc,
- don't allocate memory, and are expected to never need to allocate memory.
- This leaves open the possibility of a C++ throw from a future GMP
- exceptions scheme.
-
- mpz_set_ui etc are omitted to leave open the lazy allocation scheme
- described in doc/tasks.html. mpz_get_d etc are omitted to leave open
- exceptions for float overflows.
-
- Note that __GMP_NOTHROW must be given on any inlines the same as on their
- prototypes (for g++ at least, where they're used together). Note also
- that g++ 3.0 demands that __GMP_NOTHROW is before other attributes like
- __GMP_ATTRIBUTE_PURE. */
-
-#if defined (__cplusplus)
-#define __GMP_NOTHROW throw ()
-#else
-#define __GMP_NOTHROW
-#endif
-
-
-/* PORTME: What other compilers have a useful "extern inline"? "static
- inline" would be an acceptable substitute if the compiler (or linker)
- discards unused statics. */
-
- /* gcc has __inline__ in all modes, including strict ansi. Give a prototype
- for an inline too, so as to correctly specify "dllimport" on windows, in
- case the function is called rather than inlined.
- GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
- inline semantics, unless -fgnu89-inline is used. */
-#ifdef __GNUC__
-#if (defined __GNUC_STDC_INLINE__) || (__GNUC__ == 4 && __GNUC_MINOR__ == 2) \
- || (defined __GNUC_GNU_INLINE__ && defined __cplusplus)
-#define __GMP_EXTERN_INLINE extern __inline__ __attribute__ ((__gnu_inline__))
-#else
-#define __GMP_EXTERN_INLINE extern __inline__
-#endif
-#define __GMP_INLINE_PROTOTYPES 1
-#endif
-
-/* DEC C (eg. version 5.9) supports "static __inline foo()", even in -std1
- strict ANSI mode. Inlining is done even when not optimizing (ie. -O0
- mode, which is the default), but an unnecessary local copy of foo is
- emitted unless -O is used. "extern __inline" is accepted, but the
- "extern" appears to be ignored, ie. it becomes a plain global function
- but which is inlined within its file. Don't know if all old versions of
- DEC C supported __inline, but as a start let's do the right thing for
- current versions. */
-#ifdef __DECC
-#define __GMP_EXTERN_INLINE static __inline
-#endif
-
-/* SCO OpenUNIX 8 cc supports "static inline foo()" but not in -Xc strict
- ANSI mode (__STDC__ is 1 in that mode). Inlining only actually takes
- place under -O. Without -O "foo" seems to be emitted whether it's used
- or not, which is wasteful. "extern inline foo()" isn't useful, the
- "extern" is apparently ignored, so foo is inlined if possible but also
- emitted as a global, which causes multiple definition errors when
- building a shared libgmp. */
-#ifdef __SCO_VERSION__
-#if __SCO_VERSION__ > 400000000 && __STDC__ != 1 \
- && ! defined (__GMP_EXTERN_INLINE)
-#define __GMP_EXTERN_INLINE static inline
-#endif
-#endif
-
-/* Microsoft's C compiler accepts __inline */
-#ifdef _MSC_VER
-#define __GMP_EXTERN_INLINE __inline
-#endif
-
-/* Recent enough Sun C compilers want "inline" */
-#if defined (__SUNPRO_C) && __SUNPRO_C >= 0x560 \
- && ! defined (__GMP_EXTERN_INLINE)
-#define __GMP_EXTERN_INLINE inline
-#endif
-
-/* Somewhat older Sun C compilers want "static inline" */
-#if defined (__SUNPRO_C) && __SUNPRO_C >= 0x540 \
- && ! defined (__GMP_EXTERN_INLINE)
-#define __GMP_EXTERN_INLINE static inline
-#endif
-
-
-/* C++ always has "inline" and since it's a normal feature the linker should
- discard duplicate non-inlined copies, or if it doesn't then that's a
- problem for everyone, not just GMP. */
-#if defined (__cplusplus) && ! defined (__GMP_EXTERN_INLINE)
-#define __GMP_EXTERN_INLINE inline
-#endif
-
-/* Don't do any inlining within a configure run, since if the compiler ends
- up emitting copies of the code into the object file it can end up
- demanding the various support routines (like mpn_popcount) for linking,
- making the "alloca" test and perhaps others fail. And on hppa ia64 a
- pre-release gcc 3.2 was seen not respecting the "extern" in "extern
- __inline__", triggering this problem too. */
-#if defined (__GMP_WITHIN_CONFIGURE) && ! __GMP_WITHIN_CONFIGURE_INLINE
-#undef __GMP_EXTERN_INLINE
-#endif
-
-/* By default, don't give a prototype when there's going to be an inline
- version. Note in particular that Cray C++ objects to the combination of
- prototype and inline. */
-#ifdef __GMP_EXTERN_INLINE
-#ifndef __GMP_INLINE_PROTOTYPES
-#define __GMP_INLINE_PROTOTYPES 0
-#endif
-#else
-#define __GMP_INLINE_PROTOTYPES 1
-#endif
-
-
-#define __GMP_ABS(x) ((x) >= 0 ? (x) : -(x))
-#define __GMP_MAX(h,i) ((h) > (i) ? (h) : (i))
-
-/* __GMP_USHRT_MAX is not "~ (unsigned short) 0" because short is promoted
- to int by "~". It still needs to have the promoted type. */
-#define __GMP_UINT_MAX (~ (unsigned) 0)
-#define __GMP_ULONG_MAX (~ (unsigned long) 0)
-#define __GMP_USHRT_MAX (0 + (unsigned short) ~0)
-
-
-/* __builtin_expect is in gcc 3.0, and not in 2.95. */
-#if __GMP_GNUC_PREREQ (3,0)
-#define __GMP_LIKELY(cond) __builtin_expect ((cond) != 0, 1)
-#define __GMP_UNLIKELY(cond) __builtin_expect ((cond) != 0, 0)
-#else
-#define __GMP_LIKELY(cond) (cond)
-#define __GMP_UNLIKELY(cond) (cond)
-#endif
-
-#ifdef _CRAY
-#define __GMP_CRAY_Pragma(str) _Pragma (str)
-#else
-#define __GMP_CRAY_Pragma(str)
-#endif
-
-
-/* Allow direct user access to numerator and denominator of a mpq_t object. */
-#define mpq_numref(Q) (&((Q)->_mp_num))
-#define mpq_denref(Q) (&((Q)->_mp_den))
-
-
-#if defined (__cplusplus)
-extern "C" {
-using std::FILE;
-#endif
-
-#define mp_set_memory_functions __gmp_set_memory_functions
-__GMP_DECLSPEC void mp_set_memory_functions (void *(*) (size_t),
- void *(*) (void *, size_t, size_t),
- void (*) (void *, size_t)) __GMP_NOTHROW;
-
-#define mp_get_memory_functions __gmp_get_memory_functions
-__GMP_DECLSPEC void mp_get_memory_functions (void *(**) (size_t),
- void *(**) (void *, size_t, size_t),
- void (**) (void *, size_t)) __GMP_NOTHROW;
-
-#define mp_bits_per_limb __gmp_bits_per_limb
-__GMP_DECLSPEC extern const int mp_bits_per_limb;
-
-#define gmp_errno __gmp_errno
-__GMP_DECLSPEC extern int gmp_errno;
-
-#define gmp_version __gmp_version
-__GMP_DECLSPEC extern const char * const gmp_version;
-
-
-/**************** Random number routines. ****************/
-
-/* obsolete */
-#define gmp_randinit __gmp_randinit
-__GMP_DECLSPEC void gmp_randinit (gmp_randstate_t, gmp_randalg_t, ...);
-
-#define gmp_randinit_default __gmp_randinit_default
-__GMP_DECLSPEC void gmp_randinit_default (gmp_randstate_t);
-
-#define gmp_randinit_lc_2exp __gmp_randinit_lc_2exp
-__GMP_DECLSPEC void gmp_randinit_lc_2exp (gmp_randstate_t, mpz_srcptr, unsigned long int, mp_bitcnt_t);
-
-#define gmp_randinit_lc_2exp_size __gmp_randinit_lc_2exp_size
-__GMP_DECLSPEC int gmp_randinit_lc_2exp_size (gmp_randstate_t, mp_bitcnt_t);
-
-#define gmp_randinit_mt __gmp_randinit_mt
-__GMP_DECLSPEC void gmp_randinit_mt (gmp_randstate_t);
-
-#define gmp_randinit_set __gmp_randinit_set
-__GMP_DECLSPEC void gmp_randinit_set (gmp_randstate_t, const __gmp_randstate_struct *);
-
-#define gmp_randseed __gmp_randseed
-__GMP_DECLSPEC void gmp_randseed (gmp_randstate_t, mpz_srcptr);
-
-#define gmp_randseed_ui __gmp_randseed_ui
-__GMP_DECLSPEC void gmp_randseed_ui (gmp_randstate_t, unsigned long int);
-
-#define gmp_randclear __gmp_randclear
-__GMP_DECLSPEC void gmp_randclear (gmp_randstate_t);
-
-#define gmp_urandomb_ui __gmp_urandomb_ui
-__GMP_DECLSPEC unsigned long gmp_urandomb_ui (gmp_randstate_t, unsigned long);
-
-#define gmp_urandomm_ui __gmp_urandomm_ui
-__GMP_DECLSPEC unsigned long gmp_urandomm_ui (gmp_randstate_t, unsigned long);
-
-
-/**************** Formatted output routines. ****************/
-
-#define gmp_asprintf __gmp_asprintf
-__GMP_DECLSPEC int gmp_asprintf (char **, const char *, ...);
-
-#define gmp_fprintf __gmp_fprintf
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC int gmp_fprintf (FILE *, const char *, ...);
-#endif
-
-#define gmp_obstack_printf __gmp_obstack_printf
-#if defined (_GMP_H_HAVE_OBSTACK)
-__GMP_DECLSPEC int gmp_obstack_printf (struct obstack *, const char *, ...);
-#endif
-
-#define gmp_obstack_vprintf __gmp_obstack_vprintf
-#if defined (_GMP_H_HAVE_OBSTACK) && defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_obstack_vprintf (struct obstack *, const char *, va_list);
-#endif
-
-#define gmp_printf __gmp_printf
-__GMP_DECLSPEC int gmp_printf (const char *, ...);
-
-#define gmp_snprintf __gmp_snprintf
-__GMP_DECLSPEC int gmp_snprintf (char *, size_t, const char *, ...);
-
-#define gmp_sprintf __gmp_sprintf
-__GMP_DECLSPEC int gmp_sprintf (char *, const char *, ...);
-
-#define gmp_vasprintf __gmp_vasprintf
-#if defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vasprintf (char **, const char *, va_list);
-#endif
-
-#define gmp_vfprintf __gmp_vfprintf
-#if defined (_GMP_H_HAVE_FILE) && defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vfprintf (FILE *, const char *, va_list);
-#endif
-
-#define gmp_vprintf __gmp_vprintf
-#if defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vprintf (const char *, va_list);
-#endif
-
-#define gmp_vsnprintf __gmp_vsnprintf
-#if defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vsnprintf (char *, size_t, const char *, va_list);
-#endif
-
-#define gmp_vsprintf __gmp_vsprintf
-#if defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vsprintf (char *, const char *, va_list);
-#endif
-
-
-/**************** Formatted input routines. ****************/
-
-#define gmp_fscanf __gmp_fscanf
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC int gmp_fscanf (FILE *, const char *, ...);
-#endif
-
-#define gmp_scanf __gmp_scanf
-__GMP_DECLSPEC int gmp_scanf (const char *, ...);
-
-#define gmp_sscanf __gmp_sscanf
-__GMP_DECLSPEC int gmp_sscanf (const char *, const char *, ...);
-
-#define gmp_vfscanf __gmp_vfscanf
-#if defined (_GMP_H_HAVE_FILE) && defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vfscanf (FILE *, const char *, va_list);
-#endif
-
-#define gmp_vscanf __gmp_vscanf
-#if defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vscanf (const char *, va_list);
-#endif
-
-#define gmp_vsscanf __gmp_vsscanf
-#if defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vsscanf (const char *, const char *, va_list);
-#endif
-
-
-/**************** Integer (i.e. Z) routines. ****************/
-
-#define _mpz_realloc __gmpz_realloc
-#define mpz_realloc __gmpz_realloc
-__GMP_DECLSPEC void *_mpz_realloc (mpz_ptr, mp_size_t);
-
-#define mpz_abs __gmpz_abs
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_abs)
-__GMP_DECLSPEC void mpz_abs (mpz_ptr, mpz_srcptr);
-#endif
-
-#define mpz_add __gmpz_add
-__GMP_DECLSPEC void mpz_add (mpz_ptr, mpz_srcptr, mpz_srcptr);
-
-#define mpz_add_ui __gmpz_add_ui
-__GMP_DECLSPEC void mpz_add_ui (mpz_ptr, mpz_srcptr, unsigned long int);
-
-#define mpz_addmul __gmpz_addmul
-__GMP_DECLSPEC void mpz_addmul (mpz_ptr, mpz_srcptr, mpz_srcptr);
-
-#define mpz_addmul_ui __gmpz_addmul_ui
-__GMP_DECLSPEC void mpz_addmul_ui (mpz_ptr, mpz_srcptr, unsigned long int);
-
-#define mpz_and __gmpz_and
-__GMP_DECLSPEC void mpz_and (mpz_ptr, mpz_srcptr, mpz_srcptr);
-
-#define mpz_array_init __gmpz_array_init
-__GMP_DECLSPEC void mpz_array_init (mpz_ptr, mp_size_t, mp_size_t);
-
-#define mpz_bin_ui __gmpz_bin_ui
-__GMP_DECLSPEC void mpz_bin_ui (mpz_ptr, mpz_srcptr, unsigned long int);
-
-#define mpz_bin_uiui __gmpz_bin_uiui
-__GMP_DECLSPEC void mpz_bin_uiui (mpz_ptr, unsigned long int, unsigned long int);
-
-#define mpz_cdiv_q __gmpz_cdiv_q
-__GMP_DECLSPEC void mpz_cdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr);
-
-#define mpz_cdiv_q_2exp __gmpz_cdiv_q_2exp
-__GMP_DECLSPEC void mpz_cdiv_q_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);
-
-#define mpz_cdiv_q_ui __gmpz_cdiv_q_ui
-__GMP_DECLSPEC unsigned long int mpz_cdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int);
-
-#define mpz_cdiv_qr __gmpz_cdiv_qr
-__GMP_DECLSPEC void mpz_cdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr);
-
-#define mpz_cdiv_qr_ui __gmpz_cdiv_qr_ui
-__GMP_DECLSPEC unsigned long int mpz_cdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int);
-
-#define mpz_cdiv_r __gmpz_cdiv_r
-__GMP_DECLSPEC void mpz_cdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr);
-
-#define mpz_cdiv_r_2exp __gmpz_cdiv_r_2exp
-__GMP_DECLSPEC void mpz_cdiv_r_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);
-
-#define mpz_cdiv_r_ui __gmpz_cdiv_r_ui
-__GMP_DECLSPEC unsigned long int mpz_cdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int);
-
-#define mpz_cdiv_ui __gmpz_cdiv_ui
-__GMP_DECLSPEC unsigned long int mpz_cdiv_ui (mpz_srcptr, unsigned long int) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_clear __gmpz_clear
-__GMP_DECLSPEC void mpz_clear (mpz_ptr);
-
-#define mpz_clears __gmpz_clears
-__GMP_DECLSPEC void mpz_clears (mpz_ptr, ...);
-
-#define mpz_clrbit __gmpz_clrbit
-__GMP_DECLSPEC void mpz_clrbit (mpz_ptr, mp_bitcnt_t);
-
-#define mpz_cmp __gmpz_cmp
-__GMP_DECLSPEC int mpz_cmp (mpz_srcptr, mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_cmp_d __gmpz_cmp_d
-__GMP_DECLSPEC int mpz_cmp_d (mpz_srcptr, double) __GMP_ATTRIBUTE_PURE;
-
-#define _mpz_cmp_si __gmpz_cmp_si
-__GMP_DECLSPEC int _mpz_cmp_si (mpz_srcptr, signed long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define _mpz_cmp_ui __gmpz_cmp_ui
-__GMP_DECLSPEC int _mpz_cmp_ui (mpz_srcptr, unsigned long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_cmpabs __gmpz_cmpabs
-__GMP_DECLSPEC int mpz_cmpabs (mpz_srcptr, mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_cmpabs_d __gmpz_cmpabs_d
-__GMP_DECLSPEC int mpz_cmpabs_d (mpz_srcptr, double) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_cmpabs_ui __gmpz_cmpabs_ui
-__GMP_DECLSPEC int mpz_cmpabs_ui (mpz_srcptr, unsigned long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_com __gmpz_com
-__GMP_DECLSPEC void mpz_com (mpz_ptr, mpz_srcptr);
-
-#define mpz_combit __gmpz_combit
-__GMP_DECLSPEC void mpz_combit (mpz_ptr, mp_bitcnt_t);
-
-#define mpz_congruent_p __gmpz_congruent_p
-__GMP_DECLSPEC int mpz_congruent_p (mpz_srcptr, mpz_srcptr, mpz_srcptr) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_congruent_2exp_p __gmpz_congruent_2exp_p
-__GMP_DECLSPEC int mpz_congruent_2exp_p (mpz_srcptr, mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_congruent_ui_p __gmpz_congruent_ui_p
-__GMP_DECLSPEC int mpz_congruent_ui_p (mpz_srcptr, unsigned long, unsigned long) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_divexact __gmpz_divexact
-__GMP_DECLSPEC void mpz_divexact (mpz_ptr, mpz_srcptr, mpz_srcptr);
-
-#define mpz_divexact_ui __gmpz_divexact_ui
-__GMP_DECLSPEC void mpz_divexact_ui (mpz_ptr, mpz_srcptr, unsigned long);
-
-#define mpz_divisible_p __gmpz_divisible_p
-__GMP_DECLSPEC int mpz_divisible_p (mpz_srcptr, mpz_srcptr) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_divisible_ui_p __gmpz_divisible_ui_p
-__GMP_DECLSPEC int mpz_divisible_ui_p (mpz_srcptr, unsigned long) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_divisible_2exp_p __gmpz_divisible_2exp_p
-__GMP_DECLSPEC int mpz_divisible_2exp_p (mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_dump __gmpz_dump
-__GMP_DECLSPEC void mpz_dump (mpz_srcptr);
-
-#define mpz_export __gmpz_export
-__GMP_DECLSPEC void *mpz_export (void *, size_t *, int, size_t, int, size_t, mpz_srcptr);
-
-#define mpz_fac_ui __gmpz_fac_ui
-__GMP_DECLSPEC void mpz_fac_ui (mpz_ptr, unsigned long int);
-
-#define mpz_2fac_ui __gmpz_2fac_ui
-__GMP_DECLSPEC void mpz_2fac_ui (mpz_ptr, unsigned long int);
-
-#define mpz_mfac_uiui __gmpz_mfac_uiui
-__GMP_DECLSPEC void mpz_mfac_uiui (mpz_ptr, unsigned long int, unsigned long int);
-
-#define mpz_primorial_ui __gmpz_primorial_ui
-__GMP_DECLSPEC void mpz_primorial_ui (mpz_ptr, unsigned long int);
-
-#define mpz_fdiv_q __gmpz_fdiv_q
-__GMP_DECLSPEC void mpz_fdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr);
-
-#define mpz_fdiv_q_2exp __gmpz_fdiv_q_2exp
-__GMP_DECLSPEC void mpz_fdiv_q_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);
-
-#define mpz_fdiv_q_ui __gmpz_fdiv_q_ui
-__GMP_DECLSPEC unsigned long int mpz_fdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int);
-
-#define mpz_fdiv_qr __gmpz_fdiv_qr
-__GMP_DECLSPEC void mpz_fdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr);
-
-#define mpz_fdiv_qr_ui __gmpz_fdiv_qr_ui
-__GMP_DECLSPEC unsigned long int mpz_fdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int);
-
-#define mpz_fdiv_r __gmpz_fdiv_r
-__GMP_DECLSPEC void mpz_fdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr);
-
-#define mpz_fdiv_r_2exp __gmpz_fdiv_r_2exp
-__GMP_DECLSPEC void mpz_fdiv_r_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);
-
-#define mpz_fdiv_r_ui __gmpz_fdiv_r_ui
-__GMP_DECLSPEC unsigned long int mpz_fdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int);
-
-#define mpz_fdiv_ui __gmpz_fdiv_ui
-__GMP_DECLSPEC unsigned long int mpz_fdiv_ui (mpz_srcptr, unsigned long int) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_fib_ui __gmpz_fib_ui
-__GMP_DECLSPEC void mpz_fib_ui (mpz_ptr, unsigned long int);
-
-#define mpz_fib2_ui __gmpz_fib2_ui
-__GMP_DECLSPEC void mpz_fib2_ui (mpz_ptr, mpz_ptr, unsigned long int);
-
-#define mpz_fits_sint_p __gmpz_fits_sint_p
-__GMP_DECLSPEC int mpz_fits_sint_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_fits_slong_p __gmpz_fits_slong_p
-__GMP_DECLSPEC int mpz_fits_slong_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_fits_sshort_p __gmpz_fits_sshort_p
-__GMP_DECLSPEC int mpz_fits_sshort_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_fits_uint_p __gmpz_fits_uint_p
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_uint_p)
-__GMP_DECLSPEC int mpz_fits_uint_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_fits_ulong_p __gmpz_fits_ulong_p
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ulong_p)
-__GMP_DECLSPEC int mpz_fits_ulong_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_fits_ushort_p __gmpz_fits_ushort_p
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ushort_p)
-__GMP_DECLSPEC int mpz_fits_ushort_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_gcd __gmpz_gcd
-__GMP_DECLSPEC void mpz_gcd (mpz_ptr, mpz_srcptr, mpz_srcptr);
-
-#define mpz_gcd_ui __gmpz_gcd_ui
-__GMP_DECLSPEC unsigned long int mpz_gcd_ui (mpz_ptr, mpz_srcptr, unsigned long int);
-
-#define mpz_gcdext __gmpz_gcdext
-__GMP_DECLSPEC void mpz_gcdext (mpz_ptr, mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr);
-
-#define mpz_get_d __gmpz_get_d
-__GMP_DECLSPEC double mpz_get_d (mpz_srcptr) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_get_d_2exp __gmpz_get_d_2exp
-__GMP_DECLSPEC double mpz_get_d_2exp (signed long int *, mpz_srcptr);
-
-#define mpz_get_si __gmpz_get_si
-__GMP_DECLSPEC /* signed */ long int mpz_get_si (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_get_str __gmpz_get_str
-__GMP_DECLSPEC char *mpz_get_str (char *, int, mpz_srcptr);
-
-#define mpz_get_ui __gmpz_get_ui
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_get_ui)
-__GMP_DECLSPEC unsigned long int mpz_get_ui (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_getlimbn __gmpz_getlimbn
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_getlimbn)
-__GMP_DECLSPEC mp_limb_t mpz_getlimbn (mpz_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_hamdist __gmpz_hamdist
-__GMP_DECLSPEC mp_bitcnt_t mpz_hamdist (mpz_srcptr, mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_import __gmpz_import
-__GMP_DECLSPEC void mpz_import (mpz_ptr, size_t, int, size_t, int, size_t, const void *);
-
-#define mpz_init __gmpz_init
-__GMP_DECLSPEC void mpz_init (mpz_ptr);
-
-#define mpz_init2 __gmpz_init2
-__GMP_DECLSPEC void mpz_init2 (mpz_ptr, mp_bitcnt_t);
-
-#define mpz_inits __gmpz_inits
-__GMP_DECLSPEC void mpz_inits (mpz_ptr, ...);
-
-#define mpz_init_set __gmpz_init_set
-__GMP_DECLSPEC void mpz_init_set (mpz_ptr, mpz_srcptr);
-
-#define mpz_init_set_d __gmpz_init_set_d
-__GMP_DECLSPEC void mpz_init_set_d (mpz_ptr, double);
-
-#define mpz_init_set_si __gmpz_init_set_si
-__GMP_DECLSPEC void mpz_init_set_si (mpz_ptr, signed long int);
-
-#define mpz_init_set_str __gmpz_init_set_str
-__GMP_DECLSPEC int mpz_init_set_str (mpz_ptr, const char *, int);
-
-#define mpz_init_set_ui __gmpz_init_set_ui
-__GMP_DECLSPEC void mpz_init_set_ui (mpz_ptr, unsigned long int);
-
-#define mpz_inp_raw __gmpz_inp_raw
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpz_inp_raw (mpz_ptr, FILE *);
-#endif
-
-#define mpz_inp_str __gmpz_inp_str
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpz_inp_str (mpz_ptr, FILE *, int);
-#endif
-
-#define mpz_invert __gmpz_invert
-__GMP_DECLSPEC int mpz_invert (mpz_ptr, mpz_srcptr, mpz_srcptr);
-
-#define mpz_ior __gmpz_ior
-__GMP_DECLSPEC void mpz_ior (mpz_ptr, mpz_srcptr, mpz_srcptr);
-
-#define mpz_jacobi __gmpz_jacobi
-__GMP_DECLSPEC int mpz_jacobi (mpz_srcptr, mpz_srcptr) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_kronecker mpz_jacobi /* alias */
-
-#define mpz_kronecker_si __gmpz_kronecker_si
-__GMP_DECLSPEC int mpz_kronecker_si (mpz_srcptr, long) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_kronecker_ui __gmpz_kronecker_ui
-__GMP_DECLSPEC int mpz_kronecker_ui (mpz_srcptr, unsigned long) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_si_kronecker __gmpz_si_kronecker
-__GMP_DECLSPEC int mpz_si_kronecker (long, mpz_srcptr) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_ui_kronecker __gmpz_ui_kronecker
-__GMP_DECLSPEC int mpz_ui_kronecker (unsigned long, mpz_srcptr) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_lcm __gmpz_lcm
-__GMP_DECLSPEC void mpz_lcm (mpz_ptr, mpz_srcptr, mpz_srcptr);
-
-#define mpz_lcm_ui __gmpz_lcm_ui
-__GMP_DECLSPEC void mpz_lcm_ui (mpz_ptr, mpz_srcptr, unsigned long);
-
-#define mpz_legendre mpz_jacobi /* alias */
-
-#define mpz_lucnum_ui __gmpz_lucnum_ui
-__GMP_DECLSPEC void mpz_lucnum_ui (mpz_ptr, unsigned long int);
-
-#define mpz_lucnum2_ui __gmpz_lucnum2_ui
-__GMP_DECLSPEC void mpz_lucnum2_ui (mpz_ptr, mpz_ptr, unsigned long int);
-
-#define mpz_millerrabin __gmpz_millerrabin
-__GMP_DECLSPEC int mpz_millerrabin (mpz_srcptr, int) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_mod __gmpz_mod
-__GMP_DECLSPEC void mpz_mod (mpz_ptr, mpz_srcptr, mpz_srcptr);
-
-#define mpz_mod_ui mpz_fdiv_r_ui /* same as fdiv_r because divisor unsigned */
-
-#define mpz_mul __gmpz_mul
-__GMP_DECLSPEC void mpz_mul (mpz_ptr, mpz_srcptr, mpz_srcptr);
-
-#define mpz_mul_2exp __gmpz_mul_2exp
-__GMP_DECLSPEC void mpz_mul_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);
-
-#define mpz_mul_si __gmpz_mul_si
-__GMP_DECLSPEC void mpz_mul_si (mpz_ptr, mpz_srcptr, long int);
-
-#define mpz_mul_ui __gmpz_mul_ui
-__GMP_DECLSPEC void mpz_mul_ui (mpz_ptr, mpz_srcptr, unsigned long int);
-
-#define mpz_neg __gmpz_neg
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_neg)
-__GMP_DECLSPEC void mpz_neg (mpz_ptr, mpz_srcptr);
-#endif
-
-#define mpz_nextprime __gmpz_nextprime
-__GMP_DECLSPEC void mpz_nextprime (mpz_ptr, mpz_srcptr);
-
-#define mpz_out_raw __gmpz_out_raw
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpz_out_raw (FILE *, mpz_srcptr);
-#endif
-
-#define mpz_out_str __gmpz_out_str
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpz_out_str (FILE *, int, mpz_srcptr);
-#endif
-
-#define mpz_perfect_power_p __gmpz_perfect_power_p
-__GMP_DECLSPEC int mpz_perfect_power_p (mpz_srcptr) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_perfect_square_p __gmpz_perfect_square_p
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_perfect_square_p)
-__GMP_DECLSPEC int mpz_perfect_square_p (mpz_srcptr) __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_popcount __gmpz_popcount
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_popcount)
-__GMP_DECLSPEC mp_bitcnt_t mpz_popcount (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_pow_ui __gmpz_pow_ui
-__GMP_DECLSPEC void mpz_pow_ui (mpz_ptr, mpz_srcptr, unsigned long int);
-
-#define mpz_powm __gmpz_powm
-__GMP_DECLSPEC void mpz_powm (mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr);
-
-#define mpz_powm_sec __gmpz_powm_sec
-__GMP_DECLSPEC void mpz_powm_sec (mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr);
-
-#define mpz_powm_ui __gmpz_powm_ui
-__GMP_DECLSPEC void mpz_powm_ui (mpz_ptr, mpz_srcptr, unsigned long int, mpz_srcptr);
-
-#define mpz_probab_prime_p __gmpz_probab_prime_p
-__GMP_DECLSPEC int mpz_probab_prime_p (mpz_srcptr, int) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_random __gmpz_random
-__GMP_DECLSPEC void mpz_random (mpz_ptr, mp_size_t);
-
-#define mpz_random2 __gmpz_random2
-__GMP_DECLSPEC void mpz_random2 (mpz_ptr, mp_size_t);
-
-#define mpz_realloc2 __gmpz_realloc2
-__GMP_DECLSPEC void mpz_realloc2 (mpz_ptr, mp_bitcnt_t);
-
-#define mpz_remove __gmpz_remove
-__GMP_DECLSPEC mp_bitcnt_t mpz_remove (mpz_ptr, mpz_srcptr, mpz_srcptr);
-
-#define mpz_root __gmpz_root
-__GMP_DECLSPEC int mpz_root (mpz_ptr, mpz_srcptr, unsigned long int);
-
-#define mpz_rootrem __gmpz_rootrem
-__GMP_DECLSPEC void mpz_rootrem (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int);
-
-#define mpz_rrandomb __gmpz_rrandomb
-__GMP_DECLSPEC void mpz_rrandomb (mpz_ptr, gmp_randstate_t, mp_bitcnt_t);
-
-#define mpz_scan0 __gmpz_scan0
-__GMP_DECLSPEC mp_bitcnt_t mpz_scan0 (mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_scan1 __gmpz_scan1
-__GMP_DECLSPEC mp_bitcnt_t mpz_scan1 (mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_set __gmpz_set
-__GMP_DECLSPEC void mpz_set (mpz_ptr, mpz_srcptr);
-
-#define mpz_set_d __gmpz_set_d
-__GMP_DECLSPEC void mpz_set_d (mpz_ptr, double);
-
-#define mpz_set_f __gmpz_set_f
-__GMP_DECLSPEC void mpz_set_f (mpz_ptr, mpf_srcptr);
-
-#define mpz_set_q __gmpz_set_q
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_set_q)
-__GMP_DECLSPEC void mpz_set_q (mpz_ptr, mpq_srcptr);
-#endif
-
-#define mpz_set_si __gmpz_set_si
-__GMP_DECLSPEC void mpz_set_si (mpz_ptr, signed long int);
-
-#define mpz_set_str __gmpz_set_str
-__GMP_DECLSPEC int mpz_set_str (mpz_ptr, const char *, int);
-
-#define mpz_set_ui __gmpz_set_ui
-__GMP_DECLSPEC void mpz_set_ui (mpz_ptr, unsigned long int);
-
-#define mpz_setbit __gmpz_setbit
-__GMP_DECLSPEC void mpz_setbit (mpz_ptr, mp_bitcnt_t);
-
-#define mpz_size __gmpz_size
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_size)
-__GMP_DECLSPEC size_t mpz_size (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_sizeinbase __gmpz_sizeinbase
-__GMP_DECLSPEC size_t mpz_sizeinbase (mpz_srcptr, int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_sqrt __gmpz_sqrt
-__GMP_DECLSPEC void mpz_sqrt (mpz_ptr, mpz_srcptr);
-
-#define mpz_sqrtrem __gmpz_sqrtrem
-__GMP_DECLSPEC void mpz_sqrtrem (mpz_ptr, mpz_ptr, mpz_srcptr);
-
-#define mpz_sub __gmpz_sub
-__GMP_DECLSPEC void mpz_sub (mpz_ptr, mpz_srcptr, mpz_srcptr);
-
-#define mpz_sub_ui __gmpz_sub_ui
-__GMP_DECLSPEC void mpz_sub_ui (mpz_ptr, mpz_srcptr, unsigned long int);
-
-#define mpz_ui_sub __gmpz_ui_sub
-__GMP_DECLSPEC void mpz_ui_sub (mpz_ptr, unsigned long int, mpz_srcptr);
-
-#define mpz_submul __gmpz_submul
-__GMP_DECLSPEC void mpz_submul (mpz_ptr, mpz_srcptr, mpz_srcptr);
-
-#define mpz_submul_ui __gmpz_submul_ui
-__GMP_DECLSPEC void mpz_submul_ui (mpz_ptr, mpz_srcptr, unsigned long int);
-
-#define mpz_swap __gmpz_swap
-__GMP_DECLSPEC void mpz_swap (mpz_ptr, mpz_ptr) __GMP_NOTHROW;
-
-#define mpz_tdiv_ui __gmpz_tdiv_ui
-__GMP_DECLSPEC unsigned long int mpz_tdiv_ui (mpz_srcptr, unsigned long int) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_tdiv_q __gmpz_tdiv_q
-__GMP_DECLSPEC void mpz_tdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr);
-
-#define mpz_tdiv_q_2exp __gmpz_tdiv_q_2exp
-__GMP_DECLSPEC void mpz_tdiv_q_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);
-
-#define mpz_tdiv_q_ui __gmpz_tdiv_q_ui
-__GMP_DECLSPEC unsigned long int mpz_tdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int);
-
-#define mpz_tdiv_qr __gmpz_tdiv_qr
-__GMP_DECLSPEC void mpz_tdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr);
-
-#define mpz_tdiv_qr_ui __gmpz_tdiv_qr_ui
-__GMP_DECLSPEC unsigned long int mpz_tdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int);
-
-#define mpz_tdiv_r __gmpz_tdiv_r
-__GMP_DECLSPEC void mpz_tdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr);
-
-#define mpz_tdiv_r_2exp __gmpz_tdiv_r_2exp
-__GMP_DECLSPEC void mpz_tdiv_r_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);
-
-#define mpz_tdiv_r_ui __gmpz_tdiv_r_ui
-__GMP_DECLSPEC unsigned long int mpz_tdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int);
-
-#define mpz_tstbit __gmpz_tstbit
-__GMP_DECLSPEC int mpz_tstbit (mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_ui_pow_ui __gmpz_ui_pow_ui
-__GMP_DECLSPEC void mpz_ui_pow_ui (mpz_ptr, unsigned long int, unsigned long int);
-
-#define mpz_urandomb __gmpz_urandomb
-__GMP_DECLSPEC void mpz_urandomb (mpz_ptr, gmp_randstate_t, mp_bitcnt_t);
-
-#define mpz_urandomm __gmpz_urandomm
-__GMP_DECLSPEC void mpz_urandomm (mpz_ptr, gmp_randstate_t, mpz_srcptr);
-
-#define mpz_xor __gmpz_xor
-#define mpz_eor __gmpz_xor
-__GMP_DECLSPEC void mpz_xor (mpz_ptr, mpz_srcptr, mpz_srcptr);
-
-#define mpz_limbs_read __gmpz_limbs_read
-__GMP_DECLSPEC mp_srcptr mpz_limbs_read (mpz_srcptr);
-
-#define mpz_limbs_write __gmpz_limbs_write
-__GMP_DECLSPEC mp_ptr mpz_limbs_write (mpz_ptr, mp_size_t);
-
-#define mpz_limbs_modify __gmpz_limbs_modify
-__GMP_DECLSPEC mp_ptr mpz_limbs_modify (mpz_ptr, mp_size_t);
-
-#define mpz_limbs_finish __gmpz_limbs_finish
-__GMP_DECLSPEC void mpz_limbs_finish (mpz_ptr, mp_size_t);
-
-#define mpz_roinit_n __gmpz_roinit_n
-__GMP_DECLSPEC mpz_srcptr mpz_roinit_n (mpz_ptr, mp_srcptr, mp_size_t);
-
-#define MPZ_ROINIT_N(xp, xs) {{0, (xs),(xp) }}
-
-/**************** Rational (i.e. Q) routines. ****************/
-
-#define mpq_abs __gmpq_abs
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpq_abs)
-__GMP_DECLSPEC void mpq_abs (mpq_ptr, mpq_srcptr);
-#endif
-
-#define mpq_add __gmpq_add
-__GMP_DECLSPEC void mpq_add (mpq_ptr, mpq_srcptr, mpq_srcptr);
-
-#define mpq_canonicalize __gmpq_canonicalize
-__GMP_DECLSPEC void mpq_canonicalize (mpq_ptr);
-
-#define mpq_clear __gmpq_clear
-__GMP_DECLSPEC void mpq_clear (mpq_ptr);
-
-#define mpq_clears __gmpq_clears
-__GMP_DECLSPEC void mpq_clears (mpq_ptr, ...);
-
-#define mpq_cmp __gmpq_cmp
-__GMP_DECLSPEC int mpq_cmp (mpq_srcptr, mpq_srcptr) __GMP_ATTRIBUTE_PURE;
-
-#define _mpq_cmp_si __gmpq_cmp_si
-__GMP_DECLSPEC int _mpq_cmp_si (mpq_srcptr, long, unsigned long) __GMP_ATTRIBUTE_PURE;
-
-#define _mpq_cmp_ui __gmpq_cmp_ui
-__GMP_DECLSPEC int _mpq_cmp_ui (mpq_srcptr, unsigned long int, unsigned long int) __GMP_ATTRIBUTE_PURE;
-
-#define mpq_div __gmpq_div
-__GMP_DECLSPEC void mpq_div (mpq_ptr, mpq_srcptr, mpq_srcptr);
-
-#define mpq_div_2exp __gmpq_div_2exp
-__GMP_DECLSPEC void mpq_div_2exp (mpq_ptr, mpq_srcptr, mp_bitcnt_t);
-
-#define mpq_equal __gmpq_equal
-__GMP_DECLSPEC int mpq_equal (mpq_srcptr, mpq_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpq_get_num __gmpq_get_num
-__GMP_DECLSPEC void mpq_get_num (mpz_ptr, mpq_srcptr);
-
-#define mpq_get_den __gmpq_get_den
-__GMP_DECLSPEC void mpq_get_den (mpz_ptr, mpq_srcptr);
-
-#define mpq_get_d __gmpq_get_d
-__GMP_DECLSPEC double mpq_get_d (mpq_srcptr) __GMP_ATTRIBUTE_PURE;
-
-#define mpq_get_str __gmpq_get_str
-__GMP_DECLSPEC char *mpq_get_str (char *, int, mpq_srcptr);
-
-#define mpq_init __gmpq_init
-__GMP_DECLSPEC void mpq_init (mpq_ptr);
-
-#define mpq_inits __gmpq_inits
-__GMP_DECLSPEC void mpq_inits (mpq_ptr, ...);
-
-#define mpq_inp_str __gmpq_inp_str
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpq_inp_str (mpq_ptr, FILE *, int);
-#endif
-
-#define mpq_inv __gmpq_inv
-__GMP_DECLSPEC void mpq_inv (mpq_ptr, mpq_srcptr);
-
-#define mpq_mul __gmpq_mul
-__GMP_DECLSPEC void mpq_mul (mpq_ptr, mpq_srcptr, mpq_srcptr);
-
-#define mpq_mul_2exp __gmpq_mul_2exp
-__GMP_DECLSPEC void mpq_mul_2exp (mpq_ptr, mpq_srcptr, mp_bitcnt_t);
-
-#define mpq_neg __gmpq_neg
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpq_neg)
-__GMP_DECLSPEC void mpq_neg (mpq_ptr, mpq_srcptr);
-#endif
-
-#define mpq_out_str __gmpq_out_str
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpq_out_str (FILE *, int, mpq_srcptr);
-#endif
-
-#define mpq_set __gmpq_set
-__GMP_DECLSPEC void mpq_set (mpq_ptr, mpq_srcptr);
-
-#define mpq_set_d __gmpq_set_d
-__GMP_DECLSPEC void mpq_set_d (mpq_ptr, double);
-
-#define mpq_set_den __gmpq_set_den
-__GMP_DECLSPEC void mpq_set_den (mpq_ptr, mpz_srcptr);
-
-#define mpq_set_f __gmpq_set_f
-__GMP_DECLSPEC void mpq_set_f (mpq_ptr, mpf_srcptr);
-
-#define mpq_set_num __gmpq_set_num
-__GMP_DECLSPEC void mpq_set_num (mpq_ptr, mpz_srcptr);
-
-#define mpq_set_si __gmpq_set_si
-__GMP_DECLSPEC void mpq_set_si (mpq_ptr, signed long int, unsigned long int);
-
-#define mpq_set_str __gmpq_set_str
-__GMP_DECLSPEC int mpq_set_str (mpq_ptr, const char *, int);
-
-#define mpq_set_ui __gmpq_set_ui
-__GMP_DECLSPEC void mpq_set_ui (mpq_ptr, unsigned long int, unsigned long int);
-
-#define mpq_set_z __gmpq_set_z
-__GMP_DECLSPEC void mpq_set_z (mpq_ptr, mpz_srcptr);
-
-#define mpq_sub __gmpq_sub
-__GMP_DECLSPEC void mpq_sub (mpq_ptr, mpq_srcptr, mpq_srcptr);
-
-#define mpq_swap __gmpq_swap
-__GMP_DECLSPEC void mpq_swap (mpq_ptr, mpq_ptr) __GMP_NOTHROW;
-
-
-/**************** Float (i.e. F) routines. ****************/
-
-#define mpf_abs __gmpf_abs
-__GMP_DECLSPEC void mpf_abs (mpf_ptr, mpf_srcptr);
-
-#define mpf_add __gmpf_add
-__GMP_DECLSPEC void mpf_add (mpf_ptr, mpf_srcptr, mpf_srcptr);
-
-#define mpf_add_ui __gmpf_add_ui
-__GMP_DECLSPEC void mpf_add_ui (mpf_ptr, mpf_srcptr, unsigned long int);
-#define mpf_ceil __gmpf_ceil
-__GMP_DECLSPEC void mpf_ceil (mpf_ptr, mpf_srcptr);
-
-#define mpf_clear __gmpf_clear
-__GMP_DECLSPEC void mpf_clear (mpf_ptr);
-
-#define mpf_clears __gmpf_clears
-__GMP_DECLSPEC void mpf_clears (mpf_ptr, ...);
-
-#define mpf_cmp __gmpf_cmp
-__GMP_DECLSPEC int mpf_cmp (mpf_srcptr, mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_cmp_d __gmpf_cmp_d
-__GMP_DECLSPEC int mpf_cmp_d (mpf_srcptr, double) __GMP_ATTRIBUTE_PURE;
-
-#define mpf_cmp_si __gmpf_cmp_si
-__GMP_DECLSPEC int mpf_cmp_si (mpf_srcptr, signed long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_cmp_ui __gmpf_cmp_ui
-__GMP_DECLSPEC int mpf_cmp_ui (mpf_srcptr, unsigned long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_div __gmpf_div
-__GMP_DECLSPEC void mpf_div (mpf_ptr, mpf_srcptr, mpf_srcptr);
-
-#define mpf_div_2exp __gmpf_div_2exp
-__GMP_DECLSPEC void mpf_div_2exp (mpf_ptr, mpf_srcptr, mp_bitcnt_t);
-
-#define mpf_div_ui __gmpf_div_ui
-__GMP_DECLSPEC void mpf_div_ui (mpf_ptr, mpf_srcptr, unsigned long int);
-
-#define mpf_dump __gmpf_dump
-__GMP_DECLSPEC void mpf_dump (mpf_srcptr);
-
-#define mpf_eq __gmpf_eq
-__GMP_DECLSPEC int mpf_eq (mpf_srcptr, mpf_srcptr, mp_bitcnt_t) __GMP_ATTRIBUTE_PURE;
-
-#define mpf_fits_sint_p __gmpf_fits_sint_p
-__GMP_DECLSPEC int mpf_fits_sint_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_fits_slong_p __gmpf_fits_slong_p
-__GMP_DECLSPEC int mpf_fits_slong_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_fits_sshort_p __gmpf_fits_sshort_p
-__GMP_DECLSPEC int mpf_fits_sshort_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_fits_uint_p __gmpf_fits_uint_p
-__GMP_DECLSPEC int mpf_fits_uint_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_fits_ulong_p __gmpf_fits_ulong_p
-__GMP_DECLSPEC int mpf_fits_ulong_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_fits_ushort_p __gmpf_fits_ushort_p
-__GMP_DECLSPEC int mpf_fits_ushort_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_floor __gmpf_floor
-__GMP_DECLSPEC void mpf_floor (mpf_ptr, mpf_srcptr);
-
-#define mpf_get_d __gmpf_get_d
-__GMP_DECLSPEC double mpf_get_d (mpf_srcptr) __GMP_ATTRIBUTE_PURE;
-
-#define mpf_get_d_2exp __gmpf_get_d_2exp
-__GMP_DECLSPEC double mpf_get_d_2exp (signed long int *, mpf_srcptr);
-
-#define mpf_get_default_prec __gmpf_get_default_prec
-__GMP_DECLSPEC mp_bitcnt_t mpf_get_default_prec (void) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_get_prec __gmpf_get_prec
-__GMP_DECLSPEC mp_bitcnt_t mpf_get_prec (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_get_si __gmpf_get_si
-__GMP_DECLSPEC long mpf_get_si (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_get_str __gmpf_get_str
-__GMP_DECLSPEC char *mpf_get_str (char *, mp_exp_t *, int, size_t, mpf_srcptr);
-
-#define mpf_get_ui __gmpf_get_ui
-__GMP_DECLSPEC unsigned long mpf_get_ui (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_init __gmpf_init
-__GMP_DECLSPEC void mpf_init (mpf_ptr);
-
-#define mpf_init2 __gmpf_init2
-__GMP_DECLSPEC void mpf_init2 (mpf_ptr, mp_bitcnt_t);
-
-#define mpf_inits __gmpf_inits
-__GMP_DECLSPEC void mpf_inits (mpf_ptr, ...);
-
-#define mpf_init_set __gmpf_init_set
-__GMP_DECLSPEC void mpf_init_set (mpf_ptr, mpf_srcptr);
-
-#define mpf_init_set_d __gmpf_init_set_d
-__GMP_DECLSPEC void mpf_init_set_d (mpf_ptr, double);
-
-#define mpf_init_set_si __gmpf_init_set_si
-__GMP_DECLSPEC void mpf_init_set_si (mpf_ptr, signed long int);
-
-#define mpf_init_set_str __gmpf_init_set_str
-__GMP_DECLSPEC int mpf_init_set_str (mpf_ptr, const char *, int);
-
-#define mpf_init_set_ui __gmpf_init_set_ui
-__GMP_DECLSPEC void mpf_init_set_ui (mpf_ptr, unsigned long int);
-
-#define mpf_inp_str __gmpf_inp_str
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpf_inp_str (mpf_ptr, FILE *, int);
-#endif
-
-#define mpf_integer_p __gmpf_integer_p
-__GMP_DECLSPEC int mpf_integer_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_mul __gmpf_mul
-__GMP_DECLSPEC void mpf_mul (mpf_ptr, mpf_srcptr, mpf_srcptr);
-
-#define mpf_mul_2exp __gmpf_mul_2exp
-__GMP_DECLSPEC void mpf_mul_2exp (mpf_ptr, mpf_srcptr, mp_bitcnt_t);
-
-#define mpf_mul_ui __gmpf_mul_ui
-__GMP_DECLSPEC void mpf_mul_ui (mpf_ptr, mpf_srcptr, unsigned long int);
-
-#define mpf_neg __gmpf_neg
-__GMP_DECLSPEC void mpf_neg (mpf_ptr, mpf_srcptr);
-
-#define mpf_out_str __gmpf_out_str
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpf_out_str (FILE *, int, size_t, mpf_srcptr);
-#endif
-
-#define mpf_pow_ui __gmpf_pow_ui
-__GMP_DECLSPEC void mpf_pow_ui (mpf_ptr, mpf_srcptr, unsigned long int);
-
-#define mpf_random2 __gmpf_random2
-__GMP_DECLSPEC void mpf_random2 (mpf_ptr, mp_size_t, mp_exp_t);
-
-#define mpf_reldiff __gmpf_reldiff
-__GMP_DECLSPEC void mpf_reldiff (mpf_ptr, mpf_srcptr, mpf_srcptr);
-
-#define mpf_set __gmpf_set
-__GMP_DECLSPEC void mpf_set (mpf_ptr, mpf_srcptr);
-
-#define mpf_set_d __gmpf_set_d
-__GMP_DECLSPEC void mpf_set_d (mpf_ptr, double);
-
-#define mpf_set_default_prec __gmpf_set_default_prec
-__GMP_DECLSPEC void mpf_set_default_prec (mp_bitcnt_t) __GMP_NOTHROW;
-
-#define mpf_set_prec __gmpf_set_prec
-__GMP_DECLSPEC void mpf_set_prec (mpf_ptr, mp_bitcnt_t);
-
-#define mpf_set_prec_raw __gmpf_set_prec_raw
-__GMP_DECLSPEC void mpf_set_prec_raw (mpf_ptr, mp_bitcnt_t) __GMP_NOTHROW;
-
-#define mpf_set_q __gmpf_set_q
-__GMP_DECLSPEC void mpf_set_q (mpf_ptr, mpq_srcptr);
-
-#define mpf_set_si __gmpf_set_si
-__GMP_DECLSPEC void mpf_set_si (mpf_ptr, signed long int);
-
-#define mpf_set_str __gmpf_set_str
-__GMP_DECLSPEC int mpf_set_str (mpf_ptr, const char *, int);
-
-#define mpf_set_ui __gmpf_set_ui
-__GMP_DECLSPEC void mpf_set_ui (mpf_ptr, unsigned long int);
-
-#define mpf_set_z __gmpf_set_z
-__GMP_DECLSPEC void mpf_set_z (mpf_ptr, mpz_srcptr);
-
-#define mpf_size __gmpf_size
-__GMP_DECLSPEC size_t mpf_size (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_sqrt __gmpf_sqrt
-__GMP_DECLSPEC void mpf_sqrt (mpf_ptr, mpf_srcptr);
-
-#define mpf_sqrt_ui __gmpf_sqrt_ui
-__GMP_DECLSPEC void mpf_sqrt_ui (mpf_ptr, unsigned long int);
-
-#define mpf_sub __gmpf_sub
-__GMP_DECLSPEC void mpf_sub (mpf_ptr, mpf_srcptr, mpf_srcptr);
-
-#define mpf_sub_ui __gmpf_sub_ui
-__GMP_DECLSPEC void mpf_sub_ui (mpf_ptr, mpf_srcptr, unsigned long int);
-
-#define mpf_swap __gmpf_swap
-__GMP_DECLSPEC void mpf_swap (mpf_ptr, mpf_ptr) __GMP_NOTHROW;
-
-#define mpf_trunc __gmpf_trunc
-__GMP_DECLSPEC void mpf_trunc (mpf_ptr, mpf_srcptr);
-
-#define mpf_ui_div __gmpf_ui_div
-__GMP_DECLSPEC void mpf_ui_div (mpf_ptr, unsigned long int, mpf_srcptr);
-
-#define mpf_ui_sub __gmpf_ui_sub
-__GMP_DECLSPEC void mpf_ui_sub (mpf_ptr, unsigned long int, mpf_srcptr);
-
-#define mpf_urandomb __gmpf_urandomb
-__GMP_DECLSPEC void mpf_urandomb (mpf_t, gmp_randstate_t, mp_bitcnt_t);
-
-
-/************ Low level positive-integer (i.e. N) routines. ************/
-
-/* This is ugly, but we need to make user calls reach the prefixed function. */
-
-#define mpn_add __MPN(add)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_add)
-__GMP_DECLSPEC mp_limb_t mpn_add (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t);
-#endif
-
-#define mpn_add_1 __MPN(add_1)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_add_1)
-__GMP_DECLSPEC mp_limb_t mpn_add_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t) __GMP_NOTHROW;
-#endif
-
-#define mpn_add_n __MPN(add_n)
-__GMP_DECLSPEC mp_limb_t mpn_add_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
-
-#define mpn_addmul_1 __MPN(addmul_1)
-__GMP_DECLSPEC mp_limb_t mpn_addmul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);
-
-#define mpn_cmp __MPN(cmp)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_cmp)
-__GMP_DECLSPEC int mpn_cmp (mp_srcptr, mp_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpn_divexact_by3(dst,src,size) \
- mpn_divexact_by3c (dst, src, size, __GMP_CAST (mp_limb_t, 0))
-
-#define mpn_divexact_by3c __MPN(divexact_by3c)
-__GMP_DECLSPEC mp_limb_t mpn_divexact_by3c (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);
-
-#define mpn_divmod_1(qp,np,nsize,dlimb) \
- mpn_divrem_1 (qp, __GMP_CAST (mp_size_t, 0), np, nsize, dlimb)
-
-#define mpn_divrem __MPN(divrem)
-__GMP_DECLSPEC mp_limb_t mpn_divrem (mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr, mp_size_t);
-
-#define mpn_divrem_1 __MPN(divrem_1)
-__GMP_DECLSPEC mp_limb_t mpn_divrem_1 (mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_limb_t);
-
-#define mpn_divrem_2 __MPN(divrem_2)
-__GMP_DECLSPEC mp_limb_t mpn_divrem_2 (mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr);
-
-#define mpn_div_qr_1 __MPN(div_qr_1)
-__GMP_DECLSPEC mp_limb_t mpn_div_qr_1 (mp_ptr, mp_limb_t *, mp_srcptr, mp_size_t, mp_limb_t);
-
-#define mpn_div_qr_2 __MPN(div_qr_2)
-__GMP_DECLSPEC mp_limb_t mpn_div_qr_2 (mp_ptr, mp_ptr, mp_srcptr, mp_size_t, mp_srcptr);
-
-#define mpn_gcd __MPN(gcd)
-__GMP_DECLSPEC mp_size_t mpn_gcd (mp_ptr, mp_ptr, mp_size_t, mp_ptr, mp_size_t);
-
-#define mpn_gcd_1 __MPN(gcd_1)
-__GMP_DECLSPEC mp_limb_t mpn_gcd_1 (mp_srcptr, mp_size_t, mp_limb_t) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_gcdext_1 __MPN(gcdext_1)
-__GMP_DECLSPEC mp_limb_t mpn_gcdext_1 (mp_limb_signed_t *, mp_limb_signed_t *, mp_limb_t, mp_limb_t);
-
-#define mpn_gcdext __MPN(gcdext)
-__GMP_DECLSPEC mp_size_t mpn_gcdext (mp_ptr, mp_ptr, mp_size_t *, mp_ptr, mp_size_t, mp_ptr, mp_size_t);
-
-#define mpn_get_str __MPN(get_str)
-__GMP_DECLSPEC size_t mpn_get_str (unsigned char *, int, mp_ptr, mp_size_t);
-
-#define mpn_hamdist __MPN(hamdist)
-__GMP_DECLSPEC mp_bitcnt_t mpn_hamdist (mp_srcptr, mp_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpn_lshift __MPN(lshift)
-__GMP_DECLSPEC mp_limb_t mpn_lshift (mp_ptr, mp_srcptr, mp_size_t, unsigned int);
-
-#define mpn_mod_1 __MPN(mod_1)
-__GMP_DECLSPEC mp_limb_t mpn_mod_1 (mp_srcptr, mp_size_t, mp_limb_t) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_mul __MPN(mul)
-__GMP_DECLSPEC mp_limb_t mpn_mul (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t);
-
-#define mpn_mul_1 __MPN(mul_1)
-__GMP_DECLSPEC mp_limb_t mpn_mul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);
-
-#define mpn_mul_n __MPN(mul_n)
-__GMP_DECLSPEC void mpn_mul_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
-
-#define mpn_sqr __MPN(sqr)
-__GMP_DECLSPEC void mpn_sqr (mp_ptr, mp_srcptr, mp_size_t);
-
-#define mpn_neg __MPN(neg)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_neg)
-__GMP_DECLSPEC mp_limb_t mpn_neg (mp_ptr, mp_srcptr, mp_size_t);
-#endif
-
-#define mpn_com __MPN(com)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_com)
-__GMP_DECLSPEC void mpn_com (mp_ptr, mp_srcptr, mp_size_t);
-#endif
-
-#define mpn_perfect_square_p __MPN(perfect_square_p)
-__GMP_DECLSPEC int mpn_perfect_square_p (mp_srcptr, mp_size_t) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_perfect_power_p __MPN(perfect_power_p)
-__GMP_DECLSPEC int mpn_perfect_power_p (mp_srcptr, mp_size_t) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_popcount __MPN(popcount)
-__GMP_DECLSPEC mp_bitcnt_t mpn_popcount (mp_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpn_pow_1 __MPN(pow_1)
-__GMP_DECLSPEC mp_size_t mpn_pow_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr);
-
-/* undocumented now, but retained here for upward compatibility */
-#define mpn_preinv_mod_1 __MPN(preinv_mod_1)
-__GMP_DECLSPEC mp_limb_t mpn_preinv_mod_1 (mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_random __MPN(random)
-__GMP_DECLSPEC void mpn_random (mp_ptr, mp_size_t);
-
-#define mpn_random2 __MPN(random2)
-__GMP_DECLSPEC void mpn_random2 (mp_ptr, mp_size_t);
-
-#define mpn_rshift __MPN(rshift)
-__GMP_DECLSPEC mp_limb_t mpn_rshift (mp_ptr, mp_srcptr, mp_size_t, unsigned int);
-
-#define mpn_scan0 __MPN(scan0)
-__GMP_DECLSPEC mp_bitcnt_t mpn_scan0 (mp_srcptr, mp_bitcnt_t) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_scan1 __MPN(scan1)
-__GMP_DECLSPEC mp_bitcnt_t mpn_scan1 (mp_srcptr, mp_bitcnt_t) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_set_str __MPN(set_str)
-__GMP_DECLSPEC mp_size_t mpn_set_str (mp_ptr, const unsigned char *, size_t, int);
-
-#define mpn_sizeinbase __MPN(sizeinbase)
-__GMP_DECLSPEC size_t mpn_sizeinbase (mp_srcptr, mp_size_t, int);
-
-#define mpn_sqrtrem __MPN(sqrtrem)
-__GMP_DECLSPEC mp_size_t mpn_sqrtrem (mp_ptr, mp_ptr, mp_srcptr, mp_size_t);
-
-#define mpn_sub __MPN(sub)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_sub)
-__GMP_DECLSPEC mp_limb_t mpn_sub (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t);
-#endif
-
-#define mpn_sub_1 __MPN(sub_1)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_sub_1)
-__GMP_DECLSPEC mp_limb_t mpn_sub_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t) __GMP_NOTHROW;
-#endif
-
-#define mpn_sub_n __MPN(sub_n)
-__GMP_DECLSPEC mp_limb_t mpn_sub_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
-
-#define mpn_submul_1 __MPN(submul_1)
-__GMP_DECLSPEC mp_limb_t mpn_submul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);
-
-#define mpn_tdiv_qr __MPN(tdiv_qr)
-__GMP_DECLSPEC void mpn_tdiv_qr (mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t);
-
-#define mpn_and_n __MPN(and_n)
-__GMP_DECLSPEC void mpn_and_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
-#define mpn_andn_n __MPN(andn_n)
-__GMP_DECLSPEC void mpn_andn_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
-#define mpn_nand_n __MPN(nand_n)
-__GMP_DECLSPEC void mpn_nand_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
-#define mpn_ior_n __MPN(ior_n)
-__GMP_DECLSPEC void mpn_ior_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
-#define mpn_iorn_n __MPN(iorn_n)
-__GMP_DECLSPEC void mpn_iorn_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
-#define mpn_nior_n __MPN(nior_n)
-__GMP_DECLSPEC void mpn_nior_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
-#define mpn_xor_n __MPN(xor_n)
-__GMP_DECLSPEC void mpn_xor_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
-#define mpn_xnor_n __MPN(xnor_n)
-__GMP_DECLSPEC void mpn_xnor_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
-
-#define mpn_copyi __MPN(copyi)
-__GMP_DECLSPEC void mpn_copyi (mp_ptr, mp_srcptr, mp_size_t);
-#define mpn_copyd __MPN(copyd)
-__GMP_DECLSPEC void mpn_copyd (mp_ptr, mp_srcptr, mp_size_t);
-#define mpn_zero __MPN(zero)
-__GMP_DECLSPEC void mpn_zero (mp_ptr, mp_size_t);
-
-#define mpn_cnd_add_n __MPN(cnd_add_n)
-__GMP_DECLSPEC mp_limb_t mpn_cnd_add_n (mp_limb_t, mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
-#define mpn_cnd_sub_n __MPN(cnd_sub_n)
-__GMP_DECLSPEC mp_limb_t mpn_cnd_sub_n (mp_limb_t, mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
-
-#define mpn_sec_add_1 __MPN(sec_add_1)
-__GMP_DECLSPEC mp_limb_t mpn_sec_add_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr);
-#define mpn_sec_add_1_itch __MPN(sec_add_1_itch)
-__GMP_DECLSPEC mp_size_t mpn_sec_add_1_itch (mp_size_t) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_sec_sub_1 __MPN(sec_sub_1)
-__GMP_DECLSPEC mp_limb_t mpn_sec_sub_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr);
-#define mpn_sec_sub_1_itch __MPN(sec_sub_1_itch)
-__GMP_DECLSPEC mp_size_t mpn_sec_sub_1_itch (mp_size_t) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_sec_mul __MPN(sec_mul)
-__GMP_DECLSPEC void mpn_sec_mul (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t, mp_ptr);
-#define mpn_sec_mul_itch __MPN(sec_mul_itch)
-__GMP_DECLSPEC mp_size_t mpn_sec_mul_itch (mp_size_t, mp_size_t) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_sec_sqr __MPN(sec_sqr)
-__GMP_DECLSPEC void mpn_sec_sqr (mp_ptr, mp_srcptr, mp_size_t, mp_ptr);
-#define mpn_sec_sqr_itch __MPN(sec_sqr_itch)
-__GMP_DECLSPEC mp_size_t mpn_sec_sqr_itch (mp_size_t) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_sec_powm __MPN(sec_powm)
-__GMP_DECLSPEC void mpn_sec_powm (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_bitcnt_t, mp_srcptr, mp_size_t, mp_ptr);
-#define mpn_sec_powm_itch __MPN(sec_powm_itch)
-__GMP_DECLSPEC mp_size_t mpn_sec_powm_itch (mp_size_t, mp_bitcnt_t, mp_size_t) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_sec_tabselect __MPN(sec_tabselect)
-__GMP_DECLSPEC void mpn_sec_tabselect (volatile mp_limb_t *, volatile const mp_limb_t *, mp_size_t, mp_size_t, mp_size_t);
-
-#define mpn_sec_div_qr __MPN(sec_div_qr)
-__GMP_DECLSPEC mp_limb_t mpn_sec_div_qr (mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_ptr);
-#define mpn_sec_div_qr_itch __MPN(sec_div_qr_itch)
-__GMP_DECLSPEC mp_size_t mpn_sec_div_qr_itch (mp_size_t, mp_size_t) __GMP_ATTRIBUTE_PURE;
-#define mpn_sec_div_r __MPN(sec_div_r)
-__GMP_DECLSPEC void mpn_sec_div_r (mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_ptr);
-#define mpn_sec_div_r_itch __MPN(sec_div_r_itch)
-__GMP_DECLSPEC mp_size_t mpn_sec_div_r_itch (mp_size_t, mp_size_t) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_sec_invert __MPN(sec_invert)
-__GMP_DECLSPEC int mpn_sec_invert (mp_ptr, mp_ptr, mp_srcptr, mp_size_t, mp_bitcnt_t, mp_ptr);
-#define mpn_sec_invert_itch __MPN(sec_invert_itch)
-__GMP_DECLSPEC mp_size_t mpn_sec_invert_itch (mp_size_t) __GMP_ATTRIBUTE_PURE;
-
-
-/**************** mpz inlines ****************/
-
-/* The following are provided as inlines where possible, but always exist as
- library functions too, for binary compatibility.
-
- Within gmp itself this inlining generally isn't relied on, since it
- doesn't get done for all compilers, whereas if something is worth
- inlining then it's worth arranging always.
-
- There are two styles of inlining here. When the same bit of code is
- wanted for the inline as for the library version, then __GMP_FORCE_foo
- arranges for that code to be emitted and the __GMP_EXTERN_INLINE
- directive suppressed, eg. mpz_fits_uint_p. When a different bit of code
- is wanted for the inline than for the library version, then
- __GMP_FORCE_foo arranges the inline to be suppressed, eg. mpz_abs. */
-
-#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpz_abs)
-__GMP_EXTERN_INLINE void
-mpz_abs (mpz_ptr __gmp_w, mpz_srcptr __gmp_u)
-{
- if (__gmp_w != __gmp_u)
- mpz_set (__gmp_w, __gmp_u);
- __gmp_w->_mp_size = __GMP_ABS (__gmp_w->_mp_size);
-}
-#endif
-
-#if GMP_NAIL_BITS == 0
-#define __GMPZ_FITS_UTYPE_P(z,maxval) \
- mp_size_t __gmp_n = z->_mp_size; \
- mp_ptr __gmp_p = z->_mp_d; \
- return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval));
-#else
-#define __GMPZ_FITS_UTYPE_P(z,maxval) \
- mp_size_t __gmp_n = z->_mp_size; \
- mp_ptr __gmp_p = z->_mp_d; \
- return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval) \
- || (__gmp_n == 2 && __gmp_p[1] <= ((mp_limb_t) maxval >> GMP_NUMB_BITS)));
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_uint_p)
-#if ! defined (__GMP_FORCE_mpz_fits_uint_p)
-__GMP_EXTERN_INLINE
-#endif
-int
-mpz_fits_uint_p (mpz_srcptr __gmp_z) __GMP_NOTHROW
-{
- __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_UINT_MAX);
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_ulong_p)
-#if ! defined (__GMP_FORCE_mpz_fits_ulong_p)
-__GMP_EXTERN_INLINE
-#endif
-int
-mpz_fits_ulong_p (mpz_srcptr __gmp_z) __GMP_NOTHROW
-{
- __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_ULONG_MAX);
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_ushort_p)
-#if ! defined (__GMP_FORCE_mpz_fits_ushort_p)
-__GMP_EXTERN_INLINE
-#endif
-int
-mpz_fits_ushort_p (mpz_srcptr __gmp_z) __GMP_NOTHROW
-{
- __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_USHRT_MAX);
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_get_ui)
-#if ! defined (__GMP_FORCE_mpz_get_ui)
-__GMP_EXTERN_INLINE
-#endif
-unsigned long
-mpz_get_ui (mpz_srcptr __gmp_z) __GMP_NOTHROW
-{
- mp_ptr __gmp_p = __gmp_z->_mp_d;
- mp_size_t __gmp_n = __gmp_z->_mp_size;
- mp_limb_t __gmp_l = __gmp_p[0];
- /* This is a "#if" rather than a plain "if" so as to avoid gcc warnings
- about "<< GMP_NUMB_BITS" exceeding the type size, and to avoid Borland
- C++ 6.0 warnings about condition always true for something like
- "__GMP_ULONG_MAX < GMP_NUMB_MASK". */
-#if GMP_NAIL_BITS == 0 || defined (_LONG_LONG_LIMB)
- /* limb==long and no nails, or limb==longlong, one limb is enough */
- return (__gmp_n != 0 ? __gmp_l : 0);
-#else
- /* limb==long and nails, need two limbs when available */
- __gmp_n = __GMP_ABS (__gmp_n);
- if (__gmp_n <= 1)
- return (__gmp_n != 0 ? __gmp_l : 0);
- else
- return __gmp_l + (__gmp_p[1] << GMP_NUMB_BITS);
-#endif
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_getlimbn)
-#if ! defined (__GMP_FORCE_mpz_getlimbn)
-__GMP_EXTERN_INLINE
-#endif
-mp_limb_t
-mpz_getlimbn (mpz_srcptr __gmp_z, mp_size_t __gmp_n) __GMP_NOTHROW
-{
- mp_limb_t __gmp_result = 0;
- if (__GMP_LIKELY (__gmp_n >= 0 && __gmp_n < __GMP_ABS (__gmp_z->_mp_size)))
- __gmp_result = __gmp_z->_mp_d[__gmp_n];
- return __gmp_result;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpz_neg)
-__GMP_EXTERN_INLINE void
-mpz_neg (mpz_ptr __gmp_w, mpz_srcptr __gmp_u)
-{
- if (__gmp_w != __gmp_u)
- mpz_set (__gmp_w, __gmp_u);
- __gmp_w->_mp_size = - __gmp_w->_mp_size;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_perfect_square_p)
-#if ! defined (__GMP_FORCE_mpz_perfect_square_p)
-__GMP_EXTERN_INLINE
-#endif
-int
-mpz_perfect_square_p (mpz_srcptr __gmp_a)
-{
- mp_size_t __gmp_asize;
- int __gmp_result;
-
- __gmp_asize = __gmp_a->_mp_size;
- __gmp_result = (__gmp_asize >= 0); /* zero is a square, negatives are not */
- if (__GMP_LIKELY (__gmp_asize > 0))
- __gmp_result = mpn_perfect_square_p (__gmp_a->_mp_d, __gmp_asize);
- return __gmp_result;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_popcount)
-#if ! defined (__GMP_FORCE_mpz_popcount)
-__GMP_EXTERN_INLINE
-#endif
-mp_bitcnt_t
-mpz_popcount (mpz_srcptr __gmp_u) __GMP_NOTHROW
-{
- mp_size_t __gmp_usize;
- mp_bitcnt_t __gmp_result;
-
- __gmp_usize = __gmp_u->_mp_size;
- __gmp_result = (__gmp_usize < 0 ? __GMP_ULONG_MAX : 0);
- if (__GMP_LIKELY (__gmp_usize > 0))
- __gmp_result = mpn_popcount (__gmp_u->_mp_d, __gmp_usize);
- return __gmp_result;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_set_q)
-#if ! defined (__GMP_FORCE_mpz_set_q)
-__GMP_EXTERN_INLINE
-#endif
-void
-mpz_set_q (mpz_ptr __gmp_w, mpq_srcptr __gmp_u)
-{
- mpz_tdiv_q (__gmp_w, mpq_numref (__gmp_u), mpq_denref (__gmp_u));
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_size)
-#if ! defined (__GMP_FORCE_mpz_size)
-__GMP_EXTERN_INLINE
-#endif
-size_t
-mpz_size (mpz_srcptr __gmp_z) __GMP_NOTHROW
-{
- return __GMP_ABS (__gmp_z->_mp_size);
-}
-#endif
-
-
-/**************** mpq inlines ****************/
-
-#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpq_abs)
-__GMP_EXTERN_INLINE void
-mpq_abs (mpq_ptr __gmp_w, mpq_srcptr __gmp_u)
-{
- if (__gmp_w != __gmp_u)
- mpq_set (__gmp_w, __gmp_u);
- __gmp_w->_mp_num._mp_size = __GMP_ABS (__gmp_w->_mp_num._mp_size);
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpq_neg)
-__GMP_EXTERN_INLINE void
-mpq_neg (mpq_ptr __gmp_w, mpq_srcptr __gmp_u)
-{
- if (__gmp_w != __gmp_u)
- mpq_set (__gmp_w, __gmp_u);
- __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size;
-}
-#endif
-
-
-/**************** mpn inlines ****************/
-
-/* The comments with __GMPN_ADD_1 below apply here too.
-
- The test for FUNCTION returning 0 should predict well. If it's assumed
- {yp,ysize} will usually have a random number of bits then the high limb
- won't be full and a carry out will occur a good deal less than 50% of the
- time.
-
- ysize==0 isn't a documented feature, but is used internally in a few
- places.
-
- Producing cout last stops it using up a register during the main part of
- the calculation, though gcc (as of 3.0) on an "if (mpn_add (...))"
- doesn't seem able to move the true and false legs of the conditional up
- to the two places cout is generated. */
-
-#define __GMPN_AORS(cout, wp, xp, xsize, yp, ysize, FUNCTION, TEST) \
- do { \
- mp_size_t __gmp_i; \
- mp_limb_t __gmp_x; \
- \
- /* ASSERT ((ysize) >= 0); */ \
- /* ASSERT ((xsize) >= (ysize)); */ \
- /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, xp, xsize)); */ \
- /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, yp, ysize)); */ \
- \
- __gmp_i = (ysize); \
- if (__gmp_i != 0) \
- { \
- if (FUNCTION (wp, xp, yp, __gmp_i)) \
- { \
- do \
- { \
- if (__gmp_i >= (xsize)) \
- { \
- (cout) = 1; \
- goto __gmp_done; \
- } \
- __gmp_x = (xp)[__gmp_i]; \
- } \
- while (TEST); \
- } \
- } \
- if ((wp) != (xp)) \
- __GMPN_COPY_REST (wp, xp, xsize, __gmp_i); \
- (cout) = 0; \
- __gmp_done: \
- ; \
- } while (0)
-
-#define __GMPN_ADD(cout, wp, xp, xsize, yp, ysize) \
- __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_add_n, \
- (((wp)[__gmp_i++] = (__gmp_x + 1) & GMP_NUMB_MASK) == 0))
-#define __GMPN_SUB(cout, wp, xp, xsize, yp, ysize) \
- __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_sub_n, \
- (((wp)[__gmp_i++] = (__gmp_x - 1) & GMP_NUMB_MASK), __gmp_x == 0))
-
-
-/* The use of __gmp_i indexing is designed to ensure a compile time src==dst
- remains nice and clear to the compiler, so that __GMPN_COPY_REST can
- disappear, and the load/add/store gets a chance to become a
- read-modify-write on CISC CPUs.
-
- Alternatives:
-
- Using a pair of pointers instead of indexing would be possible, but gcc
- isn't able to recognise compile-time src==dst in that case, even when the
- pointers are incremented more or less together. Other compilers would
- very likely have similar difficulty.
-
- gcc could use "if (__builtin_constant_p(src==dst) && src==dst)" or
- similar to detect a compile-time src==dst. This works nicely on gcc
- 2.95.x, it's not good on gcc 3.0 where __builtin_constant_p(p==p) seems
- to be always false, for a pointer p. But the current code form seems
- good enough for src==dst anyway.
-
- gcc on x86 as usual doesn't give particularly good flags handling for the
- carry/borrow detection. It's tempting to want some multi instruction asm
- blocks to help it, and this was tried, but in truth there's only a few
- instructions to save and any gain is all too easily lost by register
- juggling setting up for the asm. */
-
-#if GMP_NAIL_BITS == 0
-#define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB) \
- do { \
- mp_size_t __gmp_i; \
- mp_limb_t __gmp_x, __gmp_r; \
- \
- /* ASSERT ((n) >= 1); */ \
- /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */ \
- \
- __gmp_x = (src)[0]; \
- __gmp_r = __gmp_x OP (v); \
- (dst)[0] = __gmp_r; \
- if (CB (__gmp_r, __gmp_x, (v))) \
- { \
- (cout) = 1; \
- for (__gmp_i = 1; __gmp_i < (n);) \
- { \
- __gmp_x = (src)[__gmp_i]; \
- __gmp_r = __gmp_x OP 1; \
- (dst)[__gmp_i] = __gmp_r; \
- ++__gmp_i; \
- if (!CB (__gmp_r, __gmp_x, 1)) \
- { \
- if ((src) != (dst)) \
- __GMPN_COPY_REST (dst, src, n, __gmp_i); \
- (cout) = 0; \
- break; \
- } \
- } \
- } \
- else \
- { \
- if ((src) != (dst)) \
- __GMPN_COPY_REST (dst, src, n, 1); \
- (cout) = 0; \
- } \
- } while (0)
-#endif
-
-#if GMP_NAIL_BITS >= 1
-#define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB) \
- do { \
- mp_size_t __gmp_i; \
- mp_limb_t __gmp_x, __gmp_r; \
- \
- /* ASSERT ((n) >= 1); */ \
- /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */ \
- \
- __gmp_x = (src)[0]; \
- __gmp_r = __gmp_x OP (v); \
- (dst)[0] = __gmp_r & GMP_NUMB_MASK; \
- if (__gmp_r >> GMP_NUMB_BITS != 0) \
- { \
- (cout) = 1; \
- for (__gmp_i = 1; __gmp_i < (n);) \
- { \
- __gmp_x = (src)[__gmp_i]; \
- __gmp_r = __gmp_x OP 1; \
- (dst)[__gmp_i] = __gmp_r & GMP_NUMB_MASK; \
- ++__gmp_i; \
- if (__gmp_r >> GMP_NUMB_BITS == 0) \
- { \
- if ((src) != (dst)) \
- __GMPN_COPY_REST (dst, src, n, __gmp_i); \
- (cout) = 0; \
- break; \
- } \
- } \
- } \
- else \
- { \
- if ((src) != (dst)) \
- __GMPN_COPY_REST (dst, src, n, 1); \
- (cout) = 0; \
- } \
- } while (0)
-#endif
-
-#define __GMPN_ADDCB(r,x,y) ((r) < (y))
-#define __GMPN_SUBCB(r,x,y) ((x) < (y))
-
-#define __GMPN_ADD_1(cout, dst, src, n, v) \
- __GMPN_AORS_1(cout, dst, src, n, v, +, __GMPN_ADDCB)
-#define __GMPN_SUB_1(cout, dst, src, n, v) \
- __GMPN_AORS_1(cout, dst, src, n, v, -, __GMPN_SUBCB)
-
-
-/* Compare {xp,size} and {yp,size}, setting "result" to positive, zero or
- negative. size==0 is allowed. On random data usually only one limb will
- need to be examined to get a result, so it's worth having it inline. */
-#define __GMPN_CMP(result, xp, yp, size) \
- do { \
- mp_size_t __gmp_i; \
- mp_limb_t __gmp_x, __gmp_y; \
- \
- /* ASSERT ((size) >= 0); */ \
- \
- (result) = 0; \
- __gmp_i = (size); \
- while (--__gmp_i >= 0) \
- { \
- __gmp_x = (xp)[__gmp_i]; \
- __gmp_y = (yp)[__gmp_i]; \
- if (__gmp_x != __gmp_y) \
- { \
- /* Cannot use __gmp_x - __gmp_y, may overflow an "int" */ \
- (result) = (__gmp_x > __gmp_y ? 1 : -1); \
- break; \
- } \
- } \
- } while (0)
-
-
-#if defined (__GMPN_COPY) && ! defined (__GMPN_COPY_REST)
-#define __GMPN_COPY_REST(dst, src, size, start) \
- do { \
- /* ASSERT ((start) >= 0); */ \
- /* ASSERT ((start) <= (size)); */ \
- __GMPN_COPY ((dst)+(start), (src)+(start), (size)-(start)); \
- } while (0)
-#endif
-
-/* Copy {src,size} to {dst,size}, starting at "start". This is designed to
- keep the indexing dst[j] and src[j] nice and simple for __GMPN_ADD_1,
- __GMPN_ADD, etc. */
-#if ! defined (__GMPN_COPY_REST)
-#define __GMPN_COPY_REST(dst, src, size, start) \
- do { \
- mp_size_t __gmp_j; \
- /* ASSERT ((size) >= 0); */ \
- /* ASSERT ((start) >= 0); */ \
- /* ASSERT ((start) <= (size)); */ \
- /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, size)); */ \
- __GMP_CRAY_Pragma ("_CRI ivdep"); \
- for (__gmp_j = (start); __gmp_j < (size); __gmp_j++) \
- (dst)[__gmp_j] = (src)[__gmp_j]; \
- } while (0)
-#endif
-
-/* Enhancement: Use some of the smarter code from gmp-impl.h. Maybe use
- mpn_copyi if there's a native version, and if we don't mind demanding
- binary compatibility for it (on targets which use it). */
-
-#if ! defined (__GMPN_COPY)
-#define __GMPN_COPY(dst, src, size) __GMPN_COPY_REST (dst, src, size, 0)
-#endif
-
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_add)
-#if ! defined (__GMP_FORCE_mpn_add)
-__GMP_EXTERN_INLINE
-#endif
-mp_limb_t
-mpn_add (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize)
-{
- mp_limb_t __gmp_c;
- __GMPN_ADD (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize);
- return __gmp_c;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_add_1)
-#if ! defined (__GMP_FORCE_mpn_add_1)
-__GMP_EXTERN_INLINE
-#endif
-mp_limb_t
-mpn_add_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW
-{
- mp_limb_t __gmp_c;
- __GMPN_ADD_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n);
- return __gmp_c;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_cmp)
-#if ! defined (__GMP_FORCE_mpn_cmp)
-__GMP_EXTERN_INLINE
-#endif
-int
-mpn_cmp (mp_srcptr __gmp_xp, mp_srcptr __gmp_yp, mp_size_t __gmp_size) __GMP_NOTHROW
-{
- int __gmp_result;
- __GMPN_CMP (__gmp_result, __gmp_xp, __gmp_yp, __gmp_size);
- return __gmp_result;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_sub)
-#if ! defined (__GMP_FORCE_mpn_sub)
-__GMP_EXTERN_INLINE
-#endif
-mp_limb_t
-mpn_sub (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize)
-{
- mp_limb_t __gmp_c;
- __GMPN_SUB (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize);
- return __gmp_c;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_sub_1)
-#if ! defined (__GMP_FORCE_mpn_sub_1)
-__GMP_EXTERN_INLINE
-#endif
-mp_limb_t
-mpn_sub_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW
-{
- mp_limb_t __gmp_c;
- __GMPN_SUB_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n);
- return __gmp_c;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_neg)
-#if ! defined (__GMP_FORCE_mpn_neg)
-__GMP_EXTERN_INLINE
-#endif
-mp_limb_t
-mpn_neg (mp_ptr __gmp_rp, mp_srcptr __gmp_up, mp_size_t __gmp_n)
-{
- mp_limb_t __gmp_ul, __gmp_cy;
- __gmp_cy = 0;
- do {
- __gmp_ul = *__gmp_up++;
- *__gmp_rp++ = -__gmp_ul - __gmp_cy;
- __gmp_cy |= __gmp_ul != 0;
- } while (--__gmp_n != 0);
- return __gmp_cy;
-}
-#endif
-
-#if defined (__cplusplus)
-}
-#endif
-
-
-/* Allow faster testing for negative, zero, and positive. */
-#define mpz_sgn(Z) ((Z)->_mp_size < 0 ? -1 : (Z)->_mp_size > 0)
-#define mpf_sgn(F) ((F)->_mp_size < 0 ? -1 : (F)->_mp_size > 0)
-#define mpq_sgn(Q) ((Q)->_mp_num._mp_size < 0 ? -1 : (Q)->_mp_num._mp_size > 0)
-
-/* When using GCC, optimize certain common comparisons. */
-#if defined (__GNUC__) && __GNUC__ >= 2
-#define mpz_cmp_ui(Z,UI) \
- (__builtin_constant_p (UI) && (UI) == 0 \
- ? mpz_sgn (Z) : _mpz_cmp_ui (Z,UI))
-#define mpz_cmp_si(Z,SI) \
- (__builtin_constant_p ((SI) >= 0) && (SI) >= 0 \
- ? mpz_cmp_ui (Z, __GMP_CAST (unsigned long, SI)) \
- : _mpz_cmp_si (Z,SI))
-#define mpq_cmp_ui(Q,NUI,DUI) \
- (__builtin_constant_p (NUI) && (NUI) == 0 ? mpq_sgn (Q) \
- : __builtin_constant_p ((NUI) == (DUI)) && (NUI) == (DUI) \
- ? mpz_cmp (mpq_numref (Q), mpq_denref (Q)) \
- : _mpq_cmp_ui (Q,NUI,DUI))
-#define mpq_cmp_si(q,n,d) \
- (__builtin_constant_p ((n) >= 0) && (n) >= 0 \
- ? mpq_cmp_ui (q, __GMP_CAST (unsigned long, n), d) \
- : _mpq_cmp_si (q, n, d))
-#else
-#define mpz_cmp_ui(Z,UI) _mpz_cmp_ui (Z,UI)
-#define mpz_cmp_si(Z,UI) _mpz_cmp_si (Z,UI)
-#define mpq_cmp_ui(Q,NUI,DUI) _mpq_cmp_ui (Q,NUI,DUI)
-#define mpq_cmp_si(q,n,d) _mpq_cmp_si(q,n,d)
-#endif
-
-
-/* Using "&" rather than "&&" means these can come out branch-free. Every
- mpz_t has at least one limb allocated, so fetching the low limb is always
- allowed. */
-#define mpz_odd_p(z) (((z)->_mp_size != 0) & __GMP_CAST (int, (z)->_mp_d[0]))
-#define mpz_even_p(z) (! mpz_odd_p (z))
-
-
-/**************** C++ routines ****************/
-
-#ifdef __cplusplus
-__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpz_srcptr);
-__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpq_srcptr);
-__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpf_srcptr);
-__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpz_ptr);
-__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpq_ptr);
-__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpf_ptr);
-#endif
-
-
-/* Source-level compatibility with GMP 2 and earlier. */
-#define mpn_divmod(qp,np,nsize,dp,dsize) \
- mpn_divrem (qp, __GMP_CAST (mp_size_t, 0), np, nsize, dp, dsize)
-
-/* Source-level compatibility with GMP 1. */
-#define mpz_mdiv mpz_fdiv_q
-#define mpz_mdivmod mpz_fdiv_qr
-#define mpz_mmod mpz_fdiv_r
-#define mpz_mdiv_ui mpz_fdiv_q_ui
-#define mpz_mdivmod_ui(q,r,n,d) \
- (((r) == 0) ? mpz_fdiv_q_ui (q,n,d) : mpz_fdiv_qr_ui (q,r,n,d))
-#define mpz_mmod_ui(r,n,d) \
- (((r) == 0) ? mpz_fdiv_ui (n,d) : mpz_fdiv_r_ui (r,n,d))
-
-/* Useful synonyms, but not quite compatible with GMP 1. */
-#define mpz_div mpz_fdiv_q
-#define mpz_divmod mpz_fdiv_qr
-#define mpz_div_ui mpz_fdiv_q_ui
-#define mpz_divmod_ui mpz_fdiv_qr_ui
-#define mpz_div_2exp mpz_fdiv_q_2exp
-#define mpz_mod_2exp mpz_fdiv_r_2exp
-
-enum
-{
- GMP_ERROR_NONE = 0,
- GMP_ERROR_UNSUPPORTED_ARGUMENT = 1,
- GMP_ERROR_DIVISION_BY_ZERO = 2,
- GMP_ERROR_SQRT_OF_NEGATIVE = 4,
- GMP_ERROR_INVALID_ARGUMENT = 8
-};
-
-/* Define CC and CFLAGS which were used to build this version of GMP */
-#define __GMP_CC "/usr/bin/gcc -std=gnu99"
-#define __GMP_CFLAGS "-O2 -I/usr/local/google/home/smcgruer/Desktop/buildroot/output/host/usr/include"
-
-/* Major version number is the value of __GNU_MP__ too, above and in mp.h. */
-#define __GNU_MP_VERSION 6
-#define __GNU_MP_VERSION_MINOR 0
-#define __GNU_MP_VERSION_PATCHLEVEL 0
-#define __GNU_MP_RELEASE (__GNU_MP_VERSION * 10000 + __GNU_MP_VERSION_MINOR * 100 + __GNU_MP_VERSION_PATCHLEVEL)
-
-#define __GMP_H__
-#endif /* __GMP_H__ */
diff --git a/include/mpc.h b/include/mpc.h
deleted file mode 100644
index 1607cac..0000000
--- a/include/mpc.h
+++ /dev/null
@@ -1,269 +0,0 @@
-/* mpc.h -- Include file for mpc.
-
-Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011, 2012, 2014 INRIA
-
-This file is part of GNU MPC.
-
-GNU MPC 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 3 of the License, or (at your
-option) any later version.
-
-GNU MPC 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 this program. If not, see http://www.gnu.org/licenses/ .
-*/
-
-#ifndef __MPC_H
-#define __MPC_H
-
-#include "gmp.h"
-#include "mpfr.h"
-
-/* Backwards compatibility with mpfr<3.0.0 */
-#ifndef mpfr_exp_t
-#define mpfr_exp_t mp_exp_t
-#endif
-
-/* Define MPC version number */
-#define MPC_VERSION_MAJOR 1
-#define MPC_VERSION_MINOR 0
-#define MPC_VERSION_PATCHLEVEL 2
-#define MPC_VERSION_STRING "1.0.2"
-
-/* Macros dealing with MPC VERSION */
-#define MPC_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c))
-#define MPC_VERSION \
- MPC_VERSION_NUM(MPC_VERSION_MAJOR,MPC_VERSION_MINOR,MPC_VERSION_PATCHLEVEL)
-
-/* Check if stdint.h/inttypes.h is included */
-#if defined (INTMAX_C) && defined (UINTMAX_C)
-#define _MPC_H_HAVE_INTMAX_T 1
-#endif
-
-/* Return values */
-
-/* Transform negative to 2, positive to 1, leave 0 unchanged */
-#define MPC_INEX_POS(inex) (((inex) < 0) ? 2 : ((inex) == 0) ? 0 : 1)
-/* Transform 2 to negative, 1 to positive, leave 0 unchanged */
-#define MPC_INEX_NEG(inex) (((inex) == 2) ? -1 : ((inex) == 0) ? 0 : 1)
-
-/* The global inexact flag is made of (real flag) + 4 * (imaginary flag), where
- each of the real and imaginary inexact flag are:
- 0 when the result is exact (no rounding error)
- 1 when the result is larger than the exact value
- 2 when the result is smaller than the exact value */
-#define MPC_INEX(inex_re, inex_im) \
- (MPC_INEX_POS(inex_re) | (MPC_INEX_POS(inex_im) << 2))
-#define MPC_INEX_RE(inex) MPC_INEX_NEG((inex) & 3)
-#define MPC_INEX_IM(inex) MPC_INEX_NEG((inex) >> 2)
-
-/* For functions computing two results, the return value is
- inexact1+16*inexact2, which is 0 iif both results are exact. */
-#define MPC_INEX12(inex1, inex2) (inex1 | (inex2 << 4))
-#define MPC_INEX1(inex) (inex & 15)
-#define MPC_INEX2(inex) (inex >> 4)
-
-/* Definition of rounding modes */
-
-/* a complex rounding mode is just a pair of two real rounding modes
- we reserve four bits for a real rounding mode. */
-typedef int mpc_rnd_t;
-
-#define MPC_RND(r1,r2) (((int)(r1)) + ((int)(r2) << 4))
-#define MPC_RND_RE(x) ((mpfr_rnd_t)((x) & 0x0F))
-#define MPC_RND_IM(x) ((mpfr_rnd_t)((x) >> 4))
-
-#define MPC_RNDNN MPC_RND (GMP_RNDN,GMP_RNDN)
-#define MPC_RNDNZ MPC_RND (GMP_RNDN,GMP_RNDZ)
-#define MPC_RNDNU MPC_RND (GMP_RNDN,GMP_RNDU)
-#define MPC_RNDND MPC_RND (GMP_RNDN,GMP_RNDD)
-
-#define MPC_RNDZN MPC_RND (GMP_RNDZ,GMP_RNDN)
-#define MPC_RNDZZ MPC_RND (GMP_RNDZ,GMP_RNDZ)
-#define MPC_RNDZU MPC_RND (GMP_RNDZ,GMP_RNDU)
-#define MPC_RNDZD MPC_RND (GMP_RNDZ,GMP_RNDD)
-
-#define MPC_RNDUN MPC_RND (GMP_RNDU,GMP_RNDN)
-#define MPC_RNDUZ MPC_RND (GMP_RNDU,GMP_RNDZ)
-#define MPC_RNDUU MPC_RND (GMP_RNDU,GMP_RNDU)
-#define MPC_RNDUD MPC_RND (GMP_RNDU,GMP_RNDD)
-
-#define MPC_RNDDN MPC_RND (GMP_RNDD,GMP_RNDN)
-#define MPC_RNDDZ MPC_RND (GMP_RNDD,GMP_RNDZ)
-#define MPC_RNDDU MPC_RND (GMP_RNDD,GMP_RNDU)
-#define MPC_RNDDD MPC_RND (GMP_RNDD,GMP_RNDD)
-
-
-/* Definitions of types and their semantics */
-
-typedef struct {
- mpfr_t re;
- mpfr_t im;
-}
-__mpc_struct;
-
-typedef __mpc_struct mpc_t[1];
-typedef __mpc_struct *mpc_ptr;
-typedef const __mpc_struct *mpc_srcptr;
-
-/* Support for WINDOWS DLL, see
- http://lists.gforge.inria.fr/pipermail/mpc-discuss/2011-November/000990.html;
- when building the DLL, export symbols, otherwise behave as GMP */
-#if defined (__MPC_LIBRARY_BUILD) && __GMP_LIBGMP_DLL
-#define __MPC_DECLSPEC __GMP_DECLSPEC_EXPORT
-#else
-#define __MPC_DECLSPEC __GMP_DECLSPEC
-#endif
-
-#if defined (__cplusplus)
-extern "C" {
-#endif
-
-__MPC_DECLSPEC int mpc_add (mpc_ptr, mpc_srcptr, mpc_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_add_fr (mpc_ptr, mpc_srcptr, mpfr_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_add_si (mpc_ptr, mpc_srcptr, long int, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_add_ui (mpc_ptr, mpc_srcptr, unsigned long int, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_sub (mpc_ptr, mpc_srcptr, mpc_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_sub_fr (mpc_ptr, mpc_srcptr, mpfr_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_fr_sub (mpc_ptr, mpfr_srcptr, mpc_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_sub_ui (mpc_ptr, mpc_srcptr, unsigned long int, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_ui_ui_sub (mpc_ptr, unsigned long int, unsigned long int, mpc_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_mul (mpc_ptr, mpc_srcptr, mpc_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_mul_fr (mpc_ptr, mpc_srcptr, mpfr_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_mul_ui (mpc_ptr, mpc_srcptr, unsigned long int, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_mul_si (mpc_ptr, mpc_srcptr, long int, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_mul_i (mpc_ptr, mpc_srcptr, int, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_sqr (mpc_ptr, mpc_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_div (mpc_ptr, mpc_srcptr, mpc_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_pow (mpc_ptr, mpc_srcptr, mpc_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_pow_fr (mpc_ptr, mpc_srcptr, mpfr_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_pow_ld (mpc_ptr, mpc_srcptr, long double, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_pow_d (mpc_ptr, mpc_srcptr, double, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_pow_si (mpc_ptr, mpc_srcptr, long, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_pow_ui (mpc_ptr, mpc_srcptr, unsigned long, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_pow_z (mpc_ptr, mpc_srcptr, mpz_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_div_fr (mpc_ptr, mpc_srcptr, mpfr_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_fr_div (mpc_ptr, mpfr_srcptr, mpc_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_div_ui (mpc_ptr, mpc_srcptr, unsigned long int, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_ui_div (mpc_ptr, unsigned long int, mpc_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_div_2ui (mpc_ptr, mpc_srcptr, unsigned long int, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_mul_2ui (mpc_ptr, mpc_srcptr, unsigned long int, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_div_2si (mpc_ptr, mpc_srcptr, long int, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_mul_2si (mpc_ptr, mpc_srcptr, long int, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_conj (mpc_ptr, mpc_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_neg (mpc_ptr, mpc_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_norm (mpfr_ptr, mpc_srcptr, mpfr_rnd_t);
-__MPC_DECLSPEC int mpc_abs (mpfr_ptr, mpc_srcptr, mpfr_rnd_t);
-__MPC_DECLSPEC int mpc_sqrt (mpc_ptr, mpc_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_set (mpc_ptr, mpc_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_set_d (mpc_ptr, double, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_set_d_d (mpc_ptr, double, double, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_set_ld (mpc_ptr, long double, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_set_ld_ld (mpc_ptr, long double, long double, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_set_f (mpc_ptr, mpf_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_set_f_f (mpc_ptr, mpf_srcptr, mpf_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_set_fr (mpc_ptr, mpfr_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_set_fr_fr (mpc_ptr, mpfr_srcptr, mpfr_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_set_q (mpc_ptr, mpq_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_set_q_q (mpc_ptr, mpq_srcptr, mpq_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_set_si (mpc_ptr, long int, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_set_si_si (mpc_ptr, long int, long int, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_set_ui (mpc_ptr, unsigned long int, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_set_ui_ui (mpc_ptr, unsigned long int, unsigned long int, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_set_z (mpc_ptr, mpz_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_set_z_z (mpc_ptr, mpz_srcptr, mpz_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC void mpc_swap (mpc_ptr, mpc_ptr);
-__MPC_DECLSPEC int mpc_fma (mpc_ptr, mpc_srcptr, mpc_srcptr, mpc_srcptr, mpc_rnd_t);
-
-__MPC_DECLSPEC void mpc_set_nan (mpc_ptr);
-
-__MPC_DECLSPEC int mpc_real (mpfr_ptr, mpc_srcptr, mpfr_rnd_t);
-__MPC_DECLSPEC int mpc_imag (mpfr_ptr, mpc_srcptr, mpfr_rnd_t);
-__MPC_DECLSPEC int mpc_arg (mpfr_ptr, mpc_srcptr, mpfr_rnd_t);
-__MPC_DECLSPEC int mpc_proj (mpc_ptr, mpc_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_cmp (mpc_srcptr, mpc_srcptr);
-__MPC_DECLSPEC int mpc_cmp_si_si (mpc_srcptr, long int, long int);
-__MPC_DECLSPEC int mpc_exp (mpc_ptr, mpc_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_log (mpc_ptr, mpc_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_log10 (mpc_ptr, mpc_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_sin (mpc_ptr, mpc_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_cos (mpc_ptr, mpc_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_sin_cos (mpc_ptr, mpc_ptr, mpc_srcptr, mpc_rnd_t, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_tan (mpc_ptr, mpc_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_sinh (mpc_ptr, mpc_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_cosh (mpc_ptr, mpc_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_tanh (mpc_ptr, mpc_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_asin (mpc_ptr, mpc_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_acos (mpc_ptr, mpc_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_atan (mpc_ptr, mpc_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_asinh (mpc_ptr, mpc_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_acosh (mpc_ptr, mpc_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_atanh (mpc_ptr, mpc_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC void mpc_clear (mpc_ptr);
-__MPC_DECLSPEC int mpc_urandom (mpc_ptr, gmp_randstate_t);
-__MPC_DECLSPEC void mpc_init2 (mpc_ptr, mpfr_prec_t);
-__MPC_DECLSPEC void mpc_init3 (mpc_ptr, mpfr_prec_t, mpfr_prec_t);
-__MPC_DECLSPEC mpfr_prec_t mpc_get_prec (mpc_srcptr x);
-__MPC_DECLSPEC void mpc_get_prec2 (mpfr_prec_t *pr, mpfr_prec_t *pi, mpc_srcptr x);
-__MPC_DECLSPEC void mpc_set_prec (mpc_ptr, mpfr_prec_t);
-__MPC_DECLSPEC const char * mpc_get_version (void);
-
-__MPC_DECLSPEC int mpc_strtoc (mpc_ptr, const char *, char **, int, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_set_str (mpc_ptr, const char *, int, mpc_rnd_t);
-__MPC_DECLSPEC char * mpc_get_str (int, size_t, mpc_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC void mpc_free_str (char *);
-
-/* declare certain functions only if appropriate headers have been included */
-#ifdef _MPC_H_HAVE_INTMAX_T
-__MPC_DECLSPEC int mpc_set_sj (mpc_ptr, intmax_t, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_set_uj (mpc_ptr, uintmax_t, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_set_sj_sj (mpc_ptr, intmax_t, intmax_t, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_set_uj_uj (mpc_ptr, uintmax_t, uintmax_t, mpc_rnd_t);
-#endif
-
-#ifdef _Complex_I
-__MPC_DECLSPEC int mpc_set_dc (mpc_ptr, double _Complex, mpc_rnd_t);
-__MPC_DECLSPEC int mpc_set_ldc (mpc_ptr, long double _Complex, mpc_rnd_t);
-__MPC_DECLSPEC double _Complex mpc_get_dc (mpc_srcptr, mpc_rnd_t);
-__MPC_DECLSPEC long double _Complex mpc_get_ldc (mpc_srcptr, mpc_rnd_t);
-#endif
-
-#ifdef _GMP_H_HAVE_FILE
-__MPC_DECLSPEC int mpc_inp_str (mpc_ptr, FILE *, size_t *, int, mpc_rnd_t);
-__MPC_DECLSPEC size_t mpc_out_str (FILE *, int, size_t, mpc_srcptr, mpc_rnd_t);
-#endif
-
-#if defined (__cplusplus)
-}
-#endif
-
-#define mpc_realref(x) ((x)->re)
-#define mpc_imagref(x) ((x)->im)
-
-#define mpc_cmp_si(x, y) \
- ( mpc_cmp_si_si ((x), (y), 0l) )
-#define mpc_ui_sub(x, y, z, r) mpc_ui_ui_sub (x, y, 0ul, z, r)
-
-/*
- Define a fake mpfr_set_fr so that, for instance, mpc_set_fr_z would
- be defined as follows:
- mpc_set_fr_z (mpc_t rop, mpfr_t x, mpz_t y, mpc_rnd_t rnd)
- MPC_SET_X_Y (fr, z, rop, x, y, rnd)
-*/
-#ifndef mpfr_set_fr
-#define mpfr_set_fr mpfr_set
-#endif
-#define MPC_SET_X_Y(real_t, imag_t, z, real_value, imag_value, rnd) \
- { \
- int _inex_re, _inex_im; \
- _inex_re = (mpfr_set_ ## real_t) (mpc_realref (z), (real_value), MPC_RND_RE (rnd)); \
- _inex_im = (mpfr_set_ ## imag_t) (mpc_imagref (z), (imag_value), MPC_RND_IM (rnd)); \
- return MPC_INEX (_inex_re, _inex_im); \
- }
-
-#endif /* ifndef __MPC_H */
diff --git a/include/mpf2mpfr.h b/include/mpf2mpfr.h
deleted file mode 100644
index ef6ab82..0000000
--- a/include/mpf2mpfr.h
+++ /dev/null
@@ -1,175 +0,0 @@
-/* mpf2mpfr.h -- Compatibility include file with mpf.
-
-Copyright 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
-Contributed by the AriC and Caramel projects, INRIA.
-
-This file is part of the GNU MPFR Library.
-
-The GNU MPFR 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 3 of the License, or (at your
-option) any later version.
-
-The GNU MPFR 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 MPFR Library; see the file COPYING.LESSER. If not, see
-http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
-51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
-
-#ifndef __MPFR_FROM_MPF__
-#define __MPFR_FROM_MPF__
-
-/* types */
-#define mpf_t mpfr_t
-#define mpf_srcptr mpfr_srcptr
-#define mpf_ptr mpfr_ptr
-
-/* Get current Rounding Mode */
-#ifndef MPFR_DEFAULT_RND
-# define MPFR_DEFAULT_RND mpfr_get_default_rounding_mode ()
-#endif
-
-/* mpf_init initalizes at 0 */
-#undef mpf_init
-#define mpf_init(x) mpfr_init_set_ui ((x), 0, MPFR_DEFAULT_RND)
-#undef mpf_init2
-#define mpf_init2(x,p) (mpfr_init2((x),(p)), mpfr_set_ui ((x), 0, MPFR_DEFAULT_RND))
-
-/* functions which don't take as argument the rounding mode */
-#undef mpf_ceil
-#define mpf_ceil mpfr_ceil
-#undef mpf_clear
-#define mpf_clear mpfr_clear
-#undef mpf_cmp
-#define mpf_cmp mpfr_cmp
-#undef mpf_cmp_si
-#define mpf_cmp_si mpfr_cmp_si
-#undef mpf_cmp_ui
-#define mpf_cmp_ui mpfr_cmp_ui
-#undef mpf_cmp_d
-#define mpf_cmp_d mpfr_cmp_d
-#undef mpf_eq
-#define mpf_eq mpfr_eq
-#undef mpf_floor
-#define mpf_floor mpfr_floor
-#undef mpf_get_prec
-#define mpf_get_prec mpfr_get_prec
-#undef mpf_integer_p
-#define mpf_integer_p mpfr_integer_p
-#undef mpf_random2
-#define mpf_random2 mpfr_random2
-#undef mpf_set_default_prec
-#define mpf_set_default_prec mpfr_set_default_prec
-#undef mpf_get_default_prec
-#define mpf_get_default_prec mpfr_get_default_prec
-#undef mpf_set_prec
-#define mpf_set_prec mpfr_set_prec
-#undef mpf_set_prec_raw
-#define mpf_set_prec_raw(x,p) mpfr_prec_round(x,p,MPFR_DEFAULT_RND)
-#undef mpf_trunc
-#define mpf_trunc mpfr_trunc
-#undef mpf_sgn
-#define mpf_sgn mpfr_sgn
-#undef mpf_swap
-#define mpf_swap mpfr_swap
-#undef mpf_dump
-#define mpf_dump mpfr_dump
-
-/* functions which take as argument the rounding mode */
-#undef mpf_abs
-#define mpf_abs(x,y) mpfr_abs(x,y,MPFR_DEFAULT_RND)
-#undef mpf_add
-#define mpf_add(x,y,z) mpfr_add(x,y,z,MPFR_DEFAULT_RND)
-#undef mpf_add_ui
-#define mpf_add_ui(x,y,z) mpfr_add_ui(x,y,z,MPFR_DEFAULT_RND)
-#undef mpf_div
-#define mpf_div(x,y,z) mpfr_div(x,y,z,MPFR_DEFAULT_RND)
-#undef mpf_div_ui
-#define mpf_div_ui(x,y,z) mpfr_div_ui(x,y,z,MPFR_DEFAULT_RND)
-#undef mpf_div_2exp
-#define mpf_div_2exp(x,y,z) mpfr_div_2exp(x,y,z,MPFR_DEFAULT_RND)
-#undef mpf_fits_slong_p
-#define mpf_fits_slong_p(x) mpfr_fits_ulong_p(x,MPFR_DEFAULT_RND)
-#undef mpf_fits_ulong_p
-#define mpf_fits_ulong_p(x) mpfr_fits_ulong_p(x,MPFR_DEFAULT_RND)
-#undef mpf_fits_sint_p
-#define mpf_fits_sint_p(x) mpfr_fits_uint_p(x,MPFR_DEFAULT_RND)
-#undef mpf_fits_uint_p
-#define mpf_fits_uint_p(x) mpfr_fits_uint_p(x,MPFR_DEFAULT_RND)
-#undef mpf_fits_sshort_p
-#define mpf_fits_sshort_p(x) mpfr_fits_ushort_p(x,MPFR_DEFAULT_RND)
-#undef mpf_fits_ushort_p
-#define mpf_fits_ushort_p(x) mpfr_fits_ushort_p(x,MPFR_DEFAULT_RND)
-#undef mpf_get_str
-#define mpf_get_str(x,y,z,t,u) mpfr_get_str(x,y,z,t,u,MPFR_DEFAULT_RND)
-#undef mpf_get_d
-#define mpf_get_d(x) mpfr_get_d(x,MPFR_DEFAULT_RND)
-#undef mpf_get_d_2exp
-#define mpf_get_d_2exp(e,x) mpfr_get_d_2exp(e,x,MPFR_DEFAULT_RND)
-#undef mpf_get_ui
-#define mpf_get_ui(x) mpfr_get_ui(x,MPFR_DEFAULT_RND)
-#undef mpf_get_si
-#define mpf_get_si(x) mpfr_get_ui(x,MPFR_DEFAULT_RND)
-#undef mpf_inp_str
-#define mpf_inp_str(x,y,z) mpfr_inp_str(x,y,z,MPFR_DEFAULT_RND)
-#undef mpf_set_str
-#define mpf_set_str(x,y,z) mpfr_set_str(x,y,z,MPFR_DEFAULT_RND)
-#undef mpf_init_set
-#define mpf_init_set(x,y) mpfr_init_set(x,y,MPFR_DEFAULT_RND)
-#undef mpf_init_set_d
-#define mpf_init_set_d(x,y) mpfr_init_set_d(x,y,MPFR_DEFAULT_RND)
-#undef mpf_init_set_si
-#define mpf_init_set_si(x,y) mpfr_init_set_si(x,y,MPFR_DEFAULT_RND)
-#undef mpf_init_set_str
-#define mpf_init_set_str(x,y,z) mpfr_init_set_str(x,y,z,MPFR_DEFAULT_RND)
-#undef mpf_init_set_ui
-#define mpf_init_set_ui(x,y) mpfr_init_set_ui(x,y,MPFR_DEFAULT_RND)
-#undef mpf_mul
-#define mpf_mul(x,y,z) mpfr_mul(x,y,z,MPFR_DEFAULT_RND)
-#undef mpf_mul_2exp
-#define mpf_mul_2exp(x,y,z) mpfr_mul_2exp(x,y,z,MPFR_DEFAULT_RND)
-#undef mpf_mul_ui
-#define mpf_mul_ui(x,y,z) mpfr_mul_ui(x,y,z,MPFR_DEFAULT_RND)
-#undef mpf_neg
-#define mpf_neg(x,y) mpfr_neg(x,y,MPFR_DEFAULT_RND)
-#undef mpf_out_str
-#define mpf_out_str(x,y,z,t) mpfr_out_str(x,y,z,t,MPFR_DEFAULT_RND)
-#undef mpf_pow_ui
-#define mpf_pow_ui(x,y,z) mpfr_pow_ui(x,y,z,MPFR_DEFAULT_RND)
-#undef mpf_reldiff
-#define mpf_reldiff(x,y,z) mpfr_reldiff(x,y,z,MPFR_DEFAULT_RND)
-#undef mpf_set
-#define mpf_set(x,y) mpfr_set(x,y,MPFR_DEFAULT_RND)
-#undef mpf_set_d
-#define mpf_set_d(x,y) mpfr_set_d(x,y,MPFR_DEFAULT_RND)
-#undef mpf_set_q
-#define mpf_set_q(x,y) mpfr_set_q(x,y,MPFR_DEFAULT_RND)
-#undef mpf_set_si
-#define mpf_set_si(x,y) mpfr_set_si(x,y,MPFR_DEFAULT_RND)
-#undef mpf_set_ui
-#define mpf_set_ui(x,y) mpfr_set_ui(x,y,MPFR_DEFAULT_RND)
-#undef mpf_set_z
-#define mpf_set_z(x,y) mpfr_set_z(x,y,MPFR_DEFAULT_RND)
-#undef mpf_sqrt
-#define mpf_sqrt(x,y) mpfr_sqrt(x,y,MPFR_DEFAULT_RND)
-#undef mpf_sqrt_ui
-#define mpf_sqrt_ui(x,y) mpfr_sqrt_ui(x,y,MPFR_DEFAULT_RND)
-#undef mpf_sub
-#define mpf_sub(x,y,z) mpfr_sub(x,y,z,MPFR_DEFAULT_RND)
-#undef mpf_sub_ui
-#define mpf_sub_ui(x,y,z) mpfr_sub_ui(x,y,z,MPFR_DEFAULT_RND)
-#undef mpf_ui_div
-#define mpf_ui_div(x,y,z) mpfr_ui_div(x,y,z,MPFR_DEFAULT_RND)
-#undef mpf_ui_sub
-#define mpf_ui_sub(x,y,z) mpfr_ui_sub(x,y,z,MPFR_DEFAULT_RND)
-#undef mpf_urandomb
-#define mpf_urandomb(x,y,n) mpfr_urandomb(x,y)
-
-#undef mpz_set_f
-#define mpz_set_f(z,f) mpfr_get_z(z,f,MPFR_DEFAULT_RND)
-
-#endif /* __MPFR_FROM_MPF__ */
diff --git a/include/mpfr.h b/include/mpfr.h
deleted file mode 100644
index a3241dc..0000000
--- a/include/mpfr.h
+++ /dev/null
@@ -1,1059 +0,0 @@
-/* mpfr.h -- Include file for mpfr.
-
-Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
-Contributed by the AriC and Caramel projects, INRIA.
-
-This file is part of the GNU MPFR Library.
-
-The GNU MPFR 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 3 of the License, or (at your
-option) any later version.
-
-The GNU MPFR 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 MPFR Library; see the file COPYING.LESSER. If not, see
-http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
-51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
-
-#ifndef __MPFR_H
-#define __MPFR_H
-
-/* Define MPFR version number */
-#define MPFR_VERSION_MAJOR 3
-#define MPFR_VERSION_MINOR 1
-#define MPFR_VERSION_PATCHLEVEL 2
-#define MPFR_VERSION_STRING "3.1.2"
-
-/* Macros dealing with MPFR VERSION */
-#define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c))
-#define MPFR_VERSION \
-MPFR_VERSION_NUM(MPFR_VERSION_MAJOR,MPFR_VERSION_MINOR,MPFR_VERSION_PATCHLEVEL)
-
-/* Check if GMP is included, and try to include it (Works with local GMP) */
-#ifndef __GMP_H__
-# include <gmp.h>
-#endif
-
-/* GMP's internal __gmp_const macro has been removed on 2012-03-04:
- http://gmplib.org:8000/gmp/rev/d287cfaf6732
- const is standard and now assumed to be available. If the __gmp_const
- definition is no longer present in GMP, this probably means that GMP
- assumes that const is available; thus let's define it to const.
- Note: this is a temporary fix that can be backported to previous MPFR
- versions. In the future, __gmp_const should be replaced by const like
- in GMP. */
-#ifndef __gmp_const
-# define __gmp_const const
-#endif
-
-/* Avoid some problems with macro expansion if the user defines macros
- with the same name as keywords. By convention, identifiers and macro
- names starting with mpfr_ are reserved by MPFR. */
-typedef void mpfr_void;
-typedef int mpfr_int;
-typedef unsigned int mpfr_uint;
-typedef long mpfr_long;
-typedef unsigned long mpfr_ulong;
-typedef size_t mpfr_size_t;
-
-/* Definition of rounding modes (DON'T USE MPFR_RNDNA!).
- Warning! Changing the contents of this enum should be seen as an
- interface change since the old and the new types are not compatible
- (the integer type compatible with the enumerated type can even change,
- see ISO C99, 6.7.2.2#4), and in Makefile.am, AGE should be set to 0.
-
- MPFR_RNDU must appear just before MPFR_RNDD (see
- MPFR_IS_RNDUTEST_OR_RNDDNOTTEST in mpfr-impl.h).
-
- MPFR_RNDF has been added, though not implemented yet, in order to avoid
- to break the ABI once faithful rounding gets implemented.
-
- If you change the order of the rounding modes, please update the routines
- in texceptions.c which assume 0=RNDN, 1=RNDZ, 2=RNDU, 3=RNDD, 4=RNDA.
-*/
-typedef enum {
- MPFR_RNDN=0, /* round to nearest, with ties to even */
- MPFR_RNDZ, /* round toward zero */
- MPFR_RNDU, /* round toward +Inf */
- MPFR_RNDD, /* round toward -Inf */
- MPFR_RNDA, /* round away from zero */
- MPFR_RNDF, /* faithful rounding (not implemented yet) */
- MPFR_RNDNA=-1 /* round to nearest, with ties away from zero (mpfr_round) */
-} mpfr_rnd_t;
-
-/* kept for compatibility with MPFR 2.4.x and before */
-#define GMP_RNDN MPFR_RNDN
-#define GMP_RNDZ MPFR_RNDZ
-#define GMP_RNDU MPFR_RNDU
-#define GMP_RNDD MPFR_RNDD
-
-/* Note: With the following default choices for _MPFR_PREC_FORMAT and
- _MPFR_EXP_FORMAT, mpfr_exp_t will be the same as [mp_exp_t] (at least
- up to GMP 5). */
-
-/* Define precision: 1 (short), 2 (int) or 3 (long) (DON'T USE IT!) */
-#ifndef _MPFR_PREC_FORMAT
-# if __GMP_MP_SIZE_T_INT == 1
-# define _MPFR_PREC_FORMAT 2
-# else
-# define _MPFR_PREC_FORMAT 3
-# endif
-#endif
-
-/* Define exponent: 1 (short), 2 (int), 3 (long) or 4 (intmax_t)
- (DON'T USE IT!) */
-#ifndef _MPFR_EXP_FORMAT
-# define _MPFR_EXP_FORMAT _MPFR_PREC_FORMAT
-#endif
-
-#if _MPFR_PREC_FORMAT > _MPFR_EXP_FORMAT
-# error "mpfr_prec_t must not be larger than mpfr_exp_t"
-#endif
-
-/* Let's make mpfr_prec_t signed in order to avoid problems due to the
- usual arithmetic conversions when mixing mpfr_prec_t and mpfr_exp_t
- in an expression (for error analysis) if casts are forgotten. */
-#if _MPFR_PREC_FORMAT == 1
-typedef short mpfr_prec_t;
-typedef unsigned short mpfr_uprec_t;
-#elif _MPFR_PREC_FORMAT == 2
-typedef int mpfr_prec_t;
-typedef unsigned int mpfr_uprec_t;
-#elif _MPFR_PREC_FORMAT == 3
-typedef long mpfr_prec_t;
-typedef unsigned long mpfr_uprec_t;
-#else
-# error "Invalid MPFR Prec format"
-#endif
-
-/* Definition of precision limits without needing <limits.h> */
-/* Note: the casts allows the expression to yield the wanted behavior
- for _MPFR_PREC_FORMAT == 1 (due to integer promotion rules). */
-#define MPFR_PREC_MIN 2
-#define MPFR_PREC_MAX ((mpfr_prec_t)((mpfr_uprec_t)(~(mpfr_uprec_t)0)>>1))
-
-/* Definition of sign */
-typedef int mpfr_sign_t;
-
-/* Definition of the exponent. _MPFR_EXP_FORMAT must be large enough
- so that mpfr_exp_t has at least 32 bits. */
-#if _MPFR_EXP_FORMAT == 1
-typedef short mpfr_exp_t;
-typedef unsigned short mpfr_uexp_t;
-#elif _MPFR_EXP_FORMAT == 2
-typedef int mpfr_exp_t;
-typedef unsigned int mpfr_uexp_t;
-#elif _MPFR_EXP_FORMAT == 3
-typedef long mpfr_exp_t;
-typedef unsigned long mpfr_uexp_t;
-#elif _MPFR_EXP_FORMAT == 4
-/* Note: in this case, intmax_t and uintmax_t must be defined before
- the inclusion of mpfr.h (we do not include <stdint.h> here because
- of some non-ISO C99 implementations that support these types). */
-typedef intmax_t mpfr_exp_t;
-typedef uintmax_t mpfr_uexp_t;
-#else
-# error "Invalid MPFR Exp format"
-#endif
-
-/* Definition of the standard exponent limits */
-#define MPFR_EMAX_DEFAULT ((mpfr_exp_t) (((mpfr_ulong) 1 << 30) - 1))
-#define MPFR_EMIN_DEFAULT (-(MPFR_EMAX_DEFAULT))
-
-/* DON'T USE THIS! (For MPFR-public macros only, see below.)
- The mpfr_sgn macro uses the fact that __MPFR_EXP_NAN and __MPFR_EXP_ZERO
- are the smallest values. */
-#define __MPFR_EXP_MAX ((mpfr_exp_t) (((mpfr_uexp_t) -1) >> 1))
-#define __MPFR_EXP_NAN (1 - __MPFR_EXP_MAX)
-#define __MPFR_EXP_ZERO (0 - __MPFR_EXP_MAX)
-#define __MPFR_EXP_INF (2 - __MPFR_EXP_MAX)
-
-/* Definition of the main structure */
-typedef struct {
- mpfr_prec_t _mpfr_prec;
- mpfr_sign_t _mpfr_sign;
- mpfr_exp_t _mpfr_exp;
- mp_limb_t *_mpfr_d;
-} __mpfr_struct;
-
-/* Compatibility with previous types of MPFR */
-#ifndef mp_rnd_t
-# define mp_rnd_t mpfr_rnd_t
-#endif
-#ifndef mp_prec_t
-# define mp_prec_t mpfr_prec_t
-#endif
-
-/*
- The represented number is
- _sign*(_d[k-1]/B+_d[k-2]/B^2+...+_d[0]/B^k)*2^_exp
- where k=ceil(_mp_prec/GMP_NUMB_BITS) and B=2^GMP_NUMB_BITS.
-
- For the msb (most significant bit) normalized representation, we must have
- _d[k-1]>=B/2, unless the number is singular.
-
- We must also have the last k*GMP_NUMB_BITS-_prec bits set to zero.
-*/
-
-typedef __mpfr_struct mpfr_t[1];
-typedef __mpfr_struct *mpfr_ptr;
-typedef __gmp_const __mpfr_struct *mpfr_srcptr;
-
-/* For those who need a direct and fast access to the sign field.
- However it is not in the API, thus use it at your own risk: it might
- not be supported, or change name, in further versions!
- Unfortunately, it must be defined here (instead of MPFR's internal
- header file mpfr-impl.h) because it is used by some macros below.
-*/
-#define MPFR_SIGN(x) ((x)->_mpfr_sign)
-
-/* Stack interface */
-typedef enum {
- MPFR_NAN_KIND = 0,
- MPFR_INF_KIND = 1, MPFR_ZERO_KIND = 2, MPFR_REGULAR_KIND = 3
-} mpfr_kind_t;
-
-/* GMP defines:
- + size_t: Standard size_t
- + __GMP_ATTRIBUTE_PURE Attribute for math functions.
- + __GMP_NOTHROW For C++: can't throw .
- + __GMP_EXTERN_INLINE Attribute for inline function.
- * __gmp_const const (Supports for K&R compiler only for mpfr.h).
- + __GMP_DECLSPEC_EXPORT compiling to go into a DLL
- + __GMP_DECLSPEC_IMPORT compiling to go into a application
-*/
-/* Extra MPFR defines */
-#define __MPFR_SENTINEL_ATTR
-#if defined (__GNUC__)
-# if __GNUC__ >= 4
-# undef __MPFR_SENTINEL_ATTR
-# define __MPFR_SENTINEL_ATTR __attribute__ ((sentinel))
-# endif
-#endif
-
-/* Prototypes: Support of K&R compiler */
-#if defined (__GMP_PROTO)
-# define _MPFR_PROTO __GMP_PROTO
-#elif defined (__STDC__) || defined (__cplusplus)
-# define _MPFR_PROTO(x) x
-#else
-# define _MPFR_PROTO(x) ()
-#endif
-/* Support for WINDOWS Dll:
- Check if we are inside a MPFR build, and if so export the functions.
- Otherwise does the same thing as GMP */
-#if defined(__MPFR_WITHIN_MPFR) && __GMP_LIBGMP_DLL
-# define __MPFR_DECLSPEC __GMP_DECLSPEC_EXPORT
-#else
-# define __MPFR_DECLSPEC __GMP_DECLSPEC
-#endif
-
-/* Use MPFR_DEPRECATED to mark MPFR functions, types or variables as
- deprecated. Code inspired by Apache Subversion's svn_types.h file. */
-#if defined(__GNUC__) && \
- (__GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
-# define MPFR_DEPRECATED __attribute__ ((deprecated))
-#elif defined(_MSC_VER) && _MSC_VER >= 1300
-# define MPFR_DEPRECATED __declspec(deprecated)
-#else
-# define MPFR_DEPRECATED
-#endif
-
-/* Note: In order to be declared, some functions need a specific
- system header to be included *before* "mpfr.h". If the user
- forgets to include the header, the MPFR function prototype in
- the user object file is not correct. To avoid wrong results,
- we raise a linker error in that case by changing their internal
- name in the library (prefixed by __gmpfr instead of mpfr). See
- the lines of the form "#define mpfr_xxx __gmpfr_xxx" below. */
-
-#if defined (__cplusplus)
-extern "C" {
-#endif
-
-__MPFR_DECLSPEC __gmp_const char * mpfr_get_version _MPFR_PROTO ((void));
-__MPFR_DECLSPEC __gmp_const char * mpfr_get_patches _MPFR_PROTO ((void));
-__MPFR_DECLSPEC int mpfr_buildopt_tls_p _MPFR_PROTO ((void));
-__MPFR_DECLSPEC int mpfr_buildopt_decimal_p _MPFR_PROTO ((void));
-__MPFR_DECLSPEC int mpfr_buildopt_gmpinternals_p _MPFR_PROTO ((void));
-__MPFR_DECLSPEC __gmp_const char * mpfr_buildopt_tune_case _MPFR_PROTO ((void));
-
-__MPFR_DECLSPEC mpfr_exp_t mpfr_get_emin _MPFR_PROTO ((void));
-__MPFR_DECLSPEC int mpfr_set_emin _MPFR_PROTO ((mpfr_exp_t));
-__MPFR_DECLSPEC mpfr_exp_t mpfr_get_emin_min _MPFR_PROTO ((void));
-__MPFR_DECLSPEC mpfr_exp_t mpfr_get_emin_max _MPFR_PROTO ((void));
-__MPFR_DECLSPEC mpfr_exp_t mpfr_get_emax _MPFR_PROTO ((void));
-__MPFR_DECLSPEC int mpfr_set_emax _MPFR_PROTO ((mpfr_exp_t));
-__MPFR_DECLSPEC mpfr_exp_t mpfr_get_emax_min _MPFR_PROTO ((void));
-__MPFR_DECLSPEC mpfr_exp_t mpfr_get_emax_max _MPFR_PROTO ((void));
-
-__MPFR_DECLSPEC void mpfr_set_default_rounding_mode _MPFR_PROTO((mpfr_rnd_t));
-__MPFR_DECLSPEC mpfr_rnd_t mpfr_get_default_rounding_mode _MPFR_PROTO((void));
-__MPFR_DECLSPEC __gmp_const char *
- mpfr_print_rnd_mode _MPFR_PROTO((mpfr_rnd_t));
-
-__MPFR_DECLSPEC void mpfr_clear_flags _MPFR_PROTO ((void));
-__MPFR_DECLSPEC void mpfr_clear_underflow _MPFR_PROTO ((void));
-__MPFR_DECLSPEC void mpfr_clear_overflow _MPFR_PROTO ((void));
-__MPFR_DECLSPEC void mpfr_clear_divby0 _MPFR_PROTO ((void));
-__MPFR_DECLSPEC void mpfr_clear_nanflag _MPFR_PROTO ((void));
-__MPFR_DECLSPEC void mpfr_clear_inexflag _MPFR_PROTO ((void));
-__MPFR_DECLSPEC void mpfr_clear_erangeflag _MPFR_PROTO ((void));
-
-__MPFR_DECLSPEC void mpfr_set_underflow _MPFR_PROTO ((void));
-__MPFR_DECLSPEC void mpfr_set_overflow _MPFR_PROTO ((void));
-__MPFR_DECLSPEC void mpfr_set_divby0 _MPFR_PROTO ((void));
-__MPFR_DECLSPEC void mpfr_set_nanflag _MPFR_PROTO ((void));
-__MPFR_DECLSPEC void mpfr_set_inexflag _MPFR_PROTO ((void));
-__MPFR_DECLSPEC void mpfr_set_erangeflag _MPFR_PROTO ((void));
-
-__MPFR_DECLSPEC int mpfr_underflow_p _MPFR_PROTO ((void));
-__MPFR_DECLSPEC int mpfr_overflow_p _MPFR_PROTO ((void));
-__MPFR_DECLSPEC int mpfr_divby0_p _MPFR_PROTO ((void));
-__MPFR_DECLSPEC int mpfr_nanflag_p _MPFR_PROTO ((void));
-__MPFR_DECLSPEC int mpfr_inexflag_p _MPFR_PROTO ((void));
-__MPFR_DECLSPEC int mpfr_erangeflag_p _MPFR_PROTO ((void));
-
-__MPFR_DECLSPEC int
- mpfr_check_range _MPFR_PROTO ((mpfr_ptr, int, mpfr_rnd_t));
-
-__MPFR_DECLSPEC void mpfr_init2 _MPFR_PROTO ((mpfr_ptr, mpfr_prec_t));
-__MPFR_DECLSPEC void mpfr_init _MPFR_PROTO ((mpfr_ptr));
-__MPFR_DECLSPEC void mpfr_clear _MPFR_PROTO ((mpfr_ptr));
-
-__MPFR_DECLSPEC void
- mpfr_inits2 _MPFR_PROTO ((mpfr_prec_t, mpfr_ptr, ...)) __MPFR_SENTINEL_ATTR;
-__MPFR_DECLSPEC void
- mpfr_inits _MPFR_PROTO ((mpfr_ptr, ...)) __MPFR_SENTINEL_ATTR;
-__MPFR_DECLSPEC void
- mpfr_clears _MPFR_PROTO ((mpfr_ptr, ...)) __MPFR_SENTINEL_ATTR;
-
-__MPFR_DECLSPEC int
- mpfr_prec_round _MPFR_PROTO ((mpfr_ptr, mpfr_prec_t, mpfr_rnd_t));
-__MPFR_DECLSPEC int
- mpfr_can_round _MPFR_PROTO ((mpfr_srcptr, mpfr_exp_t, mpfr_rnd_t, mpfr_rnd_t,
- mpfr_prec_t));
-__MPFR_DECLSPEC mpfr_prec_t mpfr_min_prec _MPFR_PROTO ((mpfr_srcptr));
-
-__MPFR_DECLSPEC mpfr_exp_t mpfr_get_exp _MPFR_PROTO ((mpfr_srcptr));
-__MPFR_DECLSPEC int mpfr_set_exp _MPFR_PROTO ((mpfr_ptr, mpfr_exp_t));
-__MPFR_DECLSPEC mpfr_prec_t mpfr_get_prec _MPFR_PROTO((mpfr_srcptr));
-__MPFR_DECLSPEC void mpfr_set_prec _MPFR_PROTO((mpfr_ptr, mpfr_prec_t));
-__MPFR_DECLSPEC void mpfr_set_prec_raw _MPFR_PROTO((mpfr_ptr, mpfr_prec_t));
-__MPFR_DECLSPEC void mpfr_set_default_prec _MPFR_PROTO((mpfr_prec_t));
-__MPFR_DECLSPEC mpfr_prec_t mpfr_get_default_prec _MPFR_PROTO((void));
-
-__MPFR_DECLSPEC int mpfr_set_d _MPFR_PROTO ((mpfr_ptr, double, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_set_flt _MPFR_PROTO ((mpfr_ptr, float, mpfr_rnd_t));
-#ifdef MPFR_WANT_DECIMAL_FLOATS
-__MPFR_DECLSPEC int mpfr_set_decimal64 _MPFR_PROTO ((mpfr_ptr, _Decimal64,
- mpfr_rnd_t));
-#endif
-__MPFR_DECLSPEC int
- mpfr_set_ld _MPFR_PROTO ((mpfr_ptr, long double, mpfr_rnd_t));
-__MPFR_DECLSPEC int
- mpfr_set_z _MPFR_PROTO ((mpfr_ptr, mpz_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int
- mpfr_set_z_2exp _MPFR_PROTO ((mpfr_ptr, mpz_srcptr, mpfr_exp_t, mpfr_rnd_t));
-__MPFR_DECLSPEC void mpfr_set_nan _MPFR_PROTO ((mpfr_ptr));
-__MPFR_DECLSPEC void mpfr_set_inf _MPFR_PROTO ((mpfr_ptr, int));
-__MPFR_DECLSPEC void mpfr_set_zero _MPFR_PROTO ((mpfr_ptr, int));
-__MPFR_DECLSPEC int
- mpfr_set_f _MPFR_PROTO ((mpfr_ptr, mpf_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int
- mpfr_get_f _MPFR_PROTO ((mpf_ptr, mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_set_si _MPFR_PROTO ((mpfr_ptr, long, mpfr_rnd_t));
-__MPFR_DECLSPEC int
- mpfr_set_ui _MPFR_PROTO ((mpfr_ptr, unsigned long, mpfr_rnd_t));
-__MPFR_DECLSPEC int
- mpfr_set_si_2exp _MPFR_PROTO ((mpfr_ptr, long, mpfr_exp_t, mpfr_rnd_t));
-__MPFR_DECLSPEC int
- mpfr_set_ui_2exp _MPFR_PROTO ((mpfr_ptr,unsigned long,mpfr_exp_t,mpfr_rnd_t));
-__MPFR_DECLSPEC int
- mpfr_set_q _MPFR_PROTO ((mpfr_ptr, mpq_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int
- mpfr_set_str _MPFR_PROTO ((mpfr_ptr, __gmp_const char *, int, mpfr_rnd_t));
-__MPFR_DECLSPEC int
- mpfr_init_set_str _MPFR_PROTO ((mpfr_ptr, __gmp_const char *, int,
- mpfr_rnd_t));
-__MPFR_DECLSPEC int
- mpfr_set4 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t, int));
-__MPFR_DECLSPEC int
- mpfr_abs _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int
- mpfr_set _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_neg _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_signbit _MPFR_PROTO ((mpfr_srcptr));
-__MPFR_DECLSPEC int
- mpfr_setsign _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, int, mpfr_rnd_t));
-__MPFR_DECLSPEC int
- mpfr_copysign _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr, mpfr_rnd_t));
-
-__MPFR_DECLSPEC mpfr_exp_t mpfr_get_z_2exp _MPFR_PROTO ((mpz_ptr, mpfr_srcptr));
-__MPFR_DECLSPEC float mpfr_get_flt _MPFR_PROTO ((mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC double mpfr_get_d _MPFR_PROTO ((mpfr_srcptr, mpfr_rnd_t));
-#ifdef MPFR_WANT_DECIMAL_FLOATS
-__MPFR_DECLSPEC _Decimal64 mpfr_get_decimal64 _MPFR_PROTO ((mpfr_srcptr,
- mpfr_rnd_t));
-#endif
-__MPFR_DECLSPEC long double mpfr_get_ld _MPFR_PROTO ((mpfr_srcptr,
- mpfr_rnd_t));
-__MPFR_DECLSPEC double mpfr_get_d1 _MPFR_PROTO ((mpfr_srcptr));
-__MPFR_DECLSPEC double mpfr_get_d_2exp _MPFR_PROTO ((long*, mpfr_srcptr,
- mpfr_rnd_t));
-__MPFR_DECLSPEC long double mpfr_get_ld_2exp _MPFR_PROTO ((long*, mpfr_srcptr,
- mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_frexp _MPFR_PROTO ((mpfr_exp_t*, mpfr_ptr,
- mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC long mpfr_get_si _MPFR_PROTO ((mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC unsigned long mpfr_get_ui _MPFR_PROTO ((mpfr_srcptr,
- mpfr_rnd_t));
-__MPFR_DECLSPEC char*mpfr_get_str _MPFR_PROTO ((char*, mpfr_exp_t*, int, size_t,
- mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_get_z _MPFR_PROTO ((mpz_ptr z, mpfr_srcptr f,
- mpfr_rnd_t));
-
-__MPFR_DECLSPEC void mpfr_free_str _MPFR_PROTO ((char *));
-
-__MPFR_DECLSPEC int mpfr_urandom _MPFR_PROTO ((mpfr_ptr, gmp_randstate_t,
- mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_grandom _MPFR_PROTO ((mpfr_ptr, mpfr_ptr, gmp_randstate_t,
- mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_urandomb _MPFR_PROTO ((mpfr_ptr, gmp_randstate_t));
-
-__MPFR_DECLSPEC void mpfr_nextabove _MPFR_PROTO ((mpfr_ptr));
-__MPFR_DECLSPEC void mpfr_nextbelow _MPFR_PROTO ((mpfr_ptr));
-__MPFR_DECLSPEC void mpfr_nexttoward _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr));
-
-__MPFR_DECLSPEC int mpfr_printf _MPFR_PROTO ((__gmp_const char*, ...));
-__MPFR_DECLSPEC int mpfr_asprintf _MPFR_PROTO ((char**, __gmp_const char*,
- ...));
-__MPFR_DECLSPEC int mpfr_sprintf _MPFR_PROTO ((char*, __gmp_const char*,
- ...));
-__MPFR_DECLSPEC int mpfr_snprintf _MPFR_PROTO ((char*, size_t,
- __gmp_const char*, ...));
-
-__MPFR_DECLSPEC int mpfr_pow _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_pow_si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- long int, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_pow_ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- unsigned long int, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_ui_pow_ui _MPFR_PROTO ((mpfr_ptr, unsigned long int,
- unsigned long int, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_ui_pow _MPFR_PROTO ((mpfr_ptr, unsigned long int,
- mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_pow_z _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- mpz_srcptr, mpfr_rnd_t));
-
-__MPFR_DECLSPEC int mpfr_sqrt _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_sqrt_ui _MPFR_PROTO ((mpfr_ptr, unsigned long,
- mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_rec_sqrt _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- mpfr_rnd_t));
-
-__MPFR_DECLSPEC int mpfr_add _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_sub _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_mul _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_div _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- mpfr_srcptr, mpfr_rnd_t));
-
-__MPFR_DECLSPEC int mpfr_add_ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- unsigned long, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_sub_ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- unsigned long, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_ui_sub _MPFR_PROTO ((mpfr_ptr, unsigned long,
- mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_mul_ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- unsigned long, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_div_ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- unsigned long, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_ui_div _MPFR_PROTO ((mpfr_ptr, unsigned long,
- mpfr_srcptr, mpfr_rnd_t));
-
-__MPFR_DECLSPEC int mpfr_add_si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- long int, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_sub_si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- long int, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_si_sub _MPFR_PROTO ((mpfr_ptr, long int,
- mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_mul_si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- long int, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_div_si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- long int, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_si_div _MPFR_PROTO ((mpfr_ptr, long int,
- mpfr_srcptr, mpfr_rnd_t));
-
-__MPFR_DECLSPEC int mpfr_add_d _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- double, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_sub_d _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- double, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_d_sub _MPFR_PROTO ((mpfr_ptr, double,
- mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_mul_d _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- double, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_div_d _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- double, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_d_div _MPFR_PROTO ((mpfr_ptr, double,
- mpfr_srcptr, mpfr_rnd_t));
-
-__MPFR_DECLSPEC int mpfr_sqr _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
-
-__MPFR_DECLSPEC int mpfr_const_pi _MPFR_PROTO ((mpfr_ptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_const_log2 _MPFR_PROTO ((mpfr_ptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_const_euler _MPFR_PROTO ((mpfr_ptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_const_catalan _MPFR_PROTO ((mpfr_ptr, mpfr_rnd_t));
-
-__MPFR_DECLSPEC int mpfr_agm _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr,
- mpfr_rnd_t));
-
-__MPFR_DECLSPEC int mpfr_log _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_log2 _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_log10 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_log1p _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- mpfr_rnd_t));
-
-__MPFR_DECLSPEC int mpfr_exp _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_exp2 _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_exp10 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_expm1 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_eint _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_li2 _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
-
-__MPFR_DECLSPEC int mpfr_cmp _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr));
-__MPFR_DECLSPEC int mpfr_cmp3 _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr, int));
-__MPFR_DECLSPEC int mpfr_cmp_d _MPFR_PROTO ((mpfr_srcptr, double));
-__MPFR_DECLSPEC int mpfr_cmp_ld _MPFR_PROTO ((mpfr_srcptr, long double));
-__MPFR_DECLSPEC int mpfr_cmpabs _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr));
-__MPFR_DECLSPEC int mpfr_cmp_ui _MPFR_PROTO ((mpfr_srcptr, unsigned long));
-__MPFR_DECLSPEC int mpfr_cmp_si _MPFR_PROTO ((mpfr_srcptr, long));
-__MPFR_DECLSPEC int mpfr_cmp_ui_2exp _MPFR_PROTO ((mpfr_srcptr, unsigned long,
- mpfr_exp_t));
-__MPFR_DECLSPEC int mpfr_cmp_si_2exp _MPFR_PROTO ((mpfr_srcptr, long,
- mpfr_exp_t));
-__MPFR_DECLSPEC void mpfr_reldiff _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_eq _MPFR_PROTO((mpfr_srcptr, mpfr_srcptr,
- unsigned long));
-__MPFR_DECLSPEC int mpfr_sgn _MPFR_PROTO ((mpfr_srcptr));
-
-__MPFR_DECLSPEC int mpfr_mul_2exp _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- unsigned long, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_div_2exp _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- unsigned long, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_mul_2ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- unsigned long, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_div_2ui _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- unsigned long, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_mul_2si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- long, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_div_2si _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- long, mpfr_rnd_t));
-
-__MPFR_DECLSPEC int mpfr_rint _MPFR_PROTO((mpfr_ptr,mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_round _MPFR_PROTO((mpfr_ptr, mpfr_srcptr));
-__MPFR_DECLSPEC int mpfr_trunc _MPFR_PROTO((mpfr_ptr, mpfr_srcptr));
-__MPFR_DECLSPEC int mpfr_ceil _MPFR_PROTO((mpfr_ptr, mpfr_srcptr));
-__MPFR_DECLSPEC int mpfr_floor _MPFR_PROTO((mpfr_ptr, mpfr_srcptr));
-__MPFR_DECLSPEC int mpfr_rint_round _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_rint_trunc _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_rint_ceil _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_rint_floor _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_frac _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_modf _MPFR_PROTO ((mpfr_ptr, mpfr_ptr, mpfr_srcptr,
- mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_remquo _MPFR_PROTO ((mpfr_ptr, long*, mpfr_srcptr,
- mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_remainder _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_fmod _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- mpfr_srcptr, mpfr_rnd_t));
-
-__MPFR_DECLSPEC int mpfr_fits_ulong_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_fits_slong_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_fits_uint_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_fits_sint_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_fits_ushort_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_fits_sshort_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_fits_uintmax_p _MPFR_PROTO((mpfr_srcptr,mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_fits_intmax_p _MPFR_PROTO((mpfr_srcptr, mpfr_rnd_t));
-
-__MPFR_DECLSPEC void mpfr_extract _MPFR_PROTO ((mpz_ptr, mpfr_srcptr,
- unsigned int));
-__MPFR_DECLSPEC void mpfr_swap _MPFR_PROTO ((mpfr_ptr, mpfr_ptr));
-__MPFR_DECLSPEC void mpfr_dump _MPFR_PROTO ((mpfr_srcptr));
-
-__MPFR_DECLSPEC int mpfr_nan_p _MPFR_PROTO((mpfr_srcptr));
-__MPFR_DECLSPEC int mpfr_inf_p _MPFR_PROTO((mpfr_srcptr));
-__MPFR_DECLSPEC int mpfr_number_p _MPFR_PROTO((mpfr_srcptr));
-__MPFR_DECLSPEC int mpfr_integer_p _MPFR_PROTO ((mpfr_srcptr));
-__MPFR_DECLSPEC int mpfr_zero_p _MPFR_PROTO ((mpfr_srcptr));
-__MPFR_DECLSPEC int mpfr_regular_p _MPFR_PROTO ((mpfr_srcptr));
-
-__MPFR_DECLSPEC int mpfr_greater_p _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr));
-__MPFR_DECLSPEC int mpfr_greaterequal_p _MPFR_PROTO ((mpfr_srcptr,
- mpfr_srcptr));
-__MPFR_DECLSPEC int mpfr_less_p _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr));
-__MPFR_DECLSPEC int mpfr_lessequal_p _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr));
-__MPFR_DECLSPEC int mpfr_lessgreater_p _MPFR_PROTO((mpfr_srcptr,mpfr_srcptr));
-__MPFR_DECLSPEC int mpfr_equal_p _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr));
-__MPFR_DECLSPEC int mpfr_unordered_p _MPFR_PROTO ((mpfr_srcptr, mpfr_srcptr));
-
-__MPFR_DECLSPEC int mpfr_atanh _MPFR_PROTO((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_acosh _MPFR_PROTO((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_asinh _MPFR_PROTO((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_cosh _MPFR_PROTO((mpfr_ptr,mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_sinh _MPFR_PROTO((mpfr_ptr,mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_tanh _MPFR_PROTO((mpfr_ptr,mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_sinh_cosh _MPFR_PROTO ((mpfr_ptr, mpfr_ptr,
- mpfr_srcptr, mpfr_rnd_t));
-
-__MPFR_DECLSPEC int mpfr_sech _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_csch _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_coth _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
-
-__MPFR_DECLSPEC int mpfr_acos _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_asin _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_atan _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_sin _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_sin_cos _MPFR_PROTO ((mpfr_ptr, mpfr_ptr,
- mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_cos _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_tan _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_atan2 _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_srcptr,
- mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_sec _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_csc _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_cot _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
-
-__MPFR_DECLSPEC int mpfr_hypot _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_erf _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_erfc _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_cbrt _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_root _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,unsigned long,mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_gamma _MPFR_PROTO((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_lngamma _MPFR_PROTO((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_lgamma _MPFR_PROTO((mpfr_ptr,int*,mpfr_srcptr,mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_digamma _MPFR_PROTO((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_zeta _MPFR_PROTO ((mpfr_ptr,mpfr_srcptr,mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_zeta_ui _MPFR_PROTO ((mpfr_ptr,unsigned long,mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_fac_ui _MPFR_PROTO ((mpfr_ptr, unsigned long int,
- mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_j0 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_j1 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_jn _MPFR_PROTO ((mpfr_ptr, long, mpfr_srcptr,
- mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_y0 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_y1 _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_yn _MPFR_PROTO ((mpfr_ptr, long, mpfr_srcptr,
- mpfr_rnd_t));
-
-__MPFR_DECLSPEC int mpfr_ai _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_rnd_t));
-
-__MPFR_DECLSPEC int mpfr_min _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr,
- mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_max _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr,
- mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_dim _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr,
- mpfr_rnd_t));
-
-__MPFR_DECLSPEC int mpfr_mul_z _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- mpz_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_div_z _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- mpz_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_add_z _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- mpz_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_sub_z _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- mpz_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_z_sub _MPFR_PROTO ((mpfr_ptr, mpz_srcptr,
- mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_cmp_z _MPFR_PROTO ((mpfr_srcptr, mpz_srcptr));
-
-__MPFR_DECLSPEC int mpfr_mul_q _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- mpq_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_div_q _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- mpq_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_add_q _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- mpq_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_sub_q _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr,
- mpq_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_cmp_q _MPFR_PROTO ((mpfr_srcptr, mpq_srcptr));
-
-__MPFR_DECLSPEC int mpfr_cmp_f _MPFR_PROTO ((mpfr_srcptr, mpf_srcptr));
-
-__MPFR_DECLSPEC int mpfr_fma _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr,
- mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_fms _MPFR_PROTO ((mpfr_ptr, mpfr_srcptr, mpfr_srcptr,
- mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_sum _MPFR_PROTO ((mpfr_ptr, mpfr_ptr *__gmp_const,
- unsigned long, mpfr_rnd_t));
-
-__MPFR_DECLSPEC void mpfr_free_cache _MPFR_PROTO ((void));
-
-__MPFR_DECLSPEC int mpfr_subnormalize _MPFR_PROTO ((mpfr_ptr, int,
- mpfr_rnd_t));
-
-__MPFR_DECLSPEC int mpfr_strtofr _MPFR_PROTO ((mpfr_ptr, __gmp_const char *,
- char **, int, mpfr_rnd_t));
-
-__MPFR_DECLSPEC size_t mpfr_custom_get_size _MPFR_PROTO ((mpfr_prec_t));
-__MPFR_DECLSPEC void mpfr_custom_init _MPFR_PROTO ((void *, mpfr_prec_t));
-__MPFR_DECLSPEC void * mpfr_custom_get_significand _MPFR_PROTO ((mpfr_srcptr));
-__MPFR_DECLSPEC mpfr_exp_t mpfr_custom_get_exp _MPFR_PROTO ((mpfr_srcptr));
-__MPFR_DECLSPEC void mpfr_custom_move _MPFR_PROTO ((mpfr_ptr, void *));
-__MPFR_DECLSPEC void mpfr_custom_init_set _MPFR_PROTO ((mpfr_ptr, int,
- mpfr_exp_t, mpfr_prec_t, void *));
-__MPFR_DECLSPEC int mpfr_custom_get_kind _MPFR_PROTO ((mpfr_srcptr));
-
-#if defined (__cplusplus)
-}
-#endif
-
-/* Define MPFR_USE_EXTENSION to avoid "gcc -pedantic" warnings. */
-#ifndef MPFR_EXTENSION
-# if defined(MPFR_USE_EXTENSION)
-# define MPFR_EXTENSION __extension__
-# else
-# define MPFR_EXTENSION
-# endif
-#endif
-
-/* Warning! This macro doesn't work with K&R C (e.g., compare the "gcc -E"
- output with and without -traditional) and shouldn't be used internally.
- For public use only, but see the MPFR manual. */
-#define MPFR_DECL_INIT(_x, _p) \
- MPFR_EXTENSION mp_limb_t __gmpfr_local_tab_##_x[((_p)-1)/GMP_NUMB_BITS+1]; \
- MPFR_EXTENSION mpfr_t _x = {{(_p),1,__MPFR_EXP_NAN,__gmpfr_local_tab_##_x}}
-
-/* Fast access macros to replace function interface.
- If the USER don't want to use the macro interface, let him make happy
- even if it produces faster and smaller code. */
-#ifndef MPFR_USE_NO_MACRO
-
-/* Inlining theses functions is both faster and smaller */
-#define mpfr_nan_p(_x) ((_x)->_mpfr_exp == __MPFR_EXP_NAN)
-#define mpfr_inf_p(_x) ((_x)->_mpfr_exp == __MPFR_EXP_INF)
-#define mpfr_zero_p(_x) ((_x)->_mpfr_exp == __MPFR_EXP_ZERO)
-#define mpfr_regular_p(_x) ((_x)->_mpfr_exp > __MPFR_EXP_INF)
-#define mpfr_sgn(_x) \
- ((_x)->_mpfr_exp < __MPFR_EXP_INF ? \
- (mpfr_nan_p (_x) ? mpfr_set_erangeflag () : (mpfr_void) 0), 0 : \
- MPFR_SIGN (_x))
-
-/* Prevent them from using as lvalues */
-#define MPFR_VALUE_OF(x) (0 ? (x) : (x))
-#define mpfr_get_prec(_x) MPFR_VALUE_OF((_x)->_mpfr_prec)
-#define mpfr_get_exp(_x) MPFR_VALUE_OF((_x)->_mpfr_exp)
-/* Note: if need be, the MPFR_VALUE_OF can be used for other expressions
- (of any type). Thanks to Wojtek Lerch and Tim Rentsch for the idea. */
-
-#define mpfr_round(a,b) mpfr_rint((a), (b), MPFR_RNDNA)
-#define mpfr_trunc(a,b) mpfr_rint((a), (b), MPFR_RNDZ)
-#define mpfr_ceil(a,b) mpfr_rint((a), (b), MPFR_RNDU)
-#define mpfr_floor(a,b) mpfr_rint((a), (b), MPFR_RNDD)
-
-#define mpfr_cmp_ui(b,i) mpfr_cmp_ui_2exp((b),(i),0)
-#define mpfr_cmp_si(b,i) mpfr_cmp_si_2exp((b),(i),0)
-#define mpfr_set(a,b,r) mpfr_set4(a,b,r,MPFR_SIGN(b))
-#define mpfr_abs(a,b,r) mpfr_set4(a,b,r,1)
-#define mpfr_copysign(a,b,c,r) mpfr_set4(a,b,r,MPFR_SIGN(c))
-#define mpfr_setsign(a,b,s,r) mpfr_set4(a,b,r,(s) ? -1 : 1)
-#define mpfr_signbit(x) (MPFR_SIGN(x) < 0)
-#define mpfr_cmp(b, c) mpfr_cmp3(b, c, 1)
-#define mpfr_mul_2exp(y,x,n,r) mpfr_mul_2ui((y),(x),(n),(r))
-#define mpfr_div_2exp(y,x,n,r) mpfr_div_2ui((y),(x),(n),(r))
-
-
-/* When using GCC, optimize certain common comparisons and affectations.
- + Remove ICC since it defines __GNUC__ but produces a
- huge number of warnings if you use this code.
- VL: I couldn't reproduce a single warning when enabling these macros
- with icc 10.1 20080212 on Itanium. But with this version, __ICC isn't
- defined (__INTEL_COMPILER is, though), so that these macros are enabled
- anyway. Checking with other ICC versions is needed. Possibly detect
- whether warnings are produced or not with a configure test.
- + Remove C++ too, since it complains too much. */
-/* Added casts to improve robustness in case of undefined behavior and
- compiler extensions based on UB (in particular -fwrapv). MPFR doesn't
- use such extensions, but these macros will be used by 3rd-party code,
- where such extensions may be required.
- Moreover casts to unsigned long have been added to avoid warnings in
- programs that use MPFR and are compiled with -Wconversion; such casts
- are OK since if X is a constant expression, then (unsigned long) X is
- also a constant expression, so that the optimizations still work. The
- warnings are probably related to the following two bugs:
- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=4210
- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38470 (possibly a variant)
- and the casts could be removed once these bugs are fixed.
- Casts shouldn't be used on the generic calls (to the ..._2exp functions),
- where implicit conversions are performed. Indeed, having at least one
- implicit conversion in the macro allows the compiler to emit diagnostics
- when normally expected, for instance in the following call:
- mpfr_set_ui (x, "foo", MPFR_RNDN);
- If this is not possible (for future macros), one of the tricks described
- on http://groups.google.com/group/comp.std.c/msg/e92abd24bf9eaf7b could
- be used. */
-#if defined (__GNUC__) && !defined(__ICC) && !defined(__cplusplus)
-#if (__GNUC__ >= 2)
-#undef mpfr_cmp_ui
-/* We use the fact that mpfr_sgn on NaN sets the erange flag and returns 0.
- But warning! mpfr_sgn is specified as a macro in the API, thus the macro
- mustn't be used if side effects are possible, like here. */
-#define mpfr_cmp_ui(_f,_u) \
- (__builtin_constant_p (_u) && (mpfr_ulong) (_u) == 0 ? \
- (mpfr_sgn) (_f) : \
- mpfr_cmp_ui_2exp ((_f), (_u), 0))
-#undef mpfr_cmp_si
-#define mpfr_cmp_si(_f,_s) \
- (__builtin_constant_p (_s) && (mpfr_long) (_s) >= 0 ? \
- mpfr_cmp_ui ((_f), (mpfr_ulong) (mpfr_long) (_s)) : \
- mpfr_cmp_si_2exp ((_f), (_s), 0))
-#if __GNUC__ > 2 || __GNUC_MINOR__ >= 95
-#undef mpfr_set_ui
-#define mpfr_set_ui(_f,_u,_r) \
- (__builtin_constant_p (_u) && (mpfr_ulong) (_u) == 0 ? \
- __extension__ ({ \
- mpfr_ptr _p = (_f); \
- _p->_mpfr_sign = 1; \
- _p->_mpfr_exp = __MPFR_EXP_ZERO; \
- (mpfr_void) (_r); 0; }) : \
- mpfr_set_ui_2exp ((_f), (_u), 0, (_r)))
-#endif
-#undef mpfr_set_si
-#define mpfr_set_si(_f,_s,_r) \
- (__builtin_constant_p (_s) && (mpfr_long) (_s) >= 0 ? \
- mpfr_set_ui ((_f), (mpfr_ulong) (mpfr_long) (_s), (_r)) : \
- mpfr_set_si_2exp ((_f), (_s), 0, (_r)))
-#endif
-#endif
-
-/* Macro version of mpfr_stack interface for fast access */
-#define mpfr_custom_get_size(p) ((mpfr_size_t) \
- (((p)+GMP_NUMB_BITS-1)/GMP_NUMB_BITS*sizeof (mp_limb_t)))
-#define mpfr_custom_init(m,p) do {} while (0)
-#define mpfr_custom_get_significand(x) ((mpfr_void*)((x)->_mpfr_d))
-#define mpfr_custom_get_exp(x) ((x)->_mpfr_exp)
-#define mpfr_custom_move(x,m) do { ((x)->_mpfr_d = (mp_limb_t*)(m)); } while (0)
-#define mpfr_custom_init_set(x,k,e,p,m) do { \
- mpfr_ptr _x = (x); \
- mpfr_exp_t _e; \
- mpfr_kind_t _t; \
- mpfr_int _s, _k; \
- _k = (k); \
- if (_k >= 0) { \
- _t = (mpfr_kind_t) _k; \
- _s = 1; \
- } else { \
- _t = (mpfr_kind_t) -k; \
- _s = -1; \
- } \
- _e = _t == MPFR_REGULAR_KIND ? (e) : \
- _t == MPFR_NAN_KIND ? __MPFR_EXP_NAN : \
- _t == MPFR_INF_KIND ? __MPFR_EXP_INF : __MPFR_EXP_ZERO; \
- _x->_mpfr_prec = (p); \
- _x->_mpfr_sign = _s; \
- _x->_mpfr_exp = _e; \
- _x->_mpfr_d = (mp_limb_t*) (m); \
- } while (0)
-#define mpfr_custom_get_kind(x) \
- ( (x)->_mpfr_exp > __MPFR_EXP_INF ? \
- (mpfr_int) MPFR_REGULAR_KIND * MPFR_SIGN (x) \
- : (x)->_mpfr_exp == __MPFR_EXP_INF ? \
- (mpfr_int) MPFR_INF_KIND * MPFR_SIGN (x) \
- : (x)->_mpfr_exp == __MPFR_EXP_NAN ? (mpfr_int) MPFR_NAN_KIND \
- : (mpfr_int) MPFR_ZERO_KIND * MPFR_SIGN (x) )
-
-
-#endif /* MPFR_USE_NO_MACRO */
-
-/* Theses are defined to be macros */
-#define mpfr_init_set_si(x, i, rnd) \
- ( mpfr_init(x), mpfr_set_si((x), (i), (rnd)) )
-#define mpfr_init_set_ui(x, i, rnd) \
- ( mpfr_init(x), mpfr_set_ui((x), (i), (rnd)) )
-#define mpfr_init_set_d(x, d, rnd) \
- ( mpfr_init(x), mpfr_set_d((x), (d), (rnd)) )
-#define mpfr_init_set_ld(x, d, rnd) \
- ( mpfr_init(x), mpfr_set_ld((x), (d), (rnd)) )
-#define mpfr_init_set_z(x, i, rnd) \
- ( mpfr_init(x), mpfr_set_z((x), (i), (rnd)) )
-#define mpfr_init_set_q(x, i, rnd) \
- ( mpfr_init(x), mpfr_set_q((x), (i), (rnd)) )
-#define mpfr_init_set(x, y, rnd) \
- ( mpfr_init(x), mpfr_set((x), (y), (rnd)) )
-#define mpfr_init_set_f(x, y, rnd) \
- ( mpfr_init(x), mpfr_set_f((x), (y), (rnd)) )
-
-/* Compatibility layer -- obsolete functions and macros */
-/* Note: it is not possible to output warnings, unless one defines
- * a deprecated variable and uses it, e.g.
- * MPFR_DEPRECATED extern int mpfr_deprecated_feature;
- * #define MPFR_EMIN_MIN ((void)mpfr_deprecated_feature,mpfr_get_emin_min())
- * (the cast to void avoids a warning because the left-hand operand
- * has no effect).
- */
-#define mpfr_cmp_abs mpfr_cmpabs
-#define mpfr_round_prec(x,r,p) mpfr_prec_round(x,p,r)
-#define __gmp_default_rounding_mode (mpfr_get_default_rounding_mode())
-#define __mpfr_emin (mpfr_get_emin())
-#define __mpfr_emax (mpfr_get_emax())
-#define __mpfr_default_fp_bit_precision (mpfr_get_default_fp_bit_precision())
-#define MPFR_EMIN_MIN mpfr_get_emin_min()
-#define MPFR_EMIN_MAX mpfr_get_emin_max()
-#define MPFR_EMAX_MIN mpfr_get_emax_min()
-#define MPFR_EMAX_MAX mpfr_get_emax_max()
-#define mpfr_version (mpfr_get_version())
-#ifndef mpz_set_fr
-# define mpz_set_fr mpfr_get_z
-#endif
-#define mpfr_add_one_ulp(x,r) \
- (mpfr_sgn (x) > 0 ? mpfr_nextabove (x) : mpfr_nextbelow (x))
-#define mpfr_sub_one_ulp(x,r) \
- (mpfr_sgn (x) > 0 ? mpfr_nextbelow (x) : mpfr_nextabove (x))
-#define mpfr_get_z_exp mpfr_get_z_2exp
-#define mpfr_custom_get_mantissa mpfr_custom_get_significand
-
-#endif /* __MPFR_H */
-
-
-/* Check if <stdint.h> / <inttypes.h> is included or if the user
- explicitly wants intmax_t. Automatical detection is done by
- checking:
- - INTMAX_C and UINTMAX_C, but not if the compiler is a C++ one
- (as suggested by Patrick Pelissier) because the test does not
- work well in this case. See:
- https://sympa.inria.fr/sympa/arc/mpfr/2010-02/msg00025.html
- We do not check INTMAX_MAX and UINTMAX_MAX because under Solaris,
- these macros are always defined by <limits.h> (i.e. even when
- <stdint.h> and <inttypes.h> are not included).
- - _STDINT_H (defined by the glibc), _STDINT_H_ (defined under
- Mac OS X) and _STDINT (defined under MS Visual Studio), but
- this test may not work with all implementations.
- Portable software should not rely on these tests.
-*/
-#if (defined (INTMAX_C) && defined (UINTMAX_C) && !defined(__cplusplus)) || \
- defined (MPFR_USE_INTMAX_T) || \
- defined (_STDINT_H) || defined (_STDINT_H_) || defined (_STDINT)
-# ifndef _MPFR_H_HAVE_INTMAX_T
-# define _MPFR_H_HAVE_INTMAX_T 1
-
-#if defined (__cplusplus)
-extern "C" {
-#endif
-
-#define mpfr_set_sj __gmpfr_set_sj
-#define mpfr_set_sj_2exp __gmpfr_set_sj_2exp
-#define mpfr_set_uj __gmpfr_set_uj
-#define mpfr_set_uj_2exp __gmpfr_set_uj_2exp
-#define mpfr_get_sj __gmpfr_mpfr_get_sj
-#define mpfr_get_uj __gmpfr_mpfr_get_uj
-__MPFR_DECLSPEC int mpfr_set_sj _MPFR_PROTO ((mpfr_t, intmax_t, mpfr_rnd_t));
-__MPFR_DECLSPEC int
- mpfr_set_sj_2exp _MPFR_PROTO ((mpfr_t, intmax_t, intmax_t, mpfr_rnd_t));
-__MPFR_DECLSPEC int mpfr_set_uj _MPFR_PROTO ((mpfr_t, uintmax_t, mpfr_rnd_t));
-__MPFR_DECLSPEC int
- mpfr_set_uj_2exp _MPFR_PROTO ((mpfr_t, uintmax_t, intmax_t, mpfr_rnd_t));
-__MPFR_DECLSPEC intmax_t mpfr_get_sj _MPFR_PROTO ((mpfr_srcptr, mpfr_rnd_t));
-__MPFR_DECLSPEC uintmax_t mpfr_get_uj _MPFR_PROTO ((mpfr_srcptr, mpfr_rnd_t));
-
-#if defined (__cplusplus)
-}
-#endif
-
-# endif /* _MPFR_H_HAVE_INTMAX_T */
-#endif
-
-
-/* Check if <stdio.h> has been included or if the user wants FILE */
-#if defined (_GMP_H_HAVE_FILE) || defined (MPFR_USE_FILE)
-# ifndef _MPFR_H_HAVE_FILE
-# define _MPFR_H_HAVE_FILE 1
-
-#if defined (__cplusplus)
-extern "C" {
-#endif
-
-#define mpfr_inp_str __gmpfr_inp_str
-#define mpfr_out_str __gmpfr_out_str
-__MPFR_DECLSPEC size_t mpfr_inp_str _MPFR_PROTO ((mpfr_ptr, FILE*, int,
- mpfr_rnd_t));
-__MPFR_DECLSPEC size_t mpfr_out_str _MPFR_PROTO ((FILE*, int, size_t,
- mpfr_srcptr, mpfr_rnd_t));
-#define mpfr_fprintf __gmpfr_fprintf
-__MPFR_DECLSPEC int mpfr_fprintf _MPFR_PROTO ((FILE*, __gmp_const char*,
- ...));
-
-#if defined (__cplusplus)
-}
-#endif
-
-# endif /* _MPFR_H_HAVE_FILE */
-#endif
-
-
-/* check if <stdarg.h> has been included or if the user wants va_list */
-#if defined (_GMP_H_HAVE_VA_LIST) || defined (MPFR_USE_VA_LIST)
-# ifndef _MPFR_H_HAVE_VA_LIST
-# define _MPFR_H_HAVE_VA_LIST 1
-
-#if defined (__cplusplus)
-extern "C" {
-#endif
-
-#define mpfr_vprintf __gmpfr_vprintf
-#define mpfr_vasprintf __gmpfr_vasprintf
-#define mpfr_vsprintf __gmpfr_vsprintf
-#define mpfr_vsnprintf __gmpfr_vsnprintf
-__MPFR_DECLSPEC int mpfr_vprintf _MPFR_PROTO ((__gmp_const char*, va_list));
-__MPFR_DECLSPEC int mpfr_vasprintf _MPFR_PROTO ((char**, __gmp_const char*,
- va_list));
-__MPFR_DECLSPEC int mpfr_vsprintf _MPFR_PROTO ((char*, __gmp_const char*,
- va_list));
-__MPFR_DECLSPEC int mpfr_vsnprintf _MPFR_PROTO ((char*, size_t,
- __gmp_const char*, va_list));
-
-#if defined (__cplusplus)
-}
-#endif
-
-# endif /* _MPFR_H_HAVE_VA_LIST */
-#endif
-
-
-/* check if <stdarg.h> has been included and if FILE is available
- (see above) */
-#if defined (_MPFR_H_HAVE_VA_LIST) && defined (_MPFR_H_HAVE_FILE)
-# ifndef _MPFR_H_HAVE_VA_LIST_FILE
-# define _MPFR_H_HAVE_VA_LIST_FILE 1
-
-#if defined (__cplusplus)
-extern "C" {
-#endif
-
-#define mpfr_vfprintf __gmpfr_vfprintf
-__MPFR_DECLSPEC int mpfr_vfprintf _MPFR_PROTO ((FILE*, __gmp_const char*,
- va_list));
-
-#if defined (__cplusplus)
-}
-#endif
-
-# endif /* _MPFR_H_HAVE_VA_LIST_FILE */
-#endif
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtbegin.o b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtbegin.o
deleted file mode 100644
index bddff5e..0000000
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtbegin.o
+++ /dev/null
Binary files differ
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtbeginS.o b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtbeginS.o
deleted file mode 100644
index 1d2e1dc..0000000
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtbeginS.o
+++ /dev/null
Binary files differ
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtbeginT.o b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtbeginT.o
deleted file mode 100644
index d4f3edb..0000000
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtbeginT.o
+++ /dev/null
Binary files differ
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtend.o b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtend.o
deleted file mode 100644
index ab12521..0000000
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtend.o
+++ /dev/null
Binary files differ
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtendS.o b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtendS.o
deleted file mode 100644
index ac9e9be..0000000
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtendS.o
+++ /dev/null
Binary files differ
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtfastmath.o b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtfastmath.o
deleted file mode 100644
index d17e113..0000000
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtfastmath.o
+++ /dev/null
Binary files differ
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include-fixed/limits.h b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include-fixed/limits.h
deleted file mode 100644
index 8c6a4d3..0000000
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include-fixed/limits.h
+++ /dev/null
@@ -1,171 +0,0 @@
-/* Copyright (C) 1992-2014 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC 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 General Public License
-for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-/* This administrivia gets added to the beginning of limits.h
- if the system has its own version of limits.h. */
-
-/* We use _GCC_LIMITS_H_ because we want this not to match
- any macros that the system's limits.h uses for its own purposes. */
-#ifndef _GCC_LIMITS_H_ /* Terminated in limity.h. */
-#define _GCC_LIMITS_H_
-
-#ifndef _LIBC_LIMITS_H_
-/* Use "..." so that we find syslimits.h only in this same directory. */
-#include "syslimits.h"
-#endif
-/* Copyright (C) 1991-2014 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC 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 General Public License
-for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#ifndef _LIMITS_H___
-#define _LIMITS_H___
-
-/* Number of bits in a `char'. */
-#undef CHAR_BIT
-#define CHAR_BIT __CHAR_BIT__
-
-/* Maximum length of a multibyte character. */
-#ifndef MB_LEN_MAX
-#define MB_LEN_MAX 1
-#endif
-
-/* Minimum and maximum values a `signed char' can hold. */
-#undef SCHAR_MIN
-#define SCHAR_MIN (-SCHAR_MAX - 1)
-#undef SCHAR_MAX
-#define SCHAR_MAX __SCHAR_MAX__
-
-/* Maximum value an `unsigned char' can hold. (Minimum is 0). */
-#undef UCHAR_MAX
-#if __SCHAR_MAX__ == __INT_MAX__
-# define UCHAR_MAX (SCHAR_MAX * 2U + 1U)
-#else
-# define UCHAR_MAX (SCHAR_MAX * 2 + 1)
-#endif
-
-/* Minimum and maximum values a `char' can hold. */
-#ifdef __CHAR_UNSIGNED__
-# undef CHAR_MIN
-# if __SCHAR_MAX__ == __INT_MAX__
-# define CHAR_MIN 0U
-# else
-# define CHAR_MIN 0
-# endif
-# undef CHAR_MAX
-# define CHAR_MAX UCHAR_MAX
-#else
-# undef CHAR_MIN
-# define CHAR_MIN SCHAR_MIN
-# undef CHAR_MAX
-# define CHAR_MAX SCHAR_MAX
-#endif
-
-/* Minimum and maximum values a `signed short int' can hold. */
-#undef SHRT_MIN
-#define SHRT_MIN (-SHRT_MAX - 1)
-#undef SHRT_MAX
-#define SHRT_MAX __SHRT_MAX__
-
-/* Maximum value an `unsigned short int' can hold. (Minimum is 0). */
-#undef USHRT_MAX
-#if __SHRT_MAX__ == __INT_MAX__
-# define USHRT_MAX (SHRT_MAX * 2U + 1U)
-#else
-# define USHRT_MAX (SHRT_MAX * 2 + 1)
-#endif
-
-/* Minimum and maximum values a `signed int' can hold. */
-#undef INT_MIN
-#define INT_MIN (-INT_MAX - 1)
-#undef INT_MAX
-#define INT_MAX __INT_MAX__
-
-/* Maximum value an `unsigned int' can hold. (Minimum is 0). */
-#undef UINT_MAX
-#define UINT_MAX (INT_MAX * 2U + 1U)
-
-/* Minimum and maximum values a `signed long int' can hold.
- (Same as `int'). */
-#undef LONG_MIN
-#define LONG_MIN (-LONG_MAX - 1L)
-#undef LONG_MAX
-#define LONG_MAX __LONG_MAX__
-
-/* Maximum value an `unsigned long int' can hold. (Minimum is 0). */
-#undef ULONG_MAX
-#define ULONG_MAX (LONG_MAX * 2UL + 1UL)
-
-#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-/* Minimum and maximum values a `signed long long int' can hold. */
-# undef LLONG_MIN
-# define LLONG_MIN (-LLONG_MAX - 1LL)
-# undef LLONG_MAX
-# define LLONG_MAX __LONG_LONG_MAX__
-
-/* Maximum value an `unsigned long long int' can hold. (Minimum is 0). */
-# undef ULLONG_MAX
-# define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL)
-#endif
-
-#if defined (__GNU_LIBRARY__) ? defined (__USE_GNU) : !defined (__STRICT_ANSI__)
-/* Minimum and maximum values a `signed long long int' can hold. */
-# undef LONG_LONG_MIN
-# define LONG_LONG_MIN (-LONG_LONG_MAX - 1LL)
-# undef LONG_LONG_MAX
-# define LONG_LONG_MAX __LONG_LONG_MAX__
-
-/* Maximum value an `unsigned long long int' can hold. (Minimum is 0). */
-# undef ULONG_LONG_MAX
-# define ULONG_LONG_MAX (LONG_LONG_MAX * 2ULL + 1ULL)
-#endif
-
-#endif /* _LIMITS_H___ */
-/* This administrivia gets added to the end of limits.h
- if the system has its own version of limits.h. */
-
-#else /* not _GCC_LIMITS_H_ */
-
-#ifdef _GCC_NEXT_LIMITS_H
-#include_next <limits.h> /* recurse down to the real one */
-#endif
-
-#endif /* not _GCC_LIMITS_H_ */
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include-fixed/tgmath.h b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include-fixed/tgmath.h
deleted file mode 100644
index 6417c52..0000000
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include-fixed/tgmath.h
+++ /dev/null
@@ -1,441 +0,0 @@
-/* DO NOT EDIT THIS FILE.
-
- It has been auto-edited by fixincludes from:
-
- "/usr/local/google/home/smcgruer/Desktop/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/sysroot/usr/include/tgmath.h"
-
- This had to be done to correct non-standard usages in the
- original, manufacturer supplied header file. */
-
-/* Copyright (C) 1997, 1998, 1999, 2000, 2001 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/*
- * ISO C99 Standard: 7.22 Type-generic math <tgmath.h>
- */
-
-#ifndef _TGMATH_H
-#define _TGMATH_H 1
-
-/* Include the needed headers. */
-#include <math.h>
-#include <complex.h>
-
-
-/* Since `complex' is currently not really implemented in most C compilers
- and if it is implemented, the implementations differ. This makes it
- quite difficult to write a generic implementation of this header. We
- do not try this for now and instead concentrate only on GNU CC. Once
- we have more information support for other compilers might follow. */
-
-#if __GNUC_PREREQ (2, 7)
-
-# ifdef __NO_LONG_DOUBLE_MATH
-# define __tgml(fct) fct
-# else
-# define __tgml(fct) fct ## l
-# endif
-
-/* This is ugly but unless gcc gets appropriate builtins we have to do
- something like this. Don't ask how it works. */
-
-/* 1 if 'type' is a floating type, 0 if 'type' is an integer type.
- Allows for _Bool. Expands to an integer constant expression. */
-# define __floating_type(type) (__builtin_classify_type ((type) 0) == 8 || (__builtin_classify_type ((type) 0) == 9 && __builtin_classify_type (__real__ ((type) 0)) == 8))
-
-/* The tgmath real type for T, where E is 0 if T is an integer type and
- 1 for a floating type. */
-# define __tgmath_real_type_sub(T, E) \
- __typeof__(*(0 ? (__typeof__ (0 ? (double *) 0 : (void *) (E))) 0 \
- : (__typeof__ (0 ? (T *) 0 : (void *) (!(E)))) 0))
-
-/* The tgmath real type of EXPR. */
-# define __tgmath_real_type(expr) \
- __tgmath_real_type_sub(__typeof__(expr), __floating_type(__typeof__(expr)))
-
-
-/* We have two kinds of generic macros: to support functions which are
- only defined on real valued parameters and those which are defined
- for complex functions as well. */
-# define __TGMATH_UNARY_REAL_ONLY(Val, Fct) \
- (__extension__ ({ __tgmath_real_type (Val) __tgmres; \
- if (sizeof (Val) == sizeof (double) \
- || __builtin_classify_type (Val) != 8) \
- __tgmres = Fct (Val); \
- else if (sizeof (Val) == sizeof (float)) \
- __tgmres = Fct##f (Val); \
- else \
- __tgmres = __tgml(Fct) (Val); \
- __tgmres; }))
-
-# define __TGMATH_BINARY_FIRST_REAL_ONLY(Val1, Val2, Fct) \
- (__extension__ ({ __tgmath_real_type (Val1) __tgmres; \
- if (sizeof (Val1) == sizeof (double) \
- || __builtin_classify_type (Val1) != 8) \
- __tgmres = Fct (Val1, Val2); \
- else if (sizeof (Val1) == sizeof (float)) \
- __tgmres = Fct##f (Val1, Val2); \
- else \
- __tgmres = __tgml(Fct) (Val1, Val2); \
- __tgmres; }))
-
-# define __TGMATH_BINARY_REAL_ONLY(Val1, Val2, Fct) \
- (__extension__ ({ __tgmath_real_type ((Val1) + (Val2)) __tgmres; \
- if ((sizeof (Val1) > sizeof (double) \
- || sizeof (Val2) > sizeof (double)) \
- && __builtin_classify_type ((Val1) + (Val2)) == 8) \
- __tgmres = __tgml(Fct) (Val1, Val2); \
- else if (sizeof (Val1) == sizeof (double) \
- || sizeof (Val2) == sizeof (double) \
- || __builtin_classify_type (Val1) != 8 \
- || __builtin_classify_type (Val2) != 8) \
- __tgmres = Fct (Val1, Val2); \
- else \
- __tgmres = Fct##f (Val1, Val2); \
- __tgmres; }))
-
-# define __TGMATH_TERNARY_FIRST_SECOND_REAL_ONLY(Val1, Val2, Val3, Fct) \
- (__extension__ ({ __tgmath_real_type ((Val1) + (Val2)) __tgmres; \
- if ((sizeof (Val1) > sizeof (double) \
- || sizeof (Val2) > sizeof (double)) \
- && __builtin_classify_type ((Val1) + (Val2)) == 8) \
- __tgmres = __tgml(Fct) (Val1, Val2, Val3); \
- else if (sizeof (Val1) == sizeof (double) \
- || sizeof (Val2) == sizeof (double) \
- || __builtin_classify_type (Val1) != 8 \
- || __builtin_classify_type (Val2) != 8) \
- __tgmres = Fct (Val1, Val2, Val3); \
- else \
- __tgmres = Fct##f (Val1, Val2, Val3); \
- __tgmres; }))
-
-# define __TGMATH_TERNARY_REAL_ONLY(Val1, Val2, Val3, Fct) \
- (__extension__ ({ __tgmath_real_type ((Val1) + (Val2) + (Val3)) __tgmres;\
- if ((sizeof (Val1) > sizeof (double) \
- || sizeof (Val2) > sizeof (double) \
- || sizeof (Val3) > sizeof (double)) \
- && __builtin_classify_type ((Val1) + (Val2) \
- + (Val3)) == 8) \
- __tgmres = __tgml(Fct) (Val1, Val2, Val3); \
- else if (sizeof (Val1) == sizeof (double) \
- || sizeof (Val2) == sizeof (double) \
- || sizeof (Val3) == sizeof (double) \
- || __builtin_classify_type (Val1) != 8 \
- || __builtin_classify_type (Val2) != 8 \
- || __builtin_classify_type (Val3) != 8) \
- __tgmres = Fct (Val1, Val2, Val3); \
- else \
- __tgmres = Fct##f (Val1, Val2, Val3); \
- __tgmres; }))
-
-/* XXX This definition has to be changed as soon as the compiler understands
- the imaginary keyword. */
-# define __TGMATH_UNARY_REAL_IMAG(Val, Fct, Cfct) \
- (__extension__ ({ __tgmath_real_type (Val) __tgmres; \
- if (sizeof (__real__ (Val)) > sizeof (double) \
- && __builtin_classify_type (__real__ (Val)) == 8) \
- { \
- if (sizeof (__real__ (Val)) == sizeof (Val)) \
- __tgmres = __tgml(Fct) (Val); \
- else \
- __tgmres = __tgml(Cfct) (Val); \
- } \
- else if (sizeof (__real__ (Val)) == sizeof (double) \
- || __builtin_classify_type (__real__ (Val)) \
- != 8) \
- { \
- if (sizeof (__real__ (Val)) == sizeof (Val)) \
- __tgmres = Fct (Val); \
- else \
- __tgmres = Cfct (Val); \
- } \
- else \
- { \
- if (sizeof (__real__ (Val)) == sizeof (Val)) \
- __tgmres = Fct##f (Val); \
- else \
- __tgmres = Cfct##f (Val); \
- } \
- __tgmres; }))
-
-/* XXX This definition has to be changed as soon as the compiler understands
- the imaginary keyword. */
-# define __TGMATH_UNARY_IMAG_ONLY(Val, Fct) \
- (__extension__ ({ __tgmath_real_type (Val) __tgmres; \
- if (sizeof (Val) == sizeof (__complex__ double) \
- || __builtin_classify_type (__real__ (Val)) != 8) \
- __tgmres = Fct (Val); \
- else if (sizeof (Val) == sizeof (__complex__ float)) \
- __tgmres = Fct##f (Val); \
- else \
- __tgmres = __tgml(Fct) (Val); \
- __tgmres; }))
-
-/* XXX This definition has to be changed as soon as the compiler understands
- the imaginary keyword. */
-# define __TGMATH_BINARY_REAL_IMAG(Val1, Val2, Fct, Cfct) \
- (__extension__ ({ __tgmath_real_type ((Val1) + (Val2)) __tgmres; \
- if ((sizeof (__real__ (Val1)) > sizeof (double) \
- || sizeof (__real__ (Val2)) > sizeof (double)) \
- && __builtin_classify_type (__real__ (Val1) \
- + __real__ (Val2)) \
- == 8) \
- { \
- if (sizeof (__real__ (Val1)) == sizeof (Val1) \
- && sizeof (__real__ (Val2)) == sizeof (Val2)) \
- __tgmres = __tgml(Fct) (Val1, Val2); \
- else \
- __tgmres = __tgml(Cfct) (Val1, Val2); \
- } \
- else if (sizeof (__real__ (Val1)) == sizeof (double) \
- || sizeof (__real__ (Val2)) == sizeof(double) \
- || (__builtin_classify_type (__real__ (Val1)) \
- != 8) \
- || (__builtin_classify_type (__real__ (Val2)) \
- != 8)) \
- { \
- if (sizeof (__real__ (Val1)) == sizeof (Val1) \
- && sizeof (__real__ (Val2)) == sizeof (Val2)) \
- __tgmres = Fct (Val1, Val2); \
- else \
- __tgmres = Cfct (Val1, Val2); \
- } \
- else \
- { \
- if (sizeof (__real__ (Val1)) == sizeof (Val1) \
- && sizeof (__real__ (Val2)) == sizeof (Val2)) \
- __tgmres = Fct##f (Val1, Val2); \
- else \
- __tgmres = Cfct##f (Val1, Val2); \
- } \
- __tgmres; }))
-#else
-# error "Unsupported compiler; you cannot use <tgmath.h>"
-#endif
-
-
-/* Unary functions defined for real and complex values. */
-
-
-/* Trigonometric functions. */
-
-/* Arc cosine of X. */
-#define acos(Val) __TGMATH_UNARY_REAL_IMAG (Val, acos, cacos)
-/* Arc sine of X. */
-#define asin(Val) __TGMATH_UNARY_REAL_IMAG (Val, asin, casin)
-/* Arc tangent of X. */
-#define atan(Val) __TGMATH_UNARY_REAL_IMAG (Val, atan, catan)
-/* Arc tangent of Y/X. */
-#define atan2(Val1, Val2) __TGMATH_BINARY_REAL_ONLY (Val1, Val2, atan2)
-
-/* Cosine of X. */
-#define cos(Val) __TGMATH_UNARY_REAL_IMAG (Val, cos, ccos)
-/* Sine of X. */
-#define sin(Val) __TGMATH_UNARY_REAL_IMAG (Val, sin, csin)
-/* Tangent of X. */
-#define tan(Val) __TGMATH_UNARY_REAL_IMAG (Val, tan, ctan)
-
-
-/* Hyperbolic functions. */
-
-/* Hyperbolic arc cosine of X. */
-#define acosh(Val) __TGMATH_UNARY_REAL_IMAG (Val, acosh, cacosh)
-/* Hyperbolic arc sine of X. */
-#define asinh(Val) __TGMATH_UNARY_REAL_IMAG (Val, asinh, casinh)
-/* Hyperbolic arc tangent of X. */
-#define atanh(Val) __TGMATH_UNARY_REAL_IMAG (Val, atanh, catanh)
-
-/* Hyperbolic cosine of X. */
-#define cosh(Val) __TGMATH_UNARY_REAL_IMAG (Val, cosh, ccosh)
-/* Hyperbolic sine of X. */
-#define sinh(Val) __TGMATH_UNARY_REAL_IMAG (Val, sinh, csinh)
-/* Hyperbolic tangent of X. */
-#define tanh(Val) __TGMATH_UNARY_REAL_IMAG (Val, tanh, ctanh)
-
-
-/* Exponential and logarithmic functions. */
-
-/* Exponential function of X. */
-#define exp(Val) __TGMATH_UNARY_REAL_IMAG (Val, exp, cexp)
-
-/* Break VALUE into a normalized fraction and an integral power of 2. */
-#define frexp(Val1, Val2) __TGMATH_BINARY_FIRST_REAL_ONLY (Val1, Val2, frexp)
-
-/* X times (two to the EXP power). */
-#define ldexp(Val1, Val2) __TGMATH_BINARY_FIRST_REAL_ONLY (Val1, Val2, ldexp)
-
-/* Natural logarithm of X. */
-#define log(Val) __TGMATH_UNARY_REAL_IMAG (Val, log, clog)
-
-/* Base-ten logarithm of X. */
-#ifdef __USE_GNU
-# define log10(Val) __TGMATH_UNARY_REAL_IMAG (Val, log10, __clog10)
-#else
-# define log10(Val) __TGMATH_UNARY_REAL_ONLY (Val, log10)
-#endif
-
-/* Return exp(X) - 1. */
-#define expm1(Val) __TGMATH_UNARY_REAL_ONLY (Val, expm1)
-
-/* Return log(1 + X). */
-#define log1p(Val) __TGMATH_UNARY_REAL_ONLY (Val, log1p)
-
-/* Return the base 2 signed integral exponent of X. */
-#define logb(Val) __TGMATH_UNARY_REAL_ONLY (Val, logb)
-
-/* Compute base-2 exponential of X. */
-#define exp2(Val) __TGMATH_UNARY_REAL_ONLY (Val, exp2)
-
-/* Compute base-2 logarithm of X. */
-#define log2(Val) __TGMATH_UNARY_REAL_ONLY (Val, log2)
-
-
-/* Power functions. */
-
-/* Return X to the Y power. */
-#define pow(Val1, Val2) __TGMATH_BINARY_REAL_IMAG (Val1, Val2, pow, cpow)
-
-/* Return the square root of X. */
-#define sqrt(Val) __TGMATH_UNARY_REAL_IMAG (Val, sqrt, csqrt)
-
-/* Return `sqrt(X*X + Y*Y)'. */
-#define hypot(Val1, Val2) __TGMATH_BINARY_REAL_ONLY (Val1, Val2, hypot)
-
-/* Return the cube root of X. */
-#define cbrt(Val) __TGMATH_UNARY_REAL_ONLY (Val, cbrt)
-
-
-/* Nearest integer, absolute value, and remainder functions. */
-
-/* Smallest integral value not less than X. */
-#define ceil(Val) __TGMATH_UNARY_REAL_ONLY (Val, ceil)
-
-/* Absolute value of X. */
-#define fabs(Val) __TGMATH_UNARY_REAL_IMAG (Val, fabs, cabs)
-
-/* Largest integer not greater than X. */
-#define floor(Val) __TGMATH_UNARY_REAL_ONLY (Val, floor)
-
-/* Floating-point modulo remainder of X/Y. */
-#define fmod(Val1, Val2) __TGMATH_BINARY_REAL_ONLY (Val1, Val2, fmod)
-
-/* Round X to integral valuein floating-point format using current
- rounding direction, but do not raise inexact exception. */
-#define nearbyint(Val) __TGMATH_UNARY_REAL_ONLY (Val, nearbyint)
-
-/* Round X to nearest integral value, rounding halfway cases away from
- zero. */
-#define round(Val) __TGMATH_UNARY_REAL_ONLY (Val, round)
-
-/* Round X to the integral value in floating-point format nearest but
- not larger in magnitude. */
-#define trunc(Val) __TGMATH_UNARY_REAL_ONLY (Val, trunc)
-
-/* Compute remainder of X and Y and put in *QUO a value with sign of x/y
- and magnitude congruent `mod 2^n' to the magnitude of the integral
- quotient x/y, with n >= 3. */
-#define remquo(Val1, Val2, Val3) \
- __TGMATH_TERNARY_FIRST_SECOND_REAL_ONLY (Val1, Val2, Val3, remquo)
-
-/* Round X to nearest integral value according to current rounding
- direction. */
-#define lrint(Val) __TGMATH_UNARY_REAL_ONLY (Val, lrint)
-#define llrint(Val) __TGMATH_UNARY_REAL_ONLY (Val, llrint)
-
-/* Round X to nearest integral value, rounding halfway cases away from
- zero. */
-#define lround(Val) __TGMATH_UNARY_REAL_ONLY (Val, lround)
-#define llround(Val) __TGMATH_UNARY_REAL_ONLY (Val, llround)
-
-
-/* Return X with its signed changed to Y's. */
-#define copysign(Val1, Val2) __TGMATH_BINARY_REAL_ONLY (Val1, Val2, copysign)
-
-/* Error and gamma functions. */
-#define erf(Val) __TGMATH_UNARY_REAL_ONLY (Val, erf)
-#define erfc(Val) __TGMATH_UNARY_REAL_ONLY (Val, erfc)
-#define tgamma(Val) __TGMATH_UNARY_REAL_ONLY (Val, tgamma)
-#define lgamma(Val) __TGMATH_UNARY_REAL_ONLY (Val, lgamma)
-
-
-/* Return the integer nearest X in the direction of the
- prevailing rounding mode. */
-#define rint(Val) __TGMATH_UNARY_REAL_ONLY (Val, rint)
-
-/* Return X + epsilon if X < Y, X - epsilon if X > Y. */
-#define nextafter(Val1, Val2) __TGMATH_BINARY_REAL_ONLY (Val1, Val2, nextafter)
-#define nexttoward(Val1, Val2) \
- __TGMATH_BINARY_FIRST_REAL_ONLY (Val1, Val2, nexttoward)
-
-/* Return the remainder of integer divison X / Y with infinite precision. */
-#define remainder(Val1, Val2) __TGMATH_BINARY_REAL_ONLY (Val1, Val2, remainder)
-
-#if defined __UCLIBC_SUSV3_LEGACY__
-/* Return X times (2 to the Nth power). */
-#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
-# define scalb(Val1, Val2) __TGMATH_BINARY_REAL_ONLY (Val1, Val2, scalb)
-#endif
-
-/* Return X times (2 to the Nth power). */
-#define scalbn(Val1, Val2) __TGMATH_BINARY_FIRST_REAL_ONLY (Val1, Val2, scalbn)
-
-/* Return X times (2 to the Nth power). */
-#define scalbln(Val1, Val2) \
- __TGMATH_BINARY_FIRST_REAL_ONLY (Val1, Val2, scalbln)
-#endif /* UCLIBC_SUSV3_LEGACY */
-
-/* Return the binary exponent of X, which must be nonzero. */
-#define ilogb(Val) __TGMATH_UNARY_REAL_ONLY (Val, ilogb)
-
-
-/* Return positive difference between X and Y. */
-#define fdim(Val1, Val2) __TGMATH_BINARY_REAL_ONLY (Val1, Val2, fdim)
-
-/* Return maximum numeric value from X and Y. */
-#define fmax(Val1, Val2) __TGMATH_BINARY_REAL_ONLY (Val1, Val2, fmax)
-
-/* Return minimum numeric value from X and Y. */
-#define fmin(Val1, Val2) __TGMATH_BINARY_REAL_ONLY (Val1, Val2, fmin)
-
-
-/* Multiply-add function computed as a ternary operation. */
-#define fma(Val1, Val2, Val3) \
- __TGMATH_TERNARY_REAL_ONLY (Val1, Val2, Val3, fma)
-
-
-/* Absolute value, conjugates, and projection. */
-
-/* Argument value of Z. */
-#define carg(Val) __TGMATH_UNARY_IMAG_ONLY (Val, carg)
-
-/* Complex conjugate of Z. */
-#define conj(Val) __TGMATH_UNARY_IMAG_ONLY (Val, conj)
-
-/* Projection of Z onto the Riemann sphere. */
-#define cproj(Val) __TGMATH_UNARY_IMAG_ONLY (Val, cproj)
-
-
-/* Decomposing complex values. */
-
-/* Imaginary part of Z. */
-#define cimag(Val) __TGMATH_UNARY_IMAG_ONLY (Val, cimag)
-
-/* Real part of Z. */
-#define creal(Val) __TGMATH_UNARY_IMAG_ONLY (Val, creal)
-
-#endif /* tgmath.h */
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/float.h b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/float.h
deleted file mode 100644
index a8e05bf..0000000
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/float.h
+++ /dev/null
@@ -1,277 +0,0 @@
-/* Copyright (C) 2002-2014 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC 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 General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-/*
- * ISO C Standard: 5.2.4.2.2 Characteristics of floating types <float.h>
- */
-
-#ifndef _FLOAT_H___
-#define _FLOAT_H___
-
-/* Radix of exponent representation, b. */
-#undef FLT_RADIX
-#define FLT_RADIX __FLT_RADIX__
-
-/* Number of base-FLT_RADIX digits in the significand, p. */
-#undef FLT_MANT_DIG
-#undef DBL_MANT_DIG
-#undef LDBL_MANT_DIG
-#define FLT_MANT_DIG __FLT_MANT_DIG__
-#define DBL_MANT_DIG __DBL_MANT_DIG__
-#define LDBL_MANT_DIG __LDBL_MANT_DIG__
-
-/* Number of decimal digits, q, such that any floating-point number with q
- decimal digits can be rounded into a floating-point number with p radix b
- digits and back again without change to the q decimal digits,
-
- p * log10(b) if b is a power of 10
- floor((p - 1) * log10(b)) otherwise
-*/
-#undef FLT_DIG
-#undef DBL_DIG
-#undef LDBL_DIG
-#define FLT_DIG __FLT_DIG__
-#define DBL_DIG __DBL_DIG__
-#define LDBL_DIG __LDBL_DIG__
-
-/* Minimum int x such that FLT_RADIX**(x-1) is a normalized float, emin */
-#undef FLT_MIN_EXP
-#undef DBL_MIN_EXP
-#undef LDBL_MIN_EXP
-#define FLT_MIN_EXP __FLT_MIN_EXP__
-#define DBL_MIN_EXP __DBL_MIN_EXP__
-#define LDBL_MIN_EXP __LDBL_MIN_EXP__
-
-/* Minimum negative integer such that 10 raised to that power is in the
- range of normalized floating-point numbers,
-
- ceil(log10(b) * (emin - 1))
-*/
-#undef FLT_MIN_10_EXP
-#undef DBL_MIN_10_EXP
-#undef LDBL_MIN_10_EXP
-#define FLT_MIN_10_EXP __FLT_MIN_10_EXP__
-#define DBL_MIN_10_EXP __DBL_MIN_10_EXP__
-#define LDBL_MIN_10_EXP __LDBL_MIN_10_EXP__
-
-/* Maximum int x such that FLT_RADIX**(x-1) is a representable float, emax. */
-#undef FLT_MAX_EXP
-#undef DBL_MAX_EXP
-#undef LDBL_MAX_EXP
-#define FLT_MAX_EXP __FLT_MAX_EXP__
-#define DBL_MAX_EXP __DBL_MAX_EXP__
-#define LDBL_MAX_EXP __LDBL_MAX_EXP__
-
-/* Maximum integer such that 10 raised to that power is in the range of
- representable finite floating-point numbers,
-
- floor(log10((1 - b**-p) * b**emax))
-*/
-#undef FLT_MAX_10_EXP
-#undef DBL_MAX_10_EXP
-#undef LDBL_MAX_10_EXP
-#define FLT_MAX_10_EXP __FLT_MAX_10_EXP__
-#define DBL_MAX_10_EXP __DBL_MAX_10_EXP__
-#define LDBL_MAX_10_EXP __LDBL_MAX_10_EXP__
-
-/* Maximum representable finite floating-point number,
-
- (1 - b**-p) * b**emax
-*/
-#undef FLT_MAX
-#undef DBL_MAX
-#undef LDBL_MAX
-#define FLT_MAX __FLT_MAX__
-#define DBL_MAX __DBL_MAX__
-#define LDBL_MAX __LDBL_MAX__
-
-/* The difference between 1 and the least value greater than 1 that is
- representable in the given floating point type, b**1-p. */
-#undef FLT_EPSILON
-#undef DBL_EPSILON
-#undef LDBL_EPSILON
-#define FLT_EPSILON __FLT_EPSILON__
-#define DBL_EPSILON __DBL_EPSILON__
-#define LDBL_EPSILON __LDBL_EPSILON__
-
-/* Minimum normalized positive floating-point number, b**(emin - 1). */
-#undef FLT_MIN
-#undef DBL_MIN
-#undef LDBL_MIN
-#define FLT_MIN __FLT_MIN__
-#define DBL_MIN __DBL_MIN__
-#define LDBL_MIN __LDBL_MIN__
-
-/* Addition rounds to 0: zero, 1: nearest, 2: +inf, 3: -inf, -1: unknown. */
-/* ??? This is supposed to change with calls to fesetround in <fenv.h>. */
-#undef FLT_ROUNDS
-#define FLT_ROUNDS 1
-
-#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-/* The floating-point expression evaluation method.
- -1 indeterminate
- 0 evaluate all operations and constants just to the range and
- precision of the type
- 1 evaluate operations and constants of type float and double
- to the range and precision of the double type, evaluate
- long double operations and constants to the range and
- precision of the long double type
- 2 evaluate all operations and constants to the range and
- precision of the long double type
-
- ??? This ought to change with the setting of the fp control word;
- the value provided by the compiler assumes the widest setting. */
-#undef FLT_EVAL_METHOD
-#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
-
-/* Number of decimal digits, n, such that any floating-point number in the
- widest supported floating type with pmax radix b digits can be rounded
- to a floating-point number with n decimal digits and back again without
- change to the value,
-
- pmax * log10(b) if b is a power of 10
- ceil(1 + pmax * log10(b)) otherwise
-*/
-#undef DECIMAL_DIG
-#define DECIMAL_DIG __DECIMAL_DIG__
-
-#endif /* C99 */
-
-#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
-/* Versions of DECIMAL_DIG for each floating-point type. */
-#undef FLT_DECIMAL_DIG
-#undef DBL_DECIMAL_DIG
-#undef LDBL_DECIMAL_DIG
-#define FLT_DECIMAL_DIG __FLT_DECIMAL_DIG__
-#define DBL_DECIMAL_DIG __DBL_DECIMAL_DIG__
-#define LDBL_DECIMAL_DIG __DECIMAL_DIG__
-
-/* Whether types support subnormal numbers. */
-#undef FLT_HAS_SUBNORM
-#undef DBL_HAS_SUBNORM
-#undef LDBL_HAS_SUBNORM
-#define FLT_HAS_SUBNORM __FLT_HAS_DENORM__
-#define DBL_HAS_SUBNORM __DBL_HAS_DENORM__
-#define LDBL_HAS_SUBNORM __LDBL_HAS_DENORM__
-
-/* Minimum positive values, including subnormals. */
-#undef FLT_TRUE_MIN
-#undef DBL_TRUE_MIN
-#undef LDBL_TRUE_MIN
-#if __FLT_HAS_DENORM__
-#define FLT_TRUE_MIN __FLT_DENORM_MIN__
-#else
-#define FLT_TRUE_MIN __FLT_MIN__
-#endif
-#if __DBL_HAS_DENORM__
-#define DBL_TRUE_MIN __DBL_DENORM_MIN__
-#else
-#define DBL_TRUE_MIN __DBL_MIN__
-#endif
-#if __LDBL_HAS_DENORM__
-#define LDBL_TRUE_MIN __LDBL_DENORM_MIN__
-#else
-#define LDBL_TRUE_MIN __LDBL_MIN__
-#endif
-
-#endif /* C11 */
-
-#ifdef __STDC_WANT_DEC_FP__
-/* Draft Technical Report 24732, extension for decimal floating-point
- arithmetic: Characteristic of decimal floating types <float.h>. */
-
-/* Number of base-FLT_RADIX digits in the significand, p. */
-#undef DEC32_MANT_DIG
-#undef DEC64_MANT_DIG
-#undef DEC128_MANT_DIG
-#define DEC32_MANT_DIG __DEC32_MANT_DIG__
-#define DEC64_MANT_DIG __DEC64_MANT_DIG__
-#define DEC128_MANT_DIG __DEC128_MANT_DIG__
-
-/* Minimum exponent. */
-#undef DEC32_MIN_EXP
-#undef DEC64_MIN_EXP
-#undef DEC128_MIN_EXP
-#define DEC32_MIN_EXP __DEC32_MIN_EXP__
-#define DEC64_MIN_EXP __DEC64_MIN_EXP__
-#define DEC128_MIN_EXP __DEC128_MIN_EXP__
-
-/* Maximum exponent. */
-#undef DEC32_MAX_EXP
-#undef DEC64_MAX_EXP
-#undef DEC128_MAX_EXP
-#define DEC32_MAX_EXP __DEC32_MAX_EXP__
-#define DEC64_MAX_EXP __DEC64_MAX_EXP__
-#define DEC128_MAX_EXP __DEC128_MAX_EXP__
-
-/* Maximum representable finite decimal floating-point number
- (there are 6, 15, and 33 9s after the decimal points respectively). */
-#undef DEC32_MAX
-#undef DEC64_MAX
-#undef DEC128_MAX
-#define DEC32_MAX __DEC32_MAX__
-#define DEC64_MAX __DEC64_MAX__
-#define DEC128_MAX __DEC128_MAX__
-
-/* The difference between 1 and the least value greater than 1 that is
- representable in the given floating point type. */
-#undef DEC32_EPSILON
-#undef DEC64_EPSILON
-#undef DEC128_EPSILON
-#define DEC32_EPSILON __DEC32_EPSILON__
-#define DEC64_EPSILON __DEC64_EPSILON__
-#define DEC128_EPSILON __DEC128_EPSILON__
-
-/* Minimum normalized positive floating-point number. */
-#undef DEC32_MIN
-#undef DEC64_MIN
-#undef DEC128_MIN
-#define DEC32_MIN __DEC32_MIN__
-#define DEC64_MIN __DEC64_MIN__
-#define DEC128_MIN __DEC128_MIN__
-
-/* Minimum subnormal positive floating-point number. */
-#undef DEC32_SUBNORMAL_MIN
-#undef DEC64_SUBNORMAL_MIN
-#undef DEC128_SUBNORMAL_MIN
-#define DEC32_SUBNORMAL_MIN __DEC32_SUBNORMAL_MIN__
-#define DEC64_SUBNORMAL_MIN __DEC64_SUBNORMAL_MIN__
-#define DEC128_SUBNORMAL_MIN __DEC128_SUBNORMAL_MIN__
-
-/* The floating-point expression evaluation method.
- -1 indeterminate
- 0 evaluate all operations and constants just to the range and
- precision of the type
- 1 evaluate operations and constants of type _Decimal32
- and _Decimal64 to the range and precision of the _Decimal64
- type, evaluate _Decimal128 operations and constants to the
- range and precision of the _Decimal128 type;
- 2 evaluate all operations and constants to the range and
- precision of the _Decimal128 type. */
-
-#undef DEC_EVAL_METHOD
-#define DEC_EVAL_METHOD __DEC_EVAL_METHOD__
-
-#endif /* __STDC_WANT_DEC_FP__ */
-
-#endif /* _FLOAT_H___ */
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/iso646.h b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/iso646.h
deleted file mode 100644
index 89bc8f4..0000000
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/iso646.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Copyright (C) 1997-2014 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC 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 General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-/*
- * ISO C Standard: 7.9 Alternative spellings <iso646.h>
- */
-
-#ifndef _ISO646_H
-#define _ISO646_H
-
-#ifndef __cplusplus
-#define and &&
-#define and_eq &=
-#define bitand &
-#define bitor |
-#define compl ~
-#define not !
-#define not_eq !=
-#define or ||
-#define or_eq |=
-#define xor ^
-#define xor_eq ^=
-#endif
-
-#endif
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/loongson.h b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/loongson.h
deleted file mode 100644
index 6e3de0d..0000000
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/loongson.h
+++ /dev/null
@@ -1,690 +0,0 @@
-/* Intrinsics for ST Microelectronics Loongson-2E/2F SIMD operations.
-
- Copyright (C) 2008-2014 Free Software Foundation, Inc.
- Contributed by CodeSourcery.
-
- This file is part of GCC.
-
- GCC is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 3, or (at your
- option) any later version.
-
- GCC 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 General Public
- License for more details.
-
- Under Section 7 of GPL version 3, you are granted additional
- permissions described in the GCC Runtime Library Exception, version
- 3.1, as published by the Free Software Foundation.
-
- You should have received a copy of the GNU General Public License and
- a copy of the GCC Runtime Library Exception along with this program;
- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- <http://www.gnu.org/licenses/>. */
-
-#ifndef _GCC_LOONGSON_H
-#define _GCC_LOONGSON_H
-
-#if !defined(__mips_loongson_vector_rev)
-# error "You must select -march=loongson2e or -march=loongson2f to use loongson.h"
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdint.h>
-
-/* Vectors of unsigned bytes, halfwords and words. */
-typedef uint8_t uint8x8_t __attribute__((vector_size (8)));
-typedef uint16_t uint16x4_t __attribute__((vector_size (8)));
-typedef uint32_t uint32x2_t __attribute__((vector_size (8)));
-
-/* Vectors of signed bytes, halfwords and words. */
-typedef int8_t int8x8_t __attribute__((vector_size (8)));
-typedef int16_t int16x4_t __attribute__((vector_size (8)));
-typedef int32_t int32x2_t __attribute__((vector_size (8)));
-
-/* SIMD intrinsics.
- Unless otherwise noted, calls to the functions below will expand into
- precisely one machine instruction, modulo any moves required to
- satisfy register allocation constraints. */
-
-/* Pack with signed saturation. */
-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
-packsswh (int32x2_t s, int32x2_t t)
-{
- return __builtin_loongson_packsswh (s, t);
-}
-
-__extension__ static __inline int8x8_t __attribute__ ((__always_inline__))
-packsshb (int16x4_t s, int16x4_t t)
-{
- return __builtin_loongson_packsshb (s, t);
-}
-
-/* Pack with unsigned saturation. */
-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
-packushb (uint16x4_t s, uint16x4_t t)
-{
- return __builtin_loongson_packushb (s, t);
-}
-
-/* Vector addition, treating overflow by wraparound. */
-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__))
-paddw_u (uint32x2_t s, uint32x2_t t)
-{
- return __builtin_loongson_paddw_u (s, t);
-}
-
-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
-paddh_u (uint16x4_t s, uint16x4_t t)
-{
- return __builtin_loongson_paddh_u (s, t);
-}
-
-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
-paddb_u (uint8x8_t s, uint8x8_t t)
-{
- return __builtin_loongson_paddb_u (s, t);
-}
-
-__extension__ static __inline int32x2_t __attribute__ ((__always_inline__))
-paddw_s (int32x2_t s, int32x2_t t)
-{
- return __builtin_loongson_paddw_s (s, t);
-}
-
-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
-paddh_s (int16x4_t s, int16x4_t t)
-{
- return __builtin_loongson_paddh_s (s, t);
-}
-
-__extension__ static __inline int8x8_t __attribute__ ((__always_inline__))
-paddb_s (int8x8_t s, int8x8_t t)
-{
- return __builtin_loongson_paddb_s (s, t);
-}
-
-/* Addition of doubleword integers, treating overflow by wraparound. */
-__extension__ static __inline uint64_t __attribute__ ((__always_inline__))
-paddd_u (uint64_t s, uint64_t t)
-{
- return __builtin_loongson_paddd_u (s, t);
-}
-
-__extension__ static __inline int64_t __attribute__ ((__always_inline__))
-paddd_s (int64_t s, int64_t t)
-{
- return __builtin_loongson_paddd_s (s, t);
-}
-
-/* Vector addition, treating overflow by signed saturation. */
-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
-paddsh (int16x4_t s, int16x4_t t)
-{
- return __builtin_loongson_paddsh (s, t);
-}
-
-__extension__ static __inline int8x8_t __attribute__ ((__always_inline__))
-paddsb (int8x8_t s, int8x8_t t)
-{
- return __builtin_loongson_paddsb (s, t);
-}
-
-/* Vector addition, treating overflow by unsigned saturation. */
-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
-paddush (uint16x4_t s, uint16x4_t t)
-{
- return __builtin_loongson_paddush (s, t);
-}
-
-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
-paddusb (uint8x8_t s, uint8x8_t t)
-{
- return __builtin_loongson_paddusb (s, t);
-}
-
-/* Logical AND NOT. */
-__extension__ static __inline uint64_t __attribute__ ((__always_inline__))
-pandn_ud (uint64_t s, uint64_t t)
-{
- return __builtin_loongson_pandn_ud (s, t);
-}
-
-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__))
-pandn_uw (uint32x2_t s, uint32x2_t t)
-{
- return __builtin_loongson_pandn_uw (s, t);
-}
-
-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
-pandn_uh (uint16x4_t s, uint16x4_t t)
-{
- return __builtin_loongson_pandn_uh (s, t);
-}
-
-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
-pandn_ub (uint8x8_t s, uint8x8_t t)
-{
- return __builtin_loongson_pandn_ub (s, t);
-}
-
-__extension__ static __inline int64_t __attribute__ ((__always_inline__))
-pandn_sd (int64_t s, int64_t t)
-{
- return __builtin_loongson_pandn_sd (s, t);
-}
-
-__extension__ static __inline int32x2_t __attribute__ ((__always_inline__))
-pandn_sw (int32x2_t s, int32x2_t t)
-{
- return __builtin_loongson_pandn_sw (s, t);
-}
-
-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
-pandn_sh (int16x4_t s, int16x4_t t)
-{
- return __builtin_loongson_pandn_sh (s, t);
-}
-
-__extension__ static __inline int8x8_t __attribute__ ((__always_inline__))
-pandn_sb (int8x8_t s, int8x8_t t)
-{
- return __builtin_loongson_pandn_sb (s, t);
-}
-
-/* Average. */
-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
-pavgh (uint16x4_t s, uint16x4_t t)
-{
- return __builtin_loongson_pavgh (s, t);
-}
-
-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
-pavgb (uint8x8_t s, uint8x8_t t)
-{
- return __builtin_loongson_pavgb (s, t);
-}
-
-/* Equality test. */
-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__))
-pcmpeqw_u (uint32x2_t s, uint32x2_t t)
-{
- return __builtin_loongson_pcmpeqw_u (s, t);
-}
-
-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
-pcmpeqh_u (uint16x4_t s, uint16x4_t t)
-{
- return __builtin_loongson_pcmpeqh_u (s, t);
-}
-
-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
-pcmpeqb_u (uint8x8_t s, uint8x8_t t)
-{
- return __builtin_loongson_pcmpeqb_u (s, t);
-}
-
-__extension__ static __inline int32x2_t __attribute__ ((__always_inline__))
-pcmpeqw_s (int32x2_t s, int32x2_t t)
-{
- return __builtin_loongson_pcmpeqw_s (s, t);
-}
-
-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
-pcmpeqh_s (int16x4_t s, int16x4_t t)
-{
- return __builtin_loongson_pcmpeqh_s (s, t);
-}
-
-__extension__ static __inline int8x8_t __attribute__ ((__always_inline__))
-pcmpeqb_s (int8x8_t s, int8x8_t t)
-{
- return __builtin_loongson_pcmpeqb_s (s, t);
-}
-
-/* Greater-than test. */
-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__))
-pcmpgtw_u (uint32x2_t s, uint32x2_t t)
-{
- return __builtin_loongson_pcmpgtw_u (s, t);
-}
-
-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
-pcmpgth_u (uint16x4_t s, uint16x4_t t)
-{
- return __builtin_loongson_pcmpgth_u (s, t);
-}
-
-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
-pcmpgtb_u (uint8x8_t s, uint8x8_t t)
-{
- return __builtin_loongson_pcmpgtb_u (s, t);
-}
-
-__extension__ static __inline int32x2_t __attribute__ ((__always_inline__))
-pcmpgtw_s (int32x2_t s, int32x2_t t)
-{
- return __builtin_loongson_pcmpgtw_s (s, t);
-}
-
-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
-pcmpgth_s (int16x4_t s, int16x4_t t)
-{
- return __builtin_loongson_pcmpgth_s (s, t);
-}
-
-__extension__ static __inline int8x8_t __attribute__ ((__always_inline__))
-pcmpgtb_s (int8x8_t s, int8x8_t t)
-{
- return __builtin_loongson_pcmpgtb_s (s, t);
-}
-
-/* Extract halfword. */
-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
-pextrh_u (uint16x4_t s, int field /* 0--3 */)
-{
- return __builtin_loongson_pextrh_u (s, field);
-}
-
-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
-pextrh_s (int16x4_t s, int field /* 0--3 */)
-{
- return __builtin_loongson_pextrh_s (s, field);
-}
-
-/* Insert halfword. */
-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
-pinsrh_0_u (uint16x4_t s, uint16x4_t t)
-{
- return __builtin_loongson_pinsrh_0_u (s, t);
-}
-
-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
-pinsrh_1_u (uint16x4_t s, uint16x4_t t)
-{
- return __builtin_loongson_pinsrh_1_u (s, t);
-}
-
-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
-pinsrh_2_u (uint16x4_t s, uint16x4_t t)
-{
- return __builtin_loongson_pinsrh_2_u (s, t);
-}
-
-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
-pinsrh_3_u (uint16x4_t s, uint16x4_t t)
-{
- return __builtin_loongson_pinsrh_3_u (s, t);
-}
-
-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
-pinsrh_0_s (int16x4_t s, int16x4_t t)
-{
- return __builtin_loongson_pinsrh_0_s (s, t);
-}
-
-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
-pinsrh_1_s (int16x4_t s, int16x4_t t)
-{
- return __builtin_loongson_pinsrh_1_s (s, t);
-}
-
-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
-pinsrh_2_s (int16x4_t s, int16x4_t t)
-{
- return __builtin_loongson_pinsrh_2_s (s, t);
-}
-
-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
-pinsrh_3_s (int16x4_t s, int16x4_t t)
-{
- return __builtin_loongson_pinsrh_3_s (s, t);
-}
-
-/* Multiply and add. */
-__extension__ static __inline int32x2_t __attribute__ ((__always_inline__))
-pmaddhw (int16x4_t s, int16x4_t t)
-{
- return __builtin_loongson_pmaddhw (s, t);
-}
-
-/* Maximum of signed halfwords. */
-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
-pmaxsh (int16x4_t s, int16x4_t t)
-{
- return __builtin_loongson_pmaxsh (s, t);
-}
-
-/* Maximum of unsigned bytes. */
-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
-pmaxub (uint8x8_t s, uint8x8_t t)
-{
- return __builtin_loongson_pmaxub (s, t);
-}
-
-/* Minimum of signed halfwords. */
-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
-pminsh (int16x4_t s, int16x4_t t)
-{
- return __builtin_loongson_pminsh (s, t);
-}
-
-/* Minimum of unsigned bytes. */
-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
-pminub (uint8x8_t s, uint8x8_t t)
-{
- return __builtin_loongson_pminub (s, t);
-}
-
-/* Move byte mask. */
-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
-pmovmskb_u (uint8x8_t s)
-{
- return __builtin_loongson_pmovmskb_u (s);
-}
-
-__extension__ static __inline int8x8_t __attribute__ ((__always_inline__))
-pmovmskb_s (int8x8_t s)
-{
- return __builtin_loongson_pmovmskb_s (s);
-}
-
-/* Multiply unsigned integers and store high result. */
-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
-pmulhuh (uint16x4_t s, uint16x4_t t)
-{
- return __builtin_loongson_pmulhuh (s, t);
-}
-
-/* Multiply signed integers and store high result. */
-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
-pmulhh (int16x4_t s, int16x4_t t)
-{
- return __builtin_loongson_pmulhh (s, t);
-}
-
-/* Multiply signed integers and store low result. */
-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
-pmullh (int16x4_t s, int16x4_t t)
-{
- return __builtin_loongson_pmullh (s, t);
-}
-
-/* Multiply unsigned word integers. */
-__extension__ static __inline int64_t __attribute__ ((__always_inline__))
-pmuluw (uint32x2_t s, uint32x2_t t)
-{
- return __builtin_loongson_pmuluw (s, t);
-}
-
-/* Absolute difference. */
-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
-pasubub (uint8x8_t s, uint8x8_t t)
-{
- return __builtin_loongson_pasubub (s, t);
-}
-
-/* Sum of unsigned byte integers. */
-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
-biadd (uint8x8_t s)
-{
- return __builtin_loongson_biadd (s);
-}
-
-/* Sum of absolute differences.
- Note that this intrinsic expands into two machine instructions:
- PASUBUB followed by BIADD. */
-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
-psadbh (uint8x8_t s, uint8x8_t t)
-{
- return __builtin_loongson_psadbh (s, t);
-}
-
-/* Shuffle halfwords. */
-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
-pshufh_u (uint16x4_t dest, uint16x4_t s, uint8_t order)
-{
- return __builtin_loongson_pshufh_u (s, order);
-}
-
-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
-pshufh_s (int16x4_t dest, int16x4_t s, uint8_t order)
-{
- return __builtin_loongson_pshufh_s (s, order);
-}
-
-/* Shift left logical. */
-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
-psllh_u (uint16x4_t s, uint8_t amount)
-{
- return __builtin_loongson_psllh_u (s, amount);
-}
-
-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
-psllh_s (int16x4_t s, uint8_t amount)
-{
- return __builtin_loongson_psllh_s (s, amount);
-}
-
-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__))
-psllw_u (uint32x2_t s, uint8_t amount)
-{
- return __builtin_loongson_psllw_u (s, amount);
-}
-
-__extension__ static __inline int32x2_t __attribute__ ((__always_inline__))
-psllw_s (int32x2_t s, uint8_t amount)
-{
- return __builtin_loongson_psllw_s (s, amount);
-}
-
-/* Shift right logical. */
-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
-psrlh_u (uint16x4_t s, uint8_t amount)
-{
- return __builtin_loongson_psrlh_u (s, amount);
-}
-
-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
-psrlh_s (int16x4_t s, uint8_t amount)
-{
- return __builtin_loongson_psrlh_s (s, amount);
-}
-
-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__))
-psrlw_u (uint32x2_t s, uint8_t amount)
-{
- return __builtin_loongson_psrlw_u (s, amount);
-}
-
-__extension__ static __inline int32x2_t __attribute__ ((__always_inline__))
-psrlw_s (int32x2_t s, uint8_t amount)
-{
- return __builtin_loongson_psrlw_s (s, amount);
-}
-
-/* Shift right arithmetic. */
-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
-psrah_u (uint16x4_t s, uint8_t amount)
-{
- return __builtin_loongson_psrah_u (s, amount);
-}
-
-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
-psrah_s (int16x4_t s, uint8_t amount)
-{
- return __builtin_loongson_psrah_s (s, amount);
-}
-
-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__))
-psraw_u (uint32x2_t s, uint8_t amount)
-{
- return __builtin_loongson_psraw_u (s, amount);
-}
-
-__extension__ static __inline int32x2_t __attribute__ ((__always_inline__))
-psraw_s (int32x2_t s, uint8_t amount)
-{
- return __builtin_loongson_psraw_s (s, amount);
-}
-
-/* Vector subtraction, treating overflow by wraparound. */
-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__))
-psubw_u (uint32x2_t s, uint32x2_t t)
-{
- return __builtin_loongson_psubw_u (s, t);
-}
-
-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
-psubh_u (uint16x4_t s, uint16x4_t t)
-{
- return __builtin_loongson_psubh_u (s, t);
-}
-
-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
-psubb_u (uint8x8_t s, uint8x8_t t)
-{
- return __builtin_loongson_psubb_u (s, t);
-}
-
-__extension__ static __inline int32x2_t __attribute__ ((__always_inline__))
-psubw_s (int32x2_t s, int32x2_t t)
-{
- return __builtin_loongson_psubw_s (s, t);
-}
-
-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
-psubh_s (int16x4_t s, int16x4_t t)
-{
- return __builtin_loongson_psubh_s (s, t);
-}
-
-__extension__ static __inline int8x8_t __attribute__ ((__always_inline__))
-psubb_s (int8x8_t s, int8x8_t t)
-{
- return __builtin_loongson_psubb_s (s, t);
-}
-
-/* Subtraction of doubleword integers, treating overflow by wraparound. */
-__extension__ static __inline uint64_t __attribute__ ((__always_inline__))
-psubd_u (uint64_t s, uint64_t t)
-{
- return __builtin_loongson_psubd_u (s, t);
-}
-
-__extension__ static __inline int64_t __attribute__ ((__always_inline__))
-psubd_s (int64_t s, int64_t t)
-{
- return __builtin_loongson_psubd_s (s, t);
-}
-
-/* Vector subtraction, treating overflow by signed saturation. */
-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
-psubsh (int16x4_t s, int16x4_t t)
-{
- return __builtin_loongson_psubsh (s, t);
-}
-
-__extension__ static __inline int8x8_t __attribute__ ((__always_inline__))
-psubsb (int8x8_t s, int8x8_t t)
-{
- return __builtin_loongson_psubsb (s, t);
-}
-
-/* Vector subtraction, treating overflow by unsigned saturation. */
-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
-psubush (uint16x4_t s, uint16x4_t t)
-{
- return __builtin_loongson_psubush (s, t);
-}
-
-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
-psubusb (uint8x8_t s, uint8x8_t t)
-{
- return __builtin_loongson_psubusb (s, t);
-}
-
-/* Unpack high data. */
-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__))
-punpckhwd_u (uint32x2_t s, uint32x2_t t)
-{
- return __builtin_loongson_punpckhwd_u (s, t);
-}
-
-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
-punpckhhw_u (uint16x4_t s, uint16x4_t t)
-{
- return __builtin_loongson_punpckhhw_u (s, t);
-}
-
-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
-punpckhbh_u (uint8x8_t s, uint8x8_t t)
-{
- return __builtin_loongson_punpckhbh_u (s, t);
-}
-
-__extension__ static __inline int32x2_t __attribute__ ((__always_inline__))
-punpckhwd_s (int32x2_t s, int32x2_t t)
-{
- return __builtin_loongson_punpckhwd_s (s, t);
-}
-
-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
-punpckhhw_s (int16x4_t s, int16x4_t t)
-{
- return __builtin_loongson_punpckhhw_s (s, t);
-}
-
-__extension__ static __inline int8x8_t __attribute__ ((__always_inline__))
-punpckhbh_s (int8x8_t s, int8x8_t t)
-{
- return __builtin_loongson_punpckhbh_s (s, t);
-}
-
-/* Unpack low data. */
-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__))
-punpcklwd_u (uint32x2_t s, uint32x2_t t)
-{
- return __builtin_loongson_punpcklwd_u (s, t);
-}
-
-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
-punpcklhw_u (uint16x4_t s, uint16x4_t t)
-{
- return __builtin_loongson_punpcklhw_u (s, t);
-}
-
-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
-punpcklbh_u (uint8x8_t s, uint8x8_t t)
-{
- return __builtin_loongson_punpcklbh_u (s, t);
-}
-
-__extension__ static __inline int32x2_t __attribute__ ((__always_inline__))
-punpcklwd_s (int32x2_t s, int32x2_t t)
-{
- return __builtin_loongson_punpcklwd_s (s, t);
-}
-
-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
-punpcklhw_s (int16x4_t s, int16x4_t t)
-{
- return __builtin_loongson_punpcklhw_s (s, t);
-}
-
-__extension__ static __inline int8x8_t __attribute__ ((__always_inline__))
-punpcklbh_s (int8x8_t s, int8x8_t t)
-{
- return __builtin_loongson_punpcklbh_s (s, t);
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/stdalign.h b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/stdalign.h
deleted file mode 100644
index ee2d81f..0000000
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/stdalign.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Copyright (C) 2011-2014 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC 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 General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-/* ISO C1X: 7.15 Alignment <stdalign.h>. */
-
-#ifndef _STDALIGN_H
-#define _STDALIGN_H
-
-#ifndef __cplusplus
-
-#define alignas _Alignas
-#define alignof _Alignof
-
-#define __alignas_is_defined 1
-#define __alignof_is_defined 1
-
-#endif
-
-#endif /* stdalign.h */
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/stdarg.h b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/stdarg.h
deleted file mode 100644
index 1d4418b..0000000
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/stdarg.h
+++ /dev/null
@@ -1,126 +0,0 @@
-/* Copyright (C) 1989-2014 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC 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 General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-/*
- * ISO C Standard: 7.15 Variable arguments <stdarg.h>
- */
-
-#ifndef _STDARG_H
-#ifndef _ANSI_STDARG_H_
-#ifndef __need___va_list
-#define _STDARG_H
-#define _ANSI_STDARG_H_
-#endif /* not __need___va_list */
-#undef __need___va_list
-
-/* Define __gnuc_va_list. */
-
-#ifndef __GNUC_VA_LIST
-#define __GNUC_VA_LIST
-typedef __builtin_va_list __gnuc_va_list;
-#endif
-
-/* Define the standard macros for the user,
- if this invocation was from the user program. */
-#ifdef _STDARG_H
-
-#define va_start(v,l) __builtin_va_start(v,l)
-#define va_end(v) __builtin_va_end(v)
-#define va_arg(v,l) __builtin_va_arg(v,l)
-#if !defined(__STRICT_ANSI__) || __STDC_VERSION__ + 0 >= 199900L || defined(__GXX_EXPERIMENTAL_CXX0X__)
-#define va_copy(d,s) __builtin_va_copy(d,s)
-#endif
-#define __va_copy(d,s) __builtin_va_copy(d,s)
-
-/* Define va_list, if desired, from __gnuc_va_list. */
-/* We deliberately do not define va_list when called from
- stdio.h, because ANSI C says that stdio.h is not supposed to define
- va_list. stdio.h needs to have access to that data type,
- but must not use that name. It should use the name __gnuc_va_list,
- which is safe because it is reserved for the implementation. */
-
-#ifdef _BSD_VA_LIST
-#undef _BSD_VA_LIST
-#endif
-
-#if defined(__svr4__) || (defined(_SCO_DS) && !defined(__VA_LIST))
-/* SVR4.2 uses _VA_LIST for an internal alias for va_list,
- so we must avoid testing it and setting it here.
- SVR4 uses _VA_LIST as a flag in stdarg.h, but we should
- have no conflict with that. */
-#ifndef _VA_LIST_
-#define _VA_LIST_
-#ifdef __i860__
-#ifndef _VA_LIST
-#define _VA_LIST va_list
-#endif
-#endif /* __i860__ */
-typedef __gnuc_va_list va_list;
-#ifdef _SCO_DS
-#define __VA_LIST
-#endif
-#endif /* _VA_LIST_ */
-#else /* not __svr4__ || _SCO_DS */
-
-/* The macro _VA_LIST_ is the same thing used by this file in Ultrix.
- But on BSD NET2 we must not test or define or undef it.
- (Note that the comments in NET 2's ansi.h
- are incorrect for _VA_LIST_--see stdio.h!) */
-#if !defined (_VA_LIST_) || defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__) || defined (__FreeBSD__) || defined(WINNT)
-/* The macro _VA_LIST_DEFINED is used in Windows NT 3.5 */
-#ifndef _VA_LIST_DEFINED
-/* The macro _VA_LIST is used in SCO Unix 3.2. */
-#ifndef _VA_LIST
-/* The macro _VA_LIST_T_H is used in the Bull dpx2 */
-#ifndef _VA_LIST_T_H
-/* The macro __va_list__ is used by BeOS. */
-#ifndef __va_list__
-typedef __gnuc_va_list va_list;
-#endif /* not __va_list__ */
-#endif /* not _VA_LIST_T_H */
-#endif /* not _VA_LIST */
-#endif /* not _VA_LIST_DEFINED */
-#if !(defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__) || defined (__FreeBSD__))
-#define _VA_LIST_
-#endif
-#ifndef _VA_LIST
-#define _VA_LIST
-#endif
-#ifndef _VA_LIST_DEFINED
-#define _VA_LIST_DEFINED
-#endif
-#ifndef _VA_LIST_T_H
-#define _VA_LIST_T_H
-#endif
-#ifndef __va_list__
-#define __va_list__
-#endif
-
-#endif /* not _VA_LIST_, except on certain systems */
-
-#endif /* not __svr4__ */
-
-#endif /* _STDARG_H */
-
-#endif /* not _ANSI_STDARG_H_ */
-#endif /* not _STDARG_H */
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/stdatomic.h b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/stdatomic.h
deleted file mode 100644
index 108259b..0000000
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/stdatomic.h
+++ /dev/null
@@ -1,252 +0,0 @@
-/* Copyright (C) 2013-2014 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC 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 General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-/* ISO C11 Standard: 7.17 Atomics <stdatomic.h>. */
-
-#ifndef _STDATOMIC_H
-#define _STDATOMIC_H
-
-typedef enum
- {
- memory_order_relaxed = __ATOMIC_RELAXED,
- memory_order_consume = __ATOMIC_CONSUME,
- memory_order_acquire = __ATOMIC_ACQUIRE,
- memory_order_release = __ATOMIC_RELEASE,
- memory_order_acq_rel = __ATOMIC_ACQ_REL,
- memory_order_seq_cst = __ATOMIC_SEQ_CST
- } memory_order;
-
-
-typedef _Atomic _Bool atomic_bool;
-typedef _Atomic char atomic_char;
-typedef _Atomic signed char atomic_schar;
-typedef _Atomic unsigned char atomic_uchar;
-typedef _Atomic short atomic_short;
-typedef _Atomic unsigned short atomic_ushort;
-typedef _Atomic int atomic_int;
-typedef _Atomic unsigned int atomic_uint;
-typedef _Atomic long atomic_long;
-typedef _Atomic unsigned long atomic_ulong;
-typedef _Atomic long long atomic_llong;
-typedef _Atomic unsigned long long atomic_ullong;
-typedef _Atomic __CHAR16_TYPE__ atomic_char16_t;
-typedef _Atomic __CHAR32_TYPE__ atomic_char32_t;
-typedef _Atomic __WCHAR_TYPE__ atomic_wchar_t;
-typedef _Atomic __INT_LEAST8_TYPE__ atomic_int_least8_t;
-typedef _Atomic __UINT_LEAST8_TYPE__ atomic_uint_least8_t;
-typedef _Atomic __INT_LEAST16_TYPE__ atomic_int_least16_t;
-typedef _Atomic __UINT_LEAST16_TYPE__ atomic_uint_least16_t;
-typedef _Atomic __INT_LEAST32_TYPE__ atomic_int_least32_t;
-typedef _Atomic __UINT_LEAST32_TYPE__ atomic_uint_least32_t;
-typedef _Atomic __INT_LEAST64_TYPE__ atomic_int_least64_t;
-typedef _Atomic __UINT_LEAST64_TYPE__ atomic_uint_least64_t;
-typedef _Atomic __INT_FAST8_TYPE__ atomic_int_fast8_t;
-typedef _Atomic __UINT_FAST8_TYPE__ atomic_uint_fast8_t;
-typedef _Atomic __INT_FAST16_TYPE__ atomic_int_fast16_t;
-typedef _Atomic __UINT_FAST16_TYPE__ atomic_uint_fast16_t;
-typedef _Atomic __INT_FAST32_TYPE__ atomic_int_fast32_t;
-typedef _Atomic __UINT_FAST32_TYPE__ atomic_uint_fast32_t;
-typedef _Atomic __INT_FAST64_TYPE__ atomic_int_fast64_t;
-typedef _Atomic __UINT_FAST64_TYPE__ atomic_uint_fast64_t;
-typedef _Atomic __INTPTR_TYPE__ atomic_intptr_t;
-typedef _Atomic __UINTPTR_TYPE__ atomic_uintptr_t;
-typedef _Atomic __SIZE_TYPE__ atomic_size_t;
-typedef _Atomic __PTRDIFF_TYPE__ atomic_ptrdiff_t;
-typedef _Atomic __INTMAX_TYPE__ atomic_intmax_t;
-typedef _Atomic __UINTMAX_TYPE__ atomic_uintmax_t;
-
-
-#define ATOMIC_VAR_INIT(VALUE) (VALUE)
-#define atomic_init(PTR, VAL) \
- do \
- { \
- *(PTR) = (VAL); \
- } \
- while (0)
-
-#define kill_dependency(Y) \
- __extension__ \
- ({ \
- __auto_type __kill_dependency_tmp = (Y); \
- __kill_dependency_tmp; \
- })
-
-#define atomic_thread_fence(MO) __atomic_thread_fence (MO)
-#define atomic_signal_fence(MO) __atomic_signal_fence (MO)
-#define atomic_is_lock_free(OBJ) __atomic_is_lock_free (sizeof (*(OBJ)), (OBJ))
-
-#define __atomic_type_lock_free(T) \
- (__atomic_always_lock_free (sizeof (T), (void *) 0) \
- ? 2 \
- : (__atomic_is_lock_free (sizeof (T), (void *) 0) ? 1 : 0))
-#define ATOMIC_BOOL_LOCK_FREE \
- __atomic_type_lock_free (atomic_bool)
-#define ATOMIC_CHAR_LOCK_FREE \
- __atomic_type_lock_free (atomic_char)
-#define ATOMIC_CHAR16_T_LOCK_FREE \
- __atomic_type_lock_free (atomic_char16_t)
-#define ATOMIC_CHAR32_T_LOCK_FREE \
- __atomic_type_lock_free (atomic_char32_t)
-#define ATOMIC_WCHAR_T_LOCK_FREE \
- __atomic_type_lock_free (atomic_wchar_t)
-#define ATOMIC_SHORT_LOCK_FREE \
- __atomic_type_lock_free (atomic_short)
-#define ATOMIC_INT_LOCK_FREE \
- __atomic_type_lock_free (atomic_int)
-#define ATOMIC_LONG_LOCK_FREE \
- __atomic_type_lock_free (atomic_long)
-#define ATOMIC_LLONG_LOCK_FREE \
- __atomic_type_lock_free (atomic_llong)
-#define ATOMIC_POINTER_LOCK_FREE \
- __atomic_type_lock_free (void * _Atomic)
-
-
-/* Note that these macros require __typeof__ and __auto_type to remove
- _Atomic qualifiers (and const qualifiers, if those are valid on
- macro operands).
-
- Also note that the header file uses the generic form of __atomic
- builtins, which requires the address to be taken of the value
- parameter, and then we pass that value on. This allows the macros
- to work for any type, and the compiler is smart enough to convert
- these to lock-free _N variants if possible, and throw away the
- temps. */
-
-#define atomic_store_explicit(PTR, VAL, MO) \
- __extension__ \
- ({ \
- __auto_type __atomic_store_ptr = (PTR); \
- __typeof__ (*__atomic_store_ptr) __atomic_store_tmp = (VAL); \
- __atomic_store (__atomic_store_ptr, &__atomic_store_tmp, (MO)); \
- })
-
-#define atomic_store(PTR, VAL) \
- atomic_store_explicit (PTR, VAL, __ATOMIC_SEQ_CST)
-
-
-#define atomic_load_explicit(PTR, MO) \
- __extension__ \
- ({ \
- __auto_type __atomic_load_ptr = (PTR); \
- __typeof__ (*__atomic_load_ptr) __atomic_load_tmp; \
- __atomic_load (__atomic_load_ptr, &__atomic_load_tmp, (MO)); \
- __atomic_load_tmp; \
- })
-
-#define atomic_load(PTR) atomic_load_explicit (PTR, __ATOMIC_SEQ_CST)
-
-
-#define atomic_exchange_explicit(PTR, VAL, MO) \
- __extension__ \
- ({ \
- __auto_type __atomic_exchange_ptr = (PTR); \
- __typeof__ (*__atomic_exchange_ptr) __atomic_exchange_val = (VAL); \
- __typeof__ (*__atomic_exchange_ptr) __atomic_exchange_tmp; \
- __atomic_exchange (__atomic_exchange_ptr, &__atomic_exchange_val, \
- &__atomic_exchange_tmp, (MO)); \
- __atomic_exchange_tmp; \
- })
-
-#define atomic_exchange(PTR, VAL) \
- atomic_exchange_explicit (PTR, VAL, __ATOMIC_SEQ_CST)
-
-
-#define atomic_compare_exchange_strong_explicit(PTR, VAL, DES, SUC, FAIL) \
- __extension__ \
- ({ \
- __auto_type __atomic_compare_exchange_ptr = (PTR); \
- __typeof__ (*__atomic_compare_exchange_ptr) __atomic_compare_exchange_tmp \
- = (DES); \
- __atomic_compare_exchange (__atomic_compare_exchange_ptr, (VAL), \
- &__atomic_compare_exchange_tmp, 0, \
- (SUC), (FAIL)); \
- })
-
-#define atomic_compare_exchange_strong(PTR, VAL, DES) \
- atomic_compare_exchange_strong_explicit (PTR, VAL, DES, __ATOMIC_SEQ_CST, \
- __ATOMIC_SEQ_CST)
-
-#define atomic_compare_exchange_weak_explicit(PTR, VAL, DES, SUC, FAIL) \
- __extension__ \
- ({ \
- __auto_type __atomic_compare_exchange_ptr = (PTR); \
- __typeof__ (*__atomic_compare_exchange_ptr) __atomic_compare_exchange_tmp \
- = (DES); \
- __atomic_compare_exchange (__atomic_compare_exchange_ptr, (VAL), \
- &__atomic_compare_exchange_tmp, 1, \
- (SUC), (FAIL)); \
- })
-
-#define atomic_compare_exchange_weak(PTR, VAL, DES) \
- atomic_compare_exchange_weak_explicit (PTR, VAL, DES, __ATOMIC_SEQ_CST, \
- __ATOMIC_SEQ_CST)
-
-
-
-#define atomic_fetch_add(PTR, VAL) __atomic_fetch_add ((PTR), (VAL), \
- __ATOMIC_SEQ_CST)
-#define atomic_fetch_add_explicit(PTR, VAL, MO) \
- __atomic_fetch_add ((PTR), (VAL), (MO))
-
-#define atomic_fetch_sub(PTR, VAL) __atomic_fetch_sub ((PTR), (VAL), \
- __ATOMIC_SEQ_CST)
-#define atomic_fetch_sub_explicit(PTR, VAL, MO) \
- __atomic_fetch_sub ((PTR), (VAL), (MO))
-
-#define atomic_fetch_or(PTR, VAL) __atomic_fetch_or ((PTR), (VAL), \
- __ATOMIC_SEQ_CST)
-#define atomic_fetch_or_explicit(PTR, VAL, MO) \
- __atomic_fetch_or ((PTR), (VAL), (MO))
-
-#define atomic_fetch_xor(PTR, VAL) __atomic_fetch_xor ((PTR), (VAL), \
- __ATOMIC_SEQ_CST)
-#define atomic_fetch_xor_explicit(PTR, VAL, MO) \
- __atomic_fetch_xor ((PTR), (VAL), (MO))
-
-#define atomic_fetch_and(PTR, VAL) __atomic_fetch_and ((PTR), (VAL), \
- __ATOMIC_SEQ_CST)
-#define atomic_fetch_and_explicit(PTR, VAL, MO) \
- __atomic_fetch_and ((PTR), (VAL), (MO))
-
-
-typedef _Atomic struct
-{
-#if __GCC_ATOMIC_TEST_AND_SET_TRUEVAL == 1
- _Bool __val;
-#else
- unsigned char __val;
-#endif
-} atomic_flag;
-
-#define ATOMIC_FLAG_INIT { 0 }
-
-
-#define atomic_flag_test_and_set(PTR) \
- __atomic_test_and_set ((PTR), __ATOMIC_SEQ_CST)
-#define atomic_flag_test_and_set_explicit(PTR, MO) \
- __atomic_test_and_set ((PTR), (MO))
-
-#define atomic_flag_clear(PTR) __atomic_clear ((PTR), __ATOMIC_SEQ_CST)
-#define atomic_flag_clear_explicit(PTR, MO) __atomic_clear ((PTR), (MO))
-
-#endif /* _STDATOMIC_H */
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/stdbool.h b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/stdbool.h
deleted file mode 100644
index f4e802f..0000000
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/stdbool.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Copyright (C) 1998-2014 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC 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 General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-/*
- * ISO C Standard: 7.16 Boolean type and values <stdbool.h>
- */
-
-#ifndef _STDBOOL_H
-#define _STDBOOL_H
-
-#ifndef __cplusplus
-
-#define bool _Bool
-#define true 1
-#define false 0
-
-#else /* __cplusplus */
-
-/* Supporting <stdbool.h> in C++ is a GCC extension. */
-#define _Bool bool
-#define bool bool
-#define false false
-#define true true
-
-#endif /* __cplusplus */
-
-/* Signal that all the definitions are present. */
-#define __bool_true_false_are_defined 1
-
-#endif /* stdbool.h */
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/stddef.h b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/stddef.h
deleted file mode 100644
index 5212a27..0000000
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/stddef.h
+++ /dev/null
@@ -1,442 +0,0 @@
-/* Copyright (C) 1989-2014 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC 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 General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-/*
- * ISO C Standard: 7.17 Common definitions <stddef.h>
- */
-#if (!defined(_STDDEF_H) && !defined(_STDDEF_H_) && !defined(_ANSI_STDDEF_H) \
- && !defined(__STDDEF_H__)) \
- || defined(__need_wchar_t) || defined(__need_size_t) \
- || defined(__need_ptrdiff_t) || defined(__need_NULL) \
- || defined(__need_wint_t)
-
-/* Any one of these symbols __need_* means that GNU libc
- wants us just to define one data type. So don't define
- the symbols that indicate this file's entire job has been done. */
-#if (!defined(__need_wchar_t) && !defined(__need_size_t) \
- && !defined(__need_ptrdiff_t) && !defined(__need_NULL) \
- && !defined(__need_wint_t))
-#define _STDDEF_H
-#define _STDDEF_H_
-/* snaroff@next.com says the NeXT needs this. */
-#define _ANSI_STDDEF_H
-#endif
-
-#ifndef __sys_stdtypes_h
-/* This avoids lossage on SunOS but only if stdtypes.h comes first.
- There's no way to win with the other order! Sun lossage. */
-
-/* On 4.3bsd-net2, make sure ansi.h is included, so we have
- one less case to deal with in the following. */
-#if defined (__BSD_NET2__) || defined (____386BSD____) || (defined (__FreeBSD__) && (__FreeBSD__ < 5)) || defined(__NetBSD__)
-#include <machine/ansi.h>
-#endif
-/* On FreeBSD 5, machine/ansi.h does not exist anymore... */
-#if defined (__FreeBSD__) && (__FreeBSD__ >= 5)
-#include <sys/_types.h>
-#endif
-
-/* In 4.3bsd-net2, machine/ansi.h defines these symbols, which are
- defined if the corresponding type is *not* defined.
- FreeBSD-2.1 defines _MACHINE_ANSI_H_ instead of _ANSI_H_.
- NetBSD defines _I386_ANSI_H_ and _X86_64_ANSI_H_ instead of _ANSI_H_ */
-#if defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_) || defined(_X86_64_ANSI_H_) || defined(_I386_ANSI_H_)
-#if !defined(_SIZE_T_) && !defined(_BSD_SIZE_T_)
-#define _SIZE_T
-#endif
-#if !defined(_PTRDIFF_T_) && !defined(_BSD_PTRDIFF_T_)
-#define _PTRDIFF_T
-#endif
-/* On BSD/386 1.1, at least, machine/ansi.h defines _BSD_WCHAR_T_
- instead of _WCHAR_T_. */
-#if !defined(_WCHAR_T_) && !defined(_BSD_WCHAR_T_)
-#ifndef _BSD_WCHAR_T_
-#define _WCHAR_T
-#endif
-#endif
-/* Undef _FOO_T_ if we are supposed to define foo_t. */
-#if defined (__need_ptrdiff_t) || defined (_STDDEF_H_)
-#undef _PTRDIFF_T_
-#undef _BSD_PTRDIFF_T_
-#endif
-#if defined (__need_size_t) || defined (_STDDEF_H_)
-#undef _SIZE_T_
-#undef _BSD_SIZE_T_
-#endif
-#if defined (__need_wchar_t) || defined (_STDDEF_H_)
-#undef _WCHAR_T_
-#undef _BSD_WCHAR_T_
-#endif
-#endif /* defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_) || defined(_X86_64_ANSI_H_) || defined(_I386_ANSI_H_) */
-
-/* Sequent's header files use _PTRDIFF_T_ in some conflicting way.
- Just ignore it. */
-#if defined (__sequent__) && defined (_PTRDIFF_T_)
-#undef _PTRDIFF_T_
-#endif
-
-/* On VxWorks, <type/vxTypesBase.h> may have defined macros like
- _TYPE_size_t which will typedef size_t. fixincludes patched the
- vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
- not defined, and so that defining this macro defines _GCC_SIZE_T.
- If we find that the macros are still defined at this point, we must
- invoke them so that the type is defined as expected. */
-#if defined (_TYPE_ptrdiff_t) && (defined (__need_ptrdiff_t) || defined (_STDDEF_H_))
-_TYPE_ptrdiff_t;
-#undef _TYPE_ptrdiff_t
-#endif
-#if defined (_TYPE_size_t) && (defined (__need_size_t) || defined (_STDDEF_H_))
-_TYPE_size_t;
-#undef _TYPE_size_t
-#endif
-#if defined (_TYPE_wchar_t) && (defined (__need_wchar_t) || defined (_STDDEF_H_))
-_TYPE_wchar_t;
-#undef _TYPE_wchar_t
-#endif
-
-/* In case nobody has defined these types, but we aren't running under
- GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
- __WCHAR_TYPE__ have reasonable values. This can happen if the
- parts of GCC is compiled by an older compiler, that actually
- include gstddef.h, such as collect2. */
-
-/* Signed type of difference of two pointers. */
-
-/* Define this type if we are doing the whole job,
- or if we want this type in particular. */
-#if defined (_STDDEF_H) || defined (__need_ptrdiff_t)
-#ifndef _PTRDIFF_T /* in case <sys/types.h> has defined it. */
-#ifndef _T_PTRDIFF_
-#ifndef _T_PTRDIFF
-#ifndef __PTRDIFF_T
-#ifndef _PTRDIFF_T_
-#ifndef _BSD_PTRDIFF_T_
-#ifndef ___int_ptrdiff_t_h
-#ifndef _GCC_PTRDIFF_T
-#define _PTRDIFF_T
-#define _T_PTRDIFF_
-#define _T_PTRDIFF
-#define __PTRDIFF_T
-#define _PTRDIFF_T_
-#define _BSD_PTRDIFF_T_
-#define ___int_ptrdiff_t_h
-#define _GCC_PTRDIFF_T
-#ifndef __PTRDIFF_TYPE__
-#define __PTRDIFF_TYPE__ long int
-#endif
-typedef __PTRDIFF_TYPE__ ptrdiff_t;
-#endif /* _GCC_PTRDIFF_T */
-#endif /* ___int_ptrdiff_t_h */
-#endif /* _BSD_PTRDIFF_T_ */
-#endif /* _PTRDIFF_T_ */
-#endif /* __PTRDIFF_T */
-#endif /* _T_PTRDIFF */
-#endif /* _T_PTRDIFF_ */
-#endif /* _PTRDIFF_T */
-
-/* If this symbol has done its job, get rid of it. */
-#undef __need_ptrdiff_t
-
-#endif /* _STDDEF_H or __need_ptrdiff_t. */
-
-/* Unsigned type of `sizeof' something. */
-
-/* Define this type if we are doing the whole job,
- or if we want this type in particular. */
-#if defined (_STDDEF_H) || defined (__need_size_t)
-#ifndef __size_t__ /* BeOS */
-#ifndef __SIZE_T__ /* Cray Unicos/Mk */
-#ifndef _SIZE_T /* in case <sys/types.h> has defined it. */
-#ifndef _SYS_SIZE_T_H
-#ifndef _T_SIZE_
-#ifndef _T_SIZE
-#ifndef __SIZE_T
-#ifndef _SIZE_T_
-#ifndef _BSD_SIZE_T_
-#ifndef _SIZE_T_DEFINED_
-#ifndef _SIZE_T_DEFINED
-#ifndef _BSD_SIZE_T_DEFINED_ /* Darwin */
-#ifndef _SIZE_T_DECLARED /* FreeBSD 5 */
-#ifndef ___int_size_t_h
-#ifndef _GCC_SIZE_T
-#ifndef _SIZET_
-#ifndef __size_t
-#ifndef __DEFINED_size_t /* musl */
-#define __size_t__ /* BeOS */
-#define __SIZE_T__ /* Cray Unicos/Mk */
-#define _SIZE_T
-#define _SYS_SIZE_T_H
-#define _T_SIZE_
-#define _T_SIZE
-#define __SIZE_T
-#define _SIZE_T_
-#define _BSD_SIZE_T_
-#define _SIZE_T_DEFINED_
-#define _SIZE_T_DEFINED
-#define _BSD_SIZE_T_DEFINED_ /* Darwin */
-#define _SIZE_T_DECLARED /* FreeBSD 5 */
-#define ___int_size_t_h
-#define _GCC_SIZE_T
-#define _SIZET_
-#define __DEFINED_size_t /* musl */
-#if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) \
- || defined(__FreeBSD_kernel__)
-/* __size_t is a typedef on FreeBSD 5, must not trash it. */
-#elif defined (__VMS__)
-/* __size_t is also a typedef on VMS. */
-#else
-#define __size_t
-#endif
-#ifndef __SIZE_TYPE__
-#define __SIZE_TYPE__ long unsigned int
-#endif
-#if !(defined (__GNUG__) && defined (size_t))
-typedef __SIZE_TYPE__ size_t;
-#ifdef __BEOS__
-typedef long ssize_t;
-#endif /* __BEOS__ */
-#endif /* !(defined (__GNUG__) && defined (size_t)) */
-#endif /* __DEFINED_size_t */
-#endif /* __size_t */
-#endif /* _SIZET_ */
-#endif /* _GCC_SIZE_T */
-#endif /* ___int_size_t_h */
-#endif /* _SIZE_T_DECLARED */
-#endif /* _BSD_SIZE_T_DEFINED_ */
-#endif /* _SIZE_T_DEFINED */
-#endif /* _SIZE_T_DEFINED_ */
-#endif /* _BSD_SIZE_T_ */
-#endif /* _SIZE_T_ */
-#endif /* __SIZE_T */
-#endif /* _T_SIZE */
-#endif /* _T_SIZE_ */
-#endif /* _SYS_SIZE_T_H */
-#endif /* _SIZE_T */
-#endif /* __SIZE_T__ */
-#endif /* __size_t__ */
-#undef __need_size_t
-#endif /* _STDDEF_H or __need_size_t. */
-
-
-/* Wide character type.
- Locale-writers should change this as necessary to
- be big enough to hold unique values not between 0 and 127,
- and not (wchar_t) -1, for each defined multibyte character. */
-
-/* Define this type if we are doing the whole job,
- or if we want this type in particular. */
-#if defined (_STDDEF_H) || defined (__need_wchar_t)
-#ifndef __wchar_t__ /* BeOS */
-#ifndef __WCHAR_T__ /* Cray Unicos/Mk */
-#ifndef _WCHAR_T
-#ifndef _T_WCHAR_
-#ifndef _T_WCHAR
-#ifndef __WCHAR_T
-#ifndef _WCHAR_T_
-#ifndef _BSD_WCHAR_T_
-#ifndef _BSD_WCHAR_T_DEFINED_ /* Darwin */
-#ifndef _BSD_RUNE_T_DEFINED_ /* Darwin */
-#ifndef _WCHAR_T_DECLARED /* FreeBSD 5 */
-#ifndef _WCHAR_T_DEFINED_
-#ifndef _WCHAR_T_DEFINED
-#ifndef _WCHAR_T_H
-#ifndef ___int_wchar_t_h
-#ifndef __INT_WCHAR_T_H
-#ifndef _GCC_WCHAR_T
-#define __wchar_t__ /* BeOS */
-#define __WCHAR_T__ /* Cray Unicos/Mk */
-#define _WCHAR_T
-#define _T_WCHAR_
-#define _T_WCHAR
-#define __WCHAR_T
-#define _WCHAR_T_
-#define _BSD_WCHAR_T_
-#define _WCHAR_T_DEFINED_
-#define _WCHAR_T_DEFINED
-#define _WCHAR_T_H
-#define ___int_wchar_t_h
-#define __INT_WCHAR_T_H
-#define _GCC_WCHAR_T
-#define _WCHAR_T_DECLARED
-
-/* On BSD/386 1.1, at least, machine/ansi.h defines _BSD_WCHAR_T_
- instead of _WCHAR_T_, and _BSD_RUNE_T_ (which, unlike the other
- symbols in the _FOO_T_ family, stays defined even after its
- corresponding type is defined). If we define wchar_t, then we
- must undef _WCHAR_T_; for BSD/386 1.1 (and perhaps others), if
- we undef _WCHAR_T_, then we must also define rune_t, since
- headers like runetype.h assume that if machine/ansi.h is included,
- and _BSD_WCHAR_T_ is not defined, then rune_t is available.
- machine/ansi.h says, "Note that _WCHAR_T_ and _RUNE_T_ must be of
- the same type." */
-#ifdef _BSD_WCHAR_T_
-#undef _BSD_WCHAR_T_
-#ifdef _BSD_RUNE_T_
-#if !defined (_ANSI_SOURCE) && !defined (_POSIX_SOURCE)
-typedef _BSD_RUNE_T_ rune_t;
-#define _BSD_WCHAR_T_DEFINED_
-#define _BSD_RUNE_T_DEFINED_ /* Darwin */
-#if defined (__FreeBSD__) && (__FreeBSD__ < 5)
-/* Why is this file so hard to maintain properly? In contrast to
- the comment above regarding BSD/386 1.1, on FreeBSD for as long
- as the symbol has existed, _BSD_RUNE_T_ must not stay defined or
- redundant typedefs will occur when stdlib.h is included after this file. */
-#undef _BSD_RUNE_T_
-#endif
-#endif
-#endif
-#endif
-/* FreeBSD 5 can't be handled well using "traditional" logic above
- since it no longer defines _BSD_RUNE_T_ yet still desires to export
- rune_t in some cases... */
-#if defined (__FreeBSD__) && (__FreeBSD__ >= 5)
-#if !defined (_ANSI_SOURCE) && !defined (_POSIX_SOURCE)
-#if __BSD_VISIBLE
-#ifndef _RUNE_T_DECLARED
-typedef __rune_t rune_t;
-#define _RUNE_T_DECLARED
-#endif
-#endif
-#endif
-#endif
-
-#ifndef __WCHAR_TYPE__
-#define __WCHAR_TYPE__ int
-#endif
-#ifndef __cplusplus
-typedef __WCHAR_TYPE__ wchar_t;
-#endif
-#endif
-#endif
-#endif
-#endif
-#endif
-#endif
-#endif /* _WCHAR_T_DECLARED */
-#endif /* _BSD_RUNE_T_DEFINED_ */
-#endif
-#endif
-#endif
-#endif
-#endif
-#endif
-#endif
-#endif /* __WCHAR_T__ */
-#endif /* __wchar_t__ */
-#undef __need_wchar_t
-#endif /* _STDDEF_H or __need_wchar_t. */
-
-#if defined (__need_wint_t)
-#ifndef _WINT_T
-#define _WINT_T
-
-#ifndef __WINT_TYPE__
-#define __WINT_TYPE__ unsigned int
-#endif
-typedef __WINT_TYPE__ wint_t;
-#endif
-#undef __need_wint_t
-#endif
-
-/* In 4.3bsd-net2, leave these undefined to indicate that size_t, etc.
- are already defined. */
-/* BSD/OS 3.1 and FreeBSD [23].x require the MACHINE_ANSI_H check here. */
-/* NetBSD 5 requires the I386_ANSI_H and X86_64_ANSI_H checks here. */
-#if defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_) || defined(_X86_64_ANSI_H_) || defined(_I386_ANSI_H_)
-/* The references to _GCC_PTRDIFF_T_, _GCC_SIZE_T_, and _GCC_WCHAR_T_
- are probably typos and should be removed before 2.8 is released. */
-#ifdef _GCC_PTRDIFF_T_
-#undef _PTRDIFF_T_
-#undef _BSD_PTRDIFF_T_
-#endif
-#ifdef _GCC_SIZE_T_
-#undef _SIZE_T_
-#undef _BSD_SIZE_T_
-#endif
-#ifdef _GCC_WCHAR_T_
-#undef _WCHAR_T_
-#undef _BSD_WCHAR_T_
-#endif
-/* The following ones are the real ones. */
-#ifdef _GCC_PTRDIFF_T
-#undef _PTRDIFF_T_
-#undef _BSD_PTRDIFF_T_
-#endif
-#ifdef _GCC_SIZE_T
-#undef _SIZE_T_
-#undef _BSD_SIZE_T_
-#endif
-#ifdef _GCC_WCHAR_T
-#undef _WCHAR_T_
-#undef _BSD_WCHAR_T_
-#endif
-#endif /* _ANSI_H_ || _MACHINE_ANSI_H_ || _X86_64_ANSI_H_ || _I386_ANSI_H_ */
-
-#endif /* __sys_stdtypes_h */
-
-/* A null pointer constant. */
-
-#if defined (_STDDEF_H) || defined (__need_NULL)
-#undef NULL /* in case <stdio.h> has defined it. */
-#ifdef __GNUG__
-#define NULL __null
-#else /* G++ */
-#ifndef __cplusplus
-#define NULL ((void *)0)
-#else /* C++ */
-#define NULL 0
-#endif /* C++ */
-#endif /* G++ */
-#endif /* NULL not defined and <stddef.h> or need NULL. */
-#undef __need_NULL
-
-#ifdef _STDDEF_H
-
-/* Offset of member MEMBER in a struct of type TYPE. */
-#define offsetof(TYPE, MEMBER) __builtin_offsetof (TYPE, MEMBER)
-
-#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) \
- || (defined(__cplusplus) && __cplusplus >= 201103L)
-#ifndef _GCC_MAX_ALIGN_T
-#define _GCC_MAX_ALIGN_T
-/* Type whose alignment is supported in every context and is at least
- as great as that of any standard type not using alignment
- specifiers. */
-typedef struct {
- long long __max_align_ll __attribute__((__aligned__(__alignof__(long long))));
- long double __max_align_ld __attribute__((__aligned__(__alignof__(long double))));
-} max_align_t;
-#endif
-#endif /* C11 or C++11. */
-
-#if defined(__cplusplus) && __cplusplus >= 201103L
-#ifndef _GXX_NULLPTR_T
-#define _GXX_NULLPTR_T
- typedef decltype(nullptr) nullptr_t;
-#endif
-#endif /* C++11. */
-
-#endif /* _STDDEF_H was defined this time */
-
-#endif /* !_STDDEF_H && !_STDDEF_H_ && !_ANSI_STDDEF_H && !__STDDEF_H__
- || __need_XXX was not defined before */
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/stdfix.h b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/stdfix.h
deleted file mode 100644
index 93e759a..0000000
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/stdfix.h
+++ /dev/null
@@ -1,204 +0,0 @@
-/* Copyright (C) 2007-2014 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC 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 General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-/* ISO/IEC JTC1 SC22 WG14 N1169
- * Date: 2006-04-04
- * ISO/IEC TR 18037
- * Programming languages - C - Extensions to support embedded processors
- */
-
-#ifndef _STDFIX_H
-#define _STDFIX_H
-
-/* 7.18a.1 Introduction. */
-
-#undef fract
-#undef accum
-#undef sat
-#define fract _Fract
-#define accum _Accum
-#define sat _Sat
-
-/* 7.18a.3 Precision macros. */
-
-#undef SFRACT_FBIT
-#undef SFRACT_MIN
-#undef SFRACT_MAX
-#undef SFRACT_EPSILON
-#define SFRACT_FBIT __SFRACT_FBIT__
-#define SFRACT_MIN __SFRACT_MIN__
-#define SFRACT_MAX __SFRACT_MAX__
-#define SFRACT_EPSILON __SFRACT_EPSILON__
-
-#undef USFRACT_FBIT
-#undef USFRACT_MIN
-#undef USFRACT_MAX
-#undef USFRACT_EPSILON
-#define USFRACT_FBIT __USFRACT_FBIT__
-#define USFRACT_MIN __USFRACT_MIN__ /* GCC extension. */
-#define USFRACT_MAX __USFRACT_MAX__
-#define USFRACT_EPSILON __USFRACT_EPSILON__
-
-#undef FRACT_FBIT
-#undef FRACT_MIN
-#undef FRACT_MAX
-#undef FRACT_EPSILON
-#define FRACT_FBIT __FRACT_FBIT__
-#define FRACT_MIN __FRACT_MIN__
-#define FRACT_MAX __FRACT_MAX__
-#define FRACT_EPSILON __FRACT_EPSILON__
-
-#undef UFRACT_FBIT
-#undef UFRACT_MIN
-#undef UFRACT_MAX
-#undef UFRACT_EPSILON
-#define UFRACT_FBIT __UFRACT_FBIT__
-#define UFRACT_MIN __UFRACT_MIN__ /* GCC extension. */
-#define UFRACT_MAX __UFRACT_MAX__
-#define UFRACT_EPSILON __UFRACT_EPSILON__
-
-#undef LFRACT_FBIT
-#undef LFRACT_MIN
-#undef LFRACT_MAX
-#undef LFRACT_EPSILON
-#define LFRACT_FBIT __LFRACT_FBIT__
-#define LFRACT_MIN __LFRACT_MIN__
-#define LFRACT_MAX __LFRACT_MAX__
-#define LFRACT_EPSILON __LFRACT_EPSILON__
-
-#undef ULFRACT_FBIT
-#undef ULFRACT_MIN
-#undef ULFRACT_MAX
-#undef ULFRACT_EPSILON
-#define ULFRACT_FBIT __ULFRACT_FBIT__
-#define ULFRACT_MIN __ULFRACT_MIN__ /* GCC extension. */
-#define ULFRACT_MAX __ULFRACT_MAX__
-#define ULFRACT_EPSILON __ULFRACT_EPSILON__
-
-#undef LLFRACT_FBIT
-#undef LLFRACT_MIN
-#undef LLFRACT_MAX
-#undef LLFRACT_EPSILON
-#define LLFRACT_FBIT __LLFRACT_FBIT__ /* GCC extension. */
-#define LLFRACT_MIN __LLFRACT_MIN__ /* GCC extension. */
-#define LLFRACT_MAX __LLFRACT_MAX__ /* GCC extension. */
-#define LLFRACT_EPSILON __LLFRACT_EPSILON__ /* GCC extension. */
-
-#undef ULLFRACT_FBIT
-#undef ULLFRACT_MIN
-#undef ULLFRACT_MAX
-#undef ULLFRACT_EPSILON
-#define ULLFRACT_FBIT __ULLFRACT_FBIT__ /* GCC extension. */
-#define ULLFRACT_MIN __ULLFRACT_MIN__ /* GCC extension. */
-#define ULLFRACT_MAX __ULLFRACT_MAX__ /* GCC extension. */
-#define ULLFRACT_EPSILON __ULLFRACT_EPSILON__ /* GCC extension. */
-
-#undef SACCUM_FBIT
-#undef SACCUM_IBIT
-#undef SACCUM_MIN
-#undef SACCUM_MAX
-#undef SACCUM_EPSILON
-#define SACCUM_FBIT __SACCUM_FBIT__
-#define SACCUM_IBIT __SACCUM_IBIT__
-#define SACCUM_MIN __SACCUM_MIN__
-#define SACCUM_MAX __SACCUM_MAX__
-#define SACCUM_EPSILON __SACCUM_EPSILON__
-
-#undef USACCUM_FBIT
-#undef USACCUM_IBIT
-#undef USACCUM_MIN
-#undef USACCUM_MAX
-#undef USACCUM_EPSILON
-#define USACCUM_FBIT __USACCUM_FBIT__
-#define USACCUM_IBIT __USACCUM_IBIT__
-#define USACCUM_MIN __USACCUM_MIN__ /* GCC extension. */
-#define USACCUM_MAX __USACCUM_MAX__
-#define USACCUM_EPSILON __USACCUM_EPSILON__
-
-#undef ACCUM_FBIT
-#undef ACCUM_IBIT
-#undef ACCUM_MIN
-#undef ACCUM_MAX
-#undef ACCUM_EPSILON
-#define ACCUM_FBIT __ACCUM_FBIT__
-#define ACCUM_IBIT __ACCUM_IBIT__
-#define ACCUM_MIN __ACCUM_MIN__
-#define ACCUM_MAX __ACCUM_MAX__
-#define ACCUM_EPSILON __ACCUM_EPSILON__
-
-#undef UACCUM_FBIT
-#undef UACCUM_IBIT
-#undef UACCUM_MIN
-#undef UACCUM_MAX
-#undef UACCUM_EPSILON
-#define UACCUM_FBIT __UACCUM_FBIT__
-#define UACCUM_IBIT __UACCUM_IBIT__
-#define UACCUM_MIN __UACCUM_MIN__ /* GCC extension. */
-#define UACCUM_MAX __UACCUM_MAX__
-#define UACCUM_EPSILON __UACCUM_EPSILON__
-
-#undef LACCUM_FBIT
-#undef LACCUM_IBIT
-#undef LACCUM_MIN
-#undef LACCUM_MAX
-#undef LACCUM_EPSILON
-#define LACCUM_FBIT __LACCUM_FBIT__
-#define LACCUM_IBIT __LACCUM_IBIT__
-#define LACCUM_MIN __LACCUM_MIN__
-#define LACCUM_MAX __LACCUM_MAX__
-#define LACCUM_EPSILON __LACCUM_EPSILON__
-
-#undef ULACCUM_FBIT
-#undef ULACCUM_IBIT
-#undef ULACCUM_MIN
-#undef ULACCUM_MAX
-#undef ULACCUM_EPSILON
-#define ULACCUM_FBIT __ULACCUM_FBIT__
-#define ULACCUM_IBIT __ULACCUM_IBIT__
-#define ULACCUM_MIN __ULACCUM_MIN__ /* GCC extension. */
-#define ULACCUM_MAX __ULACCUM_MAX__
-#define ULACCUM_EPSILON __ULACCUM_EPSILON__
-
-#undef LLACCUM_FBIT
-#undef LLACCUM_IBIT
-#undef LLACCUM_MIN
-#undef LLACCUM_MAX
-#undef LLACCUM_EPSILON
-#define LLACCUM_FBIT __LLACCUM_FBIT__ /* GCC extension. */
-#define LLACCUM_IBIT __LLACCUM_IBIT__ /* GCC extension. */
-#define LLACCUM_MIN __LLACCUM_MIN__ /* GCC extension. */
-#define LLACCUM_MAX __LLACCUM_MAX__ /* GCC extension. */
-#define LLACCUM_EPSILON __LLACCUM_EPSILON__ /* GCC extension. */
-
-#undef ULLACCUM_FBIT
-#undef ULLACCUM_IBIT
-#undef ULLACCUM_MIN
-#undef ULLACCUM_MAX
-#undef ULLACCUM_EPSILON
-#define ULLACCUM_FBIT __ULLACCUM_FBIT__ /* GCC extension. */
-#define ULLACCUM_IBIT __ULLACCUM_IBIT__ /* GCC extension. */
-#define ULLACCUM_MIN __ULLACCUM_MIN__ /* GCC extension. */
-#define ULLACCUM_MAX __ULLACCUM_MAX__ /* GCC extension. */
-#define ULLACCUM_EPSILON __ULLACCUM_EPSILON__ /* GCC extension. */
-
-#endif /* _STDFIX_H */
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/stdint-gcc.h b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/stdint-gcc.h
deleted file mode 100644
index 1470cea..0000000
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/stdint-gcc.h
+++ /dev/null
@@ -1,263 +0,0 @@
-/* Copyright (C) 2008-2014 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC 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 General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-/*
- * ISO C Standard: 7.18 Integer types <stdint.h>
- */
-
-#ifndef _GCC_STDINT_H
-#define _GCC_STDINT_H
-
-/* 7.8.1.1 Exact-width integer types */
-
-#ifdef __INT8_TYPE__
-typedef __INT8_TYPE__ int8_t;
-#endif
-#ifdef __INT16_TYPE__
-typedef __INT16_TYPE__ int16_t;
-#endif
-#ifdef __INT32_TYPE__
-typedef __INT32_TYPE__ int32_t;
-#endif
-#ifdef __INT64_TYPE__
-typedef __INT64_TYPE__ int64_t;
-#endif
-#ifdef __UINT8_TYPE__
-typedef __UINT8_TYPE__ uint8_t;
-#endif
-#ifdef __UINT16_TYPE__
-typedef __UINT16_TYPE__ uint16_t;
-#endif
-#ifdef __UINT32_TYPE__
-typedef __UINT32_TYPE__ uint32_t;
-#endif
-#ifdef __UINT64_TYPE__
-typedef __UINT64_TYPE__ uint64_t;
-#endif
-
-/* 7.8.1.2 Minimum-width integer types */
-
-typedef __INT_LEAST8_TYPE__ int_least8_t;
-typedef __INT_LEAST16_TYPE__ int_least16_t;
-typedef __INT_LEAST32_TYPE__ int_least32_t;
-typedef __INT_LEAST64_TYPE__ int_least64_t;
-typedef __UINT_LEAST8_TYPE__ uint_least8_t;
-typedef __UINT_LEAST16_TYPE__ uint_least16_t;
-typedef __UINT_LEAST32_TYPE__ uint_least32_t;
-typedef __UINT_LEAST64_TYPE__ uint_least64_t;
-
-/* 7.8.1.3 Fastest minimum-width integer types */
-
-typedef __INT_FAST8_TYPE__ int_fast8_t;
-typedef __INT_FAST16_TYPE__ int_fast16_t;
-typedef __INT_FAST32_TYPE__ int_fast32_t;
-typedef __INT_FAST64_TYPE__ int_fast64_t;
-typedef __UINT_FAST8_TYPE__ uint_fast8_t;
-typedef __UINT_FAST16_TYPE__ uint_fast16_t;
-typedef __UINT_FAST32_TYPE__ uint_fast32_t;
-typedef __UINT_FAST64_TYPE__ uint_fast64_t;
-
-/* 7.8.1.4 Integer types capable of holding object pointers */
-
-#ifdef __INTPTR_TYPE__
-typedef __INTPTR_TYPE__ intptr_t;
-#endif
-#ifdef __UINTPTR_TYPE__
-typedef __UINTPTR_TYPE__ uintptr_t;
-#endif
-
-/* 7.8.1.5 Greatest-width integer types */
-
-typedef __INTMAX_TYPE__ intmax_t;
-typedef __UINTMAX_TYPE__ uintmax_t;
-
-#if (!defined __cplusplus || __cplusplus >= 201103L \
- || defined __STDC_LIMIT_MACROS)
-
-/* 7.18.2 Limits of specified-width integer types */
-
-#ifdef __INT8_MAX__
-# undef INT8_MAX
-# define INT8_MAX __INT8_MAX__
-# undef INT8_MIN
-# define INT8_MIN (-INT8_MAX - 1)
-#endif
-#ifdef __UINT8_MAX__
-# undef UINT8_MAX
-# define UINT8_MAX __UINT8_MAX__
-#endif
-#ifdef __INT16_MAX__
-# undef INT16_MAX
-# define INT16_MAX __INT16_MAX__
-# undef INT16_MIN
-# define INT16_MIN (-INT16_MAX - 1)
-#endif
-#ifdef __UINT16_MAX__
-# undef UINT16_MAX
-# define UINT16_MAX __UINT16_MAX__
-#endif
-#ifdef __INT32_MAX__
-# undef INT32_MAX
-# define INT32_MAX __INT32_MAX__
-# undef INT32_MIN
-# define INT32_MIN (-INT32_MAX - 1)
-#endif
-#ifdef __UINT32_MAX__
-# undef UINT32_MAX
-# define UINT32_MAX __UINT32_MAX__
-#endif
-#ifdef __INT64_MAX__
-# undef INT64_MAX
-# define INT64_MAX __INT64_MAX__
-# undef INT64_MIN
-# define INT64_MIN (-INT64_MAX - 1)
-#endif
-#ifdef __UINT64_MAX__
-# undef UINT64_MAX
-# define UINT64_MAX __UINT64_MAX__
-#endif
-
-#undef INT_LEAST8_MAX
-#define INT_LEAST8_MAX __INT_LEAST8_MAX__
-#undef INT_LEAST8_MIN
-#define INT_LEAST8_MIN (-INT_LEAST8_MAX - 1)
-#undef UINT_LEAST8_MAX
-#define UINT_LEAST8_MAX __UINT_LEAST8_MAX__
-#undef INT_LEAST16_MAX
-#define INT_LEAST16_MAX __INT_LEAST16_MAX__
-#undef INT_LEAST16_MIN
-#define INT_LEAST16_MIN (-INT_LEAST16_MAX - 1)
-#undef UINT_LEAST16_MAX
-#define UINT_LEAST16_MAX __UINT_LEAST16_MAX__
-#undef INT_LEAST32_MAX
-#define INT_LEAST32_MAX __INT_LEAST32_MAX__
-#undef INT_LEAST32_MIN
-#define INT_LEAST32_MIN (-INT_LEAST32_MAX - 1)
-#undef UINT_LEAST32_MAX
-#define UINT_LEAST32_MAX __UINT_LEAST32_MAX__
-#undef INT_LEAST64_MAX
-#define INT_LEAST64_MAX __INT_LEAST64_MAX__
-#undef INT_LEAST64_MIN
-#define INT_LEAST64_MIN (-INT_LEAST64_MAX - 1)
-#undef UINT_LEAST64_MAX
-#define UINT_LEAST64_MAX __UINT_LEAST64_MAX__
-
-#undef INT_FAST8_MAX
-#define INT_FAST8_MAX __INT_FAST8_MAX__
-#undef INT_FAST8_MIN
-#define INT_FAST8_MIN (-INT_FAST8_MAX - 1)
-#undef UINT_FAST8_MAX
-#define UINT_FAST8_MAX __UINT_FAST8_MAX__
-#undef INT_FAST16_MAX
-#define INT_FAST16_MAX __INT_FAST16_MAX__
-#undef INT_FAST16_MIN
-#define INT_FAST16_MIN (-INT_FAST16_MAX - 1)
-#undef UINT_FAST16_MAX
-#define UINT_FAST16_MAX __UINT_FAST16_MAX__
-#undef INT_FAST32_MAX
-#define INT_FAST32_MAX __INT_FAST32_MAX__
-#undef INT_FAST32_MIN
-#define INT_FAST32_MIN (-INT_FAST32_MAX - 1)
-#undef UINT_FAST32_MAX
-#define UINT_FAST32_MAX __UINT_FAST32_MAX__
-#undef INT_FAST64_MAX
-#define INT_FAST64_MAX __INT_FAST64_MAX__
-#undef INT_FAST64_MIN
-#define INT_FAST64_MIN (-INT_FAST64_MAX - 1)
-#undef UINT_FAST64_MAX
-#define UINT_FAST64_MAX __UINT_FAST64_MAX__
-
-#ifdef __INTPTR_MAX__
-# undef INTPTR_MAX
-# define INTPTR_MAX __INTPTR_MAX__
-# undef INTPTR_MIN
-# define INTPTR_MIN (-INTPTR_MAX - 1)
-#endif
-#ifdef __UINTPTR_MAX__
-# undef UINTPTR_MAX
-# define UINTPTR_MAX __UINTPTR_MAX__
-#endif
-
-#undef INTMAX_MAX
-#define INTMAX_MAX __INTMAX_MAX__
-#undef INTMAX_MIN
-#define INTMAX_MIN (-INTMAX_MAX - 1)
-#undef UINTMAX_MAX
-#define UINTMAX_MAX __UINTMAX_MAX__
-
-/* 7.18.3 Limits of other integer types */
-
-#undef PTRDIFF_MAX
-#define PTRDIFF_MAX __PTRDIFF_MAX__
-#undef PTRDIFF_MIN
-#define PTRDIFF_MIN (-PTRDIFF_MAX - 1)
-
-#undef SIG_ATOMIC_MAX
-#define SIG_ATOMIC_MAX __SIG_ATOMIC_MAX__
-#undef SIG_ATOMIC_MIN
-#define SIG_ATOMIC_MIN __SIG_ATOMIC_MIN__
-
-#undef SIZE_MAX
-#define SIZE_MAX __SIZE_MAX__
-
-#undef WCHAR_MAX
-#define WCHAR_MAX __WCHAR_MAX__
-#undef WCHAR_MIN
-#define WCHAR_MIN __WCHAR_MIN__
-
-#undef WINT_MAX
-#define WINT_MAX __WINT_MAX__
-#undef WINT_MIN
-#define WINT_MIN __WINT_MIN__
-
-#endif /* (!defined __cplusplus || __cplusplus >= 201103L
- || defined __STDC_LIMIT_MACROS) */
-
-#if (!defined __cplusplus || __cplusplus >= 201103L \
- || defined __STDC_CONSTANT_MACROS)
-
-#undef INT8_C
-#define INT8_C(c) __INT8_C(c)
-#undef INT16_C
-#define INT16_C(c) __INT16_C(c)
-#undef INT32_C
-#define INT32_C(c) __INT32_C(c)
-#undef INT64_C
-#define INT64_C(c) __INT64_C(c)
-#undef UINT8_C
-#define UINT8_C(c) __UINT8_C(c)
-#undef UINT16_C
-#define UINT16_C(c) __UINT16_C(c)
-#undef UINT32_C
-#define UINT32_C(c) __UINT32_C(c)
-#undef UINT64_C
-#define UINT64_C(c) __UINT64_C(c)
-#undef INTMAX_C
-#define INTMAX_C(c) __INTMAX_C(c)
-#undef UINTMAX_C
-#define UINTMAX_C(c) __UINTMAX_C(c)
-
-#endif /* (!defined __cplusplus || __cplusplus >= 201103L
- || defined __STDC_CONSTANT_MACROS) */
-
-#endif /* _GCC_STDINT_H */
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/stdnoreturn.h b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/stdnoreturn.h
deleted file mode 100644
index 0134137..0000000
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/stdnoreturn.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright (C) 2011-2014 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC 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 General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-/* ISO C1X: 7.23 _Noreturn <stdnoreturn.h>. */
-
-#ifndef _STDNORETURN_H
-#define _STDNORETURN_H
-
-#ifndef __cplusplus
-
-#define noreturn _Noreturn
-
-#endif
-
-#endif /* stdnoreturn.h */
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/unwind.h b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/unwind.h
deleted file mode 100644
index d351fb9..0000000
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/include/unwind.h
+++ /dev/null
@@ -1,293 +0,0 @@
-/* Exception handling and frame unwind runtime interface routines.
- Copyright (C) 2001-2014 Free Software Foundation, Inc.
-
- This file is part of GCC.
-
- GCC is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- GCC 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 General Public
- License for more details.
-
- Under Section 7 of GPL version 3, you are granted additional
- permissions described in the GCC Runtime Library Exception, version
- 3.1, as published by the Free Software Foundation.
-
- You should have received a copy of the GNU General Public License and
- a copy of the GCC Runtime Library Exception along with this program;
- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- <http://www.gnu.org/licenses/>. */
-
-/* This is derived from the C++ ABI for IA-64. Where we diverge
- for cross-architecture compatibility are noted with "@@@". */
-
-#ifndef _UNWIND_H
-#define _UNWIND_H
-
-#if defined (__SEH__) && !defined (__USING_SJLJ_EXCEPTIONS__)
-/* Only for _GCC_specific_handler. */
-#include <windows.h>
-#endif
-
-#ifndef HIDE_EXPORTS
-#pragma GCC visibility push(default)
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Level 1: Base ABI */
-
-/* @@@ The IA-64 ABI uses uint64 throughout. Most places this is
- inefficient for 32-bit and smaller machines. */
-typedef unsigned _Unwind_Word __attribute__((__mode__(__unwind_word__)));
-typedef signed _Unwind_Sword __attribute__((__mode__(__unwind_word__)));
-#if defined(__ia64__) && defined(__hpux__)
-typedef unsigned _Unwind_Ptr __attribute__((__mode__(__word__)));
-#else
-typedef unsigned _Unwind_Ptr __attribute__((__mode__(__pointer__)));
-#endif
-typedef unsigned _Unwind_Internal_Ptr __attribute__((__mode__(__pointer__)));
-
-/* @@@ The IA-64 ABI uses a 64-bit word to identify the producer and
- consumer of an exception. We'll go along with this for now even on
- 32-bit machines. We'll need to provide some other option for
- 16-bit machines and for machines with > 8 bits per byte. */
-typedef unsigned _Unwind_Exception_Class __attribute__((__mode__(__DI__)));
-
-/* The unwind interface uses reason codes in several contexts to
- identify the reasons for failures or other actions. */
-typedef enum
-{
- _URC_NO_REASON = 0,
- _URC_FOREIGN_EXCEPTION_CAUGHT = 1,
- _URC_FATAL_PHASE2_ERROR = 2,
- _URC_FATAL_PHASE1_ERROR = 3,
- _URC_NORMAL_STOP = 4,
- _URC_END_OF_STACK = 5,
- _URC_HANDLER_FOUND = 6,
- _URC_INSTALL_CONTEXT = 7,
- _URC_CONTINUE_UNWIND = 8
-} _Unwind_Reason_Code;
-
-
-/* The unwind interface uses a pointer to an exception header object
- as its representation of an exception being thrown. In general, the
- full representation of an exception object is language- and
- implementation-specific, but it will be prefixed by a header
- understood by the unwind interface. */
-
-struct _Unwind_Exception;
-
-typedef void (*_Unwind_Exception_Cleanup_Fn) (_Unwind_Reason_Code,
- struct _Unwind_Exception *);
-
-struct _Unwind_Exception
-{
- _Unwind_Exception_Class exception_class;
- _Unwind_Exception_Cleanup_Fn exception_cleanup;
-
-#if !defined (__USING_SJLJ_EXCEPTIONS__) && defined (__SEH__)
- _Unwind_Word private_[6];
-#else
- _Unwind_Word private_1;
- _Unwind_Word private_2;
-#endif
-
- /* @@@ The IA-64 ABI says that this structure must be double-word aligned.
- Taking that literally does not make much sense generically. Instead we
- provide the maximum alignment required by any type for the machine. */
-} __attribute__((__aligned__));
-
-
-/* The ACTIONS argument to the personality routine is a bitwise OR of one
- or more of the following constants. */
-typedef int _Unwind_Action;
-
-#define _UA_SEARCH_PHASE 1
-#define _UA_CLEANUP_PHASE 2
-#define _UA_HANDLER_FRAME 4
-#define _UA_FORCE_UNWIND 8
-#define _UA_END_OF_STACK 16
-
-/* The target can override this macro to define any back-end-specific
- attributes required for the lowest-level stack frame. */
-#ifndef LIBGCC2_UNWIND_ATTRIBUTE
-#define LIBGCC2_UNWIND_ATTRIBUTE
-#endif
-
-/* This is an opaque type used to refer to a system-specific data
- structure used by the system unwinder. This context is created and
- destroyed by the system, and passed to the personality routine
- during unwinding. */
-struct _Unwind_Context;
-
-/* Raise an exception, passing along the given exception object. */
-extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE
-_Unwind_RaiseException (struct _Unwind_Exception *);
-
-/* Raise an exception for forced unwinding. */
-
-typedef _Unwind_Reason_Code (*_Unwind_Stop_Fn)
- (int, _Unwind_Action, _Unwind_Exception_Class,
- struct _Unwind_Exception *, struct _Unwind_Context *, void *);
-
-extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE
-_Unwind_ForcedUnwind (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *);
-
-/* Helper to invoke the exception_cleanup routine. */
-extern void _Unwind_DeleteException (struct _Unwind_Exception *);
-
-/* Resume propagation of an existing exception. This is used after
- e.g. executing cleanup code, and not to implement rethrowing. */
-extern void LIBGCC2_UNWIND_ATTRIBUTE
-_Unwind_Resume (struct _Unwind_Exception *);
-
-/* @@@ Resume propagation of a FORCE_UNWIND exception, or to rethrow
- a normal exception that was handled. */
-extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE
-_Unwind_Resume_or_Rethrow (struct _Unwind_Exception *);
-
-/* @@@ Use unwind data to perform a stack backtrace. The trace callback
- is called for every stack frame in the call chain, but no cleanup
- actions are performed. */
-typedef _Unwind_Reason_Code (*_Unwind_Trace_Fn)
- (struct _Unwind_Context *, void *);
-
-extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE
-_Unwind_Backtrace (_Unwind_Trace_Fn, void *);
-
-/* These functions are used for communicating information about the unwind
- context (i.e. the unwind descriptors and the user register state) between
- the unwind library and the personality routine and landing pad. Only
- selected registers may be manipulated. */
-
-extern _Unwind_Word _Unwind_GetGR (struct _Unwind_Context *, int);
-extern void _Unwind_SetGR (struct _Unwind_Context *, int, _Unwind_Word);
-
-extern _Unwind_Ptr _Unwind_GetIP (struct _Unwind_Context *);
-extern _Unwind_Ptr _Unwind_GetIPInfo (struct _Unwind_Context *, int *);
-extern void _Unwind_SetIP (struct _Unwind_Context *, _Unwind_Ptr);
-
-/* @@@ Retrieve the CFA of the given context. */
-extern _Unwind_Word _Unwind_GetCFA (struct _Unwind_Context *);
-
-extern void *_Unwind_GetLanguageSpecificData (struct _Unwind_Context *);
-
-extern _Unwind_Ptr _Unwind_GetRegionStart (struct _Unwind_Context *);
-
-
-/* The personality routine is the function in the C++ (or other language)
- runtime library which serves as an interface between the system unwind
- library and language-specific exception handling semantics. It is
- specific to the code fragment described by an unwind info block, and
- it is always referenced via the pointer in the unwind info block, and
- hence it has no ABI-specified name.
-
- Note that this implies that two different C++ implementations can
- use different names, and have different contents in the language
- specific data area. Moreover, that the language specific data
- area contains no version info because name of the function invoked
- provides more effective versioning by detecting at link time the
- lack of code to handle the different data format. */
-
-typedef _Unwind_Reason_Code (*_Unwind_Personality_Fn)
- (int, _Unwind_Action, _Unwind_Exception_Class,
- struct _Unwind_Exception *, struct _Unwind_Context *);
-
-/* @@@ The following alternate entry points are for setjmp/longjmp
- based unwinding. */
-
-struct SjLj_Function_Context;
-extern void _Unwind_SjLj_Register (struct SjLj_Function_Context *);
-extern void _Unwind_SjLj_Unregister (struct SjLj_Function_Context *);
-
-extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE
-_Unwind_SjLj_RaiseException (struct _Unwind_Exception *);
-extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE
-_Unwind_SjLj_ForcedUnwind (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *);
-extern void LIBGCC2_UNWIND_ATTRIBUTE
-_Unwind_SjLj_Resume (struct _Unwind_Exception *);
-extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE
-_Unwind_SjLj_Resume_or_Rethrow (struct _Unwind_Exception *);
-
-/* @@@ The following provide access to the base addresses for text
- and data-relative addressing in the LDSA. In order to stay link
- compatible with the standard ABI for IA-64, we inline these. */
-
-#ifdef __ia64__
-#include <stdlib.h>
-
-static inline _Unwind_Ptr
-_Unwind_GetDataRelBase (struct _Unwind_Context *_C)
-{
- /* The GP is stored in R1. */
- return _Unwind_GetGR (_C, 1);
-}
-
-static inline _Unwind_Ptr
-_Unwind_GetTextRelBase (struct _Unwind_Context *_C __attribute__ ((__unused__)))
-{
- abort ();
- return 0;
-}
-
-/* @@@ Retrieve the Backing Store Pointer of the given context. */
-extern _Unwind_Word _Unwind_GetBSP (struct _Unwind_Context *);
-#else
-extern _Unwind_Ptr _Unwind_GetDataRelBase (struct _Unwind_Context *);
-extern _Unwind_Ptr _Unwind_GetTextRelBase (struct _Unwind_Context *);
-#endif
-
-/* @@@ Given an address, return the entry point of the function that
- contains it. */
-extern void * _Unwind_FindEnclosingFunction (void *pc);
-
-#ifndef __SIZEOF_LONG__
- #error "__SIZEOF_LONG__ macro not defined"
-#endif
-
-#ifndef __SIZEOF_POINTER__
- #error "__SIZEOF_POINTER__ macro not defined"
-#endif
-
-
-/* leb128 type numbers have a potentially unlimited size.
- The target of the following definitions of _sleb128_t and _uleb128_t
- is to have efficient data types large enough to hold the leb128 type
- numbers used in the unwind code.
- Mostly these types will simply be defined to long and unsigned long
- except when a unsigned long data type on the target machine is not
- capable of storing a pointer. */
-
-#if __SIZEOF_LONG__ >= __SIZEOF_POINTER__
- typedef long _sleb128_t;
- typedef unsigned long _uleb128_t;
-#elif __SIZEOF_LONG_LONG__ >= __SIZEOF_POINTER__
- typedef long long _sleb128_t;
- typedef unsigned long long _uleb128_t;
-#else
-# error "What type shall we use for _sleb128_t?"
-#endif
-
-#if defined (__SEH__) && !defined (__USING_SJLJ_EXCEPTIONS__)
-/* Handles the mapping from SEH to GCC interfaces. */
-EXCEPTION_DISPOSITION _GCC_specific_handler (PEXCEPTION_RECORD, void *,
- PCONTEXT, PDISPATCHER_CONTEXT,
- _Unwind_Personality_Fn);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#ifndef HIDE_EXPORTS
-#pragma GCC visibility pop
-#endif
-
-#endif /* unwind.h */
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/install-tools/include/limits.h b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/install-tools/include/limits.h
deleted file mode 100644
index 8c6a4d3..0000000
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/install-tools/include/limits.h
+++ /dev/null
@@ -1,171 +0,0 @@
-/* Copyright (C) 1992-2014 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC 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 General Public License
-for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-/* This administrivia gets added to the beginning of limits.h
- if the system has its own version of limits.h. */
-
-/* We use _GCC_LIMITS_H_ because we want this not to match
- any macros that the system's limits.h uses for its own purposes. */
-#ifndef _GCC_LIMITS_H_ /* Terminated in limity.h. */
-#define _GCC_LIMITS_H_
-
-#ifndef _LIBC_LIMITS_H_
-/* Use "..." so that we find syslimits.h only in this same directory. */
-#include "syslimits.h"
-#endif
-/* Copyright (C) 1991-2014 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC 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 General Public License
-for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#ifndef _LIMITS_H___
-#define _LIMITS_H___
-
-/* Number of bits in a `char'. */
-#undef CHAR_BIT
-#define CHAR_BIT __CHAR_BIT__
-
-/* Maximum length of a multibyte character. */
-#ifndef MB_LEN_MAX
-#define MB_LEN_MAX 1
-#endif
-
-/* Minimum and maximum values a `signed char' can hold. */
-#undef SCHAR_MIN
-#define SCHAR_MIN (-SCHAR_MAX - 1)
-#undef SCHAR_MAX
-#define SCHAR_MAX __SCHAR_MAX__
-
-/* Maximum value an `unsigned char' can hold. (Minimum is 0). */
-#undef UCHAR_MAX
-#if __SCHAR_MAX__ == __INT_MAX__
-# define UCHAR_MAX (SCHAR_MAX * 2U + 1U)
-#else
-# define UCHAR_MAX (SCHAR_MAX * 2 + 1)
-#endif
-
-/* Minimum and maximum values a `char' can hold. */
-#ifdef __CHAR_UNSIGNED__
-# undef CHAR_MIN
-# if __SCHAR_MAX__ == __INT_MAX__
-# define CHAR_MIN 0U
-# else
-# define CHAR_MIN 0
-# endif
-# undef CHAR_MAX
-# define CHAR_MAX UCHAR_MAX
-#else
-# undef CHAR_MIN
-# define CHAR_MIN SCHAR_MIN
-# undef CHAR_MAX
-# define CHAR_MAX SCHAR_MAX
-#endif
-
-/* Minimum and maximum values a `signed short int' can hold. */
-#undef SHRT_MIN
-#define SHRT_MIN (-SHRT_MAX - 1)
-#undef SHRT_MAX
-#define SHRT_MAX __SHRT_MAX__
-
-/* Maximum value an `unsigned short int' can hold. (Minimum is 0). */
-#undef USHRT_MAX
-#if __SHRT_MAX__ == __INT_MAX__
-# define USHRT_MAX (SHRT_MAX * 2U + 1U)
-#else
-# define USHRT_MAX (SHRT_MAX * 2 + 1)
-#endif
-
-/* Minimum and maximum values a `signed int' can hold. */
-#undef INT_MIN
-#define INT_MIN (-INT_MAX - 1)
-#undef INT_MAX
-#define INT_MAX __INT_MAX__
-
-/* Maximum value an `unsigned int' can hold. (Minimum is 0). */
-#undef UINT_MAX
-#define UINT_MAX (INT_MAX * 2U + 1U)
-
-/* Minimum and maximum values a `signed long int' can hold.
- (Same as `int'). */
-#undef LONG_MIN
-#define LONG_MIN (-LONG_MAX - 1L)
-#undef LONG_MAX
-#define LONG_MAX __LONG_MAX__
-
-/* Maximum value an `unsigned long int' can hold. (Minimum is 0). */
-#undef ULONG_MAX
-#define ULONG_MAX (LONG_MAX * 2UL + 1UL)
-
-#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-/* Minimum and maximum values a `signed long long int' can hold. */
-# undef LLONG_MIN
-# define LLONG_MIN (-LLONG_MAX - 1LL)
-# undef LLONG_MAX
-# define LLONG_MAX __LONG_LONG_MAX__
-
-/* Maximum value an `unsigned long long int' can hold. (Minimum is 0). */
-# undef ULLONG_MAX
-# define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL)
-#endif
-
-#if defined (__GNU_LIBRARY__) ? defined (__USE_GNU) : !defined (__STRICT_ANSI__)
-/* Minimum and maximum values a `signed long long int' can hold. */
-# undef LONG_LONG_MIN
-# define LONG_LONG_MIN (-LONG_LONG_MAX - 1LL)
-# undef LONG_LONG_MAX
-# define LONG_LONG_MAX __LONG_LONG_MAX__
-
-/* Maximum value an `unsigned long long int' can hold. (Minimum is 0). */
-# undef ULONG_LONG_MAX
-# define ULONG_LONG_MAX (LONG_LONG_MAX * 2ULL + 1ULL)
-#endif
-
-#endif /* _LIMITS_H___ */
-/* This administrivia gets added to the end of limits.h
- if the system has its own version of limits.h. */
-
-#else /* not _GCC_LIMITS_H_ */
-
-#ifdef _GCC_NEXT_LIMITS_H
-#include_next <limits.h> /* recurse down to the real one */
-#endif
-
-#endif /* not _GCC_LIMITS_H_ */
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/install-tools/mkheaders.conf b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/install-tools/mkheaders.conf
deleted file mode 100644
index 2855c3a..0000000
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/install-tools/mkheaders.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-SYSTEM_HEADER_DIR="/usr/local/google/home/smcgruer/Desktop/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/sysroot${sysroot_headers_suffix}/usr/include"
-OTHER_FIXINCLUDES_DIRS=""
-STMP_FIXINC="stmp-fixinc"
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/libgcc.a b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/libgcc.a
deleted file mode 100644
index 859b0da..0000000
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/libgcc.a
+++ /dev/null
Binary files differ
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/libgcc_eh.a b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/libgcc_eh.a
deleted file mode 100644
index 56cd837..0000000
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/libgcc_eh.a
+++ /dev/null
Binary files differ
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/libgcov.a b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/libgcov.a
deleted file mode 100644
index 92dcbda..0000000
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/libgcov.a
+++ /dev/null
Binary files differ
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/plugin/gtype.state b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/plugin/gtype.state
deleted file mode 100644
index 5175756..0000000
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/plugin/gtype.state
+++ /dev/null
@@ -1,27966 +0,0 @@
-;;;;@@@@ GCC gengtype state
-;;; DON'T EDIT THIS FILE, since generated by GCC's gengtype
-;;; The format of this file is tied to a particular version of GCC.
-;;; Don't parse this file wihout knowing GCC gengtype internals.
-;;; This file should be parsed by the same gengtype which wrote it.
-
-(!version "4.9.1")
-(!srcdir "../../gcc")
-(!languages 9 ada c cp fortran go java lto objc objcp)
-(!fileslist 191
- (!srcfile 511 "../libcpp/include/line-map.h")
- (!srcfile 511 "../libcpp/include/cpplib.h")
- (!srcfile 511 "../libcpp/include/cpp-id-data.h")
- (!srcfile 511 "input.h")
- (!srcfile 511 "coretypes.h")
- (!file 511 "auto-host.h")
- (!srcfile 511 "../include/ansidecl.h")
- (!file 511 "options.h")
- (!srcfile 511 "config/dbxelf.h")
- (!srcfile 511 "config/elfos.h")
- (!srcfile 511 "config/gnu-user.h")
- (!srcfile 511 "config/linux.h")
- (!srcfile 511 "config/linux-android.h")
- (!srcfile 511 "config/glibc-stdint.h")
- (!srcfile 511 "config/vxworks-dummy.h")
- (!srcfile 511 "config/mips/mips.h")
- (!srcfile 511 "config/mips/gnu-user.h")
- (!srcfile 511 "config/mips/linux.h")
- (!srcfile 511 "config/mips/linux-common.h")
- (!srcfile 511 "config/initfini-array.h")
- (!srcfile 511 "defaults.h")
- (!srcfile 511 "../include/hashtab.h")
- (!srcfile 511 "../include/splay-tree.h")
- (!srcfile 511 "bitmap.h")
- (!srcfile 511 "alias.h")
- (!srcfile 511 "coverage.c")
- (!srcfile 511 "rtl.h")
- (!srcfile 511 "optabs.h")
- (!srcfile 511 "tree.h")
- (!srcfile 511 "tree-core.h")
- (!srcfile 511 "libfuncs.h")
- (!srcfile 511 "../libcpp/include/symtab.h")
- (!srcfile 511 "../include/obstack.h")
- (!srcfile 511 "real.h")
- (!srcfile 511 "function.h")
- (!srcfile 511 "insn-addr.h")
- (!srcfile 511 "hwint.h")
- (!srcfile 511 "fixed-value.h")
- (!srcfile 511 "output.h")
- (!srcfile 511 "cfgloop.h")
- (!srcfile 511 "cselib.h")
- (!srcfile 511 "basic-block.h")
- (!srcfile 511 "ipa-ref.h")
- (!srcfile 511 "cgraph.h")
- (!srcfile 511 "reload.h")
- (!srcfile 511 "caller-save.c")
- (!srcfile 511 "symtab.c")
- (!srcfile 511 "alias.c")
- (!srcfile 511 "bitmap.c")
- (!srcfile 511 "cselib.c")
- (!srcfile 511 "cgraph.c")
- (!srcfile 511 "ipa-prop.c")
- (!srcfile 511 "ipa-cp.c")
- (!srcfile 511 "ipa-utils.h")
- (!srcfile 511 "dbxout.c")
- (!srcfile 511 "dwarf2out.h")
- (!srcfile 511 "dwarf2asm.c")
- (!srcfile 511 "dwarf2cfi.c")
- (!srcfile 511 "dwarf2out.c")
- (!srcfile 511 "tree-vect-generic.c")
- (!srcfile 511 "dojump.c")
- (!srcfile 511 "emit-rtl.c")
- (!srcfile 511 "except.h")
- (!srcfile 511 "explow.c")
- (!srcfile 511 "expr.c")
- (!srcfile 511 "expr.h")
- (!srcfile 511 "function.c")
- (!srcfile 511 "except.c")
- (!srcfile 511 "gcse.c")
- (!srcfile 511 "godump.c")
- (!srcfile 511 "lists.c")
- (!srcfile 511 "optabs.c")
- (!srcfile 511 "profile.c")
- (!srcfile 511 "mcf.c")
- (!srcfile 511 "reg-stack.c")
- (!srcfile 511 "cfgrtl.c")
- (!srcfile 511 "sdbout.c")
- (!srcfile 511 "stor-layout.c")
- (!srcfile 511 "stringpool.c")
- (!srcfile 511 "tree.c")
- (!srcfile 511 "varasm.c")
- (!srcfile 511 "gimple.h")
- (!srcfile 511 "gimple-ssa.h")
- (!srcfile 511 "tree-ssanames.c")
- (!srcfile 511 "tree-eh.c")
- (!srcfile 511 "tree-ssa-address.c")
- (!srcfile 511 "tree-cfg.c")
- (!srcfile 511 "tree-dfa.c")
- (!srcfile 511 "tree-iterator.c")
- (!srcfile 511 "gimple-expr.c")
- (!srcfile 511 "tree-chrec.h")
- (!srcfile 511 "tree-scalar-evolution.c")
- (!srcfile 511 "tree-ssa-operands.h")
- (!srcfile 511 "tree-profile.c")
- (!srcfile 511 "tree-nested.c")
- (!srcfile 511 "tree-parloops.c")
- (!srcfile 511 "omp-low.c")
- (!srcfile 511 "targhooks.c")
- (!srcfile 511 "config/mips/mips.c")
- (!srcfile 511 "passes.c")
- (!srcfile 511 "cgraphunit.c")
- (!srcfile 511 "cgraphclones.c")
- (!srcfile 511 "tree-ssa-propagate.c")
- (!srcfile 511 "tree-phinodes.c")
- (!srcfile 511 "tree-ssa-alias.h")
- (!srcfile 511 "tree-ssanames.h")
- (!srcfile 511 "ipa-prop.h")
- (!srcfile 511 "trans-mem.c")
- (!srcfile 511 "lto-streamer.h")
- (!srcfile 511 "target-globals.h")
- (!srcfile 511 "ipa-inline.h")
- (!srcfile 511 "vtable-verify.c")
- (!srcfile 511 "asan.c")
- (!srcfile 511 "ubsan.c")
- (!srcfile 511 "tsan.c")
- (!srcfile 511 "ipa-devirt.c")
- (!srcfile 1 "ada/gcc-interface/ada-tree.h")
- (!srcfile 1 "ada/gcc-interface/gigi.h")
- (!srcfile 1 "ada/gcc-interface/decl.c")
- (!srcfile 1 "ada/gcc-interface/trans.c")
- (!srcfile 1 "ada/gcc-interface/utils.c")
- (!srcfile 1 "ada/gcc-interface/misc.c")
- (!srcfile 2 "c/c-lang.c")
- (!srcfile 130 "c/c-tree.h")
- (!srcfile 130 "c/c-decl.c")
- (!srcfile 390 "c-family/c-common.c")
- (!srcfile 390 "c-family/c-common.h")
- (!srcfile 390 "c-family/c-objc.h")
- (!srcfile 386 "c-family/c-cppbuiltin.c")
- (!srcfile 390 "c-family/c-pragma.h")
- (!srcfile 390 "c-family/c-pragma.c")
- (!srcfile 130 "c/c-objc-common.c")
- (!srcfile 130 "c/c-parser.c")
- (!srcfile 130 "c/c-lang.h")
- (!srcfile 260 "cp/rtti.c")
- (!srcfile 260 "cp/mangle.c")
- (!srcfile 260 "cp/name-lookup.h")
- (!srcfile 260 "cp/name-lookup.c")
- (!srcfile 260 "cp/cp-tree.h")
- (!srcfile 260 "cp/decl.h")
- (!srcfile 260 "cp/call.c")
- (!srcfile 260 "cp/decl.c")
- (!srcfile 260 "cp/decl2.c")
- (!srcfile 260 "cp/pt.c")
- (!srcfile 260 "cp/repo.c")
- (!srcfile 260 "cp/semantics.c")
- (!srcfile 260 "cp/tree.c")
- (!srcfile 260 "cp/parser.h")
- (!srcfile 260 "cp/parser.c")
- (!srcfile 260 "cp/method.c")
- (!srcfile 260 "cp/typeck2.c")
- (!srcfile 260 "c-family/c-lex.c")
- (!srcfile 260 "cp/class.c")
- (!srcfile 260 "cp/cp-objcp-common.c")
- (!srcfile 4 "cp/cp-lang.c")
- (!srcfile 4 "cp/except.c")
- (!srcfile 4 "cp/vtable-class-hierarchy.c")
- (!srcfile 8 "fortran/f95-lang.c")
- (!srcfile 8 "fortran/trans-decl.c")
- (!srcfile 8 "fortran/trans-intrinsic.c")
- (!srcfile 8 "fortran/trans-io.c")
- (!srcfile 8 "fortran/trans-stmt.c")
- (!srcfile 8 "fortran/trans-types.c")
- (!srcfile 8 "fortran/trans-types.h")
- (!srcfile 8 "fortran/trans.h")
- (!srcfile 8 "fortran/trans-const.h")
- (!srcfile 16 "go/go-lang.c")
- (!srcfile 16 "go/go-c.h")
- (!srcfile 32 "java/java-tree.h")
- (!srcfile 32 "java/jcf.h")
- (!srcfile 32 "java/parse.h")
- (!srcfile 32 "java/builtins.c")
- (!srcfile 32 "java/class.c")
- (!srcfile 32 "java/constants.c")
- (!srcfile 32 "java/decl.c")
- (!srcfile 32 "java/expr.c")
- (!srcfile 32 "java/jcf-parse.c")
- (!srcfile 32 "java/lang.c")
- (!srcfile 32 "java/mangle.c")
- (!srcfile 32 "java/resource.c")
- (!srcfile 64 "lto/lto-tree.h")
- (!srcfile 64 "lto/lto-lang.c")
- (!srcfile 64 "lto/lto.c")
- (!srcfile 64 "lto/lto.h")
- (!srcfile 384 "objc/objc-map.h")
- (!srcfile 384 "objc/objc-act.h")
- (!srcfile 384 "objc/objc-act.c")
- (!srcfile 384 "objc/objc-runtime-shared-support.c")
- (!srcfile 384 "objc/objc-gnu-runtime-abi-01.c")
- (!srcfile 384 "objc/objc-next-runtime-abi-01.c")
- (!srcfile 384 "objc/objc-next-runtime-abi-02.c")
-)
-(!structures 1088
-
- (!type user_struct 1
- (!type pointer 2 nil gc_used
- (!type already_seen 1)
- )
- gc_pointed_to "vec<ivarref_entry,va_gc>"
- (!srcfileloc "objc/objc-next-runtime-abi-02.c" 2765)
- (!fields 2
- (!pair "va_gc"
- (!type undefined 3 nil gc_unused "va_gc"
- (!srcfileloc "rtl.h" 238)
- )
- (!srcfileloc "objc/objc-next-runtime-abi-02.c" 2765)
- nil )
- (!pair "ivarref_entry"
- (!type struct 4 nil gc_used "ivarref_entry"
- (!srcfileloc "objc/objc-next-runtime-abi-02.c" 2763)
- (!fields 2
- (!pair "decl"
- (!type pointer 5
- (!type pointer 6 nil gc_used
- (!type already_seen 5)
- )
- gc_pointed_to
- (!type union 7
- (!type already_seen 5)
- gc_pointed_to "tree_node"
- (!srcfileloc "tree-core.h" 1631)
- (!fields 38
- (!pair "base"
- (!type struct 8 nil gc_used "tree_base"
- (!srcfileloc "tree-core.h" 766)
- (!fields 18
- (!pair "code"
- (!type scalar_nonchar 9
- (!type pointer 10
- (!type pointer 11 nil gc_unused
- (!type already_seen 10)
- )
- gc_used
- (!type already_seen 9)
- )
- gc_pointed_to)
- (!srcfileloc "tree-core.h" 711)
- nil )
- (!pair "side_effects_flag"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 713)
- nil )
- (!pair "constant_flag"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 714)
- nil )
- (!pair "addressable_flag"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 715)
- nil )
- (!pair "volatile_flag"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 716)
- nil )
- (!pair "readonly_flag"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 717)
- nil )
- (!pair "asm_written_flag"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 718)
- nil )
- (!pair "nowarning_flag"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 719)
- nil )
- (!pair "visited"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 720)
- nil )
- (!pair "used_flag"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 722)
- nil )
- (!pair "nothrow_flag"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 723)
- nil )
- (!pair "static_flag"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 724)
- nil )
- (!pair "public_flag"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 725)
- nil )
- (!pair "private_flag"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 726)
- nil )
- (!pair "protected_flag"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 727)
- nil )
- (!pair "deprecated_flag"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 728)
- nil )
- (!pair "default_def_flag"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 729)
- nil )
- (!pair "u"
- (!type union 12 nil gc_unused "anonymous:../../gcc/tree-core.h:731"
- (!srcfileloc "tree-core.h" 765)
- (!fields 3
- (!pair "bits"
- (!type struct 13 nil gc_unused "anonymous:../../gcc/tree-core.h:734"
- (!srcfileloc "tree-core.h" 757)
- (!fields 16
- (!pair "lang_flag_0"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 735)
- nil )
- (!pair "lang_flag_1"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 736)
- nil )
- (!pair "lang_flag_2"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 737)
- nil )
- (!pair "lang_flag_3"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 738)
- nil )
- (!pair "lang_flag_4"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 739)
- nil )
- (!pair "lang_flag_5"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 740)
- nil )
- (!pair "lang_flag_6"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 741)
- nil )
- (!pair "saturating_flag"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 742)
- nil )
- (!pair "unsigned_flag"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 744)
- nil )
- (!pair "packed_flag"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 745)
- nil )
- (!pair "user_align"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 746)
- nil )
- (!pair "nameless_flag"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 747)
- nil )
- (!pair "atomic_flag"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 748)
- nil )
- (!pair "spare0"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 749)
- nil )
- (!pair "spare1"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 751)
- nil )
- (!pair "address_space"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 756)
- nil )
- )
- nil 511 nil nil )
- (!srcfileloc "tree-core.h" 757)
- nil )
- (!pair "length"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 762)
- nil )
- (!pair "version"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 764)
- nil )
- )
- nil 511 nil )
- (!srcfileloc "tree-core.h" 765)
- (!options
- (!option skip string "")
- )
- )
- )
- nil 511 nil nil )
- (!srcfileloc "tree-core.h" 1589)
- (!options
- (!option tag string "TS_BASE")
- )
- )
- (!pair "typed"
- (!type struct 14 nil gc_used "tree_typed"
- (!srcfileloc "tree-core.h" 1042)
- (!fields 2
- (!pair "base"
- (!type already_seen 8)
- (!srcfileloc "tree-core.h" 1040)
- nil )
- (!pair "type"
- (!type already_seen 5)
- (!srcfileloc "tree-core.h" 1041)
- nil )
- )
- nil 511 nil nil )
- (!srcfileloc "tree-core.h" 1590)
- (!options
- (!option tag string "TS_TYPED")
- )
- )
- (!pair "common"
- (!type struct 15 nil gc_used "tree_common"
- (!srcfileloc "tree-core.h" 1047)
- (!fields 2
- (!pair "typed"
- (!type already_seen 14)
- (!srcfileloc "tree-core.h" 1045)
- nil )
- (!pair "chain"
- (!type already_seen 5)
- (!srcfileloc "tree-core.h" 1046)
- nil )
- )
- nil 511 nil nil )
- (!srcfileloc "tree-core.h" 1591)
- (!options
- (!option tag string "TS_COMMON")
- )
- )
- (!pair "int_cst"
- (!type struct 16 nil gc_used "tree_int_cst"
- (!srcfileloc "tree-core.h" 1052)
- (!fields 2
- (!pair "typed"
- (!type already_seen 14)
- (!srcfileloc "tree-core.h" 1050)
- nil )
- (!pair "int_cst"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 1051)
- nil )
- )
- nil 511 nil nil )
- (!srcfileloc "tree-core.h" 1592)
- (!options
- (!option tag string "TS_INT_CST")
- )
- )
- (!pair "real_cst"
- (!type struct 17 nil gc_used "tree_real_cst"
- (!srcfileloc "tree-core.h" 1058)
- (!fields 2
- (!pair "typed"
- (!type already_seen 14)
- (!srcfileloc "tree-core.h" 1056)
- nil )
- (!pair "real_cst_ptr"
- (!type pointer 18 nil gc_used
- (!type struct 19
- (!type already_seen 18)
- gc_pointed_to "real_value"
- (!srcfileloc "real.h" 52)
- (!fields 7
- (!pair "cl"
- (!type already_seen 9)
- (!srcfileloc "real.h" 45)
- nil )
- (!pair "decimal"
- (!type already_seen 9)
- (!srcfileloc "real.h" 46)
- nil )
- (!pair "sign"
- (!type already_seen 9)
- (!srcfileloc "real.h" 47)
- nil )
- (!pair "signalling"
- (!type already_seen 9)
- (!srcfileloc "real.h" 48)
- nil )
- (!pair "canonical"
- (!type already_seen 9)
- (!srcfileloc "real.h" 49)
- nil )
- (!pair "uexp"
- (!type already_seen 9)
- (!srcfileloc "real.h" 50)
- nil )
- (!pair "sig"
- (!type array 20 nil gc_used "SIGSZ"
- (!type already_seen 9)
- )
- (!srcfileloc "real.h" 51)
- nil )
- )
- nil 511 nil nil )
- )
- (!srcfileloc "tree-core.h" 1057)
- nil )
- )
- nil 511 nil nil )
- (!srcfileloc "tree-core.h" 1593)
- (!options
- (!option tag string "TS_REAL_CST")
- )
- )
- (!pair "fixed_cst"
- (!type struct 21 nil gc_used "tree_fixed_cst"
- (!srcfileloc "tree-core.h" 1063)
- (!fields 2
- (!pair "typed"
- (!type already_seen 14)
- (!srcfileloc "tree-core.h" 1061)
- nil )
- (!pair "fixed_cst_ptr"
- (!type pointer 22 nil gc_used
- (!type struct 23
- (!type already_seen 22)
- gc_pointed_to "fixed_value"
- (!srcfileloc "fixed-value.h" 31)
- (!fields 2
- (!pair "data"
- (!type already_seen 9)
- (!srcfileloc "fixed-value.h" 29)
- nil )
- (!pair "mode"
- (!type already_seen 9)
- (!srcfileloc "fixed-value.h" 30)
- nil )
- )
- nil 511 nil nil )
- )
- (!srcfileloc "tree-core.h" 1062)
- nil )
- )
- nil 511 nil nil )
- (!srcfileloc "tree-core.h" 1594)
- (!options
- (!option tag string "TS_FIXED_CST")
- )
- )
- (!pair "vector"
- (!type struct 24 nil gc_used "tree_vector"
- (!srcfileloc "tree-core.h" 1080)
- (!fields 2
- (!pair "typed"
- (!type already_seen 14)
- (!srcfileloc "tree-core.h" 1078)
- nil )
- (!pair "elts"
- (!type array 25 nil gc_used "1"
- (!type already_seen 5)
- )
- (!srcfileloc "tree-core.h" 1079)
- (!options
- (!option length string "TYPE_VECTOR_SUBPARTS (TREE_TYPE ((tree)&%h))")
- )
- )
- )
- nil 511 nil nil )
- (!srcfileloc "tree-core.h" 1595)
- (!options
- (!option tag string "TS_VECTOR")
- )
- )
- (!pair "string"
- (!type struct 26 nil gc_used "tree_string"
- (!srcfileloc "tree-core.h" 1069)
- (!fields 3
- (!pair "typed"
- (!type already_seen 14)
- (!srcfileloc "tree-core.h" 1066)
- nil )
- (!pair "length"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 1067)
- nil )
- (!pair "str"
- (!type array 27 nil gc_used "1"
- (!type scalar_char 28
- (!type pointer 29
- (!type pointer 30 nil gc_unused
- (!type already_seen 29)
- )
- gc_unused
- (!type already_seen 28)
- )
- gc_used)
- )
- (!srcfileloc "tree-core.h" 1068)
- nil )
- )
- nil 511 nil nil )
- (!srcfileloc "tree-core.h" 1596)
- (!options
- (!option tag string "TS_STRING")
- )
- )
- (!pair "complex"
- (!type struct 31 nil gc_used "tree_complex"
- (!srcfileloc "tree-core.h" 1075)
- (!fields 3
- (!pair "typed"
- (!type already_seen 14)
- (!srcfileloc "tree-core.h" 1072)
- nil )
- (!pair "real"
- (!type already_seen 5)
- (!srcfileloc "tree-core.h" 1073)
- nil )
- (!pair "imag"
- (!type already_seen 5)
- (!srcfileloc "tree-core.h" 1074)
- nil )
- )
- nil 511 nil nil )
- (!srcfileloc "tree-core.h" 1597)
- (!options
- (!option tag string "TS_COMPLEX")
- )
- )
- (!pair "identifier"
- (!type struct 32 nil gc_used "tree_identifier"
- (!srcfileloc "tree-core.h" 1085)
- (!fields 2
- (!pair "common"
- (!type already_seen 15)
- (!srcfileloc "tree-core.h" 1083)
- nil )
- (!pair "id"
- (!type struct 33
- (!type pointer 34
- (!type pointer 35 nil gc_unused
- (!type already_seen 34)
- )
- gc_unused
- (!type already_seen 33)
- )
- gc_used "ht_identifier"
- (!srcfileloc "../libcpp/include/symtab.h" 35)
- (!fields 3
- (!pair "str"
- (!type string 36 nil gc_used)
- (!srcfileloc "../libcpp/include/symtab.h" 32)
- nil )
- (!pair "len"
- (!type already_seen 9)
- (!srcfileloc "../libcpp/include/symtab.h" 33)
- nil )
- (!pair "hash_value"
- (!type already_seen 9)
- (!srcfileloc "../libcpp/include/symtab.h" 34)
- nil )
- )
- nil 511 nil nil )
- (!srcfileloc "tree-core.h" 1084)
- nil )
- )
- nil 511 nil nil )
- (!srcfileloc "tree-core.h" 1598)
- (!options
- (!option tag string "TS_IDENTIFIER")
- )
- )
- (!pair "decl_minimal"
- (!type struct 37 nil gc_used "tree_decl_minimal"
- (!srcfileloc "tree-core.h" 1319)
- (!fields 5
- (!pair "common"
- (!type already_seen 15)
- (!srcfileloc "tree-core.h" 1314)
- nil )
- (!pair "locus"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 1315)
- nil )
- (!pair "uid"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 1316)
- nil )
- (!pair "name"
- (!type already_seen 5)
- (!srcfileloc "tree-core.h" 1317)
- nil )
- (!pair "context"
- (!type already_seen 5)
- (!srcfileloc "tree-core.h" 1318)
- nil )
- )
- nil 511 nil nil )
- (!srcfileloc "tree-core.h" 1599)
- (!options
- (!option tag string "TS_DECL_MINIMAL")
- )
- )
- (!pair "decl_common"
- (!type struct 38 nil gc_used "tree_decl_common"
- (!srcfileloc "tree-core.h" 1385)
- (!fields 35
- (!pair "common"
- (!type already_seen 37)
- (!srcfileloc "tree-core.h" 1322)
- nil )
- (!pair "size"
- (!type already_seen 5)
- (!srcfileloc "tree-core.h" 1323)
- nil )
- (!pair "mode"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 1325)
- nil )
- (!pair "nonlocal_flag"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 1327)
- nil )
- (!pair "virtual_flag"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 1328)
- nil )
- (!pair "ignored_flag"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 1329)
- nil )
- (!pair "abstract_flag"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 1330)
- nil )
- (!pair "artificial_flag"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 1331)
- nil )
- (!pair "preserve_flag"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 1332)
- nil )
- (!pair "debug_expr_is_from"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 1333)
- nil )
- (!pair "lang_flag_0"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 1335)
- nil )
- (!pair "lang_flag_1"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 1336)
- nil )
- (!pair "lang_flag_2"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 1337)
- nil )
- (!pair "lang_flag_3"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 1338)
- nil )
- (!pair "lang_flag_4"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 1339)
- nil )
- (!pair "lang_flag_5"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 1340)
- nil )
- (!pair "lang_flag_6"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 1341)
- nil )
- (!pair "lang_flag_7"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 1342)
- nil )
- (!pair "lang_flag_8"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 1343)
- nil )
- (!pair "decl_flag_0"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 1346)
- nil )
- (!pair "decl_flag_1"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 1350)
- nil )
- (!pair "decl_flag_2"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 1354)
- nil )
- (!pair "decl_flag_3"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 1356)
- nil )
- (!pair "gimple_reg_flag"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 1359)
- nil )
- (!pair "decl_by_reference_flag"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 1361)
- nil )
- (!pair "decl_read_flag"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 1363)
- nil )
- (!pair "decl_nonshareable_flag"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 1365)
- nil )
- (!pair "off_align"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 1368)
- nil )
- (!pair "align"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 1373)
- nil )
- (!pair "pt_uid"
- (!type already_seen 9)
- (!srcfileloc "tree-core.h" 1376)
- nil )
- (!pair "size_unit"
- (!type already_seen 5)
- (!srcfileloc "tree-core.h" 1378)
- nil )
- (!pair "initial"
- (!type already_seen 5)
- (!srcfileloc "tree-core.h" 1379)
- nil )
- (!pair "attributes"
- (!type already_seen 5)
- (!srcfileloc "tree-core.h" 1380)
- nil )
- (!pair "abstract_origin"
- (!type already_seen 5)
- (!srcfileloc "tree-core.h" 1381)
- nil )
- (!pair "lang_specific"
- (!type pointer 39 nil gc_used
- (!type lang_struct 40
- (!type already_seen 39)
- gc_pointed_to "lang_decl"
- (!srcfileloc "ada/gcc-interface/ada-tree.h" 41)
- (!fields 0 )
- (!options
- (!option variable_size string "")
- )
- 511
- (!homotypes 7
- (!type struct 41 nil gc_pointed_to "lang_decl"
- (!srcfileloc "lto/lto-tree.h" 34)
- (!fields 1
- (!pair "dummy"
- (!type already_seen 9)
- (!srcfileloc "lto/lto-tree.h" 33)
- nil )
- )
- (!options
- (!option variable_size string "")
- )
- 64
- (!type already_seen 40)
- nil )
-
- (!type struct 42 nil gc_pointed_to "lang_decl"
- (!srcfileloc "java/java-tree.h" 818)
- (!fields 2
- (!pair "desc"
- (!type already_seen 9)
- (!srcfileloc "java/java-tree.h" 812)
- nil )
- (!pair "u"
- (!type union 43 nil gc_used "lang_decl_u"
- (!srcfileloc "java/java-tree.h" 817)
- (!fields 2
- (!pair "f"
- (!type struct 44 nil gc_used "lang_decl_func"
- (!srcfileloc "java/java-tree.h" 744)
- (!fields 20
- (!pair "code_offset"
- (!type already_seen 9)
- (!srcfileloc "java/java-tree.h" 717)
- nil )
- (!pair "code_length"
- (!type already_seen 9)
- (!srcfileloc "java/java-tree.h" 718)
- nil )
- (!pair "linenumbers_offset"
- (!type already_seen 9)
- (!srcfileloc "java/java-tree.h" 719)
- nil )
- (!pair "localvariables_offset"
- (!type already_seen 9)
- (!srcfileloc "java/java-tree.h" 720)
- nil )
- (!pair "arg_slots"
- (!type already_seen 9)
- (!srcfileloc "java/java-tree.h" 721)
- nil )
- (!pair "max_locals"
- (!type already_seen 9)
- (!srcfileloc "java/java-tree.h" 722)
- nil )
- (!pair "max_stack"
- (!type already_seen 9)
- (!srcfileloc "java/java-tree.h" 723)
- nil )
- (!pair "arg_slot_count"
- (!type already_seen 9)
- (!srcfileloc "java/java-tree.h" 724)
- nil )
- (!pair "last_line"
- (!type already_seen 9)
- (!srcfileloc "java/java-tree.h" 725)
- nil )
- (!pair "throws_list"
- (!type pointer 45 nil gc_used
- (!type user_struct 46
- (!type already_seen 45)
- gc_pointed_to "vec<tree,va_gc>"
- (!srcfileloc "tree-core.h" 1233)
- (!fields 2
- (!pair "va_gc"
- (!type already_seen 3)
- (!srcfileloc "tree-core.h" 1233)
- nil )
- (!pair "tree"
- (!type already_seen 5)
- (!srcfileloc "tree-core.h" 1233)
- nil )
- )
- )
- )
- (!srcfileloc "java/java-tree.h" 726)
- nil )
- (!pair "exc_obj"
- (!type already_seen 5)
- (!srcfileloc "java/java-tree.h" 727)
- nil )
- (!pair "init_test_table"
- (!type pointer 47 nil gc_used
- (!type param_struct 48
- (!type already_seen 47)
- gc_pointed_to
- (!type struct 49
- (!type pointer 50 nil gc_unused
- (!type already_seen 49)
- )
- gc_used "htab"
- (!srcfileloc "../include/hashtab.h" 142)
- (!fields 15
- (!pair "hash_f"
- (!type already_seen 9)
- (!srcfileloc "../include/hashtab.h" 102)
- nil )
- (!pair "eq_f"
- (!type already_seen 9)
- (!srcfileloc "../include/hashtab.h" 105)
- nil )
- (!pair "del_f"
- (!type already_seen 9)
- (!srcfileloc "../include/hashtab.h" 108)
- nil )
- (!pair "entries"
- (!type already_seen 11)
- (!srcfileloc "../include/hashtab.h" 111)
- (!options
- (!option length string "%h.size")
- (!option use_param string "")
- )
- )
- (!pair "size"
- (!type already_seen 9)
- (!srcfileloc "../include/hashtab.h" 114)
- nil )
- (!pair "n_elements"
- (!type already_seen 9)
- (!srcfileloc "../include/hashtab.h" 117)
- nil )
- (!pair "n_deleted"
- (!type already_seen 9)
- (!srcfileloc "../include/hashtab.h" 120)
- nil )
- (!pair "searches"
- (!type already_seen 9)
- (!srcfileloc "../include/hashtab.h" 124)
- nil )
- (!pair "collisions"
- (!type already_seen 9)
- (!srcfileloc "../include/hashtab.h" 128)
- nil )
- (!pair "alloc_f"
- (!type already_seen 9)
- (!srcfileloc "../include/hashtab.h" 131)
- nil )
- (!pair "free_f"
- (!type already_seen 9)
- (!srcfileloc "../include/hashtab.h" 132)
- nil )
- (!pair "alloc_arg"
- (!type already_seen 10)
- (!srcfileloc "../include/hashtab.h" 135)
- (!options
- (!option skip string "")
- )
- )
- (!pair "alloc_with_arg_f"
- (!type already_seen 9)
- (!srcfileloc "../include/hashtab.h" 136)
- nil )
- (!pair "free_with_arg_f"
- (!type already_seen 9)
- (!srcfileloc "../include/hashtab.h" 137)
- nil )
- (!pair "size_prime_index"
- (!type already_seen 9)
- (!srcfileloc "../include/hashtab.h" 141)
- nil )
- )
- nil 511 nil nil )
-
- (!type pointer 51 nil gc_used
- (!type struct 52
- (!type already_seen 51)
- gc_pointed_to "treetreehash_entry"
- (!srcfileloc "java/java-tree.h" 749)
- (!fields 2
- (!pair "key"
- (!type already_seen 5)
- (!srcfileloc "java/java-tree.h" 747)
- nil )
- (!pair "value"
- (!type already_seen 5)
- (!srcfileloc "java/java-tree.h" 748)
- nil )
- )
- nil 32 nil nil )
- )
- nil nil nil nil nil nil nil nil nil nil )
- )
- (!srcfileloc "java/java-tree.h" 730)
- (!options
- (!option param_is type
- (!type already_seen 52)
- )
- )
- )
- (!pair "ict"
- (!type pointer 53 nil gc_used
- (!type param_struct 54
- (!type already_seen 53)
- gc_pointed_to
- (!type already_seen 49)
-
- (!type already_seen 5)
- nil nil nil nil nil nil nil nil nil nil )
- )
- (!srcfileloc "java/java-tree.h" 733)
- (!options
- (!option param_is type
- (!type already_seen 7)
- )
- )
- )
- (!pair "native"
- (!type already_seen 9)
- (!srcfileloc "java/java-tree.h" 735)
- nil )
- (!pair "strictfp"
- (!type already_seen 9)
- (!srcfileloc "java/java-tree.h" 736)
- nil )
- (!pair "invisible"
- (!type already_seen 9)
- (!srcfileloc "java/java-tree.h" 737)
- nil )
- (!pair "dummy"
- (!type already_seen 9)
- (!srcfileloc "java/java-tree.h" 740)
- nil )
- (!pair "local_cni"
- (!type already_seen 9)
- (!srcfileloc "java/java-tree.h" 741)
- nil )
- (!pair "bridge"
- (!type already_seen 9)
- (!srcfileloc "java/java-tree.h" 742)
- nil )
- (!pair "varargs"
- (!type already_seen 9)
- (!srcfileloc "java/java-tree.h" 743)
- nil )
- )
- nil 32 nil nil )
- (!srcfileloc "java/java-tree.h" 815)
- (!options
- (!option tag string "LANG_DECL_FUNC")
- )
- )
- (!pair "v"
- (!type struct 55 nil gc_used "lang_decl_var"
- (!srcfileloc "java/java-tree.h" 805)
- (!fields 10
- (!pair "slot_number"
- (!type already_seen 9)
- (!srcfileloc "java/java-tree.h" 795)
- nil )
- (!pair "start_pc"
- (!type already_seen 9)
- (!srcfileloc "java/java-tree.h" 796)
- nil )
- (!pair "end_pc"
- (!type already_seen 9)
- (!srcfileloc "java/java-tree.h" 797)
- nil )
- (!pair "slot_chain"
- (!type already_seen 5)
- (!srcfileloc "java/java-tree.h" 798)
- nil )
- (!pair "owner"
- (!type already_seen 5)
- (!srcfileloc "java/java-tree.h" 799)
- nil )
- (!pair "freed"
- (!type already_seen 9)
- (!srcfileloc "java/java-tree.h" 800)
- nil )
- (!pair "local_slot"
- (!type already_seen 9)
- (!srcfileloc "java/java-tree.h" 801)
- nil )
- (!pair "class_field"
- (!type already_seen 9)
- (!srcfileloc "java/java-tree.h" 802)
- nil )
- (!pair "vtable"
- (!type already_seen 9)
- (!srcfileloc "java/java-tree.h" 803)
- nil )
- (!pair "field_enum"
- (!type already_seen 9)
- (!srcfileloc "java/java-tree.h" 804)
- nil )
- )
- nil 32 nil nil )
- (!srcfileloc "java/java-tree.h" 816)
- (!options
- (!option tag string "LANG_DECL_VAR")
- )
- )
- )
- nil 32
- (!type lang_struct 56 nil gc_used "lang_decl_u"
- (!srcfileloc "cp/cp-tree.h" 2071)
- (!fields 0 )
- (!options
- (!option desc string "%h.base.selector")
- )
- 292
- (!homotypes 2
- (!type already_seen 43)
-
- (!type union 57 nil gc_used "lang_decl_u"
- (!srcfileloc "cp/cp-tree.h" 2071)
- (!fields 5
- (!pair "base"
- (!type struct 58 nil gc_used "lang_decl_base"
- (!srcfileloc "cp/cp-tree.h" 1950)
- (!fields 12
- (!pair "selector"
- (!type already_seen 9)
- (!srcfileloc "cp/cp-tree.h" 1937)
- nil )
- (!pair "language"
- (!type already_seen 9)
- (!srcfileloc "cp/cp-tree.h" 1938)
- nil )
- (!pair "use_template"
- (!type already_seen 9)
- (!srcfileloc "cp/cp-tree.h" 1939)
- nil )
- (!pair "not_really_extern"
- (!type already_seen 9)
- (!srcfileloc "cp/cp-tree.h" 1940)
- nil )
- (!pair "initialized_in_class"
- (!type already_seen 9)
- (!srcfileloc "cp/cp-tree.h" 1941)
- nil )
- (!pair "repo_available_p"
- (!type already_seen 9)
- (!srcfileloc "cp/cp-tree.h" 1942)
- nil )
- (!pair "threadprivate_or_deleted_p"
- (!type already_seen 9)
- (!srcfileloc "cp/cp-tree.h" 1943)
- nil )
- (!pair "anticipated_p"
- (!type already_seen 9)
- (!srcfileloc "cp/cp-tree.h" 1944)
- nil )
- (!pair "friend_attr"
- (!type already_seen 9)
- (!srcfileloc "cp/cp-tree.h" 1945)
- nil )
- (!pair "template_conv_p"
- (!type already_seen 9)
- (!srcfileloc "cp/cp-tree.h" 1946)
- nil )
- (!pair "odr_used"
- (!type already_seen 9)
- (!srcfileloc "cp/cp-tree.h" 1947)
- nil )
- (!pair "u2sel"
- (!type already_seen 9)
- (!srcfileloc "cp/cp-tree.h" 1948)
- nil )
- )
- nil 260 nil nil )
- (!srcfileloc "cp/cp-tree.h" 2066)
- (!options
- (!option default string "")
- )
- )
- (!pair "min"
- (!type struct 59 nil gc_used "lang_decl_min"
- (!srcfileloc "cp/cp-tree.h" 1982)
- (!fields 3
- (!pair "base"
- (!type already_seen 58)
- (!srcfileloc "cp/cp-tree.h" 1964)
- nil )
- (!pair "template_info"
- (!type already_seen 5)
- (!srcfileloc "cp/cp-tree.h" 1971)
- nil )
- (!pair "u2"
- (!type union 60 nil gc_used "lang_decl_u2"
- (!srcfileloc "cp/cp-tree.h" 1981)
- (!fields 2
- (!pair "access"
- (!type already_seen 5)
- (!srcfileloc "cp/cp-tree.h" 1977)
- (!options
- (!option tag string "0")
- )
- )
- (!pair "discriminator"
- (!type already_seen 9)
- (!srcfileloc "cp/cp-tree.h" 1980)
- (!options
- (!option tag string "1")
- )
- )
- )
- nil 260 nil )
- (!srcfileloc "cp/cp-tree.h" 1981)
- (!options
- (!option desc string "%0.u.base.u2sel")
- )
- )
- )
- nil 260 nil nil )
- (!srcfileloc "cp/cp-tree.h" 2067)
- (!options
- (!option tag string "0")
- )
- )
- (!pair "fn"
- (!type struct 61 nil gc_used "lang_decl_fn"
-