-# Choose uclibc version.
-
-choice
- prompt "uClibc Version"
- depends on TOOLCHAINOPTS && USE_UCLIBC
- default UCLIBC_USE_VERSION_0_9_33
- help
- Select the version of uClibc you wish to use.
-
- config UCLIBC_USE_VERSION_0_9_33
- select UCLIBC_VERSION_0_9_33
- bool "uClibc 0.9.33.2"
-
- config UCLIBC_USE_VERSION_NG
- select UCLIBC_VERSION_NG
- bool "uClibc-ng"
-
-endchoice
-
# Debug version.
config UCLIBC_ENABLE_DEBUG
config UCLIBC_VERSION
string
depends on USE_UCLIBC
- default "0.9.33.2" if UCLIBC_VERSION_0_9_33
- default "1.0.8" if UCLIBC_VERSION_NG
- default "0.9.33.2"
-
-config UCLIBC_VERSION_0_9_33
- default y if !TOOLCHAINOPTS && USE_UCLIBC
- bool
+ default "1.0.8"
config UCLIBC_VERSION_NG
bool
+ depends on USE_UCLIBC
+ default y
PKG_VERSION:=$(call qstrip,$(CONFIG_UCLIBC_VERSION))
-ifeq ($(CONFIG_UCLIBC_VERSION_NG),y)
PKG_NAME:=uClibc-ng
PKG_SOURCE_URL = http://downloads.uclibc-ng.org/releases/$(PKG_VERSION)/
-PATCH_DIR:=$(PATH_PREFIX)/patches-ng-$(PKG_VERSION)
-CONFIG_DIR:=$(PATH_PREFIX)/config-ng-$(PKG_VERSION)
-else
-PKG_NAME:=uClibc
-PKG_SOURCE_URL:=http://www.uclibc.org/downloads
-PATCH_DIR:=$(PATH_PREFIX)/patches-$(PKG_VERSION)
-CONFIG_DIR:=$(PATH_PREFIX)/config-$(PKG_VERSION)
-endif
+PATCH_DIR:=$(PATH_PREFIX)/patches
+CONFIG_DIR:=$(PATH_PREFIX)/config
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
LIBC_SO_VERSION:=$(PKG_VERSION)
-PKG_MD5SUM_0.9.33.2 = a338aaffc56f0f5040e6d9fa8a12eda1
-PKG_MD5SUM_1.0.6 = dfcc780bf2c7e2e42209bbb572e035cf
-PKG_MD5SUM=$(PKG_MD5SUM_$(PKG_VERSION))
+PKG_MD5SUM=d7dbc8ddb0274beacbb48e6928d7b097
HOST_BUILD_DIR:=$(BUILD_DIR_TOOLCHAIN)/$(PKG_NAME)-$(PKG_VERSION)
+++ /dev/null
-ARCH_ANY_ENDIAN=y
-ARCH_LITTLE_ENDIAN=y
-ARCH_WANTS_LITTLE_ENDIAN=y
-# COMPILE_IN_THUMB_MODE is not set
-TARGET_ARCH="arm"
-TARGET_arm=y
-# USE_BX is not set
+++ /dev/null
-ARCH_ANY_ENDIAN=y
-ARCH_BIG_ENDIAN=y
-ARCH_WANTS_BIG_ENDIAN=y
-# COMPILE_IN_THUMB_MODE is not set
-TARGET_ARCH="arm"
-TARGET_arm=y
-# USE_BX is not set
+++ /dev/null
-# ARCH_ANY_ENDIAN is not set
-ARCH_HAS_MMU=y
-# ARCH_HAS_NO_LDSO is not set
-# ARCH_HAS_NO_SHARED is not set
-# ARCH_LITTLE_ENDIAN is not set
-ARCH_USE_MMU=y
-# ARCH_WANTS_BIG_ENDIAN is not set
-# ARCH_WANTS_LITTLE_ENDIAN is not set
-ASSUME_DEVPTS=y
-# COMPAT_ATEXIT is not set
-CROSS_COMPILER_PREFIX=""
-DEVEL_PREFIX="/usr/"
-# DOASSERTS is not set
-# DODEBUG is not set
-# DODEBUG_PT is not set
-# DOMULTI is not set
-DOPIC=y
-DOSTRIP=y
-DO_C99_MATH=y
-# DO_XSI_MATH is not set
-# EXTRA_WARNINGS is not set
-FORCE_OPTIONS_FOR_ARCH=y
-# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
-# HARDWIRED_ABSPATH is not set
-# HAS_NO_THREADS is not set
-HAVE_DOT_CONFIG=y
-# HAVE_NO_PIC is not set
-# HAVE_NO_SSP is not set
-HAVE_SHARED=y
-KERNEL_HEADERS="."
-LDSO_BASE_FILENAME="ld.so"
-LDSO_CACHE_SUPPORT=y
-# LDSO_GNU_HASH_SUPPORT is not set
-LDSO_LD_LIBRARY_PATH=y
-LDSO_LDD_SUPPORT=y
-# LDSO_NO_CLEANUP is not set
-# LDSO_PRELINK_SUPPORT is not set
-# LDSO_PRELOAD_FILE_SUPPORT is not set
-LDSO_PRELOAD_ENV_SUPPORT=y
-LDSO_RUNPATH=y
-# LDSO_SEARCH_INTERP_PATH is not set
-# LDSO_STANDALONE_SUPPORT is not set
-# LINUXTHREADS_NEW is not set
-# LINUXTHREADS_OLD is not set
-# UCLIBC_HAS_BACKTRACE is not set
-UCLIBC_HAS_THREADS_NATIVE=y
-# MALLOC is not set
-MALLOC_GLIBC_COMPAT=y
-# MALLOC_SIMPLE is not set
-MALLOC_STANDARD=y
-MULTILIB_DIR="lib"
-PTHREADS_DEBUG_SUPPORT=y
-RUNTIME_PREFIX="/"
-# SUPPORT_LD_DEBUG is not set
-# SUPPORT_LD_DEBUG_EARLY is not set
-TARGET_SUBARCH=""
-# TARGET_alpha is not set
-# TARGET_arm is not set
-# TARGET_avr32 is not set
-# TARGET_bfin is not set
-# TARGET_c6x is not set
-# TARGET_cris is not set
-# TARGET_e1 is not set
-# TARGET_frv is not set
-# TARGET_h8300 is not set
-# TARGET_hppa is not set
-# TARGET_i386 is not set
-# TARGET_i960 is not set
-# TARGET_ia64 is not set
-# TARGET_m68k is not set
-# TARGET_microblaze is not set
-# TARGET_mips is not set
-# TARGET_nios is not set
-# TARGET_nios2 is not set
-# TARGET_powerpc is not set
-# TARGET_sh is not set
-# TARGET_sh64 is not set
-# TARGET_sparc is not set
-# TARGET_v850 is not set
-# TARGET_vax is not set
-# TARGET_x86_64 is not set
-# TARGET_xtensa is not set
-UCLIBC_BSD_SPECIFIC=y
-UCLIBC_BUILD_NOEXECSTACK=y
-# UCLIBC_BUILD_NOW is not set
-# UCLIBC_BUILD_PIE is not set
-UCLIBC_BUILD_RELRO=y
-UCLIBC_CTOR_DTOR=y
-UCLIBC_DYNAMIC_ATEXIT=y
-UCLIBC_EXTRA_CFLAGS=""
-UCLIBC_GRP_BUFFER_SIZE=256
-UCLIBC_HAS_ADVANCED_REALTIME=y
-# UCLIBC_HAS_ARC4RANDOM is not set
-UCLIBC_HAS_BSD_ERR=y
-UCLIBC_HAS_BSD_RES_CLOSE=y
-# UCLIBC_HAS_COMPAT_RES_STATE is not set
-UCLIBC_HAS_CRYPT=y
-UCLIBC_HAS_CRYPT_IMPL=y
-UCLIBC_HAS_CTYPE_CHECKED=y
-# UCLIBC_HAS_CTYPE_ENFORCED is not set
-UCLIBC_HAS_CTYPE_SIGNED=y
-UCLIBC_HAS_CTYPE_TABLES=y
-# UCLIBC_HAS_CTYPE_UNSAFE is not set
-UCLIBC_HAS_EPOLL=y
-UCLIBC_HAS_ERRNO_MESSAGES=y
-# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set
-# UCLIBC_HAS_FENV is not set
-UCLIBC_HAS_FLOATS=y
-UCLIBC_HAS_FNMATCH=y
-UCLIBC_HAS_FNMATCH_OLD=y
-# UCLIBC_HAS_FOPEN_CLOSEEXEC_MODE is not set
-UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y
-# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set
-# UCLIBC_HAS_FPU is not set
-UCLIBC_HAS_FTS=y
-UCLIBC_HAS_FTW=y
-# UCLIBC_HAS_FULL_RPC is not set
-UCLIBC_HAS_GETPT=y
-UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y
-UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
-# UCLIBC_HAS_GLIBC_DIGIT_GROUPING is not set
-UCLIBC_HAS_GLOB=y
-UCLIBC_HAS_GNU_ERROR=y
-UCLIBC_HAS_GNU_GETOPT=y
-UCLIBC_HAS_GNU_GETSUBOPT=y
-UCLIBC_HAS_GNU_GLOB=y
-UCLIBC_HAS_HEXADECIMAL_FLOATS=y
-UCLIBC_HAS_IPV4=y
-UCLIBC_HAS_IPV6=y
-UCLIBC_HAS_LFS=y
-UCLIBC_HAS_LIBNSL_STUB=y
-UCLIBC_HAS_LIBRESOLV_STUB=y
-UCLIBC_HAS_LIBUTIL=y
-# UCLIBC_HAS_LOCALE is not set
-# UCLIBC_BUILD_ALL_LOCALE is not set
-# UCLIBC_BUILD_MINIMAL_LOCALE is not set
-# UCLIBC_PREGENERATED_LOCALE_DATA is not set
-UCLIBC_HAS_LONG_DOUBLE_MATH=y
-UCLIBC_HAS_NETWORK_SUPPORT=y
-UCLIBC_HAS_NFTW=y
-# UCLIBC_HAS_OBSOLETE_BSD_SIGNAL is not set
-# UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL is not set
-UCLIBC_HAS_PRINTF_M_SPEC=y
-# UCLIBC_HAS_PROFILING is not set
-UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y
-UCLIBC_HAS_PTY=y
-UCLIBC_HAS_REALTIME=y
-# UCLIBC_HAS_REENTRANT_RPC is not set
-UCLIBC_HAS_REGEX=y
-UCLIBC_HAS_REGEX_OLD=y
-UCLIBC_HAS_RESOLVER_SUPPORT=y
-# UCLIBC_HAS_RPC is not set
-UCLIBC_HAS_SCANF_GLIBC_A_FLAG=y
-# UCLIBC_HAS_SHA256_CRYPT_IMPL is not set
-# UCLIBC_HAS_SHA512_CRYPT_IMPL is not set
-UCLIBC_HAS_SHADOW=y
-UCLIBC_HAS_SIGNUM_MESSAGES=y
-UCLIBC_HAS_SOCKET=y
-UCLIBC_HAS_SOFT_FLOAT=y
-# UCLIBC_HAS_SSP is not set
-# UCLIBC_HAS_SSP_COMPAT is not set
-UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y
-# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set
-# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set
-# UCLIBC_HAS_STDIO_BUFSIZ_256 is not set
-UCLIBC_HAS_STDIO_BUFSIZ_4096=y
-# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set
-# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set
-# UCLIBC_HAS_STDIO_BUFSIZ_NONE is not set
-# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set
-# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set
-UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y
-UCLIBC_HAS_STDIO_GETC_MACRO=y
-UCLIBC_HAS_STDIO_PUTC_MACRO=y
-# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set
-UCLIBC_HAS_STRING_ARCH_OPT=y
-UCLIBC_HAS_STRING_GENERIC_OPT=y
-# UCLIBC_HAS_STUBS is not set
-UCLIBC_HAS_SYSLOG=y
-# UCLIBC_HAS_SYS_ERRLIST is not set
-# UCLIBC_HAS_SYS_SIGLIST is not set
-UCLIBC_HAS_THREADS=y
-UCLIBC_HAS_TM_EXTENSIONS=y
-UCLIBC_HAS_TZ_CACHING=y
-UCLIBC_HAS_TZ_FILE=y
-UCLIBC_HAS_TZ_FILE_READ_MANY=y
-# UCLIBC_HAS_UTMPX is not set
-UCLIBC_HAS_WCHAR=y
-UCLIBC_HAS_WORDEXP=y
-UCLIBC_HAS_XATTR=y
-# UCLIBC_HAS_XLOCALE is not set
-UCLIBC_HAS___PROGNAME=y
-# UCLIBC_LINUX_MODULE_24 is not set
-UCLIBC_LINUX_MODULE_26=y
-UCLIBC_LINUX_SPECIFIC=y
-# UCLIBC_MALLOC_DEBUGGING is not set
-# UCLIBC_MJN3_ONLY is not set
-# UCLIBC_NTP_LEGACY is not set
-# USE_OLD_VFPRINTF is not set
-UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
-UCLIBC_PWD_BUFFER_SIZE=256
-# UCLIBC_STATIC_LDCONFIG is not set
-# UCLIBC_STRICT_HEADERS is not set
-UCLIBC_SUPPORT_AI_ADDRCONFIG=y
-UCLIBC_SUSV3_LEGACY=y
-UCLIBC_SUSV3_LEGACY_MACROS=y
-UCLIBC_SUSV4_LEGACY=y
-# UCLIBC_SV4_DEPRECATED is not set
-UCLIBC_TZ_FILE_PATH="/etc/TZ"
-# UCLIBC_FALLBACK_TO_ETC_LOCALTIME is not set
-UCLIBC_USE_NETLINK=y
-# UNIX98PTY_ONLY is not set
-USE_BX=y
-WARNINGS="-Wall"
+++ /dev/null
-DODEBUG=y
-DODEBUG_PT=y
-PTHREADS_DEBUG_SUPPORT=y
-SUPPORT_LD_DEBUG=y
-SUPPORT_LD_DEBUG_EARLY=y
-UCLIBC_MALLOC_DEBUGGING=y
+++ /dev/null
-ARCH_LITTLE_ENDIAN=y
-# CONFIG_386 is not set
-CONFIG_486=y
-# CONFIG_586 is not set
-# CONFIG_586MMX is not set
-# CONFIG_686 is not set
-# CONFIG_CRUSOE is not set
-# CONFIG_CYRIXIII is not set
-# CONFIG_ELAN is not set
-# CONFIG_GENERIC_386 is not set
-# CONFIG_K6 is not set
-# CONFIG_K7 is not set
-# CONFIG_NEHEMIAH is not set
-# CONFIG_PENTIUM4 is not set
-# CONFIG_PENTIUMII is not set
-# CONFIG_PENTIUMIII is not set
-# CONFIG_WINCHIP2 is not set
-# CONFIG_WINCHIPC6 is not set
-TARGET_ARCH="i386"
-TARGET_i386=y
-UCLIBC_HAS_FPU=y
+++ /dev/null
-ARCH_LITTLE_ENDIAN=y
-# CONFIG_386 is not set
-# CONFIG_486 is not set
-# CONFIG_586 is not set
-# CONFIG_586MMX is not set
-CONFIG_686=y
-# CONFIG_CRUSOE is not set
-# CONFIG_CYRIXIII is not set
-# CONFIG_ELAN is not set
-# CONFIG_GENERIC_386 is not set
-# CONFIG_K6 is not set
-# CONFIG_K7 is not set
-# CONFIG_NEHEMIAH is not set
-# CONFIG_PENTIUM4 is not set
-# CONFIG_PENTIUMII is not set
-# CONFIG_PENTIUMIII is not set
-# CONFIG_WINCHIP2 is not set
-# CONFIG_WINCHIPC6 is not set
-TARGET_ARCH="i386"
-TARGET_i386=y
-UCLIBC_HAS_FPU=y
+++ /dev/null
-ARCH_BIG_ENDIAN=y
-LINUXTHREADS_OLD=y
-TARGET_ARCH="m68k"
-TARGET_SUBARCH=""
-TARGET_m68k=y
-# UCLIBC_HAS_THREADS_NATIVE is not set
+++ /dev/null
-ARCH_ANY_ENDIAN=y
-ARCH_BIG_ENDIAN=y
-ARCH_CFLAGS="-mno-split-addresses"
-ARCH_WANTS_BIG_ENDIAN=y
-# CONFIG_MIPS_ISA_1 is not set
-# CONFIG_MIPS_ISA_2 is not set
-# CONFIG_MIPS_ISA_3 is not set
-# CONFIG_MIPS_ISA_4 is not set
-CONFIG_MIPS_ISA_MIPS32=y
-# CONFIG_MIPS_ISA_MIPS32R2 is not set
-# CONFIG_MIPS_ISA_MIPS64 is not set
-# CONFIG_MIPS_N32_ABI is not set
-# CONFIG_MIPS_N64_ABI is not set
-CONFIG_MIPS_O32_ABI=y
-TARGET_ARCH="mips"
-TARGET_mips=y
-UCLIBC_HAS_FPU=y
+++ /dev/null
-ARCH_ANY_ENDIAN=y
-ARCH_BIG_ENDIAN=y
-ARCH_CFLAGS="-mno-split-addresses"
-ARCH_WANTS_BIG_ENDIAN=y
-# CONFIG_MIPS_ISA_1 is not set
-# CONFIG_MIPS_ISA_2 is not set
-# CONFIG_MIPS_ISA_3 is not set
-# CONFIG_MIPS_ISA_4 is not set
-# CONFIG_MIPS_ISA_MIPS32 is not set
-# CONFIG_MIPS_ISA_MIPS32R2 is not set
-CONFIG_MIPS_ISA_MIPS64=y
-# CONFIG_MIPS_N32_ABI is not set
-CONFIG_MIPS_N64_ABI=y
-# CONFIG_MIPS_O32_ABI is not set
-TARGET_ARCH="mips"
-TARGET_mips=y
-UCLIBC_HAS_FPU=y
+++ /dev/null
-ARCH_ANY_ENDIAN=y
-ARCH_BIG_ENDIAN=y
-ARCH_CFLAGS="-mno-split-addresses"
-ARCH_WANTS_BIG_ENDIAN=y
-# CONFIG_MIPS_ISA_1 is not set
-# CONFIG_MIPS_ISA_2 is not set
-# CONFIG_MIPS_ISA_3 is not set
-# CONFIG_MIPS_ISA_4 is not set
-# CONFIG_MIPS_ISA_MIPS32 is not set
-# CONFIG_MIPS_ISA_MIPS32R2 is not set
-CONFIG_MIPS_ISA_MIPS64=y
-# CONFIG_MIPS_N32_ABI is not set
-# CONFIG_MIPS_N64_ABI is not set
-CONFIG_MIPS_O32_ABI=y
-TARGET_ARCH="mips"
-TARGET_mips=y
-TARGET_SUBARCH="mips64"
-UCLIBC_HAS_FPU=y
+++ /dev/null
-ARCH_ANY_ENDIAN=y
-ARCH_BIG_ENDIAN=y
-ARCH_CFLAGS="-mno-split-addresses"
-ARCH_WANTS_BIG_ENDIAN=y
-# CONFIG_MIPS_ISA_1 is not set
-# CONFIG_MIPS_ISA_2 is not set
-# CONFIG_MIPS_ISA_3 is not set
-# CONFIG_MIPS_ISA_4 is not set
-# CONFIG_MIPS_ISA_MIPS32 is not set
-# CONFIG_MIPS_ISA_MIPS32R2 is not set
-CONFIG_MIPS_ISA_MIPS64=y
-# CONFIG_MIPS_N32_ABI is not set
-CONFIG_MIPS_N64_ABI=y
-# CONFIG_MIPS_O32_ABI is not set
-TARGET_ARCH="mips"
-TARGET_mips=y
-TARGET_SUBARCH="mips64"
-UCLIBC_HAS_FPU=y
+++ /dev/null
-ARCH_ANY_ENDIAN=y
-ARCH_BIG_ENDIAN=y
-ARCH_CFLAGS="-mno-split-addresses"
-ARCH_WANTS_BIG_ENDIAN=y
-# CONFIG_MIPS_ISA_1 is not set
-# CONFIG_MIPS_ISA_2 is not set
-# CONFIG_MIPS_ISA_3 is not set
-# CONFIG_MIPS_ISA_4 is not set
-# CONFIG_MIPS_ISA_MIPS32 is not set
-# CONFIG_MIPS_ISA_MIPS32R2 is not set
-CONFIG_MIPS_ISA_MIPS64=y
-CONFIG_MIPS_N32_ABI=y
-# CONFIG_MIPS_N64_ABI is not set
-# CONFIG_MIPS_O32_ABI is not set
-TARGET_ARCH="mips"
-TARGET_mips=y
-TARGET_SUBARCH="mips64"
-UCLIBC_HAS_FPU=y
+++ /dev/null
-ARCH_ANY_ENDIAN=y
-ARCH_CFLAGS="-mno-split-addresses"
-ARCH_LITTLE_ENDIAN=y
-ARCH_WANTS_LITTLE_ENDIAN=y
-# CONFIG_MIPS_ISA_1 is not set
-# CONFIG_MIPS_ISA_2 is not set
-# CONFIG_MIPS_ISA_3 is not set
-# CONFIG_MIPS_ISA_4 is not set
-# CONFIG_MIPS_ISA_MIPS32 is not set
-# CONFIG_MIPS_ISA_MIPS32R2 is not set
-CONFIG_MIPS_ISA_MIPS64=y
-# CONFIG_MIPS_N32_ABI is not set
-CONFIG_MIPS_N64_ABI=y
-# CONFIG_MIPS_O32_ABI is not set
-TARGET_ARCH="mips"
-TARGET_mips=y
-UCLIBC_HAS_FPU=y
+++ /dev/null
-ARCH_ANY_ENDIAN=y
-ARCH_CFLAGS="-mno-split-addresses"
-ARCH_LITTLE_ENDIAN=y
-ARCH_WANTS_LITTLE_ENDIAN=y
-# CONFIG_MIPS_ISA_1 is not set
-# CONFIG_MIPS_ISA_2 is not set
-# CONFIG_MIPS_ISA_3 is not set
-# CONFIG_MIPS_ISA_4 is not set
-# CONFIG_MIPS_ISA_MIPS32 is not set
-# CONFIG_MIPS_ISA_MIPS32R2 is not set
-CONFIG_MIPS_ISA_MIPS64=y
-# CONFIG_MIPS_N32_ABI is not set
-# CONFIG_MIPS_N64_ABI is not set
-CONFIG_MIPS_O32_ABI=y
-TARGET_ARCH="mips"
-TARGET_mips=y
-TARGET_SUBARCH="mips64"
-UCLIBC_HAS_FPU=y
+++ /dev/null
-ARCH_ANY_ENDIAN=y
-ARCH_CFLAGS="-mno-split-addresses"
-ARCH_LITTLE_ENDIAN=y
-ARCH_WANTS_LITTLE_ENDIAN=y
-# CONFIG_MIPS_ISA_1 is not set
-# CONFIG_MIPS_ISA_2 is not set
-# CONFIG_MIPS_ISA_3 is not set
-# CONFIG_MIPS_ISA_4 is not set
-# CONFIG_MIPS_ISA_MIPS32 is not set
-# CONFIG_MIPS_ISA_MIPS32R2 is not set
-CONFIG_MIPS_ISA_MIPS64=y
-# CONFIG_MIPS_N32_ABI is not set
-CONFIG_MIPS_N64_ABI=y
-# CONFIG_MIPS_O32_ABI is not set
-TARGET_ARCH="mips"
-TARGET_mips=y
-TARGET_SUBARCH="mips64"
-UCLIBC_HAS_FPU=y
+++ /dev/null
-ARCH_ANY_ENDIAN=y
-ARCH_CFLAGS="-mno-split-addresses"
-ARCH_LITTLE_ENDIAN=y
-ARCH_WANTS_LITTLE_ENDIAN=y
-# CONFIG_MIPS_ISA_1 is not set
-# CONFIG_MIPS_ISA_2 is not set
-# CONFIG_MIPS_ISA_3 is not set
-# CONFIG_MIPS_ISA_4 is not set
-# CONFIG_MIPS_ISA_MIPS32 is not set
-# CONFIG_MIPS_ISA_MIPS32R2 is not set
-CONFIG_MIPS_ISA_MIPS64=y
-CONFIG_MIPS_N32_ABI=y
-# CONFIG_MIPS_N64_ABI is not set
-# CONFIG_MIPS_O32_ABI is not set
-TARGET_ARCH="mips"
-TARGET_mips=y
-TARGET_SUBARCH="mips64"
-UCLIBC_HAS_FPU=y
+++ /dev/null
-ARCH_ANY_ENDIAN=y
-ARCH_CFLAGS="-mno-split-addresses"
-ARCH_LITTLE_ENDIAN=y
-ARCH_WANTS_LITTLE_ENDIAN=y
-# CONFIG_MIPS_ISA_1 is not set
-# CONFIG_MIPS_ISA_2 is not set
-# CONFIG_MIPS_ISA_3 is not set
-# CONFIG_MIPS_ISA_4 is not set
-CONFIG_MIPS_ISA_MIPS32=y
-# CONFIG_MIPS_ISA_MIPS32R2 is not set
-# CONFIG_MIPS_ISA_MIPS64 is not set
-# CONFIG_MIPS_N32_ABI is not set
-# CONFIG_MIPS_N64_ABI is not set
-CONFIG_MIPS_O32_ABI=y
-TARGET_ARCH="mips"
-TARGET_mips=y
-UCLIBC_HAS_FPU=y
+++ /dev/null
-ARCH_ANY_ENDIAN=y
-ARCH_CFLAGS="-mno-split-addresses"
-ARCH_LITTLE_ENDIAN=y
-ARCH_WANTS_LITTLE_ENDIAN=y
-# CONFIG_MIPS_ISA_1 is not set
-# CONFIG_MIPS_ISA_2 is not set
-CONFIG_MIPS_ISA_3=y
-# CONFIG_MIPS_ISA_4 is not set
-# CONFIG_MIPS_ISA_MIPS32 is not set
-# CONFIG_MIPS_ISA_MIPS32R2 is not set
-# CONFIG_MIPS_ISA_MIPS64 is not set
-# CONFIG_MIPS_N32_ABI is not set
-# CONFIG_MIPS_N64_ABI is not set
-CONFIG_MIPS_O32_ABI=y
-TARGET_ARCH="mips"
-TARGET_mips=y
-UCLIBC_HAS_FPU=y
+++ /dev/null
-ARCH_BIG_ENDIAN=y
-CONFIG_CLASSIC=y
-# CONFIG_E500 is not set
-TARGET_ARCH="powerpc"
-TARGET_SUBARCH="classic"
-TARGET_powerpc=y
+++ /dev/null
-ARCH_BIG_ENDIAN=y
-# CONFIG_CLASSIC is not set
-CONFIG_E500=y
-TARGET_ARCH="powerpc"
-TARGET_SUBARCH="classic"
-TARGET_powerpc=y
+++ /dev/null
-ARCH_BIG_ENDIAN=y
-# CONFIG_SPARC_V7 is not set
-# CONFIG_SPARC_V8 is not set
-CONFIG_SPARC_V9=y
-# CONFIG_SPARC_V9B is not set
-TARGET_ARCH="sparc"
-TARGET_sparc=y
-UCLIBC_HAS_LONG_DOUBLE_MATH=y
+++ /dev/null
-ARCH_BIG_ENDIAN=y
-# CONFIG_SPARC_V7 is not set
-CONFIG_SPARC_V8=y
-# CONFIG_SPARC_V9 is not set
-# CONFIG_SPARC_V9B is not set
-TARGET_ARCH="sparc"
-TARGET_sparc=y
-UCLIBC_HAS_LONG_DOUBLE_MATH=y
+++ /dev/null
-ARCH_LITTLE_ENDIAN=y
-# LINUXTHREADS_NEW is not set
-TARGET_ARCH="x86_64"
-TARGET_x86_64=y
-UCLIBC_BSD_SPECIFIC=y
-UCLIBC_HAS_FPU=y
+++ /dev/null
-ARCH_ANY_ENDIAN=y
-ARCH_LITTLE_ENDIAN=y
-ARCH_WANTS_LITTLE_ENDIAN=y
-# COMPILE_IN_THUMB_MODE is not set
-TARGET_ARCH="arm"
-TARGET_arm=y
-# USE_BX is not set
-CONFIG_ARM_EABI=y
-
+++ /dev/null
-ARCH_ANY_ENDIAN=y
-ARCH_BIG_ENDIAN=y
-ARCH_WANTS_BIG_ENDIAN=y
-# COMPILE_IN_THUMB_MODE is not set
-TARGET_ARCH="arm"
-TARGET_arm=y
-# USE_BX is not set
-CONFIG_ARM_EABI=y
-
+++ /dev/null
-# ARCH_ANY_ENDIAN is not set
-ARCH_HAS_MMU=y
-# ARCH_HAS_NO_LDSO is not set
-# ARCH_HAS_NO_SHARED is not set
-# ARCH_LITTLE_ENDIAN is not set
-ARCH_USE_MMU=y
-# ARCH_WANTS_BIG_ENDIAN is not set
-# ARCH_WANTS_LITTLE_ENDIAN is not set
-ASSUME_DEVPTS=y
-# COMPAT_ATEXIT is not set
-CROSS_COMPILER_PREFIX=""
-DEVEL_PREFIX="/usr/"
-# DOASSERTS is not set
-# DODEBUG is not set
-# DODEBUG_PT is not set
-# DOMULTI is not set
-DOPIC=y
-DOSTRIP=y
-DO_C99_MATH=y
-# DO_XSI_MATH is not set
-# EXTRA_WARNINGS is not set
-FORCE_OPTIONS_FOR_ARCH=y
-# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
-# HARDWIRED_ABSPATH is not set
-# HAS_NO_THREADS is not set
-HAVE_DOT_CONFIG=y
-# HAVE_NO_PIC is not set
-# HAVE_NO_SSP is not set
-HAVE_SHARED=y
-KERNEL_HEADERS="."
-LDSO_BASE_FILENAME="ld.so"
-LDSO_CACHE_SUPPORT=y
-# LDSO_GNU_HASH_SUPPORT is not set
-LDSO_LD_LIBRARY_PATH=y
-LDSO_LDD_SUPPORT=y
-# LDSO_NO_CLEANUP is not set
-# LDSO_PRELINK_SUPPORT is not set
-# LDSO_PRELOAD_FILE_SUPPORT is not set
-LDSO_PRELOAD_ENV_SUPPORT=y
-LDSO_RUNPATH=y
-LDSO_SAFE_RUNPATH=y
-# LDSO_RUNPATH_OF_EXECUTABLE is not set
-# LDSO_SEARCH_INTERP_PATH is not set
-# LDSO_STANDALONE_SUPPORT is not set
-# LINUXTHREADS_NEW is not set
-# LINUXTHREADS_OLD is not set
-# UCLIBC_HAS_BACKTRACE is not set
-UCLIBC_HAS_THREADS_NATIVE=y
-# MALLOC is not set
-MALLOC_GLIBC_COMPAT=y
-# MALLOC_SIMPLE is not set
-MALLOC_STANDARD=y
-MULTILIB_DIR="lib"
-PTHREADS_DEBUG_SUPPORT=y
-RUNTIME_PREFIX="/"
-# SUPPORT_LD_DEBUG is not set
-# SUPPORT_LD_DEBUG_EARLY is not set
-TARGET_SUBARCH=""
-# TARGET_alpha is not set
-# TARGET_arc is not set
-# TARGET_arm is not set
-# TARGET_avr32 is not set
-# TARGET_bfin is not set
-# TARGET_c6x is not set
-# TARGET_cris is not set
-# TARGET_e1 is not set
-# TARGET_frv is not set
-# TARGET_h8300 is not set
-# TARGET_hppa is not set
-# TARGET_i386 is not set
-# TARGET_i960 is not set
-# TARGET_ia64 is not set
-# TARGET_lm32 is not set
-# TARGET_m68k is not set
-# TARGET_metag is not set
-# TARGET_microblaze is not set
-# TARGET_mips is not set
-# TARGET_nios is not set
-# TARGET_nios2 is not set
-# TARGET_or1k is not set
-# TARGET_powerpc is not set
-# TARGET_sh is not set
-# TARGET_sh64 is not set
-# TARGET_sparc is not set
-# TARGET_v850 is not set
-# TARGET_vax is not set
-# TARGET_x86_64 is not set
-# TARGET_xtensa is not set
-UCLIBC_BSD_SPECIFIC=y
-UCLIBC_BUILD_NOEXECSTACK=y
-# UCLIBC_BUILD_NOW is not set
-# UCLIBC_BUILD_PIE is not set
-UCLIBC_BUILD_RELRO=y
-UCLIBC_CTOR_DTOR=y
-UCLIBC_DYNAMIC_ATEXIT=y
-UCLIBC_EXTRA_CFLAGS=""
-UCLIBC_GRP_BUFFER_SIZE=256
-UCLIBC_HAS_ADVANCED_REALTIME=y
-# UCLIBC_HAS_ARC4RANDOM is not set
-UCLIBC_HAS_BSD_ERR=y
-UCLIBC_HAS_BSD_RES_CLOSE=y
-# UCLIBC_HAS_COMPAT_RES_STATE is not set
-UCLIBC_HAS_CRYPT=y
-UCLIBC_HAS_CRYPT_IMPL=y
-UCLIBC_HAS_CTYPE_CHECKED=y
-# UCLIBC_HAS_CTYPE_ENFORCED is not set
-UCLIBC_HAS_CTYPE_SIGNED=y
-UCLIBC_HAS_CTYPE_TABLES=y
-# UCLIBC_HAS_CTYPE_UNSAFE is not set
-UCLIBC_HAS_EPOLL=y
-UCLIBC_HAS_ERRNO_MESSAGES=y
-# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set
-# UCLIBC_HAS_FENV is not set
-UCLIBC_HAS_FLOATS=y
-UCLIBC_HAS_FNMATCH=y
-UCLIBC_HAS_FNMATCH_OLD=y
-# UCLIBC_HAS_FOPEN_CLOSEEXEC_MODE is not set
-UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y
-# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set
-# UCLIBC_HAS_FPU is not set
-UCLIBC_HAS_FTS=y
-UCLIBC_HAS_FTW=y
-# UCLIBC_HAS_FULL_RPC is not set
-UCLIBC_HAS_GETPT=y
-UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y
-UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
-# UCLIBC_HAS_GLIBC_DIGIT_GROUPING is not set
-UCLIBC_HAS_GLOB=y
-UCLIBC_HAS_GNU_ERROR=y
-UCLIBC_HAS_GNU_GETOPT=y
-UCLIBC_HAS_GNU_GETSUBOPT=y
-UCLIBC_HAS_GNU_GLOB=y
-UCLIBC_HAS_HEXADECIMAL_FLOATS=y
-UCLIBC_HAS_IPV4=y
-UCLIBC_HAS_IPV6=y
-UCLIBC_HAS_LFS=y
-UCLIBC_HAS_LIBNSL_STUB=y
-UCLIBC_HAS_LIBRESOLV_STUB=y
-UCLIBC_HAS_LIBUTIL=y
-# UCLIBC_HAS_LOCALE is not set
-# UCLIBC_BUILD_ALL_LOCALE is not set
-# UCLIBC_BUILD_MINIMAL_LOCALE is not set
-# UCLIBC_PREGENERATED_LOCALE_DATA is not set
-UCLIBC_HAS_LONG_DOUBLE_MATH=y
-UCLIBC_HAS_NETWORK_SUPPORT=y
-UCLIBC_HAS_NFTW=y
-# UCLIBC_HAS_OBSOLETE_BSD_SIGNAL is not set
-# UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL is not set
-UCLIBC_HAS_PRINTF_M_SPEC=y
-# UCLIBC_HAS_PROFILING is not set
-UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y
-UCLIBC_HAS_PTY=y
-UCLIBC_HAS_REALTIME=y
-# UCLIBC_HAS_REENTRANT_RPC is not set
-UCLIBC_HAS_REGEX=y
-UCLIBC_HAS_REGEX_OLD=y
-UCLIBC_HAS_RESOLVER_SUPPORT=y
-# UCLIBC_HAS_RPC is not set
-UCLIBC_HAS_SCANF_GLIBC_A_FLAG=y
-# UCLIBC_HAS_SHA256_CRYPT_IMPL is not set
-# UCLIBC_HAS_SHA512_CRYPT_IMPL is not set
-UCLIBC_HAS_SHADOW=y
-UCLIBC_HAS_SIGNUM_MESSAGES=y
-UCLIBC_HAS_SOCKET=y
-UCLIBC_HAS_SOFT_FLOAT=y
-# UCLIBC_HAS_SSP is not set
-# UCLIBC_HAS_SSP_COMPAT is not set
-UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y
-# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set
-# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set
-# UCLIBC_HAS_STDIO_BUFSIZ_256 is not set
-UCLIBC_HAS_STDIO_BUFSIZ_4096=y
-# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set
-# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set
-# UCLIBC_HAS_STDIO_BUFSIZ_NONE is not set
-# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set
-# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set
-UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y
-UCLIBC_HAS_STDIO_GETC_MACRO=y
-UCLIBC_HAS_STDIO_PUTC_MACRO=y
-# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set
-UCLIBC_HAS_STRING_ARCH_OPT=y
-UCLIBC_HAS_STRING_GENERIC_OPT=y
-# UCLIBC_HAS_STUBS is not set
-UCLIBC_HAS_SYSLOG=y
-# UCLIBC_HAS_SYS_ERRLIST is not set
-# UCLIBC_HAS_SYS_SIGLIST is not set
-UCLIBC_HAS_THREADS=y
-UCLIBC_HAS_TM_EXTENSIONS=y
-UCLIBC_HAS_TZ_CACHING=y
-UCLIBC_HAS_TZ_FILE=y
-UCLIBC_HAS_TZ_FILE_READ_MANY=y
-UCLIBC_HAS_UTMPX=y
-UCLIBC_HAS_UTMP=y
-UCLIBC_HAS_WCHAR=y
-UCLIBC_HAS_WORDEXP=y
-UCLIBC_HAS_XATTR=y
-# UCLIBC_HAS_XLOCALE is not set
-UCLIBC_HAS___PROGNAME=y
-# UCLIBC_LINUX_MODULE_24 is not set
-UCLIBC_LINUX_MODULE_26=y
-UCLIBC_LINUX_SPECIFIC=y
-# UCLIBC_MALLOC_DEBUGGING is not set
-# UCLIBC_MJN3_ONLY is not set
-# UCLIBC_NTP_LEGACY is not set
-# USE_OLD_VFPRINTF is not set
-UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
-UCLIBC_PWD_BUFFER_SIZE=256
-# UCLIBC_STATIC_LDCONFIG is not set
-# UCLIBC_STRICT_HEADERS is not set
-UCLIBC_SUPPORT_AI_ADDRCONFIG=y
-UCLIBC_SUSV3_LEGACY=y
-UCLIBC_SUSV3_LEGACY_MACROS=y
-UCLIBC_SUSV4_LEGACY=y
-# UCLIBC_SV4_DEPRECATED is not set
-UCLIBC_TZ_FILE_PATH="/etc/TZ"
-# UCLIBC_FALLBACK_TO_ETC_LOCALTIME is not set
-UCLIBC_USE_NETLINK=y
-# UNIX98PTY_ONLY is not set
-USE_BX=y
-WARNINGS="-Wall"
-# UCLIBC_HAS_OBSTACK is not set
-# UCLIBC_SUSV2_LEGACY is not set
-# UCLIBC_HAS_CONTEXT_FUNCS is not set
-UCLIBC_HAS_GETOPT_LONG=y
+++ /dev/null
-DODEBUG=y
-DODEBUG_PT=y
-PTHREADS_DEBUG_SUPPORT=y
-SUPPORT_LD_DEBUG=y
-SUPPORT_LD_DEBUG_EARLY=y
-UCLIBC_MALLOC_DEBUGGING=y
+++ /dev/null
-ARCH_LITTLE_ENDIAN=y
-# CONFIG_386 is not set
-CONFIG_486=y
-# CONFIG_586 is not set
-# CONFIG_586MMX is not set
-# CONFIG_686 is not set
-# CONFIG_CRUSOE is not set
-# CONFIG_CYRIXIII is not set
-# CONFIG_ELAN is not set
-# CONFIG_GENERIC_386 is not set
-# CONFIG_K6 is not set
-# CONFIG_K7 is not set
-# CONFIG_NEHEMIAH is not set
-# CONFIG_PENTIUM4 is not set
-# CONFIG_PENTIUMII is not set
-# CONFIG_PENTIUMIII is not set
-# CONFIG_WINCHIP2 is not set
-# CONFIG_WINCHIPC6 is not set
-TARGET_ARCH="i386"
-TARGET_i386=y
-UCLIBC_HAS_FPU=y
+++ /dev/null
-ARCH_LITTLE_ENDIAN=y
-# CONFIG_386 is not set
-# CONFIG_486 is not set
-# CONFIG_586 is not set
-# CONFIG_586MMX is not set
-CONFIG_686=y
-# CONFIG_CRUSOE is not set
-# CONFIG_CYRIXIII is not set
-# CONFIG_ELAN is not set
-# CONFIG_GENERIC_386 is not set
-# CONFIG_K6 is not set
-# CONFIG_K7 is not set
-# CONFIG_NEHEMIAH is not set
-# CONFIG_PENTIUM4 is not set
-# CONFIG_PENTIUMII is not set
-# CONFIG_PENTIUMIII is not set
-# CONFIG_WINCHIP2 is not set
-# CONFIG_WINCHIPC6 is not set
-TARGET_ARCH="i386"
-TARGET_i386=y
-UCLIBC_HAS_FPU=y
+++ /dev/null
-ARCH_BIG_ENDIAN=y
-LINUXTHREADS_OLD=y
-TARGET_ARCH="m68k"
-TARGET_SUBARCH=""
-TARGET_m68k=y
-# UCLIBC_HAS_THREADS_NATIVE is not set
+++ /dev/null
-ARCH_ANY_ENDIAN=y
-ARCH_BIG_ENDIAN=y
-ARCH_CFLAGS="-mno-split-addresses"
-ARCH_WANTS_BIG_ENDIAN=y
-# CONFIG_MIPS_ISA_1 is not set
-# CONFIG_MIPS_ISA_2 is not set
-# CONFIG_MIPS_ISA_3 is not set
-# CONFIG_MIPS_ISA_4 is not set
-CONFIG_MIPS_ISA_MIPS32=y
-# CONFIG_MIPS_ISA_MIPS32R2 is not set
-# CONFIG_MIPS_ISA_MIPS64 is not set
-# CONFIG_MIPS_ISA_MIPS64R2 is not set
-# CONFIG_MIPS_N32_ABI is not set
-# CONFIG_MIPS_N64_ABI is not set
-CONFIG_MIPS_O32_ABI=y
-TARGET_ARCH="mips"
-TARGET_mips=y
-UCLIBC_HAS_FPU=y
+++ /dev/null
-ARCH_ANY_ENDIAN=y
-ARCH_BIG_ENDIAN=y
-ARCH_CFLAGS="-mno-split-addresses"
-ARCH_WANTS_BIG_ENDIAN=y
-# CONFIG_MIPS_ISA_1 is not set
-# CONFIG_MIPS_ISA_2 is not set
-# CONFIG_MIPS_ISA_3 is not set
-# CONFIG_MIPS_ISA_4 is not set
-# CONFIG_MIPS_ISA_MIPS32 is not set
-# CONFIG_MIPS_ISA_MIPS32R2 is not set
-CONFIG_MIPS_ISA_MIPS64=y
-# CONFIG_MIPS_ISA_MIPS64R2 is not set
-# CONFIG_MIPS_N32_ABI is not set
-CONFIG_MIPS_N64_ABI=y
-# CONFIG_MIPS_O32_ABI is not set
-TARGET_ARCH="mips"
-TARGET_mips=y
-UCLIBC_HAS_FPU=y
+++ /dev/null
-ARCH_ANY_ENDIAN=y
-ARCH_BIG_ENDIAN=y
-ARCH_CFLAGS="-mno-split-addresses"
-ARCH_WANTS_BIG_ENDIAN=y
-# CONFIG_MIPS_ISA_1 is not set
-# CONFIG_MIPS_ISA_2 is not set
-# CONFIG_MIPS_ISA_3 is not set
-# CONFIG_MIPS_ISA_4 is not set
-# CONFIG_MIPS_ISA_MIPS32 is not set
-# CONFIG_MIPS_ISA_MIPS32R2 is not set
-CONFIG_MIPS_ISA_MIPS64=y
-# CONFIG_MIPS_ISA_MIPS64R2 is not set
-# CONFIG_MIPS_N32_ABI is not set
-# CONFIG_MIPS_N64_ABI is not set
-CONFIG_MIPS_O32_ABI=y
-TARGET_ARCH="mips"
-TARGET_mips=y
-TARGET_SUBARCH="mips64"
-UCLIBC_HAS_FPU=y
+++ /dev/null
-ARCH_ANY_ENDIAN=y
-ARCH_BIG_ENDIAN=y
-ARCH_CFLAGS="-mno-split-addresses"
-ARCH_WANTS_BIG_ENDIAN=y
-# CONFIG_MIPS_ISA_1 is not set
-# CONFIG_MIPS_ISA_2 is not set
-# CONFIG_MIPS_ISA_3 is not set
-# CONFIG_MIPS_ISA_4 is not set
-# CONFIG_MIPS_ISA_MIPS32 is not set
-# CONFIG_MIPS_ISA_MIPS32R2 is not set
-CONFIG_MIPS_ISA_MIPS64=y
-# CONFIG_MIPS_ISA_MIPS64R2 is not set
-# CONFIG_MIPS_N32_ABI is not set
-CONFIG_MIPS_N64_ABI=y
-# CONFIG_MIPS_O32_ABI is not set
-TARGET_ARCH="mips"
-TARGET_mips=y
-TARGET_SUBARCH="mips64"
-UCLIBC_HAS_FPU=y
+++ /dev/null
-ARCH_ANY_ENDIAN=y
-ARCH_BIG_ENDIAN=y
-ARCH_CFLAGS="-mno-split-addresses"
-ARCH_WANTS_BIG_ENDIAN=y
-# CONFIG_MIPS_ISA_1 is not set
-# CONFIG_MIPS_ISA_2 is not set
-# CONFIG_MIPS_ISA_3 is not set
-# CONFIG_MIPS_ISA_4 is not set
-# CONFIG_MIPS_ISA_MIPS32 is not set
-# CONFIG_MIPS_ISA_MIPS32R2 is not set
-CONFIG_MIPS_ISA_MIPS64=y
-# CONFIG_MIPS_ISA_MIPS64R2 is not set
-CONFIG_MIPS_N32_ABI=y
-# CONFIG_MIPS_N64_ABI is not set
-# CONFIG_MIPS_O32_ABI is not set
-TARGET_ARCH="mips"
-TARGET_mips=y
-TARGET_SUBARCH="mips64"
-UCLIBC_HAS_FPU=y
+++ /dev/null
-ARCH_ANY_ENDIAN=y
-ARCH_CFLAGS="-mno-split-addresses"
-ARCH_LITTLE_ENDIAN=y
-ARCH_WANTS_LITTLE_ENDIAN=y
-# CONFIG_MIPS_ISA_1 is not set
-# CONFIG_MIPS_ISA_2 is not set
-# CONFIG_MIPS_ISA_3 is not set
-# CONFIG_MIPS_ISA_4 is not set
-# CONFIG_MIPS_ISA_MIPS32 is not set
-# CONFIG_MIPS_ISA_MIPS32R2 is not set
-CONFIG_MIPS_ISA_MIPS64=y
-# CONFIG_MIPS_ISA_MIPS64R2 is not set
-# CONFIG_MIPS_N32_ABI is not set
-CONFIG_MIPS_N64_ABI=y
-# CONFIG_MIPS_O32_ABI is not set
-TARGET_ARCH="mips"
-TARGET_mips=y
-UCLIBC_HAS_FPU=y
+++ /dev/null
-ARCH_ANY_ENDIAN=y
-ARCH_CFLAGS="-mno-split-addresses"
-ARCH_LITTLE_ENDIAN=y
-ARCH_WANTS_LITTLE_ENDIAN=y
-# CONFIG_MIPS_ISA_1 is not set
-# CONFIG_MIPS_ISA_2 is not set
-# CONFIG_MIPS_ISA_3 is not set
-# CONFIG_MIPS_ISA_4 is not set
-# CONFIG_MIPS_ISA_MIPS32 is not set
-# CONFIG_MIPS_ISA_MIPS32R2 is not set
-CONFIG_MIPS_ISA_MIPS64=y
-# CONFIG_MIPS_ISA_MIPS64R2 is not set
-# CONFIG_MIPS_N32_ABI is not set
-# CONFIG_MIPS_N64_ABI is not set
-CONFIG_MIPS_O32_ABI=y
-TARGET_ARCH="mips"
-TARGET_mips=y
-TARGET_SUBARCH="mips64"
-UCLIBC_HAS_FPU=y
+++ /dev/null
-ARCH_ANY_ENDIAN=y
-ARCH_CFLAGS="-mno-split-addresses"
-ARCH_LITTLE_ENDIAN=y
-ARCH_WANTS_LITTLE_ENDIAN=y
-# CONFIG_MIPS_ISA_1 is not set
-# CONFIG_MIPS_ISA_2 is not set
-# CONFIG_MIPS_ISA_3 is not set
-# CONFIG_MIPS_ISA_4 is not set
-# CONFIG_MIPS_ISA_MIPS32 is not set
-# CONFIG_MIPS_ISA_MIPS32R2 is not set
-CONFIG_MIPS_ISA_MIPS64=y
-# CONFIG_MIPS_ISA_MIPS64R2 is not set
-# CONFIG_MIPS_N32_ABI is not set
-CONFIG_MIPS_N64_ABI=y
-# CONFIG_MIPS_O32_ABI is not set
-TARGET_ARCH="mips"
-TARGET_mips=y
-TARGET_SUBARCH="mips64"
-UCLIBC_HAS_FPU=y
+++ /dev/null
-ARCH_ANY_ENDIAN=y
-ARCH_CFLAGS="-mno-split-addresses"
-ARCH_LITTLE_ENDIAN=y
-ARCH_WANTS_LITTLE_ENDIAN=y
-# CONFIG_MIPS_ISA_1 is not set
-# CONFIG_MIPS_ISA_2 is not set
-# CONFIG_MIPS_ISA_3 is not set
-# CONFIG_MIPS_ISA_4 is not set
-# CONFIG_MIPS_ISA_MIPS32 is not set
-# CONFIG_MIPS_ISA_MIPS32R2 is not set
-CONFIG_MIPS_ISA_MIPS64=y
-# CONFIG_MIPS_ISA_MIPS64R2 is not set
-CONFIG_MIPS_N32_ABI=y
-# CONFIG_MIPS_N64_ABI is not set
-# CONFIG_MIPS_O32_ABI is not set
-TARGET_ARCH="mips"
-TARGET_mips=y
-TARGET_SUBARCH="mips64"
-UCLIBC_HAS_FPU=y
+++ /dev/null
-ARCH_ANY_ENDIAN=y
-ARCH_CFLAGS="-mno-split-addresses"
-ARCH_LITTLE_ENDIAN=y
-ARCH_WANTS_LITTLE_ENDIAN=y
-# CONFIG_MIPS_ISA_1 is not set
-# CONFIG_MIPS_ISA_2 is not set
-# CONFIG_MIPS_ISA_3 is not set
-# CONFIG_MIPS_ISA_4 is not set
-CONFIG_MIPS_ISA_MIPS32=y
-# CONFIG_MIPS_ISA_MIPS32R2 is not set
-# CONFIG_MIPS_ISA_MIPS64 is not set
-# CONFIG_MIPS_ISA_MIPS64R2 is not set
-# CONFIG_MIPS_N32_ABI is not set
-# CONFIG_MIPS_N64_ABI is not set
-CONFIG_MIPS_O32_ABI=y
-TARGET_ARCH="mips"
-TARGET_mips=y
-UCLIBC_HAS_FPU=y
+++ /dev/null
-ARCH_ANY_ENDIAN=y
-ARCH_CFLAGS="-mno-split-addresses"
-ARCH_LITTLE_ENDIAN=y
-ARCH_WANTS_LITTLE_ENDIAN=y
-# CONFIG_MIPS_ISA_1 is not set
-# CONFIG_MIPS_ISA_2 is not set
-CONFIG_MIPS_ISA_3=y
-# CONFIG_MIPS_ISA_4 is not set
-# CONFIG_MIPS_ISA_MIPS32 is not set
-# CONFIG_MIPS_ISA_MIPS32R2 is not set
-# CONFIG_MIPS_ISA_MIPS64 is not set
-# CONFIG_MIPS_ISA_MIPS64R2 is not set
-# CONFIG_MIPS_N32_ABI is not set
-# CONFIG_MIPS_N64_ABI is not set
-CONFIG_MIPS_O32_ABI=y
-TARGET_ARCH="mips"
-TARGET_mips=y
-UCLIBC_HAS_FPU=y
+++ /dev/null
-ARCH_BIG_ENDIAN=y
-CONFIG_CLASSIC=y
-# CONFIG_E500 is not set
-TARGET_ARCH="powerpc"
-TARGET_SUBARCH="classic"
-TARGET_powerpc=y
+++ /dev/null
-ARCH_BIG_ENDIAN=y
-# CONFIG_CLASSIC is not set
-CONFIG_E500=y
-TARGET_ARCH="powerpc"
-TARGET_SUBARCH="classic"
-TARGET_powerpc=y
+++ /dev/null
-ARCH_BIG_ENDIAN=y
-# CONFIG_SPARC_V7 is not set
-# CONFIG_SPARC_V8 is not set
-CONFIG_SPARC_V9=y
-# CONFIG_SPARC_V9B is not set
-TARGET_ARCH="sparc"
-TARGET_sparc=y
-UCLIBC_HAS_LONG_DOUBLE_MATH=y
+++ /dev/null
-ARCH_BIG_ENDIAN=y
-# CONFIG_SPARC_V7 is not set
-CONFIG_SPARC_V8=y
-# CONFIG_SPARC_V9 is not set
-# CONFIG_SPARC_V9B is not set
-TARGET_ARCH="sparc"
-TARGET_sparc=y
-UCLIBC_HAS_LONG_DOUBLE_MATH=y
+++ /dev/null
-ARCH_LITTLE_ENDIAN=y
-# LINUXTHREADS_NEW is not set
-TARGET_ARCH="x86_64"
-TARGET_x86_64=y
-UCLIBC_BSD_SPECIFIC=y
-UCLIBC_HAS_FPU=y
--- /dev/null
+ARCH_ANY_ENDIAN=y
+ARCH_LITTLE_ENDIAN=y
+ARCH_WANTS_LITTLE_ENDIAN=y
+# COMPILE_IN_THUMB_MODE is not set
+TARGET_ARCH="arm"
+TARGET_arm=y
+# USE_BX is not set
+CONFIG_ARM_EABI=y
+
--- /dev/null
+ARCH_ANY_ENDIAN=y
+ARCH_BIG_ENDIAN=y
+ARCH_WANTS_BIG_ENDIAN=y
+# COMPILE_IN_THUMB_MODE is not set
+TARGET_ARCH="arm"
+TARGET_arm=y
+# USE_BX is not set
+CONFIG_ARM_EABI=y
+
--- /dev/null
+# ARCH_ANY_ENDIAN is not set
+ARCH_HAS_MMU=y
+# ARCH_HAS_NO_LDSO is not set
+# ARCH_HAS_NO_SHARED is not set
+# ARCH_LITTLE_ENDIAN is not set
+ARCH_USE_MMU=y
+# ARCH_WANTS_BIG_ENDIAN is not set
+# ARCH_WANTS_LITTLE_ENDIAN is not set
+ASSUME_DEVPTS=y
+# COMPAT_ATEXIT is not set
+CROSS_COMPILER_PREFIX=""
+DEVEL_PREFIX="/usr/"
+# DOASSERTS is not set
+# DODEBUG is not set
+# DODEBUG_PT is not set
+# DOMULTI is not set
+DOPIC=y
+DOSTRIP=y
+DO_C99_MATH=y
+# DO_XSI_MATH is not set
+# EXTRA_WARNINGS is not set
+FORCE_OPTIONS_FOR_ARCH=y
+# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
+# HARDWIRED_ABSPATH is not set
+# HAS_NO_THREADS is not set
+HAVE_DOT_CONFIG=y
+# HAVE_NO_PIC is not set
+# HAVE_NO_SSP is not set
+HAVE_SHARED=y
+KERNEL_HEADERS="."
+LDSO_BASE_FILENAME="ld.so"
+LDSO_CACHE_SUPPORT=y
+# LDSO_GNU_HASH_SUPPORT is not set
+LDSO_LD_LIBRARY_PATH=y
+LDSO_LDD_SUPPORT=y
+# LDSO_NO_CLEANUP is not set
+# LDSO_PRELINK_SUPPORT is not set
+# LDSO_PRELOAD_FILE_SUPPORT is not set
+LDSO_PRELOAD_ENV_SUPPORT=y
+LDSO_RUNPATH=y
+LDSO_SAFE_RUNPATH=y
+# LDSO_RUNPATH_OF_EXECUTABLE is not set
+# LDSO_SEARCH_INTERP_PATH is not set
+# LDSO_STANDALONE_SUPPORT is not set
+# LINUXTHREADS_NEW is not set
+# LINUXTHREADS_OLD is not set
+# UCLIBC_HAS_BACKTRACE is not set
+UCLIBC_HAS_THREADS_NATIVE=y
+# MALLOC is not set
+MALLOC_GLIBC_COMPAT=y
+# MALLOC_SIMPLE is not set
+MALLOC_STANDARD=y
+MULTILIB_DIR="lib"
+PTHREADS_DEBUG_SUPPORT=y
+RUNTIME_PREFIX="/"
+# SUPPORT_LD_DEBUG is not set
+# SUPPORT_LD_DEBUG_EARLY is not set
+TARGET_SUBARCH=""
+# TARGET_alpha is not set
+# TARGET_arc is not set
+# TARGET_arm is not set
+# TARGET_avr32 is not set
+# TARGET_bfin is not set
+# TARGET_c6x is not set
+# TARGET_cris is not set
+# TARGET_e1 is not set
+# TARGET_frv is not set
+# TARGET_h8300 is not set
+# TARGET_hppa is not set
+# TARGET_i386 is not set
+# TARGET_i960 is not set
+# TARGET_ia64 is not set
+# TARGET_lm32 is not set
+# TARGET_m68k is not set
+# TARGET_metag is not set
+# TARGET_microblaze is not set
+# TARGET_mips is not set
+# TARGET_nios is not set
+# TARGET_nios2 is not set
+# TARGET_or1k is not set
+# TARGET_powerpc is not set
+# TARGET_sh is not set
+# TARGET_sh64 is not set
+# TARGET_sparc is not set
+# TARGET_v850 is not set
+# TARGET_vax is not set
+# TARGET_x86_64 is not set
+# TARGET_xtensa is not set
+UCLIBC_BSD_SPECIFIC=y
+UCLIBC_BUILD_NOEXECSTACK=y
+# UCLIBC_BUILD_NOW is not set
+# UCLIBC_BUILD_PIE is not set
+UCLIBC_BUILD_RELRO=y
+UCLIBC_CTOR_DTOR=y
+UCLIBC_DYNAMIC_ATEXIT=y
+UCLIBC_EXTRA_CFLAGS=""
+UCLIBC_GRP_BUFFER_SIZE=256
+UCLIBC_HAS_ADVANCED_REALTIME=y
+# UCLIBC_HAS_ARC4RANDOM is not set
+UCLIBC_HAS_BSD_ERR=y
+UCLIBC_HAS_BSD_RES_CLOSE=y
+# UCLIBC_HAS_COMPAT_RES_STATE is not set
+UCLIBC_HAS_CRYPT=y
+UCLIBC_HAS_CRYPT_IMPL=y
+UCLIBC_HAS_CTYPE_CHECKED=y
+# UCLIBC_HAS_CTYPE_ENFORCED is not set
+UCLIBC_HAS_CTYPE_SIGNED=y
+UCLIBC_HAS_CTYPE_TABLES=y
+# UCLIBC_HAS_CTYPE_UNSAFE is not set
+UCLIBC_HAS_EPOLL=y
+UCLIBC_HAS_ERRNO_MESSAGES=y
+# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set
+# UCLIBC_HAS_FENV is not set
+UCLIBC_HAS_FLOATS=y
+UCLIBC_HAS_FNMATCH=y
+UCLIBC_HAS_FNMATCH_OLD=y
+# UCLIBC_HAS_FOPEN_CLOSEEXEC_MODE is not set
+UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y
+# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set
+# UCLIBC_HAS_FPU is not set
+UCLIBC_HAS_FTS=y
+UCLIBC_HAS_FTW=y
+# UCLIBC_HAS_FULL_RPC is not set
+UCLIBC_HAS_GETPT=y
+UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y
+UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
+# UCLIBC_HAS_GLIBC_DIGIT_GROUPING is not set
+UCLIBC_HAS_GLOB=y
+UCLIBC_HAS_GNU_ERROR=y
+UCLIBC_HAS_GNU_GETOPT=y
+UCLIBC_HAS_GNU_GETSUBOPT=y
+UCLIBC_HAS_GNU_GLOB=y
+UCLIBC_HAS_HEXADECIMAL_FLOATS=y
+UCLIBC_HAS_IPV4=y
+UCLIBC_HAS_IPV6=y
+UCLIBC_HAS_LFS=y
+UCLIBC_HAS_LIBNSL_STUB=y
+UCLIBC_HAS_LIBRESOLV_STUB=y
+UCLIBC_HAS_LIBUTIL=y
+# UCLIBC_HAS_LOCALE is not set
+# UCLIBC_BUILD_ALL_LOCALE is not set
+# UCLIBC_BUILD_MINIMAL_LOCALE is not set
+# UCLIBC_PREGENERATED_LOCALE_DATA is not set
+UCLIBC_HAS_LONG_DOUBLE_MATH=y
+UCLIBC_HAS_NETWORK_SUPPORT=y
+UCLIBC_HAS_NFTW=y
+# UCLIBC_HAS_OBSOLETE_BSD_SIGNAL is not set
+# UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL is not set
+UCLIBC_HAS_PRINTF_M_SPEC=y
+# UCLIBC_HAS_PROFILING is not set
+UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y
+UCLIBC_HAS_PTY=y
+UCLIBC_HAS_REALTIME=y
+# UCLIBC_HAS_REENTRANT_RPC is not set
+UCLIBC_HAS_REGEX=y
+UCLIBC_HAS_REGEX_OLD=y
+UCLIBC_HAS_RESOLVER_SUPPORT=y
+# UCLIBC_HAS_RPC is not set
+UCLIBC_HAS_SCANF_GLIBC_A_FLAG=y
+# UCLIBC_HAS_SHA256_CRYPT_IMPL is not set
+# UCLIBC_HAS_SHA512_CRYPT_IMPL is not set
+UCLIBC_HAS_SHADOW=y
+UCLIBC_HAS_SIGNUM_MESSAGES=y
+UCLIBC_HAS_SOCKET=y
+UCLIBC_HAS_SOFT_FLOAT=y
+# UCLIBC_HAS_SSP is not set
+# UCLIBC_HAS_SSP_COMPAT is not set
+UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y
+# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_256 is not set
+UCLIBC_HAS_STDIO_BUFSIZ_4096=y
+# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_NONE is not set
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set
+UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y
+UCLIBC_HAS_STDIO_GETC_MACRO=y
+UCLIBC_HAS_STDIO_PUTC_MACRO=y
+# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set
+UCLIBC_HAS_STRING_ARCH_OPT=y
+UCLIBC_HAS_STRING_GENERIC_OPT=y
+# UCLIBC_HAS_STUBS is not set
+UCLIBC_HAS_SYSLOG=y
+# UCLIBC_HAS_SYS_ERRLIST is not set
+# UCLIBC_HAS_SYS_SIGLIST is not set
+UCLIBC_HAS_THREADS=y
+UCLIBC_HAS_TM_EXTENSIONS=y
+UCLIBC_HAS_TZ_CACHING=y
+UCLIBC_HAS_TZ_FILE=y
+UCLIBC_HAS_TZ_FILE_READ_MANY=y
+UCLIBC_HAS_UTMPX=y
+UCLIBC_HAS_UTMP=y
+UCLIBC_HAS_WCHAR=y
+UCLIBC_HAS_WORDEXP=y
+UCLIBC_HAS_XATTR=y
+# UCLIBC_HAS_XLOCALE is not set
+UCLIBC_HAS___PROGNAME=y
+# UCLIBC_LINUX_MODULE_24 is not set
+UCLIBC_LINUX_MODULE_26=y
+UCLIBC_LINUX_SPECIFIC=y
+# UCLIBC_MALLOC_DEBUGGING is not set
+# UCLIBC_MJN3_ONLY is not set
+# UCLIBC_NTP_LEGACY is not set
+# USE_OLD_VFPRINTF is not set
+UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
+UCLIBC_PWD_BUFFER_SIZE=256
+# UCLIBC_STATIC_LDCONFIG is not set
+# UCLIBC_STRICT_HEADERS is not set
+UCLIBC_SUPPORT_AI_ADDRCONFIG=y
+UCLIBC_SUSV3_LEGACY=y
+UCLIBC_SUSV3_LEGACY_MACROS=y
+UCLIBC_SUSV4_LEGACY=y
+# UCLIBC_SV4_DEPRECATED is not set
+UCLIBC_TZ_FILE_PATH="/etc/TZ"
+# UCLIBC_FALLBACK_TO_ETC_LOCALTIME is not set
+UCLIBC_USE_NETLINK=y
+# UNIX98PTY_ONLY is not set
+USE_BX=y
+WARNINGS="-Wall"
+# UCLIBC_HAS_OBSTACK is not set
+# UCLIBC_SUSV2_LEGACY is not set
+# UCLIBC_HAS_CONTEXT_FUNCS is not set
+UCLIBC_HAS_GETOPT_LONG=y
--- /dev/null
+DODEBUG=y
+DODEBUG_PT=y
+PTHREADS_DEBUG_SUPPORT=y
+SUPPORT_LD_DEBUG=y
+SUPPORT_LD_DEBUG_EARLY=y
+UCLIBC_MALLOC_DEBUGGING=y
--- /dev/null
+ARCH_LITTLE_ENDIAN=y
+# CONFIG_386 is not set
+CONFIG_486=y
+# CONFIG_586 is not set
+# CONFIG_586MMX is not set
+# CONFIG_686 is not set
+# CONFIG_CRUSOE is not set
+# CONFIG_CYRIXIII is not set
+# CONFIG_ELAN is not set
+# CONFIG_GENERIC_386 is not set
+# CONFIG_K6 is not set
+# CONFIG_K7 is not set
+# CONFIG_NEHEMIAH is not set
+# CONFIG_PENTIUM4 is not set
+# CONFIG_PENTIUMII is not set
+# CONFIG_PENTIUMIII is not set
+# CONFIG_WINCHIP2 is not set
+# CONFIG_WINCHIPC6 is not set
+TARGET_ARCH="i386"
+TARGET_i386=y
+UCLIBC_HAS_FPU=y
--- /dev/null
+ARCH_LITTLE_ENDIAN=y
+# CONFIG_386 is not set
+# CONFIG_486 is not set
+# CONFIG_586 is not set
+# CONFIG_586MMX is not set
+CONFIG_686=y
+# CONFIG_CRUSOE is not set
+# CONFIG_CYRIXIII is not set
+# CONFIG_ELAN is not set
+# CONFIG_GENERIC_386 is not set
+# CONFIG_K6 is not set
+# CONFIG_K7 is not set
+# CONFIG_NEHEMIAH is not set
+# CONFIG_PENTIUM4 is not set
+# CONFIG_PENTIUMII is not set
+# CONFIG_PENTIUMIII is not set
+# CONFIG_WINCHIP2 is not set
+# CONFIG_WINCHIPC6 is not set
+TARGET_ARCH="i386"
+TARGET_i386=y
+UCLIBC_HAS_FPU=y
--- /dev/null
+ARCH_BIG_ENDIAN=y
+LINUXTHREADS_OLD=y
+TARGET_ARCH="m68k"
+TARGET_SUBARCH=""
+TARGET_m68k=y
+# UCLIBC_HAS_THREADS_NATIVE is not set
--- /dev/null
+ARCH_ANY_ENDIAN=y
+ARCH_BIG_ENDIAN=y
+ARCH_CFLAGS="-mno-split-addresses"
+ARCH_WANTS_BIG_ENDIAN=y
+# CONFIG_MIPS_ISA_1 is not set
+# CONFIG_MIPS_ISA_2 is not set
+# CONFIG_MIPS_ISA_3 is not set
+# CONFIG_MIPS_ISA_4 is not set
+CONFIG_MIPS_ISA_MIPS32=y
+# CONFIG_MIPS_ISA_MIPS32R2 is not set
+# CONFIG_MIPS_ISA_MIPS64 is not set
+# CONFIG_MIPS_ISA_MIPS64R2 is not set
+# CONFIG_MIPS_N32_ABI is not set
+# CONFIG_MIPS_N64_ABI is not set
+CONFIG_MIPS_O32_ABI=y
+TARGET_ARCH="mips"
+TARGET_mips=y
+UCLIBC_HAS_FPU=y
--- /dev/null
+ARCH_ANY_ENDIAN=y
+ARCH_BIG_ENDIAN=y
+ARCH_CFLAGS="-mno-split-addresses"
+ARCH_WANTS_BIG_ENDIAN=y
+# CONFIG_MIPS_ISA_1 is not set
+# CONFIG_MIPS_ISA_2 is not set
+# CONFIG_MIPS_ISA_3 is not set
+# CONFIG_MIPS_ISA_4 is not set
+# CONFIG_MIPS_ISA_MIPS32 is not set
+# CONFIG_MIPS_ISA_MIPS32R2 is not set
+CONFIG_MIPS_ISA_MIPS64=y
+# CONFIG_MIPS_ISA_MIPS64R2 is not set
+# CONFIG_MIPS_N32_ABI is not set
+CONFIG_MIPS_N64_ABI=y
+# CONFIG_MIPS_O32_ABI is not set
+TARGET_ARCH="mips"
+TARGET_mips=y
+UCLIBC_HAS_FPU=y
--- /dev/null
+ARCH_ANY_ENDIAN=y
+ARCH_BIG_ENDIAN=y
+ARCH_CFLAGS="-mno-split-addresses"
+ARCH_WANTS_BIG_ENDIAN=y
+# CONFIG_MIPS_ISA_1 is not set
+# CONFIG_MIPS_ISA_2 is not set
+# CONFIG_MIPS_ISA_3 is not set
+# CONFIG_MIPS_ISA_4 is not set
+# CONFIG_MIPS_ISA_MIPS32 is not set
+# CONFIG_MIPS_ISA_MIPS32R2 is not set
+CONFIG_MIPS_ISA_MIPS64=y
+# CONFIG_MIPS_ISA_MIPS64R2 is not set
+# CONFIG_MIPS_N32_ABI is not set
+# CONFIG_MIPS_N64_ABI is not set
+CONFIG_MIPS_O32_ABI=y
+TARGET_ARCH="mips"
+TARGET_mips=y
+TARGET_SUBARCH="mips64"
+UCLIBC_HAS_FPU=y
--- /dev/null
+ARCH_ANY_ENDIAN=y
+ARCH_BIG_ENDIAN=y
+ARCH_CFLAGS="-mno-split-addresses"
+ARCH_WANTS_BIG_ENDIAN=y
+# CONFIG_MIPS_ISA_1 is not set
+# CONFIG_MIPS_ISA_2 is not set
+# CONFIG_MIPS_ISA_3 is not set
+# CONFIG_MIPS_ISA_4 is not set
+# CONFIG_MIPS_ISA_MIPS32 is not set
+# CONFIG_MIPS_ISA_MIPS32R2 is not set
+CONFIG_MIPS_ISA_MIPS64=y
+# CONFIG_MIPS_ISA_MIPS64R2 is not set
+# CONFIG_MIPS_N32_ABI is not set
+CONFIG_MIPS_N64_ABI=y
+# CONFIG_MIPS_O32_ABI is not set
+TARGET_ARCH="mips"
+TARGET_mips=y
+TARGET_SUBARCH="mips64"
+UCLIBC_HAS_FPU=y
--- /dev/null
+ARCH_ANY_ENDIAN=y
+ARCH_BIG_ENDIAN=y
+ARCH_CFLAGS="-mno-split-addresses"
+ARCH_WANTS_BIG_ENDIAN=y
+# CONFIG_MIPS_ISA_1 is not set
+# CONFIG_MIPS_ISA_2 is not set
+# CONFIG_MIPS_ISA_3 is not set
+# CONFIG_MIPS_ISA_4 is not set
+# CONFIG_MIPS_ISA_MIPS32 is not set
+# CONFIG_MIPS_ISA_MIPS32R2 is not set
+CONFIG_MIPS_ISA_MIPS64=y
+# CONFIG_MIPS_ISA_MIPS64R2 is not set
+CONFIG_MIPS_N32_ABI=y
+# CONFIG_MIPS_N64_ABI is not set
+# CONFIG_MIPS_O32_ABI is not set
+TARGET_ARCH="mips"
+TARGET_mips=y
+TARGET_SUBARCH="mips64"
+UCLIBC_HAS_FPU=y
--- /dev/null
+ARCH_ANY_ENDIAN=y
+ARCH_CFLAGS="-mno-split-addresses"
+ARCH_LITTLE_ENDIAN=y
+ARCH_WANTS_LITTLE_ENDIAN=y
+# CONFIG_MIPS_ISA_1 is not set
+# CONFIG_MIPS_ISA_2 is not set
+# CONFIG_MIPS_ISA_3 is not set
+# CONFIG_MIPS_ISA_4 is not set
+# CONFIG_MIPS_ISA_MIPS32 is not set
+# CONFIG_MIPS_ISA_MIPS32R2 is not set
+CONFIG_MIPS_ISA_MIPS64=y
+# CONFIG_MIPS_ISA_MIPS64R2 is not set
+# CONFIG_MIPS_N32_ABI is not set
+CONFIG_MIPS_N64_ABI=y
+# CONFIG_MIPS_O32_ABI is not set
+TARGET_ARCH="mips"
+TARGET_mips=y
+UCLIBC_HAS_FPU=y
--- /dev/null
+ARCH_ANY_ENDIAN=y
+ARCH_CFLAGS="-mno-split-addresses"
+ARCH_LITTLE_ENDIAN=y
+ARCH_WANTS_LITTLE_ENDIAN=y
+# CONFIG_MIPS_ISA_1 is not set
+# CONFIG_MIPS_ISA_2 is not set
+# CONFIG_MIPS_ISA_3 is not set
+# CONFIG_MIPS_ISA_4 is not set
+# CONFIG_MIPS_ISA_MIPS32 is not set
+# CONFIG_MIPS_ISA_MIPS32R2 is not set
+CONFIG_MIPS_ISA_MIPS64=y
+# CONFIG_MIPS_ISA_MIPS64R2 is not set
+# CONFIG_MIPS_N32_ABI is not set
+# CONFIG_MIPS_N64_ABI is not set
+CONFIG_MIPS_O32_ABI=y
+TARGET_ARCH="mips"
+TARGET_mips=y
+TARGET_SUBARCH="mips64"
+UCLIBC_HAS_FPU=y
--- /dev/null
+ARCH_ANY_ENDIAN=y
+ARCH_CFLAGS="-mno-split-addresses"
+ARCH_LITTLE_ENDIAN=y
+ARCH_WANTS_LITTLE_ENDIAN=y
+# CONFIG_MIPS_ISA_1 is not set
+# CONFIG_MIPS_ISA_2 is not set
+# CONFIG_MIPS_ISA_3 is not set
+# CONFIG_MIPS_ISA_4 is not set
+# CONFIG_MIPS_ISA_MIPS32 is not set
+# CONFIG_MIPS_ISA_MIPS32R2 is not set
+CONFIG_MIPS_ISA_MIPS64=y
+# CONFIG_MIPS_ISA_MIPS64R2 is not set
+# CONFIG_MIPS_N32_ABI is not set
+CONFIG_MIPS_N64_ABI=y
+# CONFIG_MIPS_O32_ABI is not set
+TARGET_ARCH="mips"
+TARGET_mips=y
+TARGET_SUBARCH="mips64"
+UCLIBC_HAS_FPU=y
--- /dev/null
+ARCH_ANY_ENDIAN=y
+ARCH_CFLAGS="-mno-split-addresses"
+ARCH_LITTLE_ENDIAN=y
+ARCH_WANTS_LITTLE_ENDIAN=y
+# CONFIG_MIPS_ISA_1 is not set
+# CONFIG_MIPS_ISA_2 is not set
+# CONFIG_MIPS_ISA_3 is not set
+# CONFIG_MIPS_ISA_4 is not set
+# CONFIG_MIPS_ISA_MIPS32 is not set
+# CONFIG_MIPS_ISA_MIPS32R2 is not set
+CONFIG_MIPS_ISA_MIPS64=y
+# CONFIG_MIPS_ISA_MIPS64R2 is not set
+CONFIG_MIPS_N32_ABI=y
+# CONFIG_MIPS_N64_ABI is not set
+# CONFIG_MIPS_O32_ABI is not set
+TARGET_ARCH="mips"
+TARGET_mips=y
+TARGET_SUBARCH="mips64"
+UCLIBC_HAS_FPU=y
--- /dev/null
+ARCH_ANY_ENDIAN=y
+ARCH_CFLAGS="-mno-split-addresses"
+ARCH_LITTLE_ENDIAN=y
+ARCH_WANTS_LITTLE_ENDIAN=y
+# CONFIG_MIPS_ISA_1 is not set
+# CONFIG_MIPS_ISA_2 is not set
+# CONFIG_MIPS_ISA_3 is not set
+# CONFIG_MIPS_ISA_4 is not set
+CONFIG_MIPS_ISA_MIPS32=y
+# CONFIG_MIPS_ISA_MIPS32R2 is not set
+# CONFIG_MIPS_ISA_MIPS64 is not set
+# CONFIG_MIPS_ISA_MIPS64R2 is not set
+# CONFIG_MIPS_N32_ABI is not set
+# CONFIG_MIPS_N64_ABI is not set
+CONFIG_MIPS_O32_ABI=y
+TARGET_ARCH="mips"
+TARGET_mips=y
+UCLIBC_HAS_FPU=y
--- /dev/null
+ARCH_ANY_ENDIAN=y
+ARCH_CFLAGS="-mno-split-addresses"
+ARCH_LITTLE_ENDIAN=y
+ARCH_WANTS_LITTLE_ENDIAN=y
+# CONFIG_MIPS_ISA_1 is not set
+# CONFIG_MIPS_ISA_2 is not set
+CONFIG_MIPS_ISA_3=y
+# CONFIG_MIPS_ISA_4 is not set
+# CONFIG_MIPS_ISA_MIPS32 is not set
+# CONFIG_MIPS_ISA_MIPS32R2 is not set
+# CONFIG_MIPS_ISA_MIPS64 is not set
+# CONFIG_MIPS_ISA_MIPS64R2 is not set
+# CONFIG_MIPS_N32_ABI is not set
+# CONFIG_MIPS_N64_ABI is not set
+CONFIG_MIPS_O32_ABI=y
+TARGET_ARCH="mips"
+TARGET_mips=y
+UCLIBC_HAS_FPU=y
--- /dev/null
+ARCH_BIG_ENDIAN=y
+CONFIG_CLASSIC=y
+# CONFIG_E500 is not set
+TARGET_ARCH="powerpc"
+TARGET_SUBARCH="classic"
+TARGET_powerpc=y
--- /dev/null
+ARCH_BIG_ENDIAN=y
+# CONFIG_CLASSIC is not set
+CONFIG_E500=y
+TARGET_ARCH="powerpc"
+TARGET_SUBARCH="classic"
+TARGET_powerpc=y
--- /dev/null
+ARCH_BIG_ENDIAN=y
+# CONFIG_SPARC_V7 is not set
+# CONFIG_SPARC_V8 is not set
+CONFIG_SPARC_V9=y
+# CONFIG_SPARC_V9B is not set
+TARGET_ARCH="sparc"
+TARGET_sparc=y
+UCLIBC_HAS_LONG_DOUBLE_MATH=y
--- /dev/null
+ARCH_BIG_ENDIAN=y
+# CONFIG_SPARC_V7 is not set
+CONFIG_SPARC_V8=y
+# CONFIG_SPARC_V9 is not set
+# CONFIG_SPARC_V9B is not set
+TARGET_ARCH="sparc"
+TARGET_sparc=y
+UCLIBC_HAS_LONG_DOUBLE_MATH=y
--- /dev/null
+ARCH_LITTLE_ENDIAN=y
+# LINUXTHREADS_NEW is not set
+TARGET_ARCH="x86_64"
+TARGET_x86_64=y
+UCLIBC_BSD_SPECIFIC=y
+UCLIBC_HAS_FPU=y
+++ /dev/null
-From 76ff037059f6d387bde9d540f7e27a2b376d7cd7 Mon Sep 17 00:00:00 2001
-From: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
-Date: Fri, 18 Jan 2013 11:12:49 +0100
-Subject: [PATCH] mount.h: update
-
-Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
----
- include/sys/mount.h | 45 +++++++++++++++++++++++++++++++++++----------
- 1 file changed, 35 insertions(+), 10 deletions(-)
-
-diff --git a/include/sys/mount.h b/include/sys/mount.h
-index fbd61fd..c0e7b84 100644
---- a/include/sys/mount.h
-+++ b/include/sys/mount.h
-@@ -1,5 +1,5 @@
- /* Header file for mounting/unmount Linux filesystems.
-- Copyright (C) 1996,1997,1998,1999,2000,2004 Free Software Foundation, Inc.
-+ Copyright (C) 1996-2000, 2004, 2010, 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
-@@ -46,23 +46,46 @@ enum
- #define MS_REMOUNT MS_REMOUNT
- MS_MANDLOCK = 64, /* Allow mandatory locks on an FS. */
- #define MS_MANDLOCK MS_MANDLOCK
-- S_WRITE = 128, /* Write on file/directory/symlink. */
--#define S_WRITE S_WRITE
-- S_APPEND = 256, /* Append-only file. */
--#define S_APPEND S_APPEND
-- S_IMMUTABLE = 512, /* Immutable file. */
--#define S_IMMUTABLE S_IMMUTABLE
-+ MS_DIRSYNC = 128, /* Directory modifications are synchronous. */
-+#define MS_DIRSYNC MS_DIRSYNC
- MS_NOATIME = 1024, /* Do not update access times. */
- #define MS_NOATIME MS_NOATIME
- MS_NODIRATIME = 2048, /* Do not update directory access times. */
- #define MS_NODIRATIME MS_NODIRATIME
- MS_BIND = 4096, /* Bind directory at different place. */
- #define MS_BIND MS_BIND
-+ MS_MOVE = 8192,
-+#define MS_MOVE MS_MOVE
-+ MS_REC = 16384,
-+#define MS_REC MS_REC
-+ MS_SILENT = 32768,
-+#define MS_SILENT MS_SILENT
-+ MS_POSIXACL = 1 << 16, /* VFS does not apply the umask. */
-+#define MS_POSIXACL MS_POSIXACL
-+ MS_UNBINDABLE = 1 << 17, /* Change to unbindable. */
-+#define MS_UNBINDABLE MS_UNBINDABLE
-+ MS_PRIVATE = 1 << 18, /* Change to private. */
-+#define MS_PRIVATE MS_PRIVATE
-+ MS_SLAVE = 1 << 19, /* Change to slave. */
-+#define MS_SLAVE MS_SLAVE
-+ MS_SHARED = 1 << 20, /* Change to shared. */
-+#define MS_SHARED MS_SHARED
-+ MS_RELATIME = 1 << 21, /* Update atime relative to mtime/ctime. */
-+#define MS_RELATIME MS_RELATIME
-+ MS_KERNMOUNT = 1 << 22, /* This is a kern_mount call. */
-+#define MS_KERNMOUNT MS_KERNMOUNT
-+ MS_I_VERSION = 1 << 23, /* Update inode I_version field. */
-+#define MS_I_VERSION MS_I_VERSION
-+ MS_STRICTATIME = 1 << 24, /* Always perform atime updates. */
-+#define MS_STRICTATIME MS_STRICTATIME
-+ MS_ACTIVE = 1 << 30,
-+#define MS_ACTIVE MS_ACTIVE
-+ MS_NOUSER = 1 << 31
-+#define MS_NOUSER MS_NOUSER
- };
-
- /* Flags that can be altered by MS_REMOUNT */
--#define MS_RMT_MASK (MS_RDONLY|MS_SYNCHRONOUS|MS_MANDLOCK|MS_NOATIME \
-- |MS_NODIRATIME)
-+#define MS_RMT_MASK (MS_RDONLY|MS_SYNCHRONOUS|MS_MANDLOCK|MS_I_VERSION)
-
-
- /* Magic mount flag number. Has to be or-ed to the flag values. */
-@@ -99,8 +122,10 @@ enum
- #define MNT_FORCE MNT_FORCE
- MNT_DETACH = 2, /* Just detach from the tree. */
- #define MNT_DETACH MNT_DETACH
-- MNT_EXPIRE = 4 /* Mark for expiry. */
-+ MNT_EXPIRE = 4, /* Mark for expiry. */
- #define MNT_EXPIRE MNT_EXPIRE
-+ UMOUNT_NOFOLLOW = 8 /* Don't follow symlink on umount. */
-+#define UMOUNT_NOFOLLOW UMOUNT_NOFOLLOW
- };
-
-
---
-1.9.1
-
+++ /dev/null
-From 8cfb43de636faa401634340d1a18404844f9ba5a Mon Sep 17 00:00:00 2001
-From: Mike Frysinger <vapier@gentoo.org>
-Date: Sun, 6 May 2012 03:50:44 -0400
-Subject: [PATCH] stdio: implement assignment-allocation "m" character
-
-The latest POSIX spec introduces a "m" character to allocate buffers for
-the user when using scanf type functions. This is like the old glibc "a"
-flag, but now standardized. With packages starting to use these, we need
-to implement it.
-
-for example:
- char *s;
- sscanf("foo", "%ms", &s);
- printf("%s\n", s);
- free(s);
-This will automatically allocate storage for "s", read in "foo" to it,
-and then display it.
-
-I'm not terribly familiar with the stdio layer, so this could be wrong.
-But it seems to work for me.
-
-Signed-off-by: Mike Frysinger <vapier@gentoo.org>
-Signed-off-by: Felix Fietkau <nbd@openwrt.org>
----
- extra/Configs/Config.in | 13 ----------
- libc/stdio/_scanf.c | 68 ++++++++++++++++++++++++++++---------------------
- 2 files changed, 39 insertions(+), 42 deletions(-)
-
---- a/extra/Configs/Config.in
-+++ b/extra/Configs/Config.in
-@@ -1590,19 +1590,6 @@ config UCLIBC_PRINTF_SCANF_POSITIONAL_AR
-
- Most people will answer 9.
-
--
--config UCLIBC_HAS_SCANF_GLIBC_A_FLAG
-- bool "Support glibc's 'a' flag for scanf string conversions (not implemented)"
-- help
-- NOTE!!! Currently Not Implemented!!! Just A Place Holder!! NOTE!!!
-- NOTE!!! Conflicts with an ANSI/ISO C99 scanf flag!! NOTE!!!
--
-- Answer Y to enable support for glibc's 'a' flag for the scanf string
-- conversions '%s', '%[', '%ls', '%l[', and '%S'. This is used to
-- auto-allocate sufficient memory to hold the data retrieved.
--
-- Most people will answer N.
--
- choice
- prompt "Stdio buffer size"
- default UCLIBC_HAS_STDIO_BUFSIZ_4096
---- a/libc/stdio/_scanf.c
-+++ b/libc/stdio/_scanf.c
-@@ -77,14 +77,6 @@
- #include <bits/uClibc_fpmax.h>
- #endif /* __UCLIBC_HAS_FLOATS__ */
-
--#ifdef __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__
--#ifdef L_vfscanf
--/* only emit this once */
--#warning Forcing undef of __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__ until implemented!
--#endif
--#undef __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__
--#endif
--
- #undef __STDIO_HAS_VSSCANF
- #if defined(__STDIO_BUFFERS) || !defined(__UCLIBC_HAS_WCHAR__) || defined(__UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__)
- #define __STDIO_HAS_VSSCANF 1
-@@ -433,8 +425,9 @@ libc_hidden_def(vswscanf)
-
-
- /* float layout 0123456789012345678901 repeat n for "l[" */
--#define SPEC_CHARS "npxXoudifFeEgGaACSncs["
--/* npxXoudif eEgG CS cs[ */
-+#define SPEC_CHARS "npxXoudifFeEgGaACSnmcs["
-+/* npxXoudif eEgG CS cs[ */
-+/* NOTE: the 'm' flag must come before any convs that support it */
-
- /* NOTE: Ordering is important! In particular, CONV_LEFTBRACKET
- * must immediately precede CONV_c. */
-@@ -444,7 +437,7 @@ enum {
- CONV_p,
- CONV_x, CONV_X, CONV_o, CONV_u, CONV_d, CONV_i,
- CONV_f, CONV_F, CONV_e, CONV_E, CONV_g, CONV_G, CONV_a, CONV_A,
-- CONV_C, CONV_S, CONV_LEFTBRACKET, CONV_c, CONV_s, CONV_leftbracket,
-+ CONV_C, CONV_S, CONV_LEFTBRACKET, CONV_m, CONV_c, CONV_s, CONV_leftbracket,
- CONV_percent, CONV_whitespace /* not in SPEC_* and no flags */
- };
-
-@@ -474,7 +467,7 @@ enum {
- FLAG_SURPRESS = 0x10, /* MUST BE 1ST!! See DO_FLAGS. */
- FLAG_THOUSANDS = 0x20,
- FLAG_I18N = 0x40, /* only works for d, i, u */
-- FLAG_MALLOC = 0x80, /* only works for s, S, and [ (and l[)*/
-+ FLAG_MALLOC = 0x80, /* only works for c, s, S, and [ (and l[)*/
- };
-
-
-@@ -491,7 +484,7 @@ enum {
- /* fFeEgGaA */ (0x0c|FLAG_SURPRESS|FLAG_THOUSANDS|FLAG_I18N), \
- /* C */ ( 0|FLAG_SURPRESS), \
- /* S and l[ */ ( 0|FLAG_SURPRESS|FLAG_MALLOC), \
-- /* c */ (0x04|FLAG_SURPRESS), \
-+ /* c */ (0x04|FLAG_SURPRESS|FLAG_MALLOC), \
- /* s and [ */ (0x04|FLAG_SURPRESS|FLAG_MALLOC), \
- }
-
-@@ -904,17 +897,17 @@ int attribute_hidden __psfs_parse_spec(r
- if (*psfs->fmt == *p) {
- int p_m_spec_chars = p - spec_chars;
-
--#ifdef __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__
--#error implement gnu a flag
-- if ((*p == 'a')
-- && ((psfs->fmt[1] == '[') || ((psfs->fmt[1]|0x20) == 's'))
-- ) { /* Assumes ascii for 's' and 'S' test. */
-- psfs->flags |= FLAG_MALLOC;
-+ if (*p == 'm' &&
-+ (psfs->fmt[1] == '[' || psfs->fmt[1] == 'c' ||
-+ /* Assumes ascii for 's' and 'S' test. */
-+ (psfs->fmt[1] | 0x20) == 's'))
-+ {
-+ if (psfs->store)
-+ psfs->flags |= FLAG_MALLOC;
- ++psfs->fmt;
- ++p;
-- continue; /* The related conversions follow 'a'. */
-+ continue; /* The related conversions follow 'm'. */
- }
--#endif /* __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__ */
-
- for (p = spec_ranges; p_m_spec_chars > *p ; ++p) {}
- if (((psfs->dataargtype >> 8) | psfs->flags)
-@@ -1265,12 +1258,6 @@ int VFSCANF (FILE *__restrict fp, const
- while (*wf && __isascii(*wf) && (b < buf + sizeof(buf) - 1)) {
- *b++ = *wf++;
- }
--#ifdef __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__
--#error this is wrong... we need to ched in __psfs_parse_spec instead since this checks last char in buffer and conversion my have stopped before it.
-- if ((*b == 'a') && ((*wf == '[') || ((*wf|0x20) == 's'))) {
-- goto DONE; /* Spec was excessively long. */
-- }
--#endif /* __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__ */
- *b = 0;
- if (b == buf) { /* Bad conversion specifier! */
- goto DONE;
-@@ -1390,13 +1377,36 @@ int VFSCANF (FILE *__restrict fp, const
- }
-
- if (psfs.conv_num == CONV_s) {
-+ /* We might have to handle the allocation ourselves */
-+ int len;
-+ /* With 'm', we actually got a pointer to a pointer */
-+ unsigned char **ptr = (void *)b;
-+
-+ i = 0;
-+ if (psfs.flags & FLAG_MALLOC) {
-+ len = 0;
-+ b = NULL;
-+ } else
-+ len = -1;
-+
- /* Yes, believe it or not, a %s conversion can store nuls. */
- while ((__scan_getc(&sc) >= 0) && !isspace(sc.cc)) {
- zero_conversions = 0;
-- *b = sc.cc;
-- b += psfs.store;
-+ if (i == len) {
-+ /* Pick a size that won't trigger a lot of
-+ * mallocs early on ... */
-+ len += 256;
-+ b = realloc(b, len + 1);
-+ }
-+ b[i] = sc.cc;
-+ i += psfs.store;
- fail = 0;
- }
-+
-+ if (psfs.flags & FLAG_MALLOC)
-+ *ptr = b;
-+ /* The code below takes care of terminating NUL */
-+ b += i;
- } else {
- #ifdef __UCLIBC_HAS_WCHAR__
- assert((psfs.conv_num == CONV_LEFTBRACKET) || \
+++ /dev/null
---- a/ldso/libdl/libdl.c
-+++ b/ldso/libdl/libdl.c
-@@ -671,7 +671,7 @@ static void *do_dlsym(void *vhandle, con
- {
- struct elf_resolve *tpnt, *tfrom;
- struct dyn_elf *handle;
-- ElfW(Addr) from;
-+ ElfW(Addr) from = 0;
- struct dyn_elf *rpnt;
- void *ret;
- struct symbol_ref sym_ref = { NULL, NULL };
-@@ -729,7 +729,12 @@ static void *do_dlsym(void *vhandle, con
- tpnt = NULL;
- if (handle == _dl_symbol_tables)
- tpnt = handle->dyn; /* Only search RTLD_GLOBAL objs if global object */
-- ret = _dl_find_hash(name2, &handle->dyn->symbol_scope, tpnt, ELF_RTYPE_CLASS_DLSYM, &sym_ref);
-+ do {
-+ ret = _dl_find_hash(name2, &handle->dyn->symbol_scope, tpnt, ELF_RTYPE_CLASS_DLSYM, &sym_ref);
-+ if (ret != NULL)
-+ break;
-+ handle = handle->next;
-+ } while (from && handle);
-
- #if defined(USE_TLS) && USE_TLS && defined SHARED
- if (sym_ref.sym && (ELF_ST_TYPE(sym_ref.sym->st_info) == STT_TLS) && (sym_ref.tpnt)) {
+++ /dev/null
-From be58779614b2fe9aa57a9315be9dc004dfd77b3b Mon Sep 17 00:00:00 2001
-From: Vineet Gupta <vgupta@synopsys.com>
-Date: Fri, 20 Feb 2015 15:27:08 +0530
-Subject: [PATCH] elf: Add STT_GNU_IFUNC from glibc
-
-perf in upstream Linux kernel 3.17 onwards expects STT_GNU_IFUNC
-replicate it from glibc
-
-Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
-Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
----
- include/elf.h | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/include/elf.h b/include/elf.h
-index facf09c..917930b 100644
---- a/include/elf.h
-+++ b/include/elf.h
-@@ -566,6 +566,7 @@ typedef struct
- #define STB_WEAK 2 /* Weak symbol */
- #define STB_NUM 3 /* Number of defined types. */
- #define STB_LOOS 10 /* Start of OS-specific */
-+#define STB_GNU_UNIQUE 10 /* Unique symbol. */
- #define STB_HIOS 12 /* End of OS-specific */
- #define STB_LOPROC 13 /* Start of processor-specific */
- #define STB_HIPROC 15 /* End of processor-specific */
-@@ -581,6 +582,7 @@ typedef struct
- #define STT_TLS 6 /* Symbol is thread-local data object*/
- #define STT_NUM 7 /* Number of defined types. */
- #define STT_LOOS 10 /* Start of OS-specific */
-+#define STT_GNU_IFUNC 10 /* Symbol is indirect code object */
- #define STT_HIOS 12 /* End of OS-specific */
- #define STT_LOPROC 13 /* Start of processor-specific */
- #define STT_HIPROC 15 /* End of processor-specific */
---
-2.1.4
-
+++ /dev/null
-From: "Peter S. Mazinger" <ps.m@gmx.net>
-Date: Thu, 21 Apr 2011 21:20:55 +0200
-Subject: [PATCH] endian.h: add some handy macros to be used in syscalls
-
-Signed-off-by: Peter S. Mazinger <ps.m@gmx.net>
-Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
----
-
---- a/include/endian.h
-+++ b/include/endian.h
-@@ -55,6 +55,17 @@
- # define __LONG_LONG_PAIR(HI, LO) HI, LO
- #endif
-
-+#ifdef _LIBC
-+# ifndef __ASSEMBLER__
-+# include <stdint.h>
-+# define OFF_HI(offset) (offset >> 31)
-+# define OFF_LO(offset) (offset)
-+# define OFF64_HI(offset) (uint32_t)(offset >> 32)
-+# define OFF64_LO(offset) (uint32_t)(offset & 0xffffffff)
-+# define OFF_HI_LO(offset) __LONG_LONG_PAIR(OFF_HI(offset), OFF_LO(offset))
-+# define OFF64_HI_LO(offset) __LONG_LONG_PAIR(OFF64_HI(offset), OFF64_LO(offset))
-+# endif
-+#endif
-
- #ifdef __USE_BSD
- /* Conversion interfaces. */
+++ /dev/null
-From: "Peter S. Mazinger" <ps.m@gmx.net>
-Date: Tue, 26 Apr 2011 23:03:44 +0200
-Subject: [PATCH] add posix_madvise.c
-
-Signed-off-by: Peter S. Mazinger <ps.m@gmx.net>
-Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
----
- create mode 100644 libc/sysdeps/linux/common/posix_madvise.c
-
---- a/libc/sysdeps/linux/common/Makefile.in
-+++ b/libc/sysdeps/linux/common/Makefile.in
-@@ -81,7 +81,7 @@ CSRC-$(UCLIBC_HAS_REALTIME) += clock_get
- sched_get_priority_max.c sched_get_priority_min.c sched_getscheduler.c \
- sched_rr_get_interval.c sched_setparam.c sched_setscheduler.c sigqueue.c
- # clock_getcpuclockid|clock_nanosleep|mq_timedreceive|mq_timedsend|posix_fadvise|posix_fallocate|posix_madvise|posix_memalign|posix_mem_offset|posix_spawnattr_destroy|posix_spawnattr_init|posix_spawnattr_getflags|posix_spawnattr_setflags|posix_spawnattr_getpgroup|posix_spawnattr_setpgroup|posix_spawnattr_getschedparam|posix_spawnattr_setschedparam|posix_spawnattr_getschedpolicy|posix_spawnattr_setschedpolicy|posix_spawnattr_getsigdefault|posix_spawnattr_setsigdefault|posix_spawnattr_getsigmask|posix_spawnattr_setsigmask|posix_spawnattr_init|posix_spawnattr_setflags|posix_spawnattr_setpgroup|posix_spawnattr_setschedparam|posix_spawnattr_setschedpolicy|posix_spawnattr_setsigdefault|posix_spawnattr_setsigmask|posix_spawn_file_actions_addclose|posix_spawn_file_actions_addopen|posix_spawn_file_actions_adddup2|posix_spawn_file_actions_addopen|posix_spawn_file_actions_destroy|posix_spawn_file_actions_init|posix_spawn_file_actions_init|posix_spawn|posix_spawnp|posix_spawnp|posix_typed_mem_get_info|pthread_mutex_timedlock|sem_timedwait
--CSRC-$(UCLIBC_HAS_ADVANCED_REALTIME) += posix_fadvise64.c posix_fadvise.c
-+CSRC-$(UCLIBC_HAS_ADVANCED_REALTIME) += posix_fadvise64.c posix_fadvise.c posix_madvise.c
- CSRC-$(UCLIBC_SUSV4_LEGACY) += utime.c
- CSRC-$(UCLIBC_HAS_EPOLL) += epoll.c
- CSRC-$(UCLIBC_HAS_XATTR) += xattr.c
---- /dev/null
-+++ b/libc/sysdeps/linux/common/posix_madvise.c
-@@ -0,0 +1,25 @@
-+/* vi: set sw=4 ts=4: */
-+/* Licensed under the LGPL v2.1, see the file LICENSE in this tarball. */
-+
-+#include <sys/mman.h>
-+#include <sys/syscall.h>
-+
-+#if defined __NR_madvise && defined __USE_XOPEN2K && defined __UCLIBC_HAS_ADVANCED_REALTIME__
-+int posix_madvise(void *addr, size_t len, int advice)
-+{
-+ int result;
-+ /* We have one problem: the kernel's MADV_DONTNEED does not
-+ * correspond to POSIX's POSIX_MADV_DONTNEED. The former simply
-+ * discards changes made to the memory without writing it back to
-+ * disk, if this would be necessary. The POSIX behaviour does not
-+ * allow this. There is no functionality mapping for the POSIX
-+ * behaviour so far so we ignore that advice for now. */
-+ if (advice == POSIX_MADV_DONTNEED)
-+ return 0;
-+
-+ /* this part might use madvise function */
-+ INTERNAL_SYSCALL_DECL (err);
-+ result = INTERNAL_SYSCALL (madvise, err, 3, addr, len, advice);
-+ return INTERNAL_SYSCALL_ERRNO (result, err);
-+}
-+#endif
+++ /dev/null
-From: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
-Date: Tue, 17 Apr 2012 09:30:15 +0200
-Subject: [PATCH] libc: add posix_fallocate()
-
-Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
----
- create mode 100644 libc/sysdeps/linux/common/posix_fallocate.c
- create mode 100644 libc/sysdeps/linux/common/posix_fallocate64.c
- create mode 100644 test/unistd/tst-posix_fallocate.c
- create mode 100644 test/unistd/tst-posix_fallocate64.c
-
---- a/include/fcntl.h
-+++ b/include/fcntl.h
-@@ -210,9 +210,7 @@ extern int posix_fadvise64 (int __fd, __
-
- #endif
-
--#if 0 /* && defined __UCLIBC_HAS_ADVANCED_REALTIME__ */
--
--/* FIXME -- uClibc should probably implement these... */
-+#if defined __UCLIBC_HAS_ADVANCED_REALTIME__
-
- /* Reserve storage for the data of the file associated with FD.
-
---- a/libc/sysdeps/linux/common/Makefile.in
-+++ b/libc/sysdeps/linux/common/Makefile.in
-@@ -81,7 +81,8 @@ CSRC-$(UCLIBC_HAS_REALTIME) += clock_get
- sched_get_priority_max.c sched_get_priority_min.c sched_getscheduler.c \
- sched_rr_get_interval.c sched_setparam.c sched_setscheduler.c sigqueue.c
- # clock_getcpuclockid|clock_nanosleep|mq_timedreceive|mq_timedsend|posix_fadvise|posix_fallocate|posix_madvise|posix_memalign|posix_mem_offset|posix_spawnattr_destroy|posix_spawnattr_init|posix_spawnattr_getflags|posix_spawnattr_setflags|posix_spawnattr_getpgroup|posix_spawnattr_setpgroup|posix_spawnattr_getschedparam|posix_spawnattr_setschedparam|posix_spawnattr_getschedpolicy|posix_spawnattr_setschedpolicy|posix_spawnattr_getsigdefault|posix_spawnattr_setsigdefault|posix_spawnattr_getsigmask|posix_spawnattr_setsigmask|posix_spawnattr_init|posix_spawnattr_setflags|posix_spawnattr_setpgroup|posix_spawnattr_setschedparam|posix_spawnattr_setschedpolicy|posix_spawnattr_setsigdefault|posix_spawnattr_setsigmask|posix_spawn_file_actions_addclose|posix_spawn_file_actions_addopen|posix_spawn_file_actions_adddup2|posix_spawn_file_actions_addopen|posix_spawn_file_actions_destroy|posix_spawn_file_actions_init|posix_spawn_file_actions_init|posix_spawn|posix_spawnp|posix_spawnp|posix_typed_mem_get_info|pthread_mutex_timedlock|sem_timedwait
--CSRC-$(UCLIBC_HAS_ADVANCED_REALTIME) += posix_fadvise64.c posix_fadvise.c posix_madvise.c
-+CSRC-$(UCLIBC_HAS_ADVANCED_REALTIME) += posix_fadvise64.c posix_fadvise.c posix_madvise.c \
-+ posix_fallocate.c posix_fallocate64.c
- CSRC-$(UCLIBC_SUSV4_LEGACY) += utime.c
- CSRC-$(UCLIBC_HAS_EPOLL) += epoll.c
- CSRC-$(UCLIBC_HAS_XATTR) += xattr.c
---- a/libc/sysdeps/linux/common/bits/kernel-features.h
-+++ b/libc/sysdeps/linux/common/bits/kernel-features.h
-@@ -494,6 +494,14 @@
- # define __ASSUME_PRIVATE_FUTEX 1
- #endif
-
-+/* Support for fallocate was added in 2.6.23,
-+ on s390 only after 2.6.23-rc1, on alpha only after 2.6.33-rc1. */
-+#if __LINUX_KERNEL_VERSION >= 0x020617 \
-+ && (!defined __s390__ || __LINUX_KERNEL_VERSION >= 0x020618) \
-+ && (!defined __alpha__ || __LINUX_KERNEL_VERSION >= 0x020621)
-+# define __ASSUME_FALLOCATE 1
-+#endif
-+
- /* getcpu is a syscall for x86-64 since 3.1. */
- #if defined __x86_64__ && __LINUX_KERNEL_VERSION >= 0x030100
- # define __ASSUME_GETCPU_SYSCALL 1
---- /dev/null
-+++ b/libc/sysdeps/linux/common/posix_fallocate.c
-@@ -0,0 +1,43 @@
-+/* vi: set sw=4 ts=4: */
-+/*
-+ * posix_fallocate() for uClibc
-+ * http://www.opengroup.org/onlinepubs/9699919799/functions/posix_fallocate.html
-+ *
-+ * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
-+ *
-+ * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
-+ */
-+
-+#include <sys/syscall.h>
-+#include <fcntl.h>
-+#include <bits/kernel-features.h>
-+#include <stdint.h>
-+
-+#if defined __NR_fallocate
-+int posix_fallocate(int fd, __off_t offset, __off_t len)
-+{
-+ int ret;
-+
-+# if __WORDSIZE == 32
-+ uint32_t off_low = offset;
-+ uint32_t len_low = len;
-+ /* may assert that these >>31 are 0 */
-+ uint32_t zero = 0;
-+ INTERNAL_SYSCALL_DECL(err);
-+ ret = (int) (INTERNAL_SYSCALL(fallocate, err, 6, fd, 0,
-+ __LONG_LONG_PAIR (zero, off_low),
-+ __LONG_LONG_PAIR (zero, len_low)));
-+# elif __WORDSIZE == 64
-+ INTERNAL_SYSCALL_DECL(err);
-+ ret = (int) (INTERNAL_SYSCALL(fallocate, err, 4, fd, 0, offset, len));
-+# else
-+# error your machine is neither 32 bit or 64 bit ... it must be magical
-+#endif
-+ if (unlikely(INTERNAL_SYSCALL_ERROR_P (ret, err)))
-+ return INTERNAL_SYSCALL_ERRNO (ret, err);
-+ return 0;
-+}
-+# if defined __UCLIBC_HAS_LFS__ && __WORDSIZE == 64
-+strong_alias(posix_fallocate,posix_fallocate64)
-+# endif
-+#endif
---- /dev/null
-+++ b/libc/sysdeps/linux/common/posix_fallocate64.c
-@@ -0,0 +1,39 @@
-+/* vi: set sw=4 ts=4: */
-+/*
-+ * posix_fallocate() for uClibc
-+ * http://www.opengroup.org/onlinepubs/9699919799/functions/posix_fallocate.html
-+ *
-+ * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
-+ *
-+ * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
-+ */
-+
-+#include <sys/syscall.h>
-+#include <fcntl.h>
-+#include <bits/kernel-features.h>
-+#include <stdint.h>
-+
-+#if defined __NR_fallocate
-+
-+# if __WORDSIZE == 64
-+/* Can use normal posix_fallocate() */
-+# elif __WORDSIZE == 32
-+int posix_fallocate64(int fd, __off64_t offset, __off64_t len)
-+{
-+ int ret;
-+ uint32_t off_low = offset & 0xffffffff;
-+ uint32_t off_high = offset >> 32;
-+ uint32_t len_low = len & 0xffffffff;
-+ uint32_t len_high = len >> 32;
-+ INTERNAL_SYSCALL_DECL(err);
-+ ret = (int) (INTERNAL_SYSCALL(fallocate, err, 6, fd, 0,
-+ __LONG_LONG_PAIR (off_high, off_low),
-+ __LONG_LONG_PAIR (len_high, len_low)));
-+ if (unlikely(INTERNAL_SYSCALL_ERROR_P (ret, err)))
-+ return INTERNAL_SYSCALL_ERRNO (ret, err);
-+ return 0;
-+}
-+# else
-+# error your machine is neither 32 bit or 64 bit ... it must be magical
-+# endif
-+#endif
---- a/test/.gitignore
-+++ b/test/.gitignore
-@@ -302,6 +302,8 @@ unistd/getcwd
- unistd/getopt
- unistd/getopt_long
- unistd/tstgetopt
-+unistd/tst-posix_fallocate
-+unistd/tst-posix_fallocate64
- unistd/tst-preadwrite
- unistd/tst-preadwrite64
- unistd/vfork
---- a/test/unistd/Makefile.in
-+++ b/test/unistd/Makefile.in
-@@ -2,7 +2,10 @@
- # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
-
- ifeq ($(UCLIBC_HAS_LFS),)
--TESTS_DISABLED := tst-preadwrite64
-+TESTS_DISABLED := tst-preadwrite64 tst-posix_fallocate64
-+endif
-+ifeq ($(UCLIBC_HAS_ADVANCED_REALTIME),)
-+TESTS_DISABLED := tst-posix_fallocate
- endif
- OPTS_getopt := -abcXXX -9
- OPTS_getopt_long := --add XXX --delete YYY --verbose
---- /dev/null
-+++ b/test/unistd/tst-posix_fallocate.c
-@@ -0,0 +1,127 @@
-+#include <fcntl.h>
-+#include <sys/stat.h>
-+
-+#ifndef TST_POSIX_FALLOCATE64
-+# define stat64 stat
-+# define fstat64 fstat
-+# else
-+# ifndef O_LARGEFILE
-+# error no O_LARGEFILE but you want to test with LFS enabled
-+# endif
-+#endif
-+
-+static void do_prepare (void);
-+#define PREPARE(argc, argv) do_prepare ()
-+static int do_test (void);
-+#define TEST_FUNCTION do_test ()
-+#include <test-skeleton.c>
-+
-+static int fd;
-+static void
-+do_prepare (void)
-+{
-+ fd = create_temp_file ("tst-posix_fallocate.", NULL);
-+ if (fd == -1)
-+ {
-+ printf ("cannot create temporary file: %m\n");
-+ exit (1);
-+ }
-+}
-+
-+
-+static int
-+do_test (void)
-+{
-+ struct stat64 st;
-+
-+ if (fstat64 (fd, &st) != 0)
-+ {
-+ puts ("1st fstat failed");
-+ return 1;
-+ }
-+
-+ if (st.st_size != 0)
-+ {
-+ puts ("file not created with size 0");
-+ return 1;
-+ }
-+
-+ if (posix_fallocate (fd, 512, 768) != 0)
-+ {
-+ puts ("1st posix_fallocate call failed");
-+ return 1;
-+ }
-+
-+ if (fstat64 (fd, &st) != 0)
-+ {
-+ puts ("2nd fstat failed");
-+ return 1;
-+ }
-+
-+ if (st.st_size != 512 + 768)
-+ {
-+ printf ("file size after 1st posix_fallocate call is %llu, expected %u\n",
-+ (unsigned long long int) st.st_size, 512u + 768u);
-+ return 1;
-+ }
-+
-+ if (posix_fallocate (fd, 0, 1024) != 0)
-+ {
-+ puts ("2nd posix_fallocate call failed");
-+ return 1;
-+ }
-+
-+ if (fstat64 (fd, &st) != 0)
-+ {
-+ puts ("3rd fstat failed");
-+ return 1;
-+ }
-+
-+ if (st.st_size != 512 + 768)
-+ {
-+ puts ("file size changed in 2nd posix_fallocate");
-+ return 1;
-+ }
-+
-+ if (posix_fallocate (fd, 2048, 64) != 0)
-+ {
-+ puts ("3rd posix_fallocate call failed");
-+ return 1;
-+ }
-+
-+ if (fstat64 (fd, &st) != 0)
-+ {
-+ puts ("4th fstat failed");
-+ return 1;
-+ }
-+
-+ if (st.st_size != 2048 + 64)
-+ {
-+ printf ("file size after 3rd posix_fallocate call is %llu, expected %u\n",
-+ (unsigned long long int) st.st_size, 2048u + 64u);
-+ return 1;
-+ }
-+#ifdef TST_POSIX_FALLOCATE64
-+ if (posix_fallocate64 (fd, 4097ULL, 4294967295ULL + 2ULL) != 0)
-+ {
-+ puts ("4th posix_fallocate call failed");
-+ return 1;
-+ }
-+
-+ if (fstat64 (fd, &st) != 0)
-+ {
-+ puts ("5th fstat failed");
-+ return 1;
-+ }
-+
-+ if (st.st_size != 4097ULL + 4294967295ULL + 2ULL)
-+ {
-+ printf ("file size after 4th posix_fallocate call is %llu, expected %llu\n",
-+ (unsigned long long int) st.st_size, 4097ULL + 4294967295ULL + 2ULL);
-+ return 1;
-+ }
-+#endif
-+ close (fd);
-+
-+ return 0;
-+}
---- /dev/null
-+++ b/test/unistd/tst-posix_fallocate64.c
-@@ -0,0 +1,2 @@
-+#define TST_POSIX_FALLOCATE64
-+#include "tst-posix_fallocate.c"
+++ /dev/null
-From: "Anthony G. Basile" <blueness@gentoo.org>
-Date: Sun, 7 Sep 2014 15:33:46 -0400
-Subject: [PATCH] libc: add fallocate() and fallocate64()
-
-We add the Linux-specific function fallocate() which allows the user to
-directly manipulate allocate space for a file. fallocate() can operate
-in different modes, but the default mode is equivalent to posix_fallocate()
-which is specified in POSIX.1.
-
-Recent releases of e2fsprogs 1.42.11 and above expect fallocate64() to be
-available.
-
-Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
-Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
----
- create mode 100644 libc/sysdeps/linux/common/fallocate.c
- create mode 100644 libc/sysdeps/linux/common/fallocate64.c
- create mode 100644 test/unistd/tst-fallocate.c
- create mode 100644 test/unistd/tst-fallocate64.c
-
---- a/extra/Configs/Config.in
-+++ b/extra/Configs/Config.in
-@@ -952,8 +952,8 @@ config UCLIBC_LINUX_SPECIFIC
- default y
- help
- accept4(), bdflush(),
-- capget(), capset(), eventfd(), fstatfs(),
-- inotify_*(), ioperm(), iopl(),
-+ capget(), capset(), eventfd(), fallocate(),
-+ fstatfs(), inotify_*(), ioperm(), iopl(),
- madvise(), modify_ldt(), pipe2(), personality(),
- prctl()/arch_prctl(), pivot_root(), modify_ldt(),
- ppoll(), readahead(), reboot(), remap_file_pages(),
---- a/include/fcntl.h
-+++ b/include/fcntl.h
-@@ -237,6 +237,38 @@ extern int __fcntl_nocancel (int fd, int
- libc_hidden_proto(__fcntl_nocancel)
- #endif
-
-+#if (defined __UCLIBC_LINUX_SPECIFIC__ && defined __USE_GNU) || defined _LIBC
-+/* Reserve storage for the data of a file associated with FD. This function
-+ is Linux-specific. For the portable version, use posix_fallocate().
-+ Unlike the latter, fallocate can operate in different modes. The default
-+ mode = 0 is equivalent to posix_fallocate().
-+
-+ Note: These declarations are used in posix_fallocate.c and
-+ posix_fallocate64.c, so we expose them internally.
-+ */
-+
-+/* Flags for fallocate's mode. */
-+# define FALLOC_FL_KEEP_SIZE 1 /* Don't extend size of file
-+ even if offset + len is
-+ greater than file size. */
-+# define FALLOC_FL_PUNCH_HOLE 2 /* Create a hole in the file. */
-+
-+# ifndef __USE_FILE_OFFSET64
-+extern int fallocate (int __fd, int __mode, __off_t __offset, __off_t __len);
-+# else
-+# ifdef __REDIRECT
-+extern int __REDIRECT (fallocate, (int __fd, int __mode, __off64_t __offset,
-+ __off64_t __len),
-+ fallocate64);
-+# else
-+# define fallocate fallocate64
-+# endif
-+# endif
-+# ifdef __USE_LARGEFILE64
-+extern int fallocate64 (int __fd, int __mode, __off64_t __offset, __off64_t __len);
-+# endif
-+#endif
-+
- __END_DECLS
-
- #endif /* fcntl.h */
---- a/libc/sysdeps/linux/common/Makefile.in
-+++ b/libc/sysdeps/linux/common/Makefile.in
-@@ -61,6 +61,10 @@ CSRC-$(UCLIBC_LINUX_SPECIFIC) += \
- vmsplice.c
- CSRC-$(if $(findstring yy,$(UCLIBC_LINUX_SPECIFIC)$(UCLIBC_HAS_LFS)),y) += \
- sendfile64.c
-+# posix_fallocate() needs __libc_fallocate() from fallocate.c
-+# posix_fallocate64() needs __libc_fallocate64() from fallocate64.c
-+CSRC-$(if $(UCLIBC_LINUX_SPECIFIC)$(UCLIBC_HAS_ADVANCED_REALTIME),y,) += \
-+ fallocate.c $(filter fallocate64.c,$(CSRC-y))
- # NPTL needs these internally: madvise.c
- CSRC-$(findstring y,$(UCLIBC_LINUX_SPECIFIC)$(UCLIBC_HAS_THREADS_NATIVE)) += madvise.c
- ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
---- /dev/null
-+++ b/libc/sysdeps/linux/common/fallocate.c
-@@ -0,0 +1,48 @@
-+/* vi: set sw=4 ts=4: */
-+/*
-+ * fallocate() for uClibc - Based off of posix_fallocate() by Erik Andersen
-+ * http://www.opengroup.org/onlinepubs/9699919799/functions/posix_fallocate.html
-+ *
-+ * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
-+ *
-+ * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
-+ */
-+
-+#include <sys/syscall.h>
-+#include <fcntl.h>
-+#include <bits/kernel-features.h>
-+#include <stdint.h>
-+
-+#if defined __NR_fallocate
-+extern __typeof(fallocate) __libc_fallocate attribute_hidden;
-+int attribute_hidden __libc_fallocate(int fd, int mode, __off_t offset, __off_t len)
-+{
-+ int ret;
-+
-+# if __WORDSIZE == 32
-+ uint32_t off_low = offset;
-+ uint32_t len_low = len;
-+ /* may assert that these >>31 are 0 */
-+ uint32_t zero = 0;
-+ INTERNAL_SYSCALL_DECL(err);
-+ ret = (int) (INTERNAL_SYSCALL(fallocate, err, 6, fd, mode,
-+ __LONG_LONG_PAIR (zero, off_low),
-+ __LONG_LONG_PAIR (zero, len_low)));
-+# elif __WORDSIZE == 64
-+ INTERNAL_SYSCALL_DECL(err);
-+ ret = (int) (INTERNAL_SYSCALL(fallocate, err, 4, fd, mode, offset, len));
-+# else
-+# error your machine is neither 32 bit or 64 bit ... it must be magical
-+# endif
-+ if (unlikely(INTERNAL_SYSCALL_ERROR_P (ret, err)))
-+ return INTERNAL_SYSCALL_ERRNO (ret, err);
-+ return 0;
-+}
-+
-+# if defined __UCLIBC_LINUX_SPECIFIC__ && defined __USE_GNU
-+strong_alias(__libc_fallocate,fallocate)
-+# if __WORDSIZE == 64
-+strong_alias(__libc_fallocate,fallocate64)
-+# endif
-+# endif
-+#endif
---- /dev/null
-+++ b/libc/sysdeps/linux/common/fallocate64.c
-@@ -0,0 +1,42 @@
-+/* vi: set sw=4 ts=4: */
-+/*
-+ * fallocate() for uClibc - based off posix_fallocate() by Erik Andersen
-+ * http://www.opengroup.org/onlinepubs/9699919799/functions/posix_fallocate.html
-+ *
-+ * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
-+ *
-+ * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
-+ */
-+
-+#include <sys/syscall.h>
-+
-+#include <fcntl.h>
-+#include <bits/kernel-features.h>
-+#include <stdint.h>
-+
-+#if defined __NR_fallocate
-+
-+# if __WORDSIZE == 64
-+/* Can use normal fallocate() */
-+# elif __WORDSIZE == 32
-+extern __typeof(fallocate64) __libc_fallocate64 attribute_hidden;
-+int attribute_hidden __libc_fallocate64(int fd, int mode, __off64_t offset,
-+ __off64_t len)
-+{
-+ int ret;
-+ INTERNAL_SYSCALL_DECL(err);
-+ ret = (int) (INTERNAL_SYSCALL(fallocate, err, 6, fd, mode,
-+ OFF64_HI_LO (offset), OFF64_HI_LO (len)));
-+ if (unlikely(INTERNAL_SYSCALL_ERROR_P (ret, err)))
-+ return INTERNAL_SYSCALL_ERRNO (ret, err);
-+ return 0;
-+}
-+
-+# if defined __UCLIBC_LINUX_SPECIFIC__ && defined __USE_GNU
-+strong_alias(__libc_fallocate64,fallocate64)
-+# endif
-+
-+# else
-+# error your machine is neither 32 bit or 64 bit ... it must be magical
-+# endif
-+#endif
---- a/libc/sysdeps/linux/common/posix_fallocate.c
-+++ b/libc/sysdeps/linux/common/posix_fallocate.c
-@@ -14,28 +14,10 @@
- #include <stdint.h>
-
- #if defined __NR_fallocate
-+extern __typeof(fallocate) __libc_fallocate attribute_hidden;
- int posix_fallocate(int fd, __off_t offset, __off_t len)
- {
-- int ret;
--
--# if __WORDSIZE == 32
-- uint32_t off_low = offset;
-- uint32_t len_low = len;
-- /* may assert that these >>31 are 0 */
-- uint32_t zero = 0;
-- INTERNAL_SYSCALL_DECL(err);
-- ret = (int) (INTERNAL_SYSCALL(fallocate, err, 6, fd, 0,
-- __LONG_LONG_PAIR (zero, off_low),
-- __LONG_LONG_PAIR (zero, len_low)));
--# elif __WORDSIZE == 64
-- INTERNAL_SYSCALL_DECL(err);
-- ret = (int) (INTERNAL_SYSCALL(fallocate, err, 4, fd, 0, offset, len));
--# else
--# error your machine is neither 32 bit or 64 bit ... it must be magical
--#endif
-- if (unlikely(INTERNAL_SYSCALL_ERROR_P (ret, err)))
-- return INTERNAL_SYSCALL_ERRNO (ret, err);
-- return 0;
-+ return __libc_fallocate(fd, 0, offset, len);
- }
- # if defined __UCLIBC_HAS_LFS__ && __WORDSIZE == 64
- strong_alias(posix_fallocate,posix_fallocate64)
---- a/libc/sysdeps/linux/common/posix_fallocate64.c
-+++ b/libc/sysdeps/linux/common/posix_fallocate64.c
-@@ -18,22 +18,12 @@
- # if __WORDSIZE == 64
- /* Can use normal posix_fallocate() */
- # elif __WORDSIZE == 32
-+extern __typeof(fallocate64) __libc_fallocate64 attribute_hidden;
- int posix_fallocate64(int fd, __off64_t offset, __off64_t len)
- {
-- int ret;
-- uint32_t off_low = offset & 0xffffffff;
-- uint32_t off_high = offset >> 32;
-- uint32_t len_low = len & 0xffffffff;
-- uint32_t len_high = len >> 32;
-- INTERNAL_SYSCALL_DECL(err);
-- ret = (int) (INTERNAL_SYSCALL(fallocate, err, 6, fd, 0,
-- __LONG_LONG_PAIR (off_high, off_low),
-- __LONG_LONG_PAIR (len_high, len_low)));
-- if (unlikely(INTERNAL_SYSCALL_ERROR_P (ret, err)))
-- return INTERNAL_SYSCALL_ERRNO (ret, err);
-- return 0;
-+ return __libc_fallocate64(fd, 0, offset, len);
- }
- # else
--# error your machine is neither 32 bit or 64 bit ... it must be magical
-+# error your machine is neither 32 bit or 64 bit ... it must be magical
- # endif
- #endif
---- a/test/.gitignore
-+++ b/test/.gitignore
-@@ -302,6 +302,8 @@ unistd/getcwd
- unistd/getopt
- unistd/getopt_long
- unistd/tstgetopt
-+unistd/tst-fallocate
-+unistd/tst-fallocate64
- unistd/tst-posix_fallocate
- unistd/tst-posix_fallocate64
- unistd/tst-preadwrite
---- /dev/null
-+++ b/test/unistd/tst-fallocate.c
-@@ -0,0 +1,166 @@
-+#include <fcntl.h>
-+#include <sys/stat.h>
-+
-+#ifndef TST_FALLOCATE64
-+# define stat64 stat
-+# define fstat64 fstat
-+# else
-+# ifndef O_LARGEFILE
-+# error no O_LARGEFILE but you want to test with LFS enabled
-+# endif
-+#endif
-+
-+static void do_prepare(void);
-+static int do_test(void);
-+#define PREPARE(argc, argv) do_prepare ()
-+#define TEST_FUNCTION do_test ()
-+#include <test-skeleton.c>
-+
-+static int fd;
-+static void
-+do_prepare (void)
-+{
-+ fd = create_temp_file ("tst-fallocate.", NULL);
-+ if (fd == -1)
-+ {
-+ printf ("cannot create temporary file: %m\n");
-+ exit (1);
-+ }
-+}
-+
-+
-+static int
-+do_test (void)
-+{
-+ struct stat64 st;
-+ int c;
-+ char garbage[4096];
-+ blkcnt_t blksb4;
-+
-+ if (fstat64 (fd, &st) != 0)
-+ {
-+ puts ("1st fstat failed");
-+ return 1;
-+ }
-+
-+ if (st.st_size != 0)
-+ {
-+ puts ("file not created with size 0");
-+ return 1;
-+ }
-+
-+ /* This is the default mode which is identical to posix_fallocate().
-+ Note: we need a few extra blocks for FALLOC_FL_PUNCH_HOLE below.
-+ While block sizes vary, we'll assume eight 4K blocks for good measure. */
-+ if (fallocate (fd, 0, 8 * 4096, 128) != 0)
-+ {
-+ puts ("1st fallocate call failed");
-+ return 1;
-+ }
-+
-+ if (fstat64 (fd, &st) != 0)
-+ {
-+ puts ("2nd fstat failed");
-+ return 1;
-+ }
-+
-+ if (st.st_size != 8 * 4096 + 128)
-+ {
-+ printf ("file size after 1st fallocate call is %llu, expected %u\n",
-+ (unsigned long long int) st.st_size, 8u * 4096u + 128u);
-+ return 1;
-+ }
-+
-+ /* Without FALLOC_FL_KEEP_SIZE, this would increaste the size of the file. */
-+ if (fallocate (fd, FALLOC_FL_KEEP_SIZE, 0, 16 * 4096) != 0)
-+ {
-+ puts ("2nd fallocate call failed");
-+ return 1;
-+ }
-+
-+ if (fstat64 (fd, &st) != 0)
-+ {
-+ puts ("3rd fstat failed");
-+ return 1;
-+ }
-+
-+ if (st.st_size != 8 * 4096 + 128)
-+ {
-+ printf ("file size changed in 2nd fallocate call to %llu, expected %u\n",
-+ (unsigned long long int) st.st_size, 8u * 4096u + 128u);
-+ return 1;
-+ }
-+
-+ /* Let's fill up the first eight 4k blocks with 'x' to force some allocations. */
-+
-+ memset(garbage, 'x', 4096);
-+ for(c=0; c < 8; c++)
-+ if(write(fd, garbage, 4096) == -1)
-+ {
-+ puts ("write failed");
-+ return 1;
-+ }
-+
-+ if (fstat64 (fd, &st) != 0)
-+ {
-+ puts ("4th fstat failed");
-+ return 1;
-+ }
-+
-+ blksb4 = st.st_blocks;
-+
-+ /* Let's punch a hole in the entire file, turning it effectively into a sparse file. */
-+ if (fallocate (fd, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 8 * 4096 + 128) != 0)
-+ {
-+ puts ("3rd fallocate call failed");
-+ return 1;
-+ }
-+
-+ if (fstat64 (fd, &st) != 0)
-+ {
-+ puts ("5th fstat failed");
-+ return 1;
-+ }
-+
-+ if (st.st_size != 8 * 4096 + 128)
-+ {
-+ printf ("file size after 3rd fallocate call is %llu, expected %u\n",
-+ (unsigned long long int) st.st_size, 8u * 4096u + 128u);
-+ return 1;
-+ }
-+
-+ /* The number of allocated blocks should decrease. I hope this works on
-+ all filesystems! */
-+ if (st.st_blocks >= blksb4)
-+ {
-+ printf ("number of blocks after 3rd fallocate call is %lu, expected less than %lu\n",
-+ (unsigned long int) st.st_blocks, blksb4);
-+ return 1;
-+ }
-+
-+#ifdef TST_FALLOCATE64
-+ /* We'll just do a mode = 0 test for fallocate64() */
-+ if (fallocate64 (fd, 0, 4097ULL, 4294967295ULL + 2ULL) != 0)
-+ {
-+ puts ("1st fallocate64 call failed");
-+ return 1;
-+ }
-+
-+ if (fstat64 (fd, &st) != 0)
-+ {
-+ puts ("6th fstat failed");
-+ return 1;
-+ }
-+
-+ if (st.st_size != 4097ULL + 4294967295ULL + 2ULL)
-+ {
-+ printf ("file size after 1st fallocate64 call is %llu, expected %llu\n",
-+ (unsigned long long int) st.st_size, 4097ULL + 4294967295ULL + 2ULL);
-+ return 1;
-+ }
-+#endif
-+ close (fd);
-+
-+ return 0;
-+}
-+
---- /dev/null
-+++ b/test/unistd/tst-fallocate64.c
-@@ -0,0 +1,2 @@
-+#define TST_FALLOCATE64
-+#include "tst-fallocate.c"
---- a/test/unistd/Makefile.in
-+++ b/test/unistd/Makefile.in
-@@ -2,10 +2,13 @@
- # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
-
- ifeq ($(UCLIBC_HAS_LFS),)
--TESTS_DISABLED := tst-preadwrite64 tst-posix_fallocate64
-+TESTS_DISABLED := tst-preadwrite64 tst-posix_fallocate64 tst-fallocate64
- endif
- ifeq ($(UCLIBC_HAS_ADVANCED_REALTIME),)
--TESTS_DISABLED := tst-posix_fallocate
-+TESTS_DISABLED := tst-posix_fallocate tst-fallocate64
-+endif
-+ifeq ($(UCLIBC_LINUX_SPECIFIC),)
-+TESTS_DISABLED += tst-fallocate
- endif
- OPTS_getopt := -abcXXX -9
- OPTS_getopt_long := --add XXX --delete YYY --verbose
+++ /dev/null
-From: Natanael Copa <natanael.copa@gmail.com>
-Date: Thu, 5 Jul 2012 11:55:19 +0000
-Subject: [PATCH] i386/bits/syscalls.h: allow immediate values as 6th syscall
- arg
-
-Allow use of immedate values as the 6th syscall argument. Otherwise we must
-store the arg on memory. This gives gcc more options to optimize better.
-
-This also works around an issue with posix_fallocate.
-
-Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
-Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
----
-
---- a/libc/sysdeps/linux/i386/bits/syscalls.h
-+++ b/libc/sysdeps/linux/i386/bits/syscalls.h
-@@ -136,7 +136,7 @@ __asm__ (
- #define ASMFMT_5(arg1, arg2, arg3, arg4, arg5) \
- , "a" (arg1), "c" (arg2), "d" (arg3), "S" (arg4), "D" (arg5)
- #define ASMFMT_6(arg1, arg2, arg3, arg4, arg5, arg6) \
-- , "a" (arg1), "c" (arg2), "d" (arg3), "S" (arg4), "D" (arg5), "m" (arg6)
-+ , "a" (arg1), "c" (arg2), "d" (arg3), "S" (arg4), "D" (arg5), "g" (arg6)
-
- #else /* !PIC */
-
+++ /dev/null
-Index: uClibc-0.9.33.2/libc/sysdeps/linux/common/sync_file_range.c
-===================================================================
---- uClibc-0.9.33.2.orig/libc/sysdeps/linux/common/sync_file_range.c 2012-05-15 09:20:09.000000000 +0200
-+++ uClibc-0.9.33.2/libc/sysdeps/linux/common/sync_file_range.c 2015-04-03 00:27:47.701221722 +0200
-@@ -4,24 +4,39 @@
- *
- * Copyright (C) 2008 Bernhard Reutner-Fischer <uclibc@uclibc.org>
- *
-- * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
-+ * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
- */
-
- #include <sys/syscall.h>
--#if defined __USE_GNU
--#include <fcntl.h>
-+#if defined __UCLIBC_HAS_LFS__ && defined __USE_GNU
-+# include <bits/wordsize.h>
-+# include <endian.h>
-+# include <fcntl.h>
-
--#if defined __NR_sync_file_range && defined __UCLIBC_HAS_LFS__
--#define __NR___syscall_sync_file_range __NR_sync_file_range
--static __inline__ _syscall6(int, __syscall_sync_file_range, int, fd,
-- off_t, offset_hi, off_t, offset_lo,
-- off_t, nbytes_hi, off_t, nbytes_lo, unsigned int, flags)
-+# ifdef __NR_sync_file_range2
-+# undef __NR_sync_file_range
-+# define __NR_sync_file_range __NR_sync_file_range2
-+# endif
-+
-+# ifdef __NR_sync_file_range
- int sync_file_range(int fd, off64_t offset, off64_t nbytes, unsigned int flags)
- {
-- return __syscall_sync_file_range(fd,
-- __LONG_LONG_PAIR((long)(offset >> 32), (long)(offset & 0xffffffff)),
-- __LONG_LONG_PAIR((long)(nbytes >> 32), (long)(nbytes & 0xffffffff)),
-- flags);
-+# if defined __powerpc__ && __WORDSIZE == 64
-+ return INLINE_SYSCALL(sync_file_range, 4, fd, flags, offset, nbytes);
-+# elif (defined __mips__ && _MIPS_SIM == _ABIO32) || \
-+ (defined(__UCLIBC_SYSCALL_ALIGN_64BIT__) && !(defined(__powerpc__) || defined(__xtensa__)))
-+ /* arch with 64-bit data in even reg alignment #2: [arcv2/others-in-future]
-+ * stock syscall handler in kernel (reg hole punched)
-+ * see libc/sysdeps/linux/common/posix_fadvise.c for more details */
-+ return INLINE_SYSCALL(sync_file_range, 7, fd, 0,
-+ OFF64_HI_LO(offset), OFF64_HI_LO(nbytes), flags);
-+# elif defined __NR_sync_file_range2
-+ return INLINE_SYSCALL(sync_file_range, 6, fd, flags,
-+ OFF64_HI_LO(offset), OFF64_HI_LO(nbytes));
-+# else
-+ return INLINE_SYSCALL(sync_file_range, 6, fd,
-+ OFF64_HI_LO(offset), OFF64_HI_LO(nbytes), flags);
-+# endif
- }
--#endif
-+# endif
- #endif
+++ /dev/null
---- a/extra/scripts/unifdef.c
-+++ b/extra/scripts/unifdef.c
-@@ -78,8 +78,6 @@ __FBSDID("$FreeBSD: /repoman/r/ncvs/src/
- #define errx(exit_code, fmt, args...) ({ warnx(fmt, ## args); exit(exit_code); })
- #define err(exit_code, fmt, args...) errx(exit_code, fmt ": %s", ## args, strerror(errno))
-
--size_t strlcpy(char *dst, const char *src, size_t siz);
--
- /* types of input lines: */
- typedef enum {
- LT_TRUEI, /* a true #if with ignore flag */
+++ /dev/null
---- a/include/string.h
-+++ b/include/string.h
-@@ -355,18 +355,40 @@ extern char *index (__const char *__s, i
- /* Find the last occurrence of C in S (same as strrchr). */
- extern char *rindex (__const char *__s, int __c)
- __THROW __attribute_pure__ __nonnull ((1));
--# else
--# ifdef __UCLIBC_SUSV3_LEGACY_MACROS__
-+# elif defined(__UCLIBC_SUSV3_LEGACY_MACROS__) && !defined(_STRINGS_H)
- /* bcopy/bzero/bcmp/index/rindex are marked LEGACY in SuSv3.
- * They are replaced as proposed by SuSv3. Don't sync this part
- * with glibc and keep it in sync with strings.h. */
-
--# define bcopy(src,dest,n) (memmove((dest), (src), (n)), (void) 0)
--# define bzero(s,n) (memset((s), '\0', (n)), (void) 0)
--# define bcmp(s1,s2,n) memcmp((s1), (s2), (size_t)(n))
--# define index(s,c) strchr((s), (c))
--# define rindex(s,c) strrchr((s), (c))
--# endif
-+/* Copy N bytes of SRC to DEST (like memmove, but args reversed). */
-+static __inline__ void bcopy (__const void *__src, void *__dest, size_t __n)
-+{
-+ memmove(__dest, __src, __n);
-+}
-+
-+/* Set N bytes of S to 0. */
-+static __inline__ void bzero (void *__s, size_t __n)
-+{
-+ memset(__s, 0, __n);
-+}
-+
-+/* Compare N bytes of S1 and S2 (same as memcmp). */
-+static __inline__ int bcmp (__const void *__s1, __const void *__s2, size_t __n)
-+{
-+ return memcmp(__s1, __s2, __n);
-+}
-+
-+/* Find the first occurrence of C in S (same as strchr). */
-+static __inline__ char *index (__const char *__s, int __c)
-+{
-+ return strchr(__s, __c);
-+}
-+
-+/* Find the last occurrence of C in S (same as strrchr). */
-+static __inline__ char *rindex (__const char *__s, int __c)
-+{
-+ return strrchr(__s, __c);
-+}
- # endif
-
- /* Return the position of the first bit set in I, or 0 if none are set.
+++ /dev/null
---- a/include/sys/timex.h
-+++ b/include/sys/timex.h
-@@ -116,9 +116,8 @@ struct timex
-
- __BEGIN_DECLS
-
--#if 0
--extern int __adjtimex (struct timex *__ntx) __THROW;
--#endif
-+#undef __adjtimex
-+#define __adjtimex adjtimex
- extern int adjtimex (struct timex *__ntx) __THROW;
- libc_hidden_proto(adjtimex)
-
+++ /dev/null
---- a/libc/inet/resolv.c
-+++ b/libc/inet/resolv.c
-@@ -1631,6 +1631,7 @@ int attribute_hidden __read_etc_hosts_r(
- * struct in[6]_addr
- * char line_buffer[BUFSZ+];
- */
-+ memset(buf, 0, buflen);
- parser->data = buf;
- parser->data_len = aliaslen;
- parser->line_len = buflen - aliaslen;
+++ /dev/null
---- a/libc/inet/resolv.c
-+++ b/libc/inet/resolv.c
-@@ -3654,11 +3654,11 @@ res_init(void)
- */
- if (!_res.id)
- _res.id = res_randomid();
-- __res_sync = res_sync_func;
-
- __UCLIBC_MUTEX_UNLOCK(__resolv_lock);
-
- __res_vinit(&_res, 1);
-+ __res_sync = res_sync_func;
-
- return 0;
- }
+++ /dev/null
---- a/libc/inet/resolv.c
-+++ b/libc/inet/resolv.c
-@@ -317,6 +317,7 @@ Domain name in a message can be represen
- #include <sys/utsname.h>
- #include <sys/un.h>
- #include <sys/stat.h>
-+#include <net/if.h>
- #include <bits/uClibc_mutex.h>
- #include "internal/parse_config.h"
-
-@@ -1861,7 +1862,6 @@ int getnameinfo(const struct sockaddr *s
- c = inet_ntop(AF_INET6,
- (const void *) &sin6p->sin6_addr,
- host, hostlen);
--#if 0
- /* Does scope id need to be supported? */
- uint32_t scopeid;
- scopeid = sin6p->sin6_scope_id;
-@@ -1898,7 +1898,6 @@ int getnameinfo(const struct sockaddr *s
- return EAI_SYSTEM;
- memcpy(host + real_hostlen, scopebuf, scopelen + 1);
- }
--#endif
- }
- #endif /* __UCLIBC_HAS_IPV6__ */
- #if defined __UCLIBC_HAS_IPV4__
+++ /dev/null
---- a/libc/inet/resolv.c
-+++ b/libc/inet/resolv.c
-@@ -3536,6 +3536,61 @@ __res_vinit(res_state rp, int preinit)
- return 0;
- }
-
-+static unsigned int
-+res_randomid(void)
-+{
-+ return 0xffff & getpid();
-+}
-+
-+/* Our res_init never fails (always returns 0) */
-+int
-+res_init(void)
-+{
-+ /*
-+ * These three fields used to be statically initialized. This made
-+ * it hard to use this code in a shared library. It is necessary,
-+ * now that we're doing dynamic initialization here, that we preserve
-+ * the old semantics: if an application modifies one of these three
-+ * fields of _res before res_init() is called, res_init() will not
-+ * alter them. Of course, if an application is setting them to
-+ * _zero_ before calling res_init(), hoping to override what used
-+ * to be the static default, we can't detect it and unexpected results
-+ * will follow. Zero for any of these fields would make no sense,
-+ * so one can safely assume that the applications were already getting
-+ * unexpected results.
-+ *
-+ * _res.options is tricky since some apps were known to diddle the bits
-+ * before res_init() was first called. We can't replicate that semantic
-+ * with dynamic initialization (they may have turned bits off that are
-+ * set in RES_DEFAULT). Our solution is to declare such applications
-+ * "broken". They could fool us by setting RES_INIT but none do (yet).
-+ */
-+
-+ __UCLIBC_MUTEX_LOCK(__resolv_lock);
-+
-+ if (!_res.retrans)
-+ _res.retrans = RES_TIMEOUT;
-+ if (!_res.retry)
-+ _res.retry = 4;
-+ if (!(_res.options & RES_INIT))
-+ _res.options = RES_DEFAULT;
-+
-+ /*
-+ * This one used to initialize implicitly to zero, so unless the app
-+ * has set it to something in particular, we can randomize it now.
-+ */
-+ if (!_res.id)
-+ _res.id = res_randomid();
-+
-+ __UCLIBC_MUTEX_UNLOCK(__resolv_lock);
-+
-+ __res_vinit(&_res, 1);
-+ __res_sync = res_sync_func;
-+
-+ return 0;
-+}
-+libc_hidden_def(res_init)
-+
- static void
- __res_iclose(void)
- {
-@@ -3608,61 +3663,6 @@ struct __res_state *__resp = &_res;
- # endif
- #endif /* !__UCLIBC_HAS_THREADS__ */
-
--static unsigned int
--res_randomid(void)
--{
-- return 0xffff & getpid();
--}
--
--/* Our res_init never fails (always returns 0) */
--int
--res_init(void)
--{
-- /*
-- * These three fields used to be statically initialized. This made
-- * it hard to use this code in a shared library. It is necessary,
-- * now that we're doing dynamic initialization here, that we preserve
-- * the old semantics: if an application modifies one of these three
-- * fields of _res before res_init() is called, res_init() will not
-- * alter them. Of course, if an application is setting them to
-- * _zero_ before calling res_init(), hoping to override what used
-- * to be the static default, we can't detect it and unexpected results
-- * will follow. Zero for any of these fields would make no sense,
-- * so one can safely assume that the applications were already getting
-- * unexpected results.
-- *
-- * _res.options is tricky since some apps were known to diddle the bits
-- * before res_init() was first called. We can't replicate that semantic
-- * with dynamic initialization (they may have turned bits off that are
-- * set in RES_DEFAULT). Our solution is to declare such applications
-- * "broken". They could fool us by setting RES_INIT but none do (yet).
-- */
--
-- __UCLIBC_MUTEX_LOCK(__resolv_lock);
--
-- if (!_res.retrans)
-- _res.retrans = RES_TIMEOUT;
-- if (!_res.retry)
-- _res.retry = 4;
-- if (!(_res.options & RES_INIT))
-- _res.options = RES_DEFAULT;
--
-- /*
-- * This one used to initialize implicitly to zero, so unless the app
-- * has set it to something in particular, we can randomize it now.
-- */
-- if (!_res.id)
-- _res.id = res_randomid();
--
-- __UCLIBC_MUTEX_UNLOCK(__resolv_lock);
--
-- __res_vinit(&_res, 1);
-- __res_sync = res_sync_func;
--
-- return 0;
--}
--libc_hidden_def(res_init)
--
- /*
- * Set up default settings. If the configuration file exist, the values
- * there will have precedence. Otherwise, the server address is set to
+++ /dev/null
---- a/libc/inet/resolv.c
-+++ b/libc/inet/resolv.c
-@@ -3432,6 +3432,7 @@ static void res_sync_func(void)
- */
- }
-
-+/* has to be called under __resolv_lock */
- static int
- __res_vinit(res_state rp, int preinit)
- {
-@@ -3440,7 +3441,6 @@ __res_vinit(res_state rp, int preinit)
- int m = 0;
- #endif
-
-- __UCLIBC_MUTEX_LOCK(__resolv_lock);
- __close_nameservers();
- __open_nameservers();
-
-@@ -3532,7 +3532,6 @@ __res_vinit(res_state rp, int preinit)
-
- rp->options |= RES_INIT;
-
-- __UCLIBC_MUTEX_UNLOCK(__resolv_lock);
- return 0;
- }
-
-@@ -3582,11 +3581,11 @@ res_init(void)
- if (!_res.id)
- _res.id = res_randomid();
-
-- __UCLIBC_MUTEX_UNLOCK(__resolv_lock);
--
- __res_vinit(&_res, 1);
- __res_sync = res_sync_func;
-
-+ __UCLIBC_MUTEX_UNLOCK(__resolv_lock);
-+
- return 0;
- }
- libc_hidden_def(res_init)
-@@ -3687,7 +3686,11 @@ struct __res_state *__resp = &_res;
- int
- res_ninit(res_state statp)
- {
-- return __res_vinit(statp, 0);
-+ int ret;
-+ __UCLIBC_MUTEX_LOCK(__resolv_lock);
-+ ret = __res_vinit(statp, 0);
-+ __UCLIBC_MUTEX_UNLOCK(__resolv_lock);
-+ return ret;
- }
-
- #endif /* L_res_init */
+++ /dev/null
---- a/libc/inet/resolv.c
-+++ b/libc/inet/resolv.c
-@@ -3581,6 +3581,7 @@ res_init(void)
- if (!_res.id)
- _res.id = res_randomid();
-
-+ __res_sync = NULL;
- __res_vinit(&_res, 1);
- __res_sync = res_sync_func;
-
+++ /dev/null
-Reduce the initial buffer size for open_memstream (used by vasprintf),
-as most strings are usually smaller than that.
-Realloc the buffer after finishing the string to further reduce size.
-
-Signed-off-by: Felix Fietkau <nbd@openwrt.org>
-
---- a/libc/stdio/vasprintf.c
-+++ b/libc/stdio/vasprintf.c
-@@ -39,6 +39,8 @@ int vasprintf(char **__restrict buf, con
- if (rv < 0) {
- free(*buf);
- *buf = NULL;
-+ } else {
-+ *buf = realloc(*buf, rv + 1);
- }
- }
-
---- a/libc/stdio/open_memstream.c
-+++ b/libc/stdio/open_memstream.c
-@@ -17,6 +17,8 @@
-
- #define COOKIE ((__oms_cookie *) cookie)
-
-+#define MEMSTREAM_BUFSIZ 256
-+
- typedef struct {
- char *buf;
- size_t len;
-@@ -134,7 +136,7 @@ FILE *open_memstream(char **__restrict b
- register FILE *fp;
-
- if ((cookie = malloc(sizeof(__oms_cookie))) != NULL) {
-- if ((cookie->buf = malloc(cookie->len = BUFSIZ)) == NULL) {
-+ if ((cookie->buf = malloc(cookie->len = MEMSTREAM_BUFSIZ)) == NULL) {
- goto EXIT_cookie;
- }
- *cookie->buf = 0; /* Set nul terminator for buffer. */
+++ /dev/null
---- a/include/math.h
-+++ b/include/math.h
-@@ -195,7 +195,7 @@ extern int signgam;
-
-
- /* ISO C99 defines some generic macros which work on any data type. */
--#ifdef __USE_ISOC99
-+#if defined(__USE_ISOC99) || defined(__USE_BSD)
-
- /* Get the architecture specific values describing the floating-point
- evaluation. The following symbols will get defined:
-@@ -315,6 +315,11 @@ enum
-
- #endif /* Use ISO C99. */
-
-+/* BSD compat */
-+#define finite(x) __finite(x)
-+#define finitef(x) __finitef(x)
-+#define finitel(x) __finitel(x)
-+
- #ifdef __USE_MISC
- /* Support for various different standard error handling behaviors. */
- typedef enum
+++ /dev/null
---- a/libpthread/nptl/cleanup_defer_compat.c
-+++ b/libpthread/nptl/cleanup_defer_compat.c
-@@ -22,7 +22,7 @@
-
- void
- attribute_protected
--_pthread_cleanup_push_defer (
-+__pthread_cleanup_push_defer (
- struct _pthread_cleanup_buffer *buffer,
- void (*routine) (void *),
- void *arg)
-@@ -57,12 +57,12 @@ _pthread_cleanup_push_defer (
-
- THREAD_SETMEM (self, cleanup, buffer);
- }
--strong_alias (_pthread_cleanup_push_defer, __pthread_cleanup_push_defer)
-+strong_alias (__pthread_cleanup_push_defer, _pthread_cleanup_push_defer)
-
-
- void
- attribute_protected
--_pthread_cleanup_pop_restore (
-+__pthread_cleanup_pop_restore (
- struct _pthread_cleanup_buffer *buffer,
- int execute)
- {
-@@ -97,4 +97,4 @@ _pthread_cleanup_pop_restore (
- if (execute)
- buffer->__routine (buffer->__arg);
- }
--strong_alias (_pthread_cleanup_pop_restore, __pthread_cleanup_pop_restore)
-+strong_alias (__pthread_cleanup_pop_restore, _pthread_cleanup_pop_restore)
---- a/libpthread/nptl/init.c
-+++ b/libpthread/nptl/init.c
-@@ -112,8 +112,8 @@ static const struct pthread_functions pt
- .ptr___pthread_key_create = __pthread_key_create_internal,
- .ptr___pthread_getspecific = __pthread_getspecific_internal,
- .ptr___pthread_setspecific = __pthread_setspecific_internal,
-- .ptr__pthread_cleanup_push_defer = _pthread_cleanup_push_defer,
-- .ptr__pthread_cleanup_pop_restore = _pthread_cleanup_pop_restore,
-+ .ptr__pthread_cleanup_push_defer = __pthread_cleanup_push_defer,
-+ .ptr__pthread_cleanup_pop_restore = __pthread_cleanup_pop_restore,
- .ptr_nthreads = &__nptl_nthreads,
- .ptr___pthread_unwind = &__pthread_unwind,
- .ptr__nptl_deallocate_tsd = __nptl_deallocate_tsd,
+++ /dev/null
---- a/libpthread/nptl/init.c
-+++ b/libpthread/nptl/init.c
-@@ -402,6 +402,10 @@ __pthread_initialize_minimal_internal (v
- Use the minimal size acceptable. */
- limit.rlim_cur = PTHREAD_STACK_MIN;
-
-+ /* Do not exceed architecture specific default */
-+ if (limit.rlim_cur > ARCH_STACK_DEFAULT_SIZE)
-+ limit.rlim_cur = ARCH_STACK_DEFAULT_SIZE;
-+
- /* Make sure it meets the minimum size that allocate_stack
- (allocatestack.c) will demand, which depends on the page size. */
- const uintptr_t pagesz = sysconf (_SC_PAGESIZE);
+++ /dev/null
---- a/Rules.mak
-+++ b/Rules.mak
-@@ -707,7 +707,6 @@ endif
- ifeq ($(UCLIBC_HAS_THREADS),y)
- ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
- PTNAME := nptl
-- CFLAGS += -DHAVE_FORCED_UNWIND
- else
- ifeq ($(LINUXTHREADS_OLD),y)
- PTNAME := linuxthreads.old
+++ /dev/null
---- a/libc/sysdeps/linux/mips/Makefile.arch
-+++ b/libc/sysdeps/linux/mips/Makefile.arch
-@@ -20,6 +20,8 @@ ifneq ($(UCLIBC_HAS_THREADS_NATIVE),y)
- SSRC += vfork.S clone.S
- endif
-
-+CFLAGS-crt1.S += $(PICFLAG)
-+
- ASFLAGS-syscall_error.S += -D_LIBC_REENTRANT
-
- ARCH_HEADERS := sgidefs.h
+++ /dev/null
-commit 3e3ae40f053b22fbb9bef50067d6edad4c358c4c
-Author: Mirko Vogt <dev@nanl.de>
-Date: Tue May 24 14:36:42 2011 +0200
-
- use 'fputws_unlocked(S,F)' instead of 'fputws(S,F)'
-
- this eliminates a source of reproduceable freezes
-
---- a/libc/stdio/_vfprintf.c
-+++ b/libc/stdio/_vfprintf.c
-@@ -1229,7 +1229,7 @@ static size_t _fp_out_narrow(FILE *fp, i
- #define STRLEN wcslen
- #define _PPFS_init _ppwfs_init
- /* Pulls in fseek: */
--#define OUTPUT(F,S) fputws(S,F)
-+#define OUTPUT(F,S) fputws_unlocked(S,F)
- /* TODO: #define OUTPUT(F,S) _wstdio_fwrite((S),wcslen(S),(F)) */
- #define _outnwcs(stream, wstring, len) _wstdio_fwrite((const wchar_t *)(wstring), len, stream)
- #define FP_OUT _fp_out_wide
+++ /dev/null
---- a/libc/stdio/_stdio.c
-+++ b/libc/stdio/_stdio.c
-@@ -124,7 +124,7 @@ static FILE _stdio_streams[] = {
- __FLAG_NBF|__FLAG_WRITEONLY, \
- 2, \
- NULL, \
-- NULL, \
-+ 0, \
- 0 )
- };
-
+++ /dev/null
---- a/libc/sysdeps/linux/powerpc/Makefile.arch
-+++ b/libc/sysdeps/linux/powerpc/Makefile.arch
-@@ -5,7 +5,7 @@
- # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
- #
-
--CSRC := __syscall_error.c pread_write.c ioctl.c
-+CSRC := __syscall_error.c pread_write.c ioctl.c copysignl.c
-
- ifeq ($(UCLIBC_HAS_ADVANCED_REALTIME),y)
- CSRC += posix_fadvise.c posix_fadvise64.c
---- /dev/null
-+++ b/libc/sysdeps/linux/powerpc/copysignl.c
-@@ -0,0 +1,89 @@
-+/* s_copysignl.c -- long double version of s_copysign.c.
-+ * Conversion to long double by Ulrich Drepper,
-+ * Cygnus Support, drepper@cygnus.com.
-+ */
-+
-+/*
-+ * ====================================================
-+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
-+ *
-+ * Developed at SunPro, a Sun Microsystems, Inc. business.
-+ * Permission to use, copy, modify, and distribute this
-+ * software is freely granted, provided that this notice
-+ * is preserved.
-+ * ====================================================
-+ */
-+
-+/*
-+ * copysignl(long double x, long double y)
-+ * copysignl(x,y) returns a value with the magnitude of x and
-+ * with the sign bit of y.
-+ */
-+
-+#include <endian.h>
-+#include <stdint.h>
-+
-+#if __FLOAT_WORD_ORDER == BIG_ENDIAN
-+
-+typedef union
-+{
-+ long double value;
-+ struct
-+ {
-+ int sign_exponent:16;
-+ unsigned int empty:16;
-+ uint32_t msw;
-+ uint32_t lsw;
-+ } parts;
-+} ieee_long_double_shape_type;
-+
-+#endif
-+
-+#if __FLOAT_WORD_ORDER == LITTLE_ENDIAN
-+
-+typedef union
-+{
-+ long double value;
-+ struct
-+ {
-+ uint32_t lsw;
-+ uint32_t msw;
-+ int sign_exponent:16;
-+ unsigned int empty:16;
-+ } parts;
-+} ieee_long_double_shape_type;
-+
-+#endif
-+
-+/* Get int from the exponent of a long double. */
-+
-+#define GET_LDOUBLE_EXP(exp,d) \
-+do { \
-+ ieee_long_double_shape_type ge_u; \
-+ ge_u.value = (d); \
-+ (exp) = ge_u.parts.sign_exponent; \
-+} while (0)
-+
-+/* Set exponent of a long double from an int. */
-+
-+#define SET_LDOUBLE_EXP(d,exp) \
-+do { \
-+ ieee_long_double_shape_type se_u; \
-+ se_u.value = (d); \
-+ se_u.parts.sign_exponent = (exp); \
-+ (d) = se_u.value; \
-+} while (0)
-+
-+long double copysignl(long double x, long double y);
-+libc_hidden_proto(copysignl);
-+
-+long double copysignl(long double x, long double y)
-+{
-+ uint32_t es1,es2;
-+ GET_LDOUBLE_EXP(es1,x);
-+ GET_LDOUBLE_EXP(es2,y);
-+ SET_LDOUBLE_EXP(x,(es1&0x7fff)|(es2&0x8000));
-+ return x;
-+}
-+
-+libc_hidden_def(copysignl);
+++ /dev/null
---- a/libc/sysdeps/linux/powerpc/sys/ptrace.h
-+++ b/libc/sysdeps/linux/powerpc/sys/ptrace.h
-@@ -1,5 +1,5 @@
- /* `ptrace' debugger support interface. Linux version.
-- Copyright (C) 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2001, 2006, 2007, 2011 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
-@@ -13,9 +13,8 @@
- 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. */
-+ License along with the GNU C Library; if not, see
-+ <http://www.gnu.org/licenses/>. */
-
- #ifndef _SYS_PTRACE_H
- #define _SYS_PTRACE_H 1
-@@ -79,8 +78,73 @@ enum __ptrace_request
- #define PT_DETACH PTRACE_DETACH
-
- /* Continue and stop at the next (return from) syscall. */
-- PTRACE_SYSCALL = 24
-+ PTRACE_SYSCALL = 24,
- #define PT_SYSCALL PTRACE_SYSCALL
-+
-+ /* Set ptrace filter options. */
-+ PTRACE_SETOPTIONS = 0x4200,
-+#define PT_SETOPTIONS PTRACE_SETOPTIONS
-+
-+ /* Get last ptrace message. */
-+ PTRACE_GETEVENTMSG = 0x4201,
-+#define PT_GETEVENTMSG PTRACE_GETEVENTMSG
-+
-+ /* Get siginfo for process. */
-+ PTRACE_GETSIGINFO = 0x4202,
-+#define PT_GETSIGINFO PTRACE_GETSIGINFO
-+
-+ /* Set new siginfo for process. */
-+ PTRACE_SETSIGINFO = 0x4203,
-+#define PT_SETSIGINFO PTRACE_SETSIGINFO
-+
-+ /* Get register content. */
-+ PTRACE_GETREGSET = 0x4204,
-+#define PTRACE_GETREGSET PTRACE_GETREGSET
-+
-+ /* Set register content. */
-+ PTRACE_SETREGSET = 0x4205,
-+#define PTRACE_SETREGSET PTRACE_SETREGSET
-+
-+ /* Like PTRACE_ATTACH, but do not force tracee to trap and do not affect
-+ signal or group stop state. */
-+ PTRACE_SEIZE = 0x4206,
-+#define PTRACE_SEIZE PTRACE_SEIZE
-+
-+ /* Trap seized tracee. */
-+ PTRACE_INTERRUPT = 0x4207,
-+#define PTRACE_INTERRUPT PTRACE_INTERRUPT
-+
-+ /* Wait for next group event. */
-+ PTRACE_LISTEN = 0x4208
-+};
-+
-+
-+/* Flag for PTRACE_LISTEN. */
-+enum __ptrace_flags
-+{
-+ PTRACE_SEIZE_DEVEL = 0x80000000
-+};
-+
-+/* Options set using PTRACE_SETOPTIONS. */
-+enum __ptrace_setoptions {
-+ PTRACE_O_TRACESYSGOOD = 0x00000001,
-+ PTRACE_O_TRACEFORK = 0x00000002,
-+ PTRACE_O_TRACEVFORK = 0x00000004,
-+ PTRACE_O_TRACECLONE = 0x00000008,
-+ PTRACE_O_TRACEEXEC = 0x00000010,
-+ PTRACE_O_TRACEVFORKDONE = 0x00000020,
-+ PTRACE_O_TRACEEXIT = 0x00000040,
-+ PTRACE_O_MASK = 0x0000007f
-+};
-+
-+/* Wait extended result codes for the above trace options. */
-+enum __ptrace_eventcodes {
-+ PTRACE_EVENT_FORK = 1,
-+ PTRACE_EVENT_VFORK = 2,
-+ PTRACE_EVENT_CLONE = 3,
-+ PTRACE_EVENT_EXEC = 4,
-+ PTRACE_EVENT_VFORK_DONE = 5,
-+ PTRACE_EVENT_EXIT = 6
- };
-
- /* Perform process tracing functions. REQUEST is one of the values
+++ /dev/null
---- a/libc/sysdeps/linux/powerpc/syscall.S
-+++ b/libc/sysdeps/linux/powerpc/syscall.S
-@@ -30,6 +30,7 @@ syscall:
- mr 5,6
- mr 6,7
- mr 7,8
-+ mr 8,9
- sc
- bnslr;
-
+++ /dev/null
---- a/ldso/ldso/powerpc/elfinterp.c
-+++ b/ldso/ldso/powerpc/elfinterp.c
-@@ -297,22 +297,17 @@ _dl_do_reloc (struct elf_resolve *tpnt,s
- break;
- #endif
- case R_PPC_REL24:
--#if 0
- {
- Elf32_Sword delta = finaladdr - (Elf32_Word)reloc_addr;
- if (unlikely(delta<<6>>6 != delta)) {
- _dl_dprintf(2, "%s: symbol '%s' R_PPC_REL24 is out of range.\n\t"
- "Compile shared libraries with -fPIC!\n",
- _dl_progname, symname);
-- _dl_exit(1);
-+ return -1;
- }
- *reloc_addr = (*reloc_addr & 0xfc000003) | (delta & 0x3fffffc);
- break;
- }
--#else
-- _dl_dprintf(2,"R_PPC_REL24: Compile shared libraries with -fPIC!\n");
-- return -1;
--#endif
- case R_PPC_NONE:
- goto out_nocode; /* No code code modified */
- default:
+++ /dev/null
-From 7810e4f8027b5c4c8ceec6fefec4eb779362ebb5 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 10 Jun 2012 16:36:23 +0000
-Subject: eventfd: Implement eventfd2 and fix eventfd
-
-eventfd: evntfd assumes to take two arguments instead it
-should be one evntfd expects two therefore implement both syscalls with
-correct parameters
-
-Thanks Eugene Rudoy for reporting it and also providing the patch
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
---- a/libc/sysdeps/linux/common/eventfd.c
-+++ b/libc/sysdeps/linux/common/eventfd.c
-@@ -7,12 +7,24 @@
- * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
- */
-
-+#include <errno.h>
- #include <sys/syscall.h>
- #include <sys/eventfd.h>
-
- /*
- * eventfd()
- */
--#ifdef __NR_eventfd
--_syscall2(int, eventfd, int, count, int, flags)
-+#if defined __NR_eventfd || defined __NR_eventfd2
-+int eventfd (int count, int flags)
-+{
-+#if defined __NR_eventfd2
-+ return INLINE_SYSCALL (eventfd2, 2, count, flags);
-+#elif defined __NR_eventfd
-+ if (flags != 0) {
-+ __set_errno (EINVAL);
-+ return -1;
-+ }
-+ return INLINE_SYSCALL (eventfd, 1, count);
-+#endif
-+}
- #endif
---- a/libc/sysdeps/linux/common/stubs.c
-+++ b/libc/sysdeps/linux/common/stubs.c
-@@ -93,7 +93,7 @@ make_stub(epoll_ctl)
- make_stub(epoll_wait)
- #endif
-
--#if !defined __NR_eventfd && defined __UCLIBC_LINUX_SPECIFIC__
-+#if !defined __NR_eventfd && !defined __NR_eventfd2 && defined __UCLIBC_LINUX_SPECIFIC__
- make_stub(eventfd)
- #endif
-
+++ /dev/null
-From 603af30d6992e94ac30a66b953264076f4f2fd71 Mon Sep 17 00:00:00 2001
-From: Markos Chandras <markos.chandras@imgtec.com>
-Date: Thu, 11 Jul 2013 16:59:16 +0000
-Subject: Rules.mak: MIPS64: Select correct interpreter
-
-gcc (eg 4.7.3) hardcodes the MIPS64 interpreters like this:
-(see gcc/config/linux.h and gcc/config/mips/linux64.h)
-
-o32: UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-n32: UCLIBC_DYNAMIC_LINKERN32 "/lib32/ld-uClibc.so.0"
-n64: UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
-
-The existing check for MIPS64 in uClibc is wrong because it does
-not respect the selected ABI
-
-We fix this by explicitely checking the selected ABI instead of the
-selected MIPS variant.
-
-Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
-Cc: Anthony G. Basile <blueness@gentoo.org>
-Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
----
-
---- a/Rules.mak
-+++ b/Rules.mak
-@@ -118,13 +118,19 @@ export MAJOR_VERSION MINOR_VERSION SUBLE
- LIBC := libc
- SHARED_LIBNAME := $(LIBC).so.$(ABI_VERSION)
- UBACKTRACE_DSO := libubacktrace.so.$(ABI_VERSION)
--ifneq ($(findstring $(TARGET_ARCH) , hppa64 ia64 mips64 powerpc64 s390x sparc64 x86_64 ),)
-+
-+UCLIBC_LDSO_NAME := ld-uClibc
-+ARCH_NATIVE_BIT := 32
-+ifneq ($(findstring $(TARGET_ARCH),hppa64 ia64 powerpc64 s390x sparc64 x86_64),)
- UCLIBC_LDSO_NAME := ld64-uClibc
- ARCH_NATIVE_BIT := 64
- else
--UCLIBC_LDSO_NAME := ld-uClibc
--ARCH_NATIVE_BIT := 32
-+ifeq ($(CONFIG_MIPS_N64_ABI),y)
-+UCLIBC_LDSO_NAME := ld64-uClibc
-+ARCH_NATIVE_BIT := 64
- endif
-+endif
-+
- UCLIBC_LDSO := $(UCLIBC_LDSO_NAME).so.$(ABI_VERSION)
- NONSHARED_LIBNAME := uclibc_nonshared.a
- libc := $(top_builddir)lib/$(SHARED_LIBNAME)
+++ /dev/null
-commit e5cde2eb0ed7df9416fdd6070af07c8448c72a30
-Author: Steve Ellcey <sellcey@mips.com>
-Date: Wed Feb 12 11:01:35 2014 -0800
-
- mips: Remove duplicate macro definitions
-
- The INLINE_SYSCALL, INTERNAL_SYSCALL*, and internal_syscall* macros
- are defined for MIPS in both libc/sysdeps/linux/mips/sysdep.h and
- libc/sysdeps/linux/mips/bits/syscalls.h. The macros are the same
- in both cases except that syscalls.h defines internal_syscalls[567]
- the same for N32 and N64 ABIs and has a different definition for O32.
- I believe that is correct. The sysdep.h header uses the O32 versions
- for N32 and has different definitions for N64. I think that is wrong
- and that N32 and N64 should share the same definition (modulo the
- type 'long' vs. 'long long' for the arguments. This setup (from
- sysdep.h) now agrees with what glibc has.
-
- I am not positive about which header (sysdep.h vs syscalls.h) is
- really the right one to have these definitions in but using sysdep.h
- seems to work for all my builds.
-
- Signed-off-by: Steve Ellcey <sellcey@mips.com>
- Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
-
---- a/libc/sysdeps/linux/mips/sysdep.h
-+++ b/libc/sysdeps/linux/mips/sysdep.h
-@@ -133,258 +133,6 @@ L(syse1):
-
- #else /* ! __ASSEMBLER__ */
-
--/* Define a macro which expands into the inline wrapper code for a system
-- call. */
--#undef INLINE_SYSCALL
--#define INLINE_SYSCALL(name, nr, args...) \
-- ({ INTERNAL_SYSCALL_DECL(err); \
-- long result_var = INTERNAL_SYSCALL (name, err, nr, args); \
-- if ( INTERNAL_SYSCALL_ERROR_P (result_var, err) ) \
-- { \
-- __set_errno (INTERNAL_SYSCALL_ERRNO (result_var, err)); \
-- result_var = -1L; \
-- } \
-- result_var; })
--
--#undef INTERNAL_SYSCALL_DECL
--#define INTERNAL_SYSCALL_DECL(err) long err
--
--#undef INTERNAL_SYSCALL_ERROR_P
--#define INTERNAL_SYSCALL_ERROR_P(val, err) ((long) (err))
--
--#undef INTERNAL_SYSCALL_ERRNO
--#define INTERNAL_SYSCALL_ERRNO(val, err) (val)
--
--#undef INTERNAL_SYSCALL
--#define INTERNAL_SYSCALL(name, err, nr, args...) \
-- internal_syscall##nr (, "li\t$2, %2\t\t\t# " #name "\n\t", \
-- "i" (SYS_ify (name)), err, args)
--
--#undef INTERNAL_SYSCALL_NCS
--#define INTERNAL_SYSCALL_NCS(number, err, nr, args...) \
-- internal_syscall##nr (= number, , "r" (__v0), err, args)
--#undef internal_syscall0
--#define internal_syscall0(ncs_init, cs_init, input, err, dummy...) \
--({ \
-- long _sys_result; \
-- \
-- { \
-- register long __v0 __asm__("$2") ncs_init; \
-- register long __a3 __asm__("$7"); \
-- __asm__ __volatile__ ( \
-- ".set\tnoreorder\n\t" \
-- cs_init \
-- "syscall\n\t" \
-- ".set reorder" \
-- : "=r" (__v0), "=r" (__a3) \
-- : input \
-- : __SYSCALL_CLOBBERS); \
-- err = __a3; \
-- _sys_result = __v0; \
-- } \
-- _sys_result; \
--})
--
--#undef internal_syscall1
--#define internal_syscall1(ncs_init, cs_init, input, err, arg1) \
--({ \
-- long _sys_result; \
-- \
-- { \
-- register long __v0 __asm__("$2") ncs_init; \
-- register long __a0 __asm__("$4") = (long) arg1; \
-- register long __a3 __asm__("$7"); \
-- __asm__ __volatile__ ( \
-- ".set\tnoreorder\n\t" \
-- cs_init \
-- "syscall\n\t" \
-- ".set reorder" \
-- : "=r" (__v0), "=r" (__a3) \
-- : input, "r" (__a0) \
-- : __SYSCALL_CLOBBERS); \
-- err = __a3; \
-- _sys_result = __v0; \
-- } \
-- _sys_result; \
--})
--
--#undef internal_syscall2
--#define internal_syscall2(ncs_init, cs_init, input, err, arg1, arg2) \
--({ \
-- long _sys_result; \
-- \
-- { \
-- register long __v0 __asm__("$2") ncs_init; \
-- register long __a0 __asm__("$4") = (long) arg1; \
-- register long __a1 __asm__("$5") = (long) arg2; \
-- register long __a3 __asm__("$7"); \
-- __asm__ __volatile__ ( \
-- ".set\tnoreorder\n\t" \
-- cs_init \
-- "syscall\n\t" \
-- ".set\treorder" \
-- : "=r" (__v0), "=r" (__a3) \
-- : input, "r" (__a0), "r" (__a1) \
-- : __SYSCALL_CLOBBERS); \
-- err = __a3; \
-- _sys_result = __v0; \
-- } \
-- _sys_result; \
--})
--
--#undef internal_syscall3
--#define internal_syscall3(ncs_init, cs_init, input, err, arg1, arg2, arg3)\
--({ \
-- long _sys_result; \
-- \
-- { \
-- register long __v0 __asm__("$2") ncs_init; \
-- register long __a0 __asm__("$4") = (long) arg1; \
-- register long __a1 __asm__("$5") = (long) arg2; \
-- register long __a2 __asm__("$6") = (long) arg3; \
-- register long __a3 __asm__("$7"); \
-- __asm__ __volatile__ ( \
-- ".set\tnoreorder\n\t" \
-- cs_init \
-- "syscall\n\t" \
-- ".set\treorder" \
-- : "=r" (__v0), "=r" (__a3) \
-- : input, "r" (__a0), "r" (__a1), "r" (__a2) \
-- : __SYSCALL_CLOBBERS); \
-- err = __a3; \
-- _sys_result = __v0; \
-- } \
-- _sys_result; \
--})
--
--#undef internal_syscall4
--#define internal_syscall4(ncs_init, cs_init, input, err, arg1, arg2, arg3, arg4)\
--({ \
-- long _sys_result; \
-- \
-- { \
-- register long __v0 __asm__("$2") ncs_init; \
-- register long __a0 __asm__("$4") = (long) arg1; \
-- register long __a1 __asm__("$5") = (long) arg2; \
-- register long __a2 __asm__("$6") = (long) arg3; \
-- register long __a3 __asm__("$7") = (long) arg4; \
-- __asm__ __volatile__ ( \
-- ".set\tnoreorder\n\t" \
-- cs_init \
-- "syscall\n\t" \
-- ".set\treorder" \
-- : "=r" (__v0), "+r" (__a3) \
-- : input, "r" (__a0), "r" (__a1), "r" (__a2) \
-- : __SYSCALL_CLOBBERS); \
-- err = __a3; \
-- _sys_result = __v0; \
-- } \
-- _sys_result; \
--})
--
--/* We need to use a frame pointer for the functions in which we
-- adjust $sp around the syscall, or debug information and unwind
-- information will be $sp relative and thus wrong during the syscall. As
-- of GCC 3.4.3, this is sufficient. */
--#define FORCE_FRAME_POINTER alloca (4)
--
--#undef internal_syscall5
--#define internal_syscall5(ncs_init, cs_init, input, err, arg1, arg2, arg3, arg4, arg5)\
--({ \
-- long _sys_result; \
-- \
-- FORCE_FRAME_POINTER; \
-- { \
-- register long __v0 __asm__("$2") ncs_init; \
-- register long __a0 __asm__("$4") = (long) arg1; \
-- register long __a1 __asm__("$5") = (long) arg2; \
-- register long __a2 __asm__("$6") = (long) arg3; \
-- register long __a3 __asm__("$7") = (long) arg4; \
-- __asm__ __volatile__ ( \
-- ".set\tnoreorder\n\t" \
-- "subu\t$29, 32\n\t" \
-- "sw\t%6, 16($29)\n\t" \
-- cs_init \
-- "syscall\n\t" \
-- "addiu\t$29, 32\n\t" \
-- ".set\treorder" \
-- : "=r" (__v0), "+r" (__a3) \
-- : input, "r" (__a0), "r" (__a1), "r" (__a2), \
-- "r" ((long)arg5) \
-- : __SYSCALL_CLOBBERS); \
-- err = __a3; \
-- _sys_result = __v0; \
-- } \
-- _sys_result; \
--})
--
--#undef internal_syscall6
--#define internal_syscall6(ncs_init, cs_init, input, err, arg1, arg2, arg3, arg4, arg5, arg6)\
--({ \
-- long _sys_result; \
-- \
-- FORCE_FRAME_POINTER; \
-- { \
-- register long __v0 __asm__("$2") ncs_init; \
-- register long __a0 __asm__("$4") = (long) arg1; \
-- register long __a1 __asm__("$5") = (long) arg2; \
-- register long __a2 __asm__("$6") = (long) arg3; \
-- register long __a3 __asm__("$7") = (long) arg4; \
-- __asm__ __volatile__ ( \
-- ".set\tnoreorder\n\t" \
-- "subu\t$29, 32\n\t" \
-- "sw\t%6, 16($29)\n\t" \
-- "sw\t%7, 20($29)\n\t" \
-- cs_init \
-- "syscall\n\t" \
-- "addiu\t$29, 32\n\t" \
-- ".set\treorder" \
-- : "=r" (__v0), "+r" (__a3) \
-- : input, "r" (__a0), "r" (__a1), "r" (__a2), \
-- "r" ((long)arg5), "r" ((long)arg6) \
-- : __SYSCALL_CLOBBERS); \
-- err = __a3; \
-- _sys_result = __v0; \
-- } \
-- _sys_result; \
--})
--
--#undef internal_syscall7
--#define internal_syscall7(ncs_init, cs_init, input, err, arg1, arg2, arg3, arg4, arg5, arg6, arg7)\
--({ \
-- long _sys_result; \
-- \
-- FORCE_FRAME_POINTER; \
-- { \
-- register long __v0 __asm__("$2") ncs_init; \
-- register long __a0 __asm__("$4") = (long) arg1; \
-- register long __a1 __asm__("$5") = (long) arg2; \
-- register long __a2 __asm__("$6") = (long) arg3; \
-- register long __a3 __asm__("$7") = (long) arg4; \
-- __asm__ __volatile__ ( \
-- ".set\tnoreorder\n\t" \
-- "subu\t$29, 32\n\t" \
-- "sw\t%6, 16($29)\n\t" \
-- "sw\t%7, 20($29)\n\t" \
-- "sw\t%8, 24($29)\n\t" \
-- cs_init \
-- "syscall\n\t" \
-- "addiu\t$29, 32\n\t" \
-- ".set\treorder" \
-- : "=r" (__v0), "+r" (__a3) \
-- : input, "r" (__a0), "r" (__a1), "r" (__a2), \
-- "r" ((long)arg5), "r" ((long)arg6), "r" ((long)arg7) \
-- : __SYSCALL_CLOBBERS); \
-- err = __a3; \
-- _sys_result = __v0; \
-- } \
-- _sys_result; \
--})
--
--#undef __SYSCALL_CLOBBERS
--#define __SYSCALL_CLOBBERS "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", \
-- "$14", "$15", "$24", "$25", "memory"
--
- /* Pointer mangling is not yet supported for MIPS. */
- #define PTR_MANGLE(var) (void) (var)
- #define PTR_DEMANGLE(var) (void) (var)
+++ /dev/null
-commit 2952c70804b48bb5c87eea21df5e401969dc4ec1
-Author: Kevin Cernekee <cernekee@gmail.com>
-Date: Tue Jun 5 15:05:20 2012 -0700
-
- MIPS: Use $a0 instead of $v0 for __syscall_error() argument
-
- $a0 is saved across _dl_runtime_resolve(); $v0 is not. Unfortunately,
- __syscall_error() uses $v0 for its argument, not $a0 as is the MIPS ABI
- standard. This means that if lazy binding was used for __syscall_error(),
- the errno value in $v0 could get corrupted.
-
- The problem can be easily seen in testcases where syscalls in librt fail;
- when librt tries to call __syscall_error() in libc, the argument gets
- lost and errno gets set to a bogus value:
-
- # ./tst-mqueue1 ; echo $?
- mq_receive on O_WRONLY mqd_t did not fail with EBADF: Unknown error 2004684208
- 1
- # ./tst-mqueue2 ; echo $?
- mq_timedreceive with too small msg_len did not fail with EMSGSIZE: Unknown error 1997360560
- 1
- # ./tst-mqueue4 ; echo $?
- mq_timedsend did not fail with ETIMEDOUT: Unknown error 2008747440
- 1
-
- When _dl_runtime_resolve() was taken out of the equation, the same test
- cases passed:
-
- # LD_BIND_NOW=y ./tst-mqueue1 ; echo $?
- 0
- # LD_BIND_NOW=y ./tst-mqueue2 ; echo $?
- 0
- # LD_BIND_NOW=y ./tst-mqueue4 ; echo $?
- 0
-
- Changing __syscall_error() to look at $a0 instead of $v0 fixed the
- problem.
-
- (Note that there is also a "__syscall_error.c" file which presumably
- uses the standard C calling conventions, but I do not think it is used
- on MIPS.)
-
- Signed-off-by: Kevin Cernekee <cernekee@gmail.com>
- Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
-
-commit 3c58d95d918c7e2fda374c37a52f81b34b81e4ca
-Author: Kevin Cernekee <cernekee@gmail.com>
-Date: Tue Jun 5 15:05:19 2012 -0700
-
- MIPS: Convert __syscall_error() callers to use $a0 for argument
-
- Some callers passed the first argument in $v0, while others used $a0.
- Change the callers to use $a0 consistently.
-
- Signed-off-by: Kevin Cernekee <cernekee@gmail.com>
- Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
-
---- a/libc/sysdeps/linux/mips/vfork.S
-+++ b/libc/sysdeps/linux/mips/vfork.S
-@@ -84,6 +84,7 @@ NESTED(__vfork,FRAMESZ,sp)
-
- /* Something bad happened -- no child created. */
- L(error):
-+ move a0, v0
- #ifdef __PIC__
- PTR_LA t9, __syscall_error
- RESTORE_GP64
---- a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mips/mips64/sysdep-cancel.h
-+++ b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mips/mips64/sysdep-cancel.h
-@@ -31,7 +31,7 @@
- # undef PSEUDO
- # define PSEUDO(name, syscall_name, args) \
- .align 2; \
-- 99: \
-+ 99: move a0, v0; \
- PTR_LA t9,__syscall_error; \
- /* manual cpreturn. */ \
- REG_L gp, STKOFF_GP(sp); \
---- a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mips/vfork.S
-+++ b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mips/vfork.S
-@@ -80,6 +80,7 @@ NESTED(__vfork,FRAMESZ,sp)
-
- /* Something bad happened -- no child created. */
- L(error):
-+ move a0, v0
- #ifdef __PIC__
- PTR_LA t9, __syscall_error
- RESTORE_GP64
---- a/libc/sysdeps/linux/mips/syscall_error.S
-+++ b/libc/sysdeps/linux/mips/syscall_error.S
-@@ -43,7 +43,7 @@ ENTRY(__syscall_error)
- #ifdef __PIC__
- SAVE_GP(GPOFF)
- #endif
-- REG_S v0, V0OFF(sp)
-+ REG_S a0, V0OFF(sp)
- REG_S ra, RAOFF(sp)
-
- /* Find our per-thread errno address */
+++ /dev/null
-commit 052bcf13afb067cafac5e7f4fc21fbad2b34b11f
-Author: Waldemar Brodkorb <wbx@openadk.org>
-Date: Wed Nov 27 09:55:51 2013 +0100
-
- Fix for SIGBUS error on MIPS64 with N64 ABI
-
- When accessing errno, a per thread variable, from _stdio_init
- a SIGBUS error happens. This change fixes the wrong relocation
- and debug output.
-
- Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
- Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
-
---- a/ldso/ldso/mips/elfinterp.c
-+++ b/ldso/ldso/mips/elfinterp.c
-@@ -259,11 +259,11 @@ int _dl_parse_relocation_information(str
- case R_MIPS_TLS_TPREL32:
- case R_MIPS_TLS_TPREL64:
- CHECK_STATIC_TLS((struct link_map *)tls_tpnt);
-- *(ElfW(Word) *)reloc_addr +=
-+ *(ElfW(Addr) *)reloc_addr +=
- TLS_TPREL_VALUE (tls_tpnt, symbol_addr);
- #ifdef __SUPPORT_LD_DEBUG__
- _dl_dprintf(2, "TLS_TPREL : %s, %x, %x\n",
-- symname, old_val, *((unsigned int *)reloc_addr));
-+ symname, old_val, *((unsigned long *)reloc_addr));
- #endif
- break;
- }
+++ /dev/null
---- a/ldso/ldso/mips/elfinterp.c
-+++ b/ldso/ldso/mips/elfinterp.c
-@@ -239,7 +239,7 @@ int _dl_parse_relocation_information(str
- case R_MIPS_TLS_DTPMOD64:
- case R_MIPS_TLS_DTPMOD32:
- if (tls_tpnt)
-- *(ElfW(Word) *)reloc_addr = tls_tpnt->l_tls_modid;
-+ *(ElfW(Addr) *)reloc_addr = tls_tpnt->l_tls_modid;
- #ifdef __SUPPORT_LD_DEBUG__
- _dl_dprintf(2, "TLS_DTPMOD : %s, %d, %d\n",
- symname, old_val, *((unsigned int *)reloc_addr));
-@@ -248,7 +248,7 @@ int _dl_parse_relocation_information(str
-
- case R_MIPS_TLS_DTPREL64:
- case R_MIPS_TLS_DTPREL32:
-- *(ElfW(Word) *)reloc_addr +=
-+ *(ElfW(Addr) *)reloc_addr +=
- TLS_DTPREL_VALUE (symbol_addr);
- #ifdef __SUPPORT_LD_DEBUG__
- _dl_dprintf(2, "TLS_DTPREL : %s, %x, %x\n",
+++ /dev/null
-commit 70a04a287a2875c82e6822c36e071afba5b63a62
-Author: Waldemar Brodkorb <wbx@openadk.org>
-Date: Wed Jan 29 18:58:56 2014 +0100
-
- libc: mips: Fix setjmp/longjmp for MIPS64 N64 ABI
-
- When booting a Linux system with qemu-system-mips64 the execution
- of $(pwd) in the ash shell triggers a segmentation fault. Ash uses
- setjmp/longjmp for exception handling.
-
- After looking at the glibc implementation,
- I found some differences, with this patch tries to resolve.
- Now the system boots up fine and no segmentation faults occur.
-
- The global pointer should be restored and the types for the
- register values should be wide enough.
-
- See:
- http://www.cygwin.com/ml/libc-alpha/2003-03/msg00363.html
-
- Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
- Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
-
---- a/libc/sysdeps/linux/mips/bits/setjmp.h
-+++ b/libc/sysdeps/linux/mips/bits/setjmp.h
-@@ -26,13 +26,19 @@
-
- #include <sgidefs.h>
-
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
-+#define ptrsize void *
-+#else
-+#define ptrsize long long
-+#endif
-+
- typedef struct
- {
- /* Program counter. */
-- void * __pc;
-+ ptrsize __pc;
-
- /* Stack pointer. */
-- void * __sp;
-+ ptrsize __sp;
-
- /* Callee-saved registers s0 through s7. */
- #if _MIPS_SIM == _MIPS_SIM_ABI32
-@@ -42,10 +48,10 @@ typedef struct
- #endif
-
- /* The frame pointer. */
-- void * __fp;
-+ ptrsize __fp;
-
- /* The global pointer. */
-- void * __gp;
-+ ptrsize __gp;
-
- /* Floating point status register. */
- int __fpc_csr;
---- a/libc/sysdeps/linux/mips/setjmp.S
-+++ b/libc/sysdeps/linux/mips/setjmp.S
-@@ -53,6 +53,7 @@ __sigsetjmp:
- PTR_LA t9, __sigsetjmp_aux
- #if _MIPS_SIM != _MIPS_SIM_ABI32
- .cpreturn
-+ move a4, gp
- #endif
- jr t9
- #else
---- a/libc/sysdeps/linux/mips/setjmp_aux.c
-+++ b/libc/sysdeps/linux/mips/setjmp_aux.c
-@@ -31,7 +31,7 @@ extern int __sigjmp_save (sigjmp_buf, in
-
- int
- #if _MIPS_SIM == _MIPS_SIM_ABI64
--__sigsetjmp_aux (jmp_buf env, int savemask, long sp, long fp)
-+__sigsetjmp_aux (jmp_buf env, int savemask, long long sp, long long fp, long long gp)
- #else /* O32 || N32 */
- __sigsetjmp_aux (jmp_buf env, int savemask, int sp, int fp)
- #endif /* O32 || N32 */
-@@ -65,14 +65,14 @@ __sigsetjmp_aux (jmp_buf env, int savema
- #endif
-
- /* .. and the stack pointer; */
-- env[0].__jmpbuf[0].__sp = (void *) sp;
-+ env[0].__jmpbuf[0].__sp = (ptrsize) sp;
-
- /* .. and the FP; it'll be in s8. */
-- env[0].__jmpbuf[0].__fp = (void *) fp;
-+ env[0].__jmpbuf[0].__fp = (ptrsize) fp;
-
- /* .. and the GP; */
- #if _MIPS_SIM == _MIPS_SIM_ABI64
-- __asm__ __volatile__ ("sd $gp, %0" : : "m" (env[0].__jmpbuf[0].__gp));
-+ env[0].__jmpbuf[0].__gp = (ptrsize) gp;
- #else
- __asm__ __volatile__ ("sw $gp, %0" : : "m" (env[0].__jmpbuf[0].__gp));
- #endif
+++ /dev/null
-commit b97b4b698b023f75b54f987859c856ab4861ea00
-Author: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
-Date: Thu Jan 2 15:02:12 2014 +0000
-
- siginfo.h: __SIGEV_PAD_SIZE takes __WORDSIZE into account
-
- Make __SIGEV_PAD_SIZE to take __WORDSIZE into account for alpha, mips
- and ia64 arches.
-
- Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
- Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
-
---- a/libc/sysdeps/linux/alpha/bits/siginfo.h
-+++ b/libc/sysdeps/linux/alpha/bits/siginfo.h
-@@ -258,7 +258,11 @@ enum
-
- /* Structure to transport application-defined values with signals. */
- # define __SIGEV_MAX_SIZE 64
--# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
-+# if __WORDSIZE == 64
-+# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
-+# else
-+# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
-+# endif
-
- typedef struct sigevent
- {
---- a/libc/sysdeps/linux/ia64/bits/siginfo.h
-+++ b/libc/sysdeps/linux/ia64/bits/siginfo.h
-@@ -298,7 +298,11 @@ enum
-
- /* Structure to transport application-defined values with signals. */
- # define __SIGEV_MAX_SIZE 64
--# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
-+# if __WORDSIZE == 64
-+# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
-+# else
-+# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
-+# endif
-
- typedef struct sigevent
- {
---- a/libc/sysdeps/linux/mips/bits/siginfo.h
-+++ b/libc/sysdeps/linux/mips/bits/siginfo.h
-@@ -265,8 +265,11 @@ enum
-
- /* Structure to transport application-defined values with signals. */
- # define __SIGEV_MAX_SIZE 64
--# define __SIGEV_HEAD_SIZE (sizeof(long) + 2*sizeof(int))
--# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE - __SIGEV_HEAD_SIZE) / sizeof (int))
-+# if __WORDSIZE == 64
-+# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
-+# else
-+# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
-+# endif
-
- /* Forward declaration of the `pthread_attr_t' type. */
- struct __pthread_attr_s;
+++ /dev/null
---- a/libc/sysdeps/linux/common/xstatconv.c
-+++ b/libc/sysdeps/linux/common/xstatconv.c
-@@ -39,9 +39,12 @@ void __xstat_conv(struct kernel_stat *kb
- buf->st_size = kbuf->st_size;
- buf->st_blksize = kbuf->st_blksize;
- buf->st_blocks = kbuf->st_blocks;
-- buf->st_atim = kbuf->st_atim;
-- buf->st_mtim = kbuf->st_mtim;
-- buf->st_ctim = kbuf->st_ctim;
-+ buf->st_atim.tv_sec = kbuf->st_atim.tv_sec;
-+ buf->st_atim.tv_nsec = kbuf->st_atim.tv_nsec;
-+ buf->st_mtim.tv_sec = kbuf->st_mtim.tv_sec;
-+ buf->st_mtim.tv_nsec = kbuf->st_mtim.tv_nsec;
-+ buf->st_ctim.tv_sec = kbuf->st_ctim.tv_sec;
-+ buf->st_ctim.tv_nsec = kbuf->st_ctim.tv_nsec;
- }
-
- void __xstat32_conv(struct kernel_stat64 *kbuf, struct stat *buf)
-@@ -58,9 +61,12 @@ void __xstat32_conv(struct kernel_stat64
- buf->st_size = kbuf->st_size;
- buf->st_blksize = kbuf->st_blksize;
- buf->st_blocks = kbuf->st_blocks;
-- buf->st_atim = kbuf->st_atim;
-- buf->st_mtim = kbuf->st_mtim;
-- buf->st_ctim = kbuf->st_ctim;
-+ buf->st_atim.tv_sec = kbuf->st_atim.tv_sec;
-+ buf->st_atim.tv_nsec = kbuf->st_atim.tv_nsec;
-+ buf->st_mtim.tv_sec = kbuf->st_mtim.tv_sec;
-+ buf->st_mtim.tv_nsec = kbuf->st_mtim.tv_nsec;
-+ buf->st_ctim.tv_sec = kbuf->st_ctim.tv_sec;
-+ buf->st_ctim.tv_nsec = kbuf->st_ctim.tv_nsec;
- }
-
- #ifdef __UCLIBC_HAS_LFS__
-@@ -82,9 +88,12 @@ void __xstat64_conv(struct kernel_stat64
- buf->st_size = kbuf->st_size;
- buf->st_blksize = kbuf->st_blksize;
- buf->st_blocks = kbuf->st_blocks;
-- buf->st_atim = kbuf->st_atim;
-- buf->st_mtim = kbuf->st_mtim;
-- buf->st_ctim = kbuf->st_ctim;
-+ buf->st_atim.tv_sec = kbuf->st_atim.tv_sec;
-+ buf->st_atim.tv_nsec = kbuf->st_atim.tv_nsec;
-+ buf->st_mtim.tv_sec = kbuf->st_mtim.tv_sec;
-+ buf->st_mtim.tv_nsec = kbuf->st_mtim.tv_nsec;
-+ buf->st_ctim.tv_sec = kbuf->st_ctim.tv_sec;
-+ buf->st_ctim.tv_nsec = kbuf->st_ctim.tv_nsec;
- }
-
- #endif /* __UCLIBC_HAS_LFS__ */
---- a/libc/sysdeps/linux/mips/bits/kernel_stat.h
-+++ b/libc/sysdeps/linux/mips/bits/kernel_stat.h
-@@ -8,6 +8,18 @@
- #include <sgidefs.h>
-
- #if _MIPS_SIM == _MIPS_SIM_ABI64
-+typedef struct {
-+ unsigned int tv_sec;
-+ unsigned int tv_nsec;
-+} __ktimespec_t;
-+#else
-+typedef struct {
-+ time_t tv_sec;
-+ unsigned long tv_nsec;
-+} __ktimespec_t;
-+#endif
-+
-+#if _MIPS_SIM == _MIPS_SIM_ABI64
- /* The memory layout is the same as of struct stat64 of the 32-bit kernel. */
- struct kernel_stat {
- __kernel_dev_t st_dev;
-@@ -20,9 +32,9 @@ struct kernel_stat {
- __kernel_dev_t st_rdev;
- unsigned int st_pad2[3];
- __kernel_off_t st_size;
-- struct timespec st_atim;
-- struct timespec st_mtim;
-- struct timespec st_ctim;
-+ __ktimespec_t st_atim;
-+ __ktimespec_t st_mtim;
-+ __ktimespec_t st_ctim;
- unsigned int st_blksize;
- unsigned int reserved3;
- unsigned long st_blocks;
-@@ -41,9 +53,9 @@ struct kernel_stat {
- unsigned int st_rdev;
- unsigned int st_pad2[3];
- unsigned long long st_size;
-- struct timespec st_atim;
-- struct timespec st_mtim;
-- struct timespec st_ctim;
-+ __ktimespec_t st_atim;
-+ __ktimespec_t st_mtim;
-+ __ktimespec_t st_ctim;
- unsigned int st_blksize;
- unsigned int reserved3;
- unsigned long long st_blocks;
-@@ -62,9 +74,9 @@ struct kernel_stat {
- long st_pad2[2];
- __kernel_off_t st_size;
- long st_pad3;
-- struct timespec st_atim;
-- struct timespec st_mtim;
-- struct timespec st_ctim;
-+ __ktimespec_t st_atim;
-+ __ktimespec_t st_mtim;
-+ __ktimespec_t st_ctim;
- long st_blksize;
- long st_blocks;
- long st_pad4[14];
-@@ -81,9 +93,9 @@ struct kernel_stat64 {
- unsigned long st_rdev;
- unsigned long st_pad1[3]; /* Reserved for st_rdev expansion */
- long long st_size;
-- struct timespec st_atim;
-- struct timespec st_mtim;
-- struct timespec st_ctim;
-+ __ktimespec_t st_atim;
-+ __ktimespec_t st_mtim;
-+ __ktimespec_t st_ctim;
- unsigned long st_blksize;
- unsigned long st_pad2;
- long long st_blocks;
+++ /dev/null
---- a/libc/sysdeps/linux/mips/bits/setjmp.h
-+++ b/libc/sysdeps/linux/mips/bits/setjmp.h
-@@ -27,18 +27,18 @@
- #include <sgidefs.h>
-
- #if _MIPS_SIM == _MIPS_SIM_ABI32
--#define ptrsize void *
-+#define __setjmp_ptr void *
- #else
--#define ptrsize long long
-+#define __setjmp_ptr long long
- #endif
-
- typedef struct
- {
- /* Program counter. */
-- ptrsize __pc;
-+ __setjmp_ptr __pc;
-
- /* Stack pointer. */
-- ptrsize __sp;
-+ __setjmp_ptr __sp;
-
- /* Callee-saved registers s0 through s7. */
- #if _MIPS_SIM == _MIPS_SIM_ABI32
-@@ -48,10 +48,10 @@ typedef struct
- #endif
-
- /* The frame pointer. */
-- ptrsize __fp;
-+ __setjmp_ptr __fp;
-
- /* The global pointer. */
-- ptrsize __gp;
-+ __setjmp_ptr __gp;
-
- /* Floating point status register. */
- int __fpc_csr;
---- a/libc/sysdeps/linux/mips/setjmp_aux.c
-+++ b/libc/sysdeps/linux/mips/setjmp_aux.c
-@@ -65,14 +65,14 @@ __sigsetjmp_aux (jmp_buf env, int savema
- #endif
-
- /* .. and the stack pointer; */
-- env[0].__jmpbuf[0].__sp = (ptrsize) sp;
-+ env[0].__jmpbuf[0].__sp = (__setjmp_ptr) sp;
-
- /* .. and the FP; it'll be in s8. */
-- env[0].__jmpbuf[0].__fp = (ptrsize) fp;
-+ env[0].__jmpbuf[0].__fp = (__setjmp_ptr) fp;
-
- /* .. and the GP; */
- #if _MIPS_SIM == _MIPS_SIM_ABI64
-- env[0].__jmpbuf[0].__gp = (ptrsize) gp;
-+ env[0].__jmpbuf[0].__gp = (__setjmp_ptr) gp;
- #else
- __asm__ __volatile__ ("sw $gp, %0" : : "m" (env[0].__jmpbuf[0].__gp));
- #endif
+++ /dev/null
---- a/libc/sysdeps/linux/mips/sysdep.h
-+++ b/libc/sysdeps/linux/mips/sysdep.h
-@@ -96,7 +96,8 @@
- backwards into the previous fn. */
-
- #ifdef __PIC__
--#define PSEUDO(name, syscall_name, args) \
-+# if _MIPS_SIM == _ABIO32
-+# define PSEUDO(name, syscall_name, args) \
- .align 2; \
- 99: move a0, v0; \
- la t9,__syscall_error; \
-@@ -109,6 +110,23 @@
- .set reorder; \
- bne a3, zero, 99b; \
- L(syse1):
-+# else
-+# define PSEUDO(name, syscall_name, args) \
-+ .align 2; \
-+ 99: \
-+ .set noat; \
-+ .cpsetup t9, $1, name; \
-+ .set at; \
-+ move a0, v0; \
-+ dla t9,__syscall_error; \
-+ .cpreturn; \
-+ jr t9; \
-+ ENTRY(name) \
-+ li v0, SYS_ify(syscall_name); \
-+ syscall; \
-+ bne a3, zero, 99b; \
-+L(syse1):
-+# endif
- #else
- #define PSEUDO(name, syscall_name, args) \
- .set noreorder; \
+++ /dev/null
---- a/extra/Configs/Config.in
-+++ b/extra/Configs/Config.in
-@@ -235,6 +235,7 @@ config TARGET_SUBARCH
- default "i486" if CONFIG_486
- default "i586" if CONFIG_586 || CONFIG_586MMX
- default "i686" if TARGET_ARCH = "i386"
-+ default "mips64" if CONFIG_MIPS_N64_ABI
- default ""
-
- source "extra/Configs/Config.in.arch"
---- /dev/null
-+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/mips/mips64/sysdep-cancel.h
-@@ -0,0 +1,182 @@
-+/* Copyright (C) 2003, 2004, 2005, 2006 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 <tls.h>
-+#ifndef __ASSEMBLER__
-+# include <pthreadP.h>
-+#endif
-+#include <sys/asm.h>
-+
-+/* Gas will put the initial save of $gp into the CIE, because it appears to
-+ happen before any instructions. So we use cfi_same_value instead of
-+ cfi_restore. */
-+
-+#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
-+
-+#ifdef __PIC__
-+# undef PSEUDO
-+# define PSEUDO(name, syscall_name, args) \
-+ .align 2; \
-+ L(pseudo_start): \
-+ cfi_startproc; \
-+ cfi_adjust_cfa_offset (STKSPACE); \
-+ cfi_rel_offset (gp, STKOFF_GP); \
-+ 99: move a0, v0; \
-+ PTR_LA t9,__syscall_error; \
-+ /* manual cpreturn */ \
-+ REG_L gp, STKOFF_GP(sp); \
-+ cfi_same_value (gp); \
-+ RESTORESTK; \
-+ jr t9; \
-+ .type __##syscall_name##_nocancel, @function; \
-+ .globl __##syscall_name##_nocancel; \
-+ __##syscall_name##_nocancel: \
-+ SAVESTK; \
-+ .cpsetup t9, STKOFF_GP, name; \
-+ cfi_rel_offset (gp, STKOFF_GP); \
-+ li v0, SYS_ify(syscall_name); \
-+ syscall; \
-+ bne a3, zero, SYSCALL_ERROR_LABEL; \
-+ /* manual cpreturn */ \
-+ REG_L gp, STKOFF_GP(sp); \
-+ cfi_same_value (gp); \
-+ RESTORESTK; \
-+ ret; \
-+ .size __##syscall_name##_nocancel,.-__##syscall_name##_nocancel; \
-+ ENTRY (name) \
-+ SAVESTK; \
-+ .cpsetup t9, STKOFF_GP, name; \
-+ cfi_rel_offset (gp, STKOFF_GP); \
-+ SINGLE_THREAD_P(v1); \
-+ bne zero, v1, L(pseudo_cancel); \
-+ .set noreorder; \
-+ li v0, SYS_ify(syscall_name); \
-+ syscall; \
-+ .set reorder; \
-+ bne a3, zero, SYSCALL_ERROR_LABEL; \
-+ /* manual cpreturn */ \
-+ REG_L gp, STKOFF_GP(sp); \
-+ cfi_same_value (gp); \
-+ RESTORESTK; \
-+ ret; \
-+ L(pseudo_cancel): \
-+ cfi_adjust_cfa_offset (STKSPACE); \
-+ cfi_rel_offset (gp, STKOFF_GP); \
-+ REG_S ra, STKOFF_RA(sp); \
-+ cfi_rel_offset (ra, STKOFF_RA); \
-+ PUSHARGS_##args; /* save syscall args */ \
-+ CENABLE; \
-+ REG_S v0, STKOFF_SVMSK(sp); /* save mask */ \
-+ POPARGS_##args; /* restore syscall args */ \
-+ .set noreorder; \
-+ li v0, SYS_ify (syscall_name); \
-+ syscall; \
-+ .set reorder; \
-+ REG_S v0, STKOFF_SC_V0(sp); /* save syscall result */ \
-+ REG_S a3, STKOFF_SC_ERR(sp); /* save syscall error flag */ \
-+ REG_L a0, STKOFF_SVMSK(sp); /* pass mask as arg1 */ \
-+ CDISABLE; \
-+ REG_L a3, STKOFF_SC_ERR(sp); /* restore syscall error flag */ \
-+ REG_L ra, STKOFF_RA(sp); /* restore return address */ \
-+ REG_L v0, STKOFF_SC_V0(sp); /* restore syscall result */ \
-+ bne a3, zero, SYSCALL_ERROR_LABEL; \
-+ /* manual cpreturn */ \
-+ REG_L gp, STKOFF_GP(sp); \
-+ cfi_same_value (gp); \
-+ RESTORESTK; \
-+ L(pseudo_end):
-+
-+
-+# undef PSEUDO_END
-+# define PSEUDO_END(sym) cfi_endproc; .end sym; .size sym,.-sym
-+
-+#endif
-+
-+# define PUSHARGS_0 /* nothing to do */
-+# define PUSHARGS_1 PUSHARGS_0 REG_S a0, STKOFF_A0(sp); cfi_rel_offset (a0, STKOFF_A0);
-+# define PUSHARGS_2 PUSHARGS_1 REG_S a1, STKOFF_A1(sp); cfi_rel_offset (a1, STKOFF_A1);
-+# define PUSHARGS_3 PUSHARGS_2 REG_S a2, STKOFF_A2(sp); cfi_rel_offset (a2, STKOFF_A2);
-+# define PUSHARGS_4 PUSHARGS_3 REG_S a3, STKOFF_A3(sp); cfi_rel_offset (a3, STKOFF_A3);
-+# define PUSHARGS_5 PUSHARGS_4 REG_S a4, STKOFF_A4(sp); cfi_rel_offset (a3, STKOFF_A4);
-+# define PUSHARGS_6 PUSHARGS_5 REG_S a5, STKOFF_A5(sp); cfi_rel_offset (a3, STKOFF_A5);
-+
-+# define POPARGS_0 /* nothing to do */
-+# define POPARGS_1 POPARGS_0 REG_L a0, STKOFF_A0(sp);
-+# define POPARGS_2 POPARGS_1 REG_L a1, STKOFF_A1(sp);
-+# define POPARGS_3 POPARGS_2 REG_L a2, STKOFF_A2(sp);
-+# define POPARGS_4 POPARGS_3 REG_L a3, STKOFF_A3(sp);
-+# define POPARGS_5 POPARGS_4 REG_L a4, STKOFF_A4(sp);
-+# define POPARGS_6 POPARGS_5 REG_L a5, STKOFF_A5(sp);
-+
-+/* Save an even number of slots. Should be 0 if an even number of slots
-+ are used below, or SZREG if an odd number are used. */
-+# define STK_PAD SZREG
-+
-+/* Place values that we are more likely to use later in this sequence, i.e.
-+ closer to the SP at function entry. If you do that, the are more
-+ likely to already be in your d-cache. */
-+# define STKOFF_A5 (STK_PAD)
-+# define STKOFF_A4 (STKOFF_A5 + SZREG)
-+# define STKOFF_A3 (STKOFF_A4 + SZREG)
-+# define STKOFF_A2 (STKOFF_A3 + SZREG) /* MT and more args. */
-+# define STKOFF_A1 (STKOFF_A2 + SZREG) /* MT and 2 args. */
-+# define STKOFF_A0 (STKOFF_A1 + SZREG) /* MT and 1 arg. */
-+# define STKOFF_RA (STKOFF_A0 + SZREG) /* Used if MT. */
-+# define STKOFF_SC_V0 (STKOFF_RA + SZREG) /* Used if MT. */
-+# define STKOFF_SC_ERR (STKOFF_SC_V0 + SZREG) /* Used if MT. */
-+# define STKOFF_SVMSK (STKOFF_SC_ERR + SZREG) /* Used if MT. */
-+# define STKOFF_GP (STKOFF_SVMSK + SZREG) /* Always used. */
-+
-+# define STKSPACE (STKOFF_GP + SZREG)
-+# define SAVESTK PTR_SUBU sp, STKSPACE; cfi_adjust_cfa_offset(STKSPACE)
-+# define RESTORESTK PTR_ADDU sp, STKSPACE; cfi_adjust_cfa_offset(-STKSPACE)
-+
-+# ifdef IS_IN_libpthread
-+# define CENABLE PTR_LA t9, __pthread_enable_asynccancel; jalr t9
-+# define CDISABLE PTR_LA t9, __pthread_disable_asynccancel; jalr t9
-+# elif defined IS_IN_librt
-+# define CENABLE PTR_LA t9, __librt_enable_asynccancel; jalr t9
-+# define CDISABLE PTR_LA t9, __librt_disable_asynccancel; jalr t9
-+# else
-+# define CENABLE PTR_LA t9, __libc_enable_asynccancel; jalr t9
-+# define CDISABLE PTR_LA t9, __libc_disable_asynccancel; jalr t9
-+# endif
-+
-+# ifndef __ASSEMBLER__
-+# define SINGLE_THREAD_P \
-+ __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
-+ header.multiple_threads) \
-+ == 0, 1)
-+# else
-+# define SINGLE_THREAD_P(reg) \
-+ READ_THREAD_POINTER(reg); \
-+ lw reg, MULTIPLE_THREADS_OFFSET(reg)
-+#endif
-+
-+#elif !defined __ASSEMBLER__
-+
-+# define SINGLE_THREAD_P 1
-+# define NO_CANCELLATION 1
-+
-+#endif
-+
-+#ifndef __ASSEMBLER__
-+# define RTLD_SINGLE_THREAD_P \
-+ __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
-+ header.multiple_threads) == 0, 1)
-+#endif
+++ /dev/null
-Rely on the compiler to be properly setup for the default ABI.
-
-When installing-headers, there are two cases:
-- NPTL: no issue, a cross-compiler is already expected
-- LinuxThreads: no issue, EABI/OABI has no impact on installed headers.
-
-Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
-Cc: Khem Raj <raj.khem@gmail.com>
-Cc: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
-Cc: Carmelo AMOROSO <carmelo.amoroso@st.com>
----
-
---- a/extra/Configs/Config.arm
-+++ b/extra/Configs/Config.arm
-@@ -12,17 +12,6 @@ config FORCE_OPTIONS_FOR_ARCH
- default y
- select ARCH_ANY_ENDIAN
-
--config CONFIG_ARM_EABI
-- bool "Build for EABI"
-- help
-- If you say 'y' here, functions and constants required by the
-- ARM EABI will be built into the library. You should say 'y'
-- if your compiler uses the ARM EABI, in which case you will also
-- need a kernel supporting the EABI system call interface.
--
-- If you say 'n' here, then the library will be built for the
-- old Linux ABI.
--
- config COMPILE_IN_THUMB_MODE
- bool "Build using Thumb mode"
- select USE_BX
+++ /dev/null
-From 6a76edddaa62ff06f178143b582167734cb55c18 Mon Sep 17 00:00:00 2001
-From: Chris Packham <chris.packham@alliedtelesis.co.nz>
-Date: Mon, 01 Oct 2012 05:12:54 +0000
-Subject: libc/sysdeps: add __kernel_long and __kernel_ulong
-
-Linux 3.4 added __kernel_long_t and __kernel_ulong_t and various
-exported header files were updated to use these new types. Add the
-definitions for __kernel_long_t and __kernel_ulong_t to the relevant
-kernel_types.h headers.
-
-This change was automated with the following scriptlet
-
- git grep --name-only 'typedef.*__kernel_old_dev_t' \
- | xargs sed -i '/typedef.*__kernel_old_dev_t/ a\
- typedef long\t\t__kernel_long_t;\
- typedef unsigned long\t__kernel_ulong_t;'
-
-Whitespace in arm, avr32, hppa, sparc was then manually fixed up.
-
-Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
---
-Here's a cleaned up patch which should get the whitespace right. I'm a
-bit iffy about the sparc changes they make sense to me but it's not a
-platform I have access to.
-
-I can break this up per arch or per maintainer if requested.
-
- libc/sysdeps/linux/alpha/bits/kernel_types.h | 2 ++
- libc/sysdeps/linux/arm/bits/kernel_types.h | 2 ++
- libc/sysdeps/linux/avr32/bits/kernel_types.h | 2 ++
- libc/sysdeps/linux/bfin/bits/kernel_types.h | 2 ++
- libc/sysdeps/linux/c6x/bits/kernel_types.h | 2 ++
- libc/sysdeps/linux/cris/bits/kernel_types.h | 2 ++
- libc/sysdeps/linux/e1/bits/kernel_types.h | 2 ++
- libc/sysdeps/linux/h8300/bits/kernel_types.h | 2 ++
- libc/sysdeps/linux/hppa/bits/kernel_types.h | 2 ++
- libc/sysdeps/linux/i386/bits/kernel_types.h | 2 ++
- libc/sysdeps/linux/ia64/bits/kernel_types.h | 2 ++
- libc/sysdeps/linux/m68k/bits/kernel_types.h | 2 ++
- libc/sysdeps/linux/microblaze/bits/kernel_types.h | 2 ++
- libc/sysdeps/linux/mips/bits/kernel_types.h | 4 ++++
- libc/sysdeps/linux/nios2/bits/kernel_types.h | 2 ++
- libc/sysdeps/linux/powerpc/bits/kernel_types.h | 4 ++++
- libc/sysdeps/linux/sh/bits/kernel_types.h | 2 ++
- libc/sysdeps/linux/sh64/bits/kernel_types.h | 2 ++
- libc/sysdeps/linux/sparc/bits/kernel_types.h | 4 ++++
- libc/sysdeps/linux/v850/bits/kernel_types.h | 2 ++
- libc/sysdeps/linux/x86_64/bits/kernel_types.h | 2 ++
- libc/sysdeps/linux/xtensa/bits/kernel_types.h | 2 ++
- 22 files changed, 50 insertions(+)
-Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
----
---- a/libc/sysdeps/linux/alpha/bits/kernel_types.h
-+++ b/libc/sysdeps/linux/alpha/bits/kernel_types.h
-@@ -33,6 +33,8 @@ typedef __kernel_gid_t __kernel_old_gid_
- typedef __kernel_uid_t __kernel_uid32_t;
- typedef __kernel_gid_t __kernel_gid32_t;
- typedef __kernel_dev_t __kernel_old_dev_t;
-+typedef long __kernel_long_t;
-+typedef unsigned long __kernel_ulong_t;
-
- typedef struct {
- int val[2];
---- a/libc/sysdeps/linux/arm/bits/kernel_types.h
-+++ b/libc/sysdeps/linux/arm/bits/kernel_types.h
-@@ -32,6 +32,8 @@ typedef unsigned short __kernel_old_uid
- typedef unsigned short __kernel_old_gid_t;
- typedef long long __kernel_loff_t;
- typedef __kernel_dev_t __kernel_old_dev_t;
-+typedef long __kernel_long_t;
-+typedef unsigned long __kernel_ulong_t;
-
- typedef struct {
- #ifdef __USE_ALL
---- a/libc/sysdeps/linux/avr32/bits/kernel_types.h
-+++ b/libc/sysdeps/linux/avr32/bits/kernel_types.h
-@@ -39,6 +39,8 @@ typedef unsigned int __kernel_gid32_t;
- typedef unsigned short __kernel_old_uid_t;
- typedef unsigned short __kernel_old_gid_t;
- typedef unsigned short __kernel_old_dev_t;
-+typedef long __kernel_long_t;
-+typedef unsigned long __kernel_ulong_t;
-
- #ifdef __GNUC__
- typedef long long __kernel_loff_t;
---- a/libc/sysdeps/linux/bfin/bits/kernel_types.h
-+++ b/libc/sysdeps/linux/bfin/bits/kernel_types.h
-@@ -32,6 +32,8 @@ typedef unsigned short __kernel_old_uid_
- typedef unsigned short __kernel_old_gid_t;
- typedef long long __kernel_loff_t;
- typedef __kernel_dev_t __kernel_old_dev_t;
-+typedef long __kernel_long_t;
-+typedef unsigned long __kernel_ulong_t;
-
- typedef struct {
- #ifdef __USE_ALL
---- a/libc/sysdeps/linux/c6x/bits/kernel_types.h
-+++ b/libc/sysdeps/linux/c6x/bits/kernel_types.h
-@@ -22,6 +22,8 @@ typedef unsigned int __kernel_gid32_t;
- typedef unsigned int __kernel_old_uid_t;
- typedef unsigned int __kernel_old_gid_t;
- typedef unsigned int __kernel_old_dev_t;
-+typedef long __kernel_long_t;
-+typedef unsigned long __kernel_ulong_t;
- typedef unsigned int __kernel_size_t;
- typedef int __kernel_ssize_t;
- typedef int __kernel_ptrdiff_t;
---- a/libc/sysdeps/linux/cris/bits/kernel_types.h
-+++ b/libc/sysdeps/linux/cris/bits/kernel_types.h
-@@ -28,6 +28,8 @@ typedef unsigned int __kernel_gid32_t
- typedef unsigned short __kernel_old_uid_t;
- typedef unsigned short __kernel_old_gid_t;
- typedef __kernel_dev_t __kernel_old_dev_t;
-+typedef long __kernel_long_t;
-+typedef unsigned long __kernel_ulong_t;
-
- #ifdef __GNUC__
- typedef long long __kernel_loff_t;
---- a/libc/sysdeps/linux/e1/bits/kernel_types.h
-+++ b/libc/sysdeps/linux/e1/bits/kernel_types.h
-@@ -31,6 +31,8 @@ typedef unsigned int __kernel_gid32_t;
- typedef unsigned short __kernel_old_uid_t;
- typedef unsigned short __kernel_old_gid_t;
- typedef __kernel_dev_t __kernel_old_dev_t;
-+typedef long __kernel_long_t;
-+typedef unsigned long __kernel_ulong_t;
- typedef long long __kernel_loff_t;
-
- /*
---- a/libc/sysdeps/linux/h8300/bits/kernel_types.h
-+++ b/libc/sysdeps/linux/h8300/bits/kernel_types.h
-@@ -32,6 +32,8 @@ typedef unsigned short __kernel_old_uid_
- typedef unsigned short __kernel_old_gid_t;
- typedef long long __kernel_loff_t;
- typedef __kernel_dev_t __kernel_old_dev_t;
-+typedef long __kernel_long_t;
-+typedef unsigned long __kernel_ulong_t;
-
- typedef struct {
- #ifdef __USE_ALL
---- a/libc/sysdeps/linux/hppa/bits/kernel_types.h
-+++ b/libc/sysdeps/linux/hppa/bits/kernel_types.h
-@@ -45,6 +45,8 @@ typedef long long __kernel_off64_t;
- typedef unsigned long long __kernel_ino64_t;
-
- typedef unsigned int __kernel_old_dev_t;
-+typedef long __kernel_long_t;
-+typedef unsigned long __kernel_ulong_t;
-
- typedef struct {
- #ifdef __USE_ALL
---- a/libc/sysdeps/linux/i386/bits/kernel_types.h
-+++ b/libc/sysdeps/linux/i386/bits/kernel_types.h
-@@ -40,6 +40,8 @@ typedef unsigned int __kernel_gid32_t;
- typedef unsigned short __kernel_old_uid_t;
- typedef unsigned short __kernel_old_gid_t;
- typedef __kernel_dev_t __kernel_old_dev_t;
-+typedef long __kernel_long_t;
-+typedef unsigned long __kernel_ulong_t;
- typedef long long __kernel_loff_t;
-
- typedef struct {
---- a/libc/sysdeps/linux/ia64/bits/kernel_types.h
-+++ b/libc/sysdeps/linux/ia64/bits/kernel_types.h
-@@ -52,5 +52,7 @@ typedef __kernel_gid_t __kernel_gid32_t;
-
- typedef unsigned int __kernel_dev_t;
- typedef unsigned int __kernel_old_dev_t;
-+typedef long __kernel_long_t;
-+typedef unsigned long __kernel_ulong_t;
-
- #endif /* _ASM_IA64_POSIX_TYPES_H */
---- a/libc/sysdeps/linux/m68k/bits/kernel_types.h
-+++ b/libc/sysdeps/linux/m68k/bits/kernel_types.h
-@@ -32,6 +32,8 @@ typedef unsigned short __kernel_old_uid_
- typedef unsigned short __kernel_old_gid_t;
- typedef long long __kernel_loff_t;
- typedef __kernel_dev_t __kernel_old_dev_t;
-+typedef long __kernel_long_t;
-+typedef unsigned long __kernel_ulong_t;
-
- typedef struct {
- #ifdef __USE_ALL
---- a/libc/sysdeps/linux/microblaze/bits/kernel_types.h
-+++ b/libc/sysdeps/linux/microblaze/bits/kernel_types.h
-@@ -44,6 +44,8 @@ typedef unsigned int __kernel_gid32_t;
- typedef unsigned int __kernel_old_uid_t;
- typedef unsigned int __kernel_old_gid_t;
- typedef unsigned int __kernel_old_dev_t;
-+typedef long __kernel_long_t;
-+typedef unsigned long __kernel_ulong_t;
-
- #ifdef __GNUC__
- typedef long long __kernel_loff_t;
---- a/libc/sysdeps/linux/mips/bits/kernel_types.h
-+++ b/libc/sysdeps/linux/mips/bits/kernel_types.h
-@@ -32,6 +32,8 @@ typedef int __kernel_gid32_t;
- typedef __kernel_uid_t __kernel_old_uid_t;
- typedef __kernel_gid_t __kernel_old_gid_t;
- typedef __kernel_dev_t __kernel_old_dev_t;
-+typedef long __kernel_long_t;
-+typedef unsigned long __kernel_ulong_t;
- typedef long long __kernel_loff_t;
- #else
- typedef unsigned int __kernel_dev_t;
-@@ -68,6 +70,8 @@ typedef int __kernel_gid32_t;
- typedef __kernel_uid_t __kernel_old_uid_t;
- typedef __kernel_gid_t __kernel_old_gid_t;
- typedef __kernel_dev_t __kernel_old_dev_t;
-+typedef long __kernel_long_t;
-+typedef unsigned long __kernel_ulong_t;
- typedef long long __kernel_loff_t;
- #endif
-
---- a/libc/sysdeps/linux/nios2/bits/kernel_types.h
-+++ b/libc/sysdeps/linux/nios2/bits/kernel_types.h
-@@ -31,6 +31,8 @@ typedef unsigned int __kernel_gid32_t;
- typedef unsigned short __kernel_old_uid_t;
- typedef unsigned short __kernel_old_gid_t;
- typedef unsigned short __kernel_old_dev_t;
-+typedef long __kernel_long_t;
-+typedef unsigned long __kernel_ulong_t;
- typedef long long __kernel_loff_t;
-
- typedef struct {
---- a/libc/sysdeps/linux/powerpc/bits/kernel_types.h
-+++ b/libc/sysdeps/linux/powerpc/bits/kernel_types.h
-@@ -36,6 +36,8 @@ typedef unsigned int __kernel_gid32_t;
- typedef unsigned int __kernel_old_uid_t;
- typedef unsigned int __kernel_old_gid_t;
- typedef __kernel_dev_t __kernel_old_dev_t;
-+typedef long __kernel_long_t;
-+typedef unsigned long __kernel_ulong_t;
- #else
- typedef unsigned int __kernel_dev_t;
- typedef unsigned int __kernel_ino_t;
-@@ -61,6 +63,8 @@ typedef unsigned int __kernel_gid32_t;
- typedef unsigned int __kernel_old_uid_t;
- typedef unsigned int __kernel_old_gid_t;
- typedef __kernel_dev_t __kernel_old_dev_t;
-+typedef long __kernel_long_t;
-+typedef unsigned long __kernel_ulong_t;
- typedef long long __kernel_loff_t;
- #endif
-
---- a/libc/sysdeps/linux/sh/bits/kernel_types.h
-+++ b/libc/sysdeps/linux/sh/bits/kernel_types.h
-@@ -32,6 +32,8 @@ typedef unsigned int __kernel_gid32_t;
- typedef unsigned short __kernel_old_uid_t;
- typedef unsigned short __kernel_old_gid_t;
- typedef __kernel_dev_t __kernel_old_dev_t;
-+typedef long __kernel_long_t;
-+typedef unsigned long __kernel_ulong_t;
- typedef long long __kernel_loff_t;
-
- typedef struct {
---- a/libc/sysdeps/linux/sh64/bits/kernel_types.h
-+++ b/libc/sysdeps/linux/sh64/bits/kernel_types.h
-@@ -43,6 +43,8 @@ typedef unsigned int __kernel_gid32_t
- typedef unsigned short __kernel_old_uid_t;
- typedef unsigned short __kernel_old_gid_t;
- typedef __kernel_dev_t __kernel_old_dev_t;
-+typedef long __kernel_long_t;
-+typedef unsigned long __kernel_ulong_t;
- typedef long long __kernel_loff_t;
-
- typedef struct {
---- a/libc/sysdeps/linux/sparc/bits/kernel_types.h
-+++ b/libc/sysdeps/linux/sparc/bits/kernel_types.h
-@@ -32,6 +32,8 @@ typedef unsigned short __kernel_g
- typedef __kernel_uid_t __kernel_old_uid_t;
- typedef __kernel_gid_t __kernel_old_gid_t;
- typedef __kernel_dev_t __kernel_old_dev_t;
-+typedef long __kernel_long_t;
-+typedef unsigned long __kernel_ulong_t;
- typedef __kernel_uid_t __kernel_uid32_t;
- typedef __kernel_gid_t __kernel_gid32_t;
- typedef int __kernel_suseconds_t;
-@@ -62,6 +64,8 @@ typedef unsigned int __kernel_gid
- typedef unsigned short __kernel_old_uid_t;
- typedef unsigned short __kernel_old_gid_t;
- typedef __kernel_dev_t __kernel_old_dev_t;
-+typedef long __kernel_long_t;
-+typedef unsigned long __kernel_ulong_t;
- typedef long long __kernel_loff_t;
- #endif
-
---- a/libc/sysdeps/linux/v850/bits/kernel_types.h
-+++ b/libc/sysdeps/linux/v850/bits/kernel_types.h
-@@ -41,6 +41,8 @@ typedef unsigned int __kernel_gid32_t;
- typedef unsigned short __kernel_old_uid_t;
- typedef unsigned short __kernel_old_gid_t;
- typedef __kernel_dev_t __kernel_old_dev_t;
-+typedef long __kernel_long_t;
-+typedef unsigned long __kernel_ulong_t;
-
- typedef struct {
- #ifdef __USE_ALL
---- a/libc/sysdeps/linux/x86_64/bits/kernel_types.h
-+++ b/libc/sysdeps/linux/x86_64/bits/kernel_types.h
-@@ -40,6 +40,8 @@ typedef unsigned int __kernel_gid32_t;
- typedef unsigned short __kernel_old_uid_t;
- typedef unsigned short __kernel_old_gid_t;
- typedef __kernel_dev_t __kernel_old_dev_t;
-+typedef long __kernel_long_t;
-+typedef unsigned long __kernel_ulong_t;
- typedef long long __kernel_loff_t;
-
- typedef struct {
---- a/libc/sysdeps/linux/xtensa/bits/kernel_types.h
-+++ b/libc/sysdeps/linux/xtensa/bits/kernel_types.h
-@@ -33,6 +33,8 @@ typedef unsigned int __kernel_gid32_t;
- typedef unsigned short __kernel_old_uid_t;
- typedef unsigned short __kernel_old_gid_t;
- typedef unsigned short __kernel_old_dev_t;
-+typedef long __kernel_long_t;
-+typedef unsigned long __kernel_ulong_t;
- typedef long long __kernel_loff_t;
-
- /* Beginning in 2.6 kernels, which is the first version that includes the
+++ /dev/null
-From 7e509aae23665b9a79f6c9b4c24d1d8a55bd3582 Mon Sep 17 00:00:00 2001
-From: Gustavo Zacarias <gustavo@zacarias.com.ar>
-Date: Wed, 24 Jul 2013 15:30:35 +0000
-Subject: Rules.mak: Fix setting arch native bit
-
-fix breakage from 603af30d
-
-Removing the whitespace from findstring for 64 bit architectures has
-bad consequences since powerpc would be a match in powerpc64 and sparc
-would also be a match in sparc64.
-That doesn't make them 64 bits in reality causing general breakage.
-
-Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-Reviewed-by: Markos Chandras <markos.chandras@imgtec.com>
-Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
----
-
---- a/Rules.mak
-+++ b/Rules.mak
-@@ -121,7 +121,7 @@ UBACKTRACE_DSO := libubacktrace.so.$(ABI
-
- UCLIBC_LDSO_NAME := ld-uClibc
- ARCH_NATIVE_BIT := 32
--ifneq ($(findstring $(TARGET_ARCH),hppa64 ia64 powerpc64 s390x sparc64 x86_64),)
-+ifneq ($(findstring $(TARGET_ARCH) , hppa64 ia64 powerpc64 s390x sparc64 x86_64 ),)
- UCLIBC_LDSO_NAME := ld64-uClibc
- ARCH_NATIVE_BIT := 64
- else
+++ /dev/null
---- a/libpthread/nptl/allocatestack.c
-+++ b/libpthread/nptl/allocatestack.c
-@@ -100,7 +100,7 @@
- /* Cache handling for not-yet free stacks. */
-
- /* Maximum size in kB of cache. */
--static size_t stack_cache_maxsize = 40 * 1024 * 1024; /* 40MiBi by default. */
-+static size_t stack_cache_maxsize = 0; /* embedded systems don't have enough ram for dirty stack caches */
- static size_t stack_cache_actsize;
-
- /* Mutex protecting this variable. */
+++ /dev/null
---- a/extra/locale/gen_wctype.c
-+++ b/extra/locale/gen_wctype.c
-@@ -227,11 +227,12 @@ int main(int argc, char **argv)
- ++verbose;
- continue;
- }
-- if (!setlocale(LC_CTYPE, *argv)) {
-+ /* setlocale might be just a stub */
-+ /* if (!setlocale(LC_CTYPE, *argv)) {
- verbose_msg("setlocale(LC_CTYPE,%s) failed! Skipping this locale...\n", *argv);
- continue;
- }
--
-+ */
- if (!(totitle = wctrans("totitle"))) {
- verbose_msg("no totitle transformation.\n");
- }
-@@ -306,43 +307,43 @@ int main(int argc, char **argv)
- #endif
- #if 0
- if (c < 256) {
-- unsigned int glibc;
-+ unsigned int curr_stdclib;
-
-- glibc = 0;
-- if (isalnum(c)) ++glibc; glibc <<= 1;
-- if (isalpha(c)) ++glibc; glibc <<= 1;
-- if (isblank(c)) ++glibc; glibc <<= 1;
-- if (iscntrl(c)) ++glibc; glibc <<= 1;
-- if (isdigit(c)) ++glibc; glibc <<= 1;
-- if (isgraph(c)) ++glibc; glibc <<= 1;
-- if (islower(c)) ++glibc; glibc <<= 1;
-- if (isprint(c)) ++glibc; glibc <<= 1;
-- if (ispunct(c)) ++glibc; glibc <<= 1;
-- if (isspace(c)) ++glibc; glibc <<= 1;
-- if (isupper(c)) ++glibc; glibc <<= 1;
-- if (isxdigit(c)) ++glibc;
-- verbose_msg("%#8x : ctype %#4x\n", c, glibc);
-+ curr_stdclib = 0;
-+ if (isalnum(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (isalpha(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (isblank(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (iscntrl(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (isdigit(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (isgraph(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (islower(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (isprint(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (ispunct(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (isspace(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (isupper(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (isxdigit(c)) ++curr_stdclib;
-+ verbose_msg("%#8x : ctype %#4x\n", c, curr_stdclib);
- }
- #endif
- #if 1
- /* Paranoid checking... */
- {
-- unsigned int glibc;
-+ unsigned int curr_stdclib;
- unsigned int mine;
-
-- glibc = 0;
-- if (iswalnum(c)) ++glibc; glibc <<= 1;
-- if (iswalpha(c)) ++glibc; glibc <<= 1;
-- if (iswblank(c)) ++glibc; glibc <<= 1;
-- if (iswcntrl(c)) ++glibc; glibc <<= 1;
-- if (iswdigit(c)) ++glibc; glibc <<= 1;
-- if (iswgraph(c)) ++glibc; glibc <<= 1;
-- if (iswlower(c)) ++glibc; glibc <<= 1;
-- if (iswprint(c)) ++glibc; glibc <<= 1;
-- if (iswpunct(c)) ++glibc; glibc <<= 1;
-- if (iswspace(c)) ++glibc; glibc <<= 1;
-- if (iswupper(c)) ++glibc; glibc <<= 1;
-- if (iswxdigit(c)) ++glibc;
-+ curr_stdclib = 0;
-+ if (iswalnum(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (iswalpha(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (iswblank(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (iswcntrl(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (iswdigit(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (iswgraph(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (iswlower(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (iswprint(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (iswpunct(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (iswspace(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (iswupper(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (iswxdigit(c)) ++curr_stdclib;
-
- mine = 0;
- if (mywalnum(d,c)) ++mine; mine <<= 1;
-@@ -358,15 +359,15 @@ int main(int argc, char **argv)
- if (mywupper(d,c)) ++mine; mine <<= 1;
- if (mywxdigit(d,c)) ++mine;
-
-- if (glibc != mine) {
-- verbose_msg("%#8x : glibc %#4x != %#4x mine %u\n", c, glibc, mine, d);
-+ if (curr_stdclib != mine) {
-+ verbose_msg("%#8x : curr_stdclib %#4x != %#4x mine %u\n", c, curr_stdclib, mine, d);
- return EXIT_FAILURE;
- }
- #if 0
- if (iswctype(c,is_comb) || iswctype(c,is_comb3)) {
- /* if (!iswpunct(c)) { */
- verbose_msg("%#8x : %d %d %#4x\n",
-- c, iswctype(c,is_comb),iswctype(c,is_comb3), glibc);
-+ c, iswctype(c,is_comb),iswctype(c,is_comb3), curr_stdclib);
- /* } */
- }
- #endif
-@@ -553,7 +554,7 @@ int main(int argc, char **argv)
- for (c = 0; c <= 0x10ffffUL; c++)
- #endif
- {
-- unsigned int glibc;
-+ unsigned int curr_stdclib;
- unsigned int mine;
- unsigned int upper, lower;
-
-@@ -568,19 +569,19 @@ int main(int argc, char **argv)
- }
- #endif
- #endif
-- glibc = 0;
-- if (iswalnum(c)) ++glibc; glibc <<= 1;
-- if (iswalpha(c)) ++glibc; glibc <<= 1;
-- if (iswblank(c)) ++glibc; glibc <<= 1;
-- if (iswcntrl(c)) ++glibc; glibc <<= 1;
-- if (iswdigit(c)) ++glibc; glibc <<= 1;
-- if (iswgraph(c)) ++glibc; glibc <<= 1;
-- if (iswlower(c)) ++glibc; glibc <<= 1;
-- if (iswprint(c)) ++glibc; glibc <<= 1;
-- if (iswpunct(c)) ++glibc; glibc <<= 1;
-- if (iswspace(c)) ++glibc; glibc <<= 1;
-- if (iswupper(c)) ++glibc; glibc <<= 1;
-- if (iswxdigit(c)) ++glibc;
-+ curr_stdclib = 0;
-+ if (iswalnum(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (iswalpha(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (iswblank(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (iswcntrl(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (iswdigit(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (iswgraph(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (iswlower(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (iswprint(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (iswpunct(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (iswspace(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (iswupper(c)) ++curr_stdclib; curr_stdclib <<= 1;
-+ if (iswxdigit(c)) ++curr_stdclib;
-
- {
- unsigned int u;
-@@ -630,8 +631,8 @@ int main(int argc, char **argv)
- if (mywupper(d,c)) ++mine; mine <<= 1;
- if (mywxdigit(d,c)) ++mine;
-
-- if (glibc != mine) {
-- verbose_msg("%#8x : glibc %#4x != %#4x mine %d\n", c, glibc, mine, d);
-+ if (curr_stdclib != mine) {
-+ verbose_msg("%#8x : curr_stdclib %#4x != %#4x mine %d\n", c, curr_stdclib, mine, d);
- if (c < 0x30000UL) {
- verbose_msg("sc=%#x u=%#x n=%#x i0=%#x i1=%#x\n", sc, u, n, i0, i1);
- }
-@@ -655,17 +656,17 @@ int main(int argc, char **argv)
- }
-
- if (towupper(c) != upper) {
-- verbose_msg("%#8x : towupper glibc %#4x != %#4x mine\n",
-+ verbose_msg("%#8x : towupper curr_stdclib %#4x != %#4x mine\n",
- c, towupper(c), upper);
- }
-
- if (towlower(c) != lower) {
-- verbose_msg("%#8x : towlower glibc %#4x != %#4x mine i0 = %d\n",
-+ verbose_msg("%#8x : towlower curr_stdclib %#4x != %#4x mine i0 = %d\n",
- c, towlower(c), lower, i0);
- }
-
- if (totitle && ((tt = towctrans(c, totitle)) != upper)) {
-- verbose_msg("%#8x : totitle glibc %#4lx != %#4x mine i0 = %d\n",
-+ verbose_msg("%#8x : totitle curr_stdclib %#4lx != %#4x mine i0 = %d\n",
- c, tt, upper, i0);
- }
- }
+++ /dev/null
-Index: uClibc/libc/sysdeps/linux/common/bits/siginfo.h
-===================================================================
---- uClibc.orig/libc/sysdeps/linux/common/bits/siginfo.h
-+++ uClibc/libc/sysdeps/linux/common/bits/siginfo.h
-@@ -104,6 +104,14 @@ typedef struct siginfo
- long int si_band; /* Band event for SIGPOLL. */
- int si_fd;
- } _sigpoll;
-+
-+ /* SIGSYS. */
-+ struct
-+ {
-+ void *_call_addr; /* Calling user insn. */
-+ int _syscall; /* Triggering system call number. */
-+ unsigned int _arch; /* AUDIT_ARCH_* of syscall. */
-+ } _sigsys;
- } _sifields;
- } siginfo_t;
-
-@@ -122,6 +130,9 @@ typedef struct siginfo
- # define si_addr _sifields._sigfault.si_addr
- # define si_band _sifields._sigpoll.si_band
- # define si_fd _sifields._sigpoll.si_fd
-+# define si_call_addr _sifields._sigsys._call_addr
-+# define si_syscall _sifields._sigsys._syscall
-+# define si_arch _sifields._sigsys._arch
-
-
- /* Values for `si_code'. Positive values are reserved for kernel-generated
-Index: uClibc/libc/sysdeps/linux/alpha/bits/siginfo.h
-===================================================================
---- uClibc.orig/libc/sysdeps/linux/alpha/bits/siginfo.h
-+++ uClibc/libc/sysdeps/linux/alpha/bits/siginfo.h
-@@ -98,6 +98,14 @@ typedef struct siginfo
- int si_band; /* Band event for SIGPOLL. */
- int si_fd;
- } _sigpoll;
-+
-+ /* SIGSYS. */
-+ struct
-+ {
-+ void *_call_addr; /* Calling user insn. */
-+ int _syscall; /* Triggering system call number. */
-+ unsigned int _arch; /* AUDIT_ARCH_* of syscall. */
-+ } _sigsys;
- } _sifields;
- } siginfo_t;
-
-@@ -116,6 +124,9 @@ typedef struct siginfo
- # define si_addr _sifields._sigfault.si_addr
- # define si_band _sifields._sigpoll.si_band
- # define si_fd _sifields._sigpoll.si_fd
-+# define si_call_addr _sifields._sigsys._call_addr
-+# define si_syscall _sifields._sigsys._syscall
-+# define si_arch _sifields._sigsys._arch
-
-
- /* Values for `si_code'. Positive values are reserved for kernel-generated
-Index: uClibc/libc/sysdeps/linux/ia64/bits/siginfo.h
-===================================================================
---- uClibc.orig/libc/sysdeps/linux/ia64/bits/siginfo.h
-+++ uClibc/libc/sysdeps/linux/ia64/bits/siginfo.h
-@@ -103,6 +103,14 @@ typedef struct siginfo
- long int si_band; /* Band event for SIGPOLL. */
- int si_fd;
- } _sigpoll;
-+
-+ /* SIGSYS. */
-+ struct
-+ {
-+ void *_call_addr; /* Calling user insn. */
-+ int _syscall; /* Triggering system call number. */
-+ unsigned int _arch; /* AUDIT_ARCH_* of syscall. */
-+ } _sigsys;
- } _sifields;
- } siginfo_t;
-
-@@ -121,6 +129,9 @@ typedef struct siginfo
- # define si_addr _sifields._sigfault.si_addr
- # define si_band _sifields._sigpoll.si_band
- # define si_fd _sifields._sigpoll.si_fd
-+# define si_call_addr _sifields._sigsys._call_addr
-+# define si_syscall _sifields._sigsys._syscall
-+# define si_arch _sifields._sigsys._arch
-
- # ifdef __USE_GNU
- # define si_imm _sifields._sigfault._si_imm
-Index: uClibc/libc/sysdeps/linux/mips/bits/siginfo.h
-===================================================================
---- uClibc.orig/libc/sysdeps/linux/mips/bits/siginfo.h
-+++ uClibc/libc/sysdeps/linux/mips/bits/siginfo.h
-@@ -107,6 +107,14 @@ typedef struct siginfo
- __uid_t si_uid; /* Real user ID of sending process. */
- sigval_t si_sigval; /* Signal value. */
- } _rt;
-+
-+ /* SIGSYS. */
-+ struct
-+ {
-+ void *_call_addr; /* Calling user insn. */
-+ int _syscall; /* Triggering system call number. */
-+ unsigned int _arch; /* AUDIT_ARCH_* of syscall. */
-+ } _sigsys;
- } _sifields;
- } siginfo_t;
-
-@@ -123,6 +131,9 @@ typedef struct siginfo
- # define si_addr _sifields._sigfault.si_addr
- # define si_band _sifields._sigpoll.si_band
- # define si_fd _sifields._sigpoll.si_fd
-+# define si_call_addr _sifields._sigsys._call_addr
-+# define si_syscall _sifields._sigsys._syscall
-+# define si_arch _sifields._sigsys._arch
-
-
- /* Values for `si_code'. Positive values are reserved for kernel-generated
-Index: uClibc/libc/sysdeps/linux/sparc/bits/siginfo.h
-===================================================================
---- uClibc.orig/libc/sysdeps/linux/sparc/bits/siginfo.h
-+++ uClibc/libc/sysdeps/linux/sparc/bits/siginfo.h
-@@ -105,6 +105,14 @@ typedef struct siginfo
- int si_band; /* Band event for SIGPOLL. */
- int si_fd;
- } _sigpoll;
-+
-+ /* SIGSYS. */
-+ struct
-+ {
-+ void *_call_addr; /* Calling user insn. */
-+ int _syscall; /* Triggering system call number. */
-+ unsigned int _arch; /* AUDIT_ARCH_* of syscall. */
-+ } _sigsys;
- } _sifields;
- } siginfo_t;
-
-@@ -124,6 +132,9 @@ typedef struct siginfo
- # define si_trapno _sifields._sigfault.si_trapno
- # define si_band _sifields._sigpoll.si_band
- # define si_fd _sifields._sigpoll.si_fd
-+# define si_call_addr _sifields._sigsys._call_addr
-+# define si_syscall _sifields._sigsys._syscall
-+# define si_arch _sifields._sigsys._arch
-
-
- /* Values for `si_code'. Positive values are reserved for kernel-generated
+++ /dev/null
-From fd355bc1dbcb794ae1abf0fad1459e28d8567ba0 Mon Sep 17 00:00:00 2001
-From: Hiroaki KAWAI <kawai@stratosphere.co.jp>
-Date: Fri, 19 Apr 2013 01:09:35 +0000
-Subject: eventfd.h: Use new "bits/" scheme for arch-specific flags
-
-As in timerfd.h, eventfd.h needs arch-specific definition files.
-alpha, mips and sparc needs separate file, all the other arch
-will use common definition.
-
-This problem is already fixed in glibc.
-
-Also sanitize and provide bits for hppa.
-Make sure not to install the new bits/eventfd unless eventfd support is
-enabled.
-
-Signed-off-by: Hiroaki KAWAI <kawai@stratosphere.co.jp>
-Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
----
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -272,6 +272,7 @@ HEADERS_RM-$(UCLIBC_HAS_XATTR)
- HEADERS_RM-$(UCLIBC_HAS_XLOCALE) += xlocale.h
- HEADERS_RM-$(UCLIBC_LINUX_SPECIFIC) += sys/eventfd.h sys/fsuid.h \
- bits/inotify.h \
-+ bits/eventfd.h \
- sys/inotify.h \
- sys/kdaemon.h \
- sys/perm.h \
---- /dev/null
-+++ b/libc/sysdeps/linux/alpha/bits/eventfd.h
-@@ -0,0 +1,31 @@
-+/* Copyright (C) 2007-2013 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ The GNU C Library is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, see
-+ <http://www.gnu.org/licenses/>. */
-+
-+#ifndef _SYS_EVENTFD_H
-+# error "Never use <bits/eventfd.h> directly; include <sys/eventfd.h> instead."
-+#endif
-+
-+/* Flags for eventfd. */
-+enum
-+ {
-+ EFD_SEMAPHORE = 000000001,
-+#define EFD_SEMAPHORE EFD_SEMAPHORE
-+ EFD_CLOEXEC = 010000000,
-+#define EFD_CLOEXEC EFD_CLOEXEC
-+ EFD_NONBLOCK = 000000004
-+#define EFD_NONBLOCK EFD_NONBLOCK
-+ };
---- /dev/null
-+++ b/libc/sysdeps/linux/common/bits/eventfd.h
-@@ -0,0 +1,31 @@
-+/* Copyright (C) 2007-2013 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ The GNU C Library is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, see
-+ <http://www.gnu.org/licenses/>. */
-+
-+#ifndef _SYS_EVENTFD_H
-+# error "Never use <bits/eventfd.h> directly; include <sys/eventfd.h> instead."
-+#endif
-+
-+/* Flags for eventfd. */
-+enum
-+ {
-+ EFD_SEMAPHORE = 00000001,
-+#define EFD_SEMAPHORE EFD_SEMAPHORE
-+ EFD_CLOEXEC = 02000000,
-+#define EFD_CLOEXEC EFD_CLOEXEC
-+ EFD_NONBLOCK = 00004000
-+#define EFD_NONBLOCK EFD_NONBLOCK
-+ };
---- a/libc/sysdeps/linux/common/sys/eventfd.h
-+++ b/libc/sysdeps/linux/common/sys/eventfd.h
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
-+/* Copyright (C) 2007-2013 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
-@@ -21,21 +21,12 @@
-
- #include <stdint.h>
-
-+/* Get the platform-dependent flags. */
-+#include <bits/eventfd.h>
-
- /* Type for event counter. */
- typedef uint64_t eventfd_t;
-
--/* Flags for signalfd. */
--enum
-- {
-- EFD_SEMAPHORE = 1,
--#define EFD_SEMAPHORE EFD_SEMAPHORE
-- EFD_CLOEXEC = 02000000,
--#define EFD_CLOEXEC EFD_CLOEXEC
-- EFD_NONBLOCK = 04000
--#define EFD_NONBLOCK EFD_NONBLOCK
-- };
--
-
- __BEGIN_DECLS
-
-@@ -43,6 +34,16 @@ __BEGIN_DECLS
- value to COUNT. */
- extern int eventfd (int __count, int __flags) __THROW;
-
-+#if 0 /* not (yet) implemented in uClibc */
-+
-+/* Read event counter and possibly wait for events. */
-+extern int eventfd_read (int __fd, eventfd_t *__value);
-+
-+/* Increment event counter. */
-+extern int eventfd_write (int __fd, eventfd_t __value);
-+
-+#endif
-+
- __END_DECLS
-
- #endif /* sys/eventfd.h */
---- /dev/null
-+++ b/libc/sysdeps/linux/hppa/bits/eventfd.h
-@@ -0,0 +1,32 @@
-+/* Copyright (C) 2007-2013 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ The GNU C Library is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library. If not, see
-+ <http://www.gnu.org/licenses/>. */
-+
-+#ifndef _SYS_EVENTFD_H
-+# error "Never use <bits/eventfd.h> directly; include <sys/eventfd.h> instead."
-+#endif
-+
-+/* Flags for signalfd. */
-+enum
-+ {
-+ EFD_SEMAPHORE = 000000001,
-+#define EFD_SEMAPHORE EFD_SEMAPHORE
-+ EFD_CLOEXEC = 010000000,
-+#define EFD_CLOEXEC EFD_CLOEXEC
-+/* the below value looks suspicious, should be 000200004 for consistency */
-+ EFD_NONBLOCK = 00200004 /* HPUX has separate NDELAY & NONBLOCK */
-+#define EFD_NONBLOCK EFD_NONBLOCK
-+ };
---- /dev/null
-+++ b/libc/sysdeps/linux/mips/bits/eventfd.h
-@@ -0,0 +1,31 @@
-+/* Copyright (C) 2007-2013 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ The GNU C Library is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, see
-+ <http://www.gnu.org/licenses/>. */
-+
-+#ifndef _SYS_EVENTFD_H
-+# error "Never use <bits/eventfd.h> directly; include <sys/eventfd.h> instead."
-+#endif
-+
-+/* Flags for eventfd. */
-+enum
-+ {
-+ EFD_SEMAPHORE = 00000001,
-+#define EFD_SEMAPHORE EFD_SEMAPHORE
-+ EFD_CLOEXEC = 02000000,
-+#define EFD_CLOEXEC EFD_CLOEXEC
-+ EFD_NONBLOCK = 00000200
-+#define EFD_NONBLOCK EFD_NONBLOCK
-+ };
---- /dev/null
-+++ b/libc/sysdeps/linux/sparc/bits/eventfd.h
-@@ -0,0 +1,31 @@
-+/* Copyright (C) 2007-2013 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ The GNU C Library is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, see
-+ <http://www.gnu.org/licenses/>. */
-+
-+#ifndef _SYS_EVENTFD_H
-+# error "Never use <bits/eventfd.h> directly; include <sys/eventfd.h> instead."
-+#endif
-+
-+/* Flags for eventfd. */
-+enum
-+ {
-+ EFD_SEMAPHORE = 1,
-+#define EFD_SEMAPHORE EFD_SEMAPHORE
-+ EFD_CLOEXEC = 0x400000,
-+#define EFD_CLOEXEC EFD_CLOEXEC
-+ EFD_NONBLOCK = 0x004000
-+#define EFD_NONBLOCK EFD_NONBLOCK
-+ };