diff options
23 files changed, 166 insertions, 60 deletions
diff --git a/Makefile.in b/Makefile.in index 3399f8842..d7a5fca60 100644 --- a/Makefile.in +++ b/Makefile.in @@ -23,7 +23,7 @@ export KCONFIG_CONFIG ifeq ($(HAVE_DOT_CONFIG),y) -all: pregen libs +all: headers pregen libs libs: pregen # In this section, we need .config @@ -260,6 +260,7 @@ HEADERS_RM-$(UCLIBC_HAS_WCHAR) += wchar.h wctype.h HEADERS_RM-$(UCLIBC_HAS_WORDEXP) += wordexp.h HEADERS_RM-$(UCLIBC_HAS_XATTR) += sys/xattr.h HEADERS_RM-$(UCLIBC_HAS_XLOCALE) += xlocale.h +HEADERS_RM-$(UCLIBC_HAS_LOCALE) += bits/uClibc_ctype.h HEADERS_RM-$(UCLIBC_LINUX_SPECIFIC) += sys/fsuid.h sys/inotify.h sys/perm.h \ sys/personality.h \ sys/prctl.h \ @@ -291,7 +292,14 @@ endif install_headers: headers $(top_builddir)extra/scripts/unifdef | $(PREFIX)$(DEVEL_PREFIX)include @$(call disp_install,"include -> $(PREFIX)$(DEVEL_PREFIX)include") $(Q)top_builddir=$(top_builddir) \ - $(top_srcdir)extra/scripts/install_headers.sh include $(PREFIX)$(DEVEL_PREFIX)include + $(top_srcdir)extra/scripts/install_headers.sh \ + include $(PREFIX)$(DEVEL_PREFIX)include +ifneq ($(O),) # only run this step in O is set i.e. make O=/my/builddir/ .. + @$(call disp_install,"$(top_builddir)/include -> $(PREFIX)$(DEVEL_PREFIX)include") + $(Q)top_builddir=$(top_builddir) \ + $(top_srcdir)extra/scripts/install_headers.sh \ + $(top_builddir)/include $(PREFIX)$(DEVEL_PREFIX)include +endif $(Q)cd $(PREFIX)$(DEVEL_PREFIX)include && $(RM) -r $(HEADERS_RM-) ifeq ($(UCLIBC_HAS_WCHAR),) $(Q)cd $(PREFIX)$(DEVEL_PREFIX)include && mv -f wchar-stub.h wchar.h @@ -106,7 +106,7 @@ export RUNTIME_PREFIX DEVEL_PREFIX KERNEL_HEADERS MULTILIB_DIR MAJOR_VERSION := 0 MINOR_VERSION := 9 SUBLEVEL := 32 -EXTRAVERSION :=-git +EXTRAVERSION :=-rc1-git VERSION := $(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL) ABI_VERSION := $(MAJOR_VERSION) ifneq ($(EXTRAVERSION),) diff --git a/extra/locale/Makefile b/extra/locale/Makefile index 11f362a5e..ff229e20c 100644 --- a/extra/locale/Makefile +++ b/extra/locale/Makefile @@ -4,10 +4,10 @@ # # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. # - top_srcdir=../../ -top_builddir=../../ +top_builddir=$(if $(O),$(O),../../)/ + all: objs -include $(top_builddir)Rules.mak +include $(top_srcdir)Rules.mak include Makefile.in include $(top_srcdir)Makerules diff --git a/libc/inet/netlinkaccess.h b/libc/inet/netlinkaccess.h index 5111d3802..96ece392c 100644 --- a/libc/inet/netlinkaccess.h +++ b/libc/inet/netlinkaccess.h @@ -22,15 +22,8 @@ #include <features.h> #include <stdint.h> #include <unistd.h> -#include <sys/types.h> - #if defined __ASSUME_NETLINK_SUPPORT || defined __UCLIBC_USE_NETLINK__ -#define _LINUX_TYPES_H -typedef uint8_t __u8; -typedef uint16_t __u16; -typedef uint32_t __u32; -typedef uint64_t __u64; -typedef int32_t __s32; +#include <asm/types.h> #include <linux/rtnetlink.h> #include <linux/netlink.h> diff --git a/libc/sysdeps/linux/sh/fpu_control.h b/libc/sysdeps/linux/sh/fpu_control.h index cbd889ece..da01725cb 100644 --- a/libc/sysdeps/linux/sh/fpu_control.h +++ b/libc/sysdeps/linux/sh/fpu_control.h @@ -20,7 +20,9 @@ #ifndef _FPU_CONTROL_H #define _FPU_CONTROL_H -#warning This file is only correct for sh4 +#ifndef __SH4__ +#error This file is only correct for sh4 +#endif /* masking of interrupts */ #define _FPU_MASK_VM 0x0800 /* Invalid operation */ diff --git a/libc/sysdeps/linux/sh/sysdep.h b/libc/sysdeps/linux/sh/sysdep.h index 2ef0a3305..8b3c68220 100644 --- a/libc/sysdeps/linux/sh/sysdep.h +++ b/libc/sysdeps/linux/sh/sysdep.h @@ -26,6 +26,7 @@ /* Syntactic details of assembler. */ +#define LOCAL(X) .L_##X #define ALIGNARG(log2) log2 /* For ELF we need the `.type' directive to make shared libs work right. */ #define ASM_TYPE_DIRECTIVE(name,typearg) .type name,@##typearg; diff --git a/libc/sysdeps/linux/sparc/Makefile.arch b/libc/sysdeps/linux/sparc/Makefile.arch index 91c6e85e4..d0cae9ff8 100644 --- a/libc/sysdeps/linux/sparc/Makefile.arch +++ b/libc/sysdeps/linux/sparc/Makefile.arch @@ -16,9 +16,15 @@ CSRC += sigaction.c SSRC += fork.S vfork.S endif +# check weather __LONG_DOUBLE_128__ is defined (long double support) +UCLIBC_SPARC_HAS_LONG_DOUBLE=$(shell if [ "x`$(CC) -E -dM -xc /dev/null 2>&1 | grep __LONG_DOUBLE_128__`" != "x" ]; then echo "y"; fi) +ifeq ($(UCLIBC_SPARC_HAS_LONG_DOUBLE),y) CSRC += $(foreach f, \ q_div.c q_fle.c q_mul.c q_qtoll.c q_stoq.c \ mp_clz_tab.c q_dtoq.c q_flt.c q_neg.c q_qtos.c q_sub.c \ q_add.c q_feq.c q_fne.c q_qtod.c q_qtou.c q_ulltoq.c \ q_cmp.c q_fge.c q_itoq.c q_qtoull.c q_util.c \ q_cmpe.c q_fgt.c q_lltoq.c q_qtoi.c q_sqrt.c q_utoq.c, soft-fp/$(f)) +else +CSRC += qp_ops.c +endif diff --git a/libm/Makefile.in b/libm/Makefile.in index 6f66c5644..384365cac 100644 --- a/libm/Makefile.in +++ b/libm/Makefile.in @@ -34,19 +34,18 @@ libm_FULL_NAME := libm-$(VERSION).so libm_DIR:=$(top_srcdir)libm libm_OUT:=$(top_builddir)libm -# Fix builds for powerpc as there are different cores in this -# section now.` -ifeq ($(TARGET_ARCH)-$(CONFIG_E500),powerpc-y) -libm_ARCH_DIR:=$(libm_DIR)/$(TARGET_ARCH)/e500 -libm_ARCH_OUT:=$(libm_OUT)/$(TARGET_ARCH)/e500 -else libm_ARCH_DIR:=$(libm_DIR)/$(TARGET_ARCH) libm_ARCH_OUT:=$(libm_OUT)/$(TARGET_ARCH) + +ifneq ($(TARGET_SUBARCH),) +libm_SUBARCH_DIR:=$(libm_DIR)/$(TARGET_ARCH)/$(TARGET_SUBARCH) +libm_SUBARCH_OUT:=$(libm_OUT)/$(TARGET_ARCH)/$(TARGET_SUBARCH) endif ifeq ($(UCLIBC_HAS_FPU),y) ifeq ($(DO_C99_MATH),y) -include $(libm_ARCH_DIR)/Makefile.arch +-include $(libm_SUBARCH_DIR)/Makefile.arch endif endif @@ -219,11 +218,8 @@ endif ifeq ($(UCLIBC_HAS_FPU),y) ifeq ($(DO_C99_MATH),y) ifneq ($(strip $(libm_ARCH_OBJS)),) -ifeq ($(TARGET_ARCH)-$(CONFIG_E500),powerpc-y) -CFLAGS-libm/$(TARGET_ARCH)/e500/ := $(CFLAGS-libm) -else CFLAGS-libm/$(TARGET_ARCH)/ := $(CFLAGS-libm) -endif +CFLAGS-libm/$(TARGET_ARCH)/$(TARGET_SUBARCH)/ := $(CFLAGS-libm) # remove generic sources, if arch specific version is present ifneq ($(strip $(libm_ARCH_SRC)),) diff --git a/libm/powerpc/classic/Makefile.arch b/libm/powerpc/classic/Makefile.arch index 7c7600f80..53c6d2cac 100644 --- a/libm/powerpc/classic/Makefile.arch +++ b/libm/powerpc/classic/Makefile.arch @@ -5,8 +5,8 @@ # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. # -libm_ARCH_SRC:=$(wildcard $(libm_ARCH_DIR)/*.c) -libm_ARCH_OBJ:=$(patsubst $(libm_ARCH_DIR)/%.c,$(libm_ARCH_OUT)/%.o,$(libm_ARCH_SRC)) +libm_ARCH_SRC:=$(wildcard $(libm_SUBARCH_DIR)/*.c) +libm_ARCH_OBJ:=$(patsubst $(libm_SUBARCH_DIR)/%.c,$(libm_SUBARCH_OUT)/%.o,$(libm_ARCH_SRC)) libm_ARCH_OBJS:=$(libm_ARCH_OBJ) diff --git a/libm/powerpc/e500/Makefile.arch b/libm/powerpc/e500/Makefile.arch index bec21caef..912ce7f10 100644 --- a/libm/powerpc/e500/Makefile.arch +++ b/libm/powerpc/e500/Makefile.arch @@ -5,5 +5,6 @@ # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. # +libm_ARCH_fpu_DIR := $(libm_SUBARCH_DIR)/fpu -include $(libm_ARCH_fpu_DIR)/Makefile.arch diff --git a/libm/sh/Makefile.arch b/libm/sh/Makefile.arch deleted file mode 100644 index 6425b3ede..000000000 --- a/libm/sh/Makefile.arch +++ /dev/null @@ -1,21 +0,0 @@ -# Makefile for uClibc -# -# Copyright (c) 2007 STMicroelectronics Ltd -# -# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. -# - -ifeq ($(UCLIBC_HAS_FENV),y) -libm_ARCH_SRC:=$(wildcard $(libm_ARCH_DIR)/*.c) -libm_ARCH_OBJ:=$(patsubst $(libm_ARCH_DIR)/%.c,$(libm_ARCH_OUT)/%.o,$(libm_ARCH_SRC)) -endif - -libm_ARCH_OBJS:=$(libm_ARCH_OBJ) - -ifeq ($(DOPIC),y) -libm-a-y+=$(libm_ARCH_OBJS:.o=.os) -else -libm-a-y+=$(libm_ARCH_OBJS) -endif -libm-so-y+=$(libm_ARCH_OBJS:.o=.os) - diff --git a/libm/sh/sh4/Makefile.arch b/libm/sh/sh4/Makefile.arch new file mode 100644 index 000000000..e38e99c15 --- /dev/null +++ b/libm/sh/sh4/Makefile.arch @@ -0,0 +1,24 @@ +# Makefile for uClibc +# +# Copyright (c) 2007, 2010 STMicroelectronics Ltd +# +# Author(s): Carmelo Amoroso <carmelo.amoroso@st.com> +# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. +# + +ifeq ($(UCLIBC_HAS_FENV),y) +libm_ARCH_CSRC:=$(wildcard $(libm_SUBARCH_DIR)/*.c) +libm_ARCH_COBJ:=$(patsubst $(libm_SUBARCH_DIR)/%.c,$(libm_SUBARCH_OUT)/%.o,$(libm_ARCH_SRC)) +libm_ARCH_SSRC:=$(wildcard $(libm_SUBARCH_DIR)/*.S) +libm_ARCH_SOBJ:=$(patsubst $(libm_SUBARCH_DIR)/%.S,$(libm_SUBARCH_OUT)/%.o,$(libm_ARCH_SSRC)) +endif + +libm_ARCH_OBJS:=$(libm_ARCH_COBJ) $(libm_ARCH_SOBJ) + +ifeq ($(DOPIC),y) +libm-a-y+=$(libm_ARCH_OBJS:.o=.os) +else +libm-a-y+=$(libm_ARCH_OBJS) +endif +libm-so-y+=$(libm_ARCH_OBJS:.o=.os) + diff --git a/libm/sh/feholdexcpt.c b/libm/sh/sh4/feholdexcpt.c index 70b51e8dd..70b51e8dd 100644 --- a/libm/sh/feholdexcpt.c +++ b/libm/sh/sh4/feholdexcpt.c diff --git a/libm/sh/fesetenv.c b/libm/sh/sh4/fesetenv.c index c5cfc1d51..c5cfc1d51 100644 --- a/libm/sh/fesetenv.c +++ b/libm/sh/sh4/fesetenv.c diff --git a/libm/sh/sh4/s_lrintf.S b/libm/sh/sh4/s_lrintf.S new file mode 100644 index 000000000..d8cec329c --- /dev/null +++ b/libm/sh/sh4/s_lrintf.S @@ -0,0 +1,52 @@ +/* Round argument to nearest integer value. SH4 version. + * According to ISO/IEC 9899:1999. This version doesn't handle range error. + * If arg is not finite or if the result cannot be represented into a long, + * return an unspecified value. No exception raised. + * + * Copyright (C) 2010 STMicroelectronics Ltd. + * + * Author: Christian Bruel <christian.bruel@st.com> + * + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. + */ + +#include <sysdep.h> + +ENTRY(lrintf) + mov #0,r0 + sts fpscr,r3 + lds r0,fpscr + flds fr5,fpul + mov.l LOCAL(mask),r1 + sts fpul,r2 + and r2,r1 + mov.l LOCAL(midway),r2 + or r1,r2 + lds r2,fpul + fsts fpul,fr2 + fadd fr2,fr5 + ftrc fr5,fpul + sts fpul,r0 + float fpul,fr2 + fcmp/eq fr5,fr2 + bf/s 0f + mov #1,r2 + tst r1,r1 + and r0,r2 + movt r1 + shal r1 + tst r2,r2 + add #-1,r1 + bt 0f + sub r1,r0 +0: + rts + lds r3,fpscr + + .align 2 +LOCAL(mask): + .long 0x80000000 +LOCAL(midway): + .long 1056964608 + +END(lrintf) diff --git a/libm/sh/sh4/s_lroundf.S b/libm/sh/sh4/s_lroundf.S new file mode 100644 index 000000000..fda3a4b91 --- /dev/null +++ b/libm/sh/sh4/s_lroundf.S @@ -0,0 +1,39 @@ +/* Round argument toward 0. SH4 version. + * According to ISO/IEC 9899:1999. This version doesn't handle range error. + * If arg is not finite or if the result cannot be represented into a long, + * return an unspecified value. No exception raised. + * + * Copyright (C) 2010 STMicroelectronics Ltd. + * + * Author: Christian Bruel <christian.bruel@st.com> + * + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. + */ + +#include <sysdep.h> + +ENTRY(lroundf) + mov #0,r0 + sts fpscr,r3 + lds r0,fpscr + flds fr5,fpul + mov.l LOCAL(mask),r1 + sts fpul,r2 + and r2,r1 + mov.l LOCAL(midway),r2 + or r1,r2 + lds r2,fpul + fsts fpul,fr2 + fadd fr2,fr5 + ftrc fr5,fpul + sts fpul,r0 + rts + lds r3,fpscr + + .align 2 +LOCAL(mask): + .long 0x80000000 +LOCAL(midway): + .long 1056964608 + +END(lroundf) diff --git a/libpthread/linuxthreads/pthread.c b/libpthread/linuxthreads/pthread.c index 614cad1f4..db436342f 100644 --- a/libpthread/linuxthreads/pthread.c +++ b/libpthread/linuxthreads/pthread.c @@ -49,7 +49,7 @@ extern int _h_errno; /* We need the global/static resolver state here. */ # include <resolv.h> # undef _res -extern struct __res_state _res; +extern struct __res_state *__resp; # endif #endif @@ -73,9 +73,6 @@ struct _pthread_descr_struct __pthread_initial_thread = { #if !(USE_TLS && HAVE___THREAD) .p_errnop = &_errno, .p_h_errnop = &_h_errno, -# if defined __UCLIBC_HAS_IPv4__ || defined __UCLIBC_HAS_IPV6__ - .p_resp = &_res, -# endif #endif .p_userstack = 1, .p_resume_count = __ATOMIC_INITIALIZER, @@ -544,14 +541,14 @@ static void pthread_initialize(void) THREAD_SETMEM (((pthread_descr) NULL), p_pid, __getpid()); # if !defined HAVE___THREAD && (defined __UCLIBC_HAS_IPv4__ || defined __UCLIBC_HAS_IPV6__) /* Likewise for the resolver state _res. */ - THREAD_SETMEM (((pthread_descr) NULL), p_resp, &_res); + THREAD_SETMEM (((pthread_descr) NULL), p_resp, __resp); # endif #else /* Update the descriptor for the initial thread. */ __pthread_initial_thread.p_pid = __getpid(); # if defined __UCLIBC_HAS_IPv4__ || defined __UCLIBC_HAS_IPV6__ /* Likewise for the resolver state _res. */ - __pthread_initial_thread.p_resp = &_res; + __pthread_initial_thread.p_resp = __resp; # endif #endif #if !__ASSUME_REALTIME_SIGNALS @@ -1129,7 +1126,7 @@ void __pthread_reset_main_thread(void) THREAD_SETMEM(self, p_errnop, &_errno); THREAD_SETMEM(self, p_h_errnop, &_h_errno); # if defined __UCLIBC_HAS_IPv4__ || defined __UCLIBC_HAS_IPV6__ - THREAD_SETMEM(self, p_resp, &_res); + THREAD_SETMEM(self, p_resp, __resp); # endif #endif diff --git a/libpthread/nptl/sem_open.c b/libpthread/nptl/sem_open.c index 28dd3aa90..71bebb00a 100644 --- a/libpthread/nptl/sem_open.c +++ b/libpthread/nptl/sem_open.c @@ -248,7 +248,7 @@ sem_open (const char *name, int oflag, ...) int fd; /* Determine where the shmfs is mounted. */ - __pthread_once (&__namedsem_once, __where_is_shmfs); + INTUSE(__pthread_once) (&__namedsem_once, __where_is_shmfs); /* If we don't know the mount points there is nothing we can do. Ever. */ if (mountpoint.dir == NULL) diff --git a/libpthread/nptl/sem_unlink.c b/libpthread/nptl/sem_unlink.c index beed02ee5..f3e7f1a70 100644 --- a/libpthread/nptl/sem_unlink.c +++ b/libpthread/nptl/sem_unlink.c @@ -33,7 +33,7 @@ sem_unlink ( size_t namelen; /* Determine where the shmfs is mounted. */ - __pthread_once (&__namedsem_once, __where_is_shmfs); + INTUSE(__pthread_once) (&__namedsem_once, __where_is_shmfs); /* If we don't know the mount points there is nothing we can do. Ever. */ if (mountpoint.dir == NULL) diff --git a/libpthread/nptl/sysdeps/pthread/Makefile.in b/libpthread/nptl/sysdeps/pthread/Makefile.in index 8ccf96d76..fc0c6ac3e 100644 --- a/libpthread/nptl/sysdeps/pthread/Makefile.in +++ b/libpthread/nptl/sysdeps/pthread/Makefile.in @@ -95,6 +95,10 @@ $(patsubst %,$(libpthread_pthread_OUT)/pt-%.oS,$(pthread-lc-fwd)): $(libpthread_ $(compile.c) $(patsubst %,$(libpthread_pthread_OUT)/pt-%.o,$(pthread-lc-fwd)): $(libpthread_pthread_OUT)/pt-%.o: $(libpthread_pthread_OUT)/pt-%.c $(compile.c) +ifeq ($(DOPIC),y) +$(patsubst %,$(libpthread_pthread_OUT)/pt-%.os,$(pthread-lc-fwd)): $(libpthread_pthread_OUT)/pt-%.os: $(libpthread_pthread_OUT)/pt-%.c + $(compile.c) +endif objclean-y += CLEAN_libpthread/nptl/sysdeps/pthread diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/Makefile.arch index 88ca01a51..102c0dad1 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/Makefile.arch +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/Makefile.arch @@ -7,16 +7,20 @@ libpthread_linux_arch_SSRC = pt-vfork.S clone.S libpthread_linux_arch_CSRC = pthread_once.c lowlevellock.c \ - pthread_barrier_init.c pthread_barrier_wait.c pthread_barrier_destroy.c + pthread_barrier_init.c pthread_barrier_wait.c pthread_barrier_destroy.c \ + pt-__syscall_error.c libc_linux_arch_CSRC = fork.c libc-lowlevellock.c libc_linux_arch_SSRC = clone.S vfork.S +librt_linux_arch_CSRC = pt-__syscall_error.c + ASFLAGS += -DUSE___THREAD ASFLAGS-pt-vfork.S = -DNOT_IN_libc -DIS_IN_libpthread -D_LIBC_REENTRANT CFLAGS-pthread_once.c = -DNOT_IN_libc -DIS_IN_libpthread CFLAGS-lowlevellock.c = -DNOT_IN_libc -DIS_IN_libpthread +CFLAGS-pt-__syscall_error.c = -DNOT_IN_libc -DIS_IN_libpthread ASFLAGS-clone.S = -D_LIBC_REENTRANT ASFLAGS-vfork.S = -D_LIBC_REENTRANT diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pt-__syscall_error.c b/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pt-__syscall_error.c new file mode 100644 index 000000000..872e4eff6 --- /dev/null +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pt-__syscall_error.c @@ -0,0 +1 @@ +#include <../../../../../../../libc/sysdeps/linux/sparc/__syscall_error.c> diff --git a/libpthread/nptl_db/Makefile.in b/libpthread/nptl_db/Makefile.in index 644ec5552..a3fc1cd74 100644 --- a/libpthread/nptl_db/Makefile.in +++ b/libpthread/nptl_db/Makefile.in @@ -12,8 +12,7 @@ CFLAGS-nptl_db := -DLIBPTHREAD_SO="\"libpthread.so.$(ABI_VERSION)\"" CFLAGS-nptl_db += -I$(top_srcdir)libpthread/nptl -D_GNU_SOURCE CFLAGS-nptl_db += -DIS_IN_libthread_db=1 -DNOT_IN_libc -std=gnu99 -I$(top_srcdir)ldso/include -LDFLAGS-libthread_db.so := $(LDFLAGS_NOSTRIP) -s --warn-unresolved-symbols - +LDFLAGS-libthread_db.so := $(LDFLAGS_NOSTRIP) $(if $(call check_ld,--warn-unresolved-symbols),-Wl$(comma)--warn-unresolved-symbols) LIBS-libthread_db.so := $(LIBS) libthread_db_FULL_NAME := libthread_db-$(VERSION).so |