mirror of https://github.com/hak5/openwrt-owl.git
add support for uClibc version 0.9.32 based on git rev a7642511b08b0b8a4012bab67cb8aa554992df6b, this includes support for nptl which got merged into the uClibc master branch recently
SVN-Revision: 21856owl
parent
738b30afeb
commit
9d0f9d3758
|
@ -19,9 +19,8 @@ choice
|
|||
config UCLIBC_VERSION_0_9_31
|
||||
bool "uClibc 0.9.31"
|
||||
|
||||
config UCLIBC_VERSION_NPTL
|
||||
bool "uClibc NPTL branch"
|
||||
depends BROKEN
|
||||
config UCLIBC_VERSION_0_9_32
|
||||
bool "uClibc 0.9.32 (with nptl support)"
|
||||
|
||||
endchoice
|
||||
|
||||
|
|
|
@ -5,5 +5,5 @@ config UCLIBC_VERSION
|
|||
default "0.9.30.2" if UCLIBC_VERSION_0_9_30_2
|
||||
default "0.9.30.3" if UCLIBC_VERSION_0_9_30_3
|
||||
default "0.9.31" if UCLIBC_VERSION_0_9_31
|
||||
default "0.9.30+nptl" if UCLIBC_VERSION_NPTL
|
||||
default "0.9.32" if UCLIBC_VERSION_0_9_32
|
||||
default "0.9.30.1"
|
||||
|
|
|
@ -9,13 +9,13 @@ include $(INCLUDE_DIR)/target.mk
|
|||
|
||||
PKG_NAME:=uClibc
|
||||
PKG_VERSION:=$(call qstrip,$(CONFIG_UCLIBC_VERSION))
|
||||
ifeq ($(CONFIG_UCLIBC_VERSION_NPTL),y)
|
||||
ifeq ($(CONFIG_UCLIBC_VERSION_0_9_32),y)
|
||||
PKG_SOURCE_URL:=git://git.busybox.net/uClibc
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_VERSION:=ef18cfe8ebab25f5ef92e81956f50e2dc57df602
|
||||
PKG_SOURCE_VERSION:=a7642511b08b0b8a4012bab67cb8aa554992df6b
|
||||
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
||||
LIBC_SO_VERSION:=0.9.30-git
|
||||
LIBC_SO_VERSION:=$(PKG_VERSION)-git
|
||||
else
|
||||
PKG_SOURCE_URL:=http://www.uclibc.org/downloads
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||
|
|
|
@ -21,7 +21,7 @@ DO_C99_MATH=y
|
|||
# EXTRA_WARNINGS is not set
|
||||
FORCE_OPTIONS_FOR_ARCH=y
|
||||
# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
|
||||
HARDWIRED_ABSPATH=y
|
||||
# HARDWIRED_ABSPATH is not set
|
||||
# HAS_NO_THREADS is not set
|
||||
HAVE_DOT_CONFIG=y
|
||||
# HAVE_NO_PIC is not set
|
||||
|
@ -33,17 +33,19 @@ LDSO_CACHE_SUPPORT=y
|
|||
# LDSO_GNU_HASH_SUPPORT is not set
|
||||
LDSO_LDD_SUPPORT=y
|
||||
# LDSO_PRELOAD_FILE_SUPPORT is not set
|
||||
# LDSO_PRELOAD_ENV_SUPPORT is not set
|
||||
LDSO_RUNPATH=y
|
||||
LDSO_SEARCH_INTERP_PATH=y
|
||||
# LDSO_SEARCH_INTERP_PATH is not set
|
||||
# LINUXTHREADS_NEW is not set
|
||||
# LINUXTHREADS_OLD 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 is not set
|
||||
RUNTIME_PREFIX="/"
|
||||
SHARED_LIB_LOADER_PREFIX="/lib"
|
||||
# SUPPORT_LD_DEBUG is not set
|
||||
# SUPPORT_LD_DEBUG_EARLY is not set
|
||||
TARGET_SUBARCH=""
|
||||
|
@ -68,6 +70,7 @@ TARGET_SUBARCH=""
|
|||
# TARGET_sh is not set
|
||||
# TARGET_sh64 is not set
|
||||
# TARGET_sparc is not set
|
||||
# TARGET_ubicom32 is not set
|
||||
# TARGET_v850 is not set
|
||||
# TARGET_vax is not set
|
||||
# TARGET_x86_64 is not set
|
||||
|
@ -85,7 +88,7 @@ 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=y
|
||||
# UCLIBC_HAS_COMPAT_RES_STATE is not set
|
||||
UCLIBC_HAS_CRYPT=y
|
||||
UCLIBC_HAS_CRYPT_IMPL=y
|
||||
UCLIBC_HAS_CTYPE_CHECKED=y
|
||||
|
@ -122,7 +125,7 @@ UCLIBC_HAS_LIBRESOLV_STUB=y
|
|||
UCLIBC_HAS_LIBUTIL=y
|
||||
# UCLIBC_HAS_LOCALE is not set
|
||||
UCLIBC_HAS_NETWORK_SUPPORT=y
|
||||
# UCLIBC_HAS_NFTW is not set
|
||||
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
|
||||
|
@ -151,7 +154,6 @@ UCLIBC_HAS_STDIO_BUFSIZ_4096=y
|
|||
# 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_FUTEXES=y
|
||||
UCLIBC_HAS_STDIO_GETC_MACRO=y
|
||||
UCLIBC_HAS_STDIO_PUTC_MACRO=y
|
||||
# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set
|
||||
|
@ -162,8 +164,6 @@ UCLIBC_HAS_SYSLOG=y
|
|||
# UCLIBC_HAS_SYS_ERRLIST is not set
|
||||
# UCLIBC_HAS_SYS_SIGLIST is not set
|
||||
UCLIBC_HAS_THREADS=y
|
||||
UCLIBC_HAS_THREADS_NATIVE=y
|
||||
UCLIBC_HAS_TLS=y
|
||||
UCLIBC_HAS_TM_EXTENSIONS=y
|
||||
UCLIBC_HAS_TZ_CACHING=y
|
||||
UCLIBC_HAS_TZ_FILE=y
|
||||
|
@ -180,12 +180,13 @@ UCLIBC_LINUX_SPECIFIC=y
|
|||
UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
|
||||
UCLIBC_PWD_BUFFER_SIZE=256
|
||||
# UCLIBC_STATIC_LDCONFIG is not set
|
||||
# UCLIBC_SUPPORT_AI_ADDRCONFIG 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
|
|
@ -16,8 +16,6 @@ CONFIG_486=y
|
|||
# CONFIG_PENTIUMIII is not set
|
||||
# CONFIG_WINCHIP2 is not set
|
||||
# CONFIG_WINCHIPC6 is not set
|
||||
LINUXTHREADS_NEW=y
|
||||
# LINUXTHREADS_OLD is not set
|
||||
TARGET_ARCH="i386"
|
||||
TARGET_i386=y
|
||||
UCLIBC_HAS_FPU=y
|
|
@ -16,8 +16,6 @@ CONFIG_686=y
|
|||
# CONFIG_PENTIUMIII is not set
|
||||
# CONFIG_WINCHIP2 is not set
|
||||
# CONFIG_WINCHIPC6 is not set
|
||||
LINUXTHREADS_NEW=y
|
||||
# LINUXTHREADS_OLD is not set
|
||||
TARGET_ARCH="i386"
|
||||
TARGET_i386=y
|
||||
UCLIBC_HAS_FPU=y
|
|
@ -0,0 +1,17 @@
|
|||
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
|
|
@ -0,0 +1,34 @@
|
|||
ARCH_BIG_ENDIAN=y
|
||||
ARCH_HAS_NO_MMU=y
|
||||
COMPAT_ATEXIT=y
|
||||
# CONFIG_UC_UBICOM32_V3 is not set
|
||||
CONFIG_UC_UBICOM32_V4=y
|
||||
# DOSTRIP is not set
|
||||
EXCLUDE_BRK=y
|
||||
FORCE_SHAREABLE_TEXT_SEGMENTS=y
|
||||
LDSO_PRELOAD_FILE_SUPPORT=y
|
||||
MALLOC=y
|
||||
# MALLOC_STANDARD is not set
|
||||
PTHREADS_DEBUG_SUPPORT=y
|
||||
SUPPORT_LD_DEBUG=y
|
||||
TARGET_ARCH="ubicom32"
|
||||
TARGET_ubicom32=y
|
||||
# UCLIBC_FORMAT_ELF is not set
|
||||
UCLIBC_FORMAT_FDPIC_ELF=y
|
||||
# UCLIBC_FORMAT_FLAT is not set
|
||||
# UCLIBC_FORMAT_FLAT_SEP_DATA is not set
|
||||
# UCLIBC_FORMAT_SHARED_FLAT is not set
|
||||
UCLIBC_HAS_FOPEN_LARGEFILE_MODE=y
|
||||
UCLIBC_HAS_FPU=y
|
||||
# UCLIBC_HAS_GETPT is not set
|
||||
UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y
|
||||
UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL=y
|
||||
UCLIBC_HAS_PROFILING=y
|
||||
UCLIBC_HAS_REENTRANT_RPC=y
|
||||
UCLIBC_HAS_STUBS=y
|
||||
UCLIBC_HAS_XATTR=y
|
||||
UCLIBC_NTP_LEGACY=y
|
||||
UCLIBC_STATIC_LDCONFIG=y
|
||||
UCLIBC_SV4_DEPRECATED=y
|
||||
UCLIBC_UCLINUX_BROKEN_MUNMAP=y
|
||||
UNIX98PTY_ONLY=y
|
|
@ -1,36 +0,0 @@
|
|||
--- a/librt/mq_receive.c
|
||||
+++ b/librt/mq_receive.c
|
||||
@@ -6,7 +6,8 @@
|
||||
#include <stddef.h>
|
||||
#include <sys/syscall.h>
|
||||
#include <mqueue.h>
|
||||
-#warning FIXME: hard dependency on ADVANCED REALTIME feature
|
||||
+
|
||||
+#ifdef __UCLIBC_HAS_ADVANCED_REALTIME__
|
||||
|
||||
librt_hidden_proto(mq_timedreceive)
|
||||
|
||||
@@ -44,3 +45,5 @@ ssize_t mq_receive(mqd_t mqdes, char *ms
|
||||
{
|
||||
return mq_timedreceive(mqdes, msg_ptr, msg_len, msg_prio, NULL);
|
||||
}
|
||||
+
|
||||
+#endif /* __UCLIBC_HAS_ADVANCED_REALTIME__ */
|
||||
--- a/librt/mq_send.c
|
||||
+++ b/librt/mq_send.c
|
||||
@@ -6,7 +6,8 @@
|
||||
#include <stddef.h>
|
||||
#include <sys/syscall.h>
|
||||
#include <mqueue.h>
|
||||
-#warning FIXME: hard dependency on ADVANCED REALTIME feature
|
||||
+
|
||||
+#ifdef __UCLIBC_HAS_ADVANCED_REALTIME__
|
||||
|
||||
librt_hidden_proto(mq_timedsend)
|
||||
|
||||
@@ -43,3 +44,5 @@ int mq_send(mqd_t mqdes, const char *msg
|
||||
{
|
||||
return mq_timedsend(mqdes, msg_ptr, msg_len, msg_prio, NULL);
|
||||
}
|
||||
+
|
||||
+#endif /* __UCLIBC_HAS_ADVANCED_REALTIME__ */
|
|
@ -1,33 +0,0 @@
|
|||
--- a/libpthread/nptl/Makefile.in
|
||||
+++ b/libpthread/nptl/Makefile.in
|
||||
@@ -174,7 +174,7 @@
|
||||
CFLAGS-pthread_barrierattr_setpshared.c = -D_GNU_SOURCE
|
||||
CFLAGS-sem_open.c = -D_GNU_SOURCE
|
||||
|
||||
-CFLAGS-nptl = -DNOT_IN_libc=1 -DIS_IN_libpthread=1 $(SSP_ALL_CFLAGS)
|
||||
+CFLAGS-nptl = -DNOT_IN_libc=1 -DIS_IN_libpthread=1 -std=gnu99 $(SSP_ALL_CFLAGS)
|
||||
|
||||
CFLAGS-OMIT-alloca_cutoff.c = -DNOT_IN_libc=1 -DIS_IN_libpthread=1
|
||||
CFLAGS-OMIT-forward.c = -DNOT_IN_libc=1 -DIS_IN_libpthread=1
|
||||
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in
|
||||
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in
|
||||
@@ -82,7 +82,7 @@
|
||||
CFLAGS-timer_routines.c = -I$(top_srcdir)librt -DIS_IN_librt=1
|
||||
CFLAGS-timer_settime.c = -I$(top_srcdir)librt -DIS_IN_librt=1
|
||||
|
||||
-CFLAGS-linux = -DNOT_IN_libc=1 -DIS_IN_libpthread=1 $(SSP_ALL_CFLAGS)
|
||||
+CFLAGS-linux = -DNOT_IN_libc=1 -DIS_IN_libpthread=1 -std=gnu99 $(SSP_ALL_CFLAGS)
|
||||
#CFLAGS:=$(CFLAGS:-O1=-O2)
|
||||
|
||||
CFLAGS-OMIT-libc_pthread_init.c = -DNOT_IN_libc=1 -DIS_IN_libpthread=1
|
||||
--- a/ldso/ldso/Makefile.in
|
||||
+++ b/ldso/ldso/Makefile.in
|
||||
@@ -13,7 +13,7 @@
|
||||
CFLAGS-ldso += -fno-omit-frame-pointer
|
||||
|
||||
CFLAGS-ldso += -I$(top_srcdir)ldso/ldso/$(TARGET_ARCH) -I$(top_srcdir)ldso/include -I$(top_srcdir)ldso/ldso
|
||||
-CFLAGS-ldso += -DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" -DUCLIBC_LDSO=\"$(UCLIBC_LDSO)\"
|
||||
+CFLAGS-ldso += -DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" -DUCLIBC_LDSO=\"$(UCLIBC_LDSO)\" -std=gnu99
|
||||
|
||||
ifeq ($(DODEBUG),y)
|
||||
# Not really much point in including debugging info, since gdb
|
|
@ -0,0 +1,78 @@
|
|||
diff -ruN uClibc-0.9.32/libpthread/nptl/allocatestack.c uClibc-0.9.32/libpthread/nptl.new/allocatestack.c
|
||||
--- uClibc-0.9.32/libpthread/nptl/allocatestack.c 2010-06-19 20:50:30.000000000 +0200
|
||||
+++ uClibc-0.9.32/libpthread/nptl.new/allocatestack.c 2010-06-19 16:06:32.000000000 +0200
|
||||
@@ -844,7 +844,8 @@
|
||||
|
||||
curp->specific_used = false;
|
||||
|
||||
- for (size_t cnt = 1; cnt < PTHREAD_KEY_1STLEVEL_SIZE; ++cnt)
|
||||
+ size_t cnt;
|
||||
+ for (cnt = 1; cnt < PTHREAD_KEY_1STLEVEL_SIZE; ++cnt)
|
||||
if (curp->specific[cnt] != NULL)
|
||||
{
|
||||
memset (curp->specific[cnt], '\0',
|
||||
diff -ruN uClibc-0.9.32/libpthread/nptl/pthread_key_create.c uClibc-0.9.32/libpthread/nptl.new/pthread_key_create.c
|
||||
--- uClibc-0.9.32/libpthread/nptl/pthread_key_create.c 2010-06-19 20:50:30.000000000 +0200
|
||||
+++ uClibc-0.9.32/libpthread/nptl.new/pthread_key_create.c 2010-06-19 16:06:59.000000000 +0200
|
||||
@@ -29,7 +29,8 @@
|
||||
void (*destr) (void *))
|
||||
{
|
||||
/* Find a slot in __pthread_kyes which is unused. */
|
||||
- for (size_t cnt = 0; cnt < PTHREAD_KEYS_MAX; ++cnt)
|
||||
+ size_t cnt;
|
||||
+ for (cnt = 0; cnt < PTHREAD_KEYS_MAX; ++cnt)
|
||||
{
|
||||
uintptr_t seq = __pthread_keys[cnt].seq;
|
||||
|
||||
diff -ruN uClibc-0.9.32/libpthread/nptl/sysdeps/generic/dl-tls.c uClibc-0.9.32/libpthread/nptl.new/sysdeps/generic/dl-tls.c
|
||||
--- uClibc-0.9.32/libpthread/nptl/sysdeps/generic/dl-tls.c 2010-06-19 20:50:30.000000000 +0200
|
||||
+++ uClibc-0.9.32/libpthread/nptl.new/sysdeps/generic/dl-tls.c 2010-06-19 16:06:04.000000000 +0200
|
||||
@@ -258,7 +258,8 @@
|
||||
/* We simply start with zero. */
|
||||
size_t offset = 0;
|
||||
|
||||
- for (size_t cnt = 0; slotinfo[cnt].map != NULL; ++cnt)
|
||||
+ size_t cnt;
|
||||
+ for (cnt = 0; slotinfo[cnt].map != NULL; ++cnt)
|
||||
{
|
||||
assert (cnt < GL(dl_tls_dtv_slotinfo_list)->len);
|
||||
|
||||
diff -ruN uClibc-0.9.32/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_attr_getaffinity.c uClibc-0.9.32/libpthread/nptl.new/sysdeps/unix/sysv/linux/pthread_attr_getaffinity.c
|
||||
--- uClibc-0.9.32/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_attr_getaffinity.c 2010-06-19 20:50:30.000000000 +0200
|
||||
+++ uClibc-0.9.32/libpthread/nptl.new/sysdeps/unix/sysv/linux/pthread_attr_getaffinity.c 2010-06-19 16:05:38.000000000 +0200
|
||||
@@ -38,7 +38,8 @@
|
||||
{
|
||||
/* Check whether there are any bits set beyond the limits
|
||||
the user requested. */
|
||||
- for (size_t cnt = cpusetsize; cnt < iattr->cpusetsize; ++cnt)
|
||||
+ size_t cnt;
|
||||
+ for (cnt = cpusetsize; cnt < iattr->cpusetsize; ++cnt)
|
||||
if (((char *) iattr->cpuset)[cnt] != 0)
|
||||
return EINVAL;
|
||||
|
||||
diff -ruN uClibc-0.9.32/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c uClibc-0.9.32/libpthread/nptl.new/sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c
|
||||
--- uClibc-0.9.32/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c 2010-06-19 20:50:30.000000000 +0200
|
||||
+++ uClibc-0.9.32/libpthread/nptl.new/sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c 2010-06-19 16:04:46.000000000 +0200
|
||||
@@ -57,7 +57,8 @@
|
||||
|
||||
/* Check whether the new bitmask has any bit set beyond the
|
||||
last one the kernel accepts. */
|
||||
- for (size_t cnt = __kernel_cpumask_size; cnt < cpusetsize; ++cnt)
|
||||
+ size_t cnt;
|
||||
+ for (cnt = __kernel_cpumask_size; cnt < cpusetsize; ++cnt)
|
||||
if (((char *) cpuset)[cnt] != '\0')
|
||||
/* Found a nonzero byte. This means the user request cannot be
|
||||
fulfilled. */
|
||||
diff -ruN uClibc-0.9.32/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_setaffinity.c uClibc-0.9.32/libpthread/nptl.new/sysdeps/unix/sysv/linux/pthread_setaffinity.c
|
||||
--- uClibc-0.9.32/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_setaffinity.c 2010-06-19 20:50:30.000000000 +0200
|
||||
+++ uClibc-0.9.32/libpthread/nptl.new/sysdeps/unix/sysv/linux/pthread_setaffinity.c 2010-06-19 16:05:15.000000000 +0200
|
||||
@@ -71,7 +71,8 @@
|
||||
|
||||
/* We now know the size of the kernel cpumask_t. Make sure the user
|
||||
does not request to set a bit beyond that. */
|
||||
- for (size_t cnt = __kernel_cpumask_size; cnt < cpusetsize; ++cnt)
|
||||
+ size_t cnt;
|
||||
+ for (cnt = __kernel_cpumask_size; cnt < cpusetsize; ++cnt)
|
||||
if (((char *) cpuset)[cnt] != '\0')
|
||||
/* Found a nonzero byte. This means the user request cannot be
|
||||
fulfilled. */
|
|
@ -1,6 +1,6 @@
|
|||
--- ./include/string.h.orig 2008-06-08 22:38:53.000000000 +0200
|
||||
+++ ./include/string.h 2009-01-02 16:09:03.000000000 +0100
|
||||
@@ -355,18 +355,40 @@
|
||||
--- a/include/string.h
|
||||
+++ b/include/string.h
|
||||
@@ -357,18 +357,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));
|
|
@ -0,0 +1,14 @@
|
|||
--- 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)
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
--- a/libc/sysdeps/linux/common/bits/mathcalls.h
|
||||
+++ b/libc/sysdeps/linux/common/bits/mathcalls.h
|
||||
@@ -237,8 +237,7 @@ __END_NAMESPACE_C99
|
||||
|
||||
|
||||
/* Return nonzero if VALUE is not a number. */
|
||||
-/* DELETE? __MATHDECL_PRIV adds another "__": so this is "____isnan"???! */
|
||||
-/*__MATHDECL_PRIV (int,__isnan,, (_Mdouble_ __value), (__const__))*/
|
||||
+__MATHDECL_PRIV (int,isnan,, (_Mdouble_ __value), (__const__));
|
||||
|
||||
#if defined __USE_MISC || defined __USE_XOPEN
|
||||
/* Return nonzero if VALUE is not a number. */
|
|
@ -1,6 +1,6 @@
|
|||
--- a/include/math.h
|
||||
+++ b/include/math.h
|
||||
@@ -179,7 +179,7 @@
|
||||
@@ -198,7 +198,7 @@ libm_hidden_proto(signgam)
|
||||
|
||||
|
||||
/* ISO C99 defines some generic macros which work on any data type. */
|
||||
|
@ -9,7 +9,7 @@
|
|||
|
||||
/* Get the architecture specific values describing the floating-point
|
||||
evaluation. The following symbols will get defined:
|
||||
@@ -299,6 +299,11 @@
|
||||
@@ -318,6 +318,11 @@ enum
|
||||
|
||||
#endif /* Use ISO C99. */
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
--- a/libc/stdio/_stdio.c
|
||||
+++ b/libc/stdio/_stdio.c
|
||||
@@ -119,7 +119,7 @@ static FILE _stdio_streams[] = {
|
||||
__FLAG_NBF|__FLAG_WRITEONLY, \
|
||||
2, \
|
||||
NULL, \
|
||||
- NULL, \
|
||||
+ 0, \
|
||||
0 )
|
||||
};
|
||||
|
|
@ -0,0 +1,103 @@
|
|||
--- 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);
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue