Browse Source

Merge commit 'origin/master' into prelink

Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com>
Carmelo Amoroso 14 years ago
parent
commit
8100a075b7

+ 10 - 2
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

+ 1 - 1
Rules.mak

@@ -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),)

+ 3 - 3
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

+ 1 - 8
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>
 

+ 3 - 1
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 */

+ 1 - 0
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;

+ 6 - 0
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

+ 6 - 10
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)),)

+ 2 - 2
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)
 

+ 1 - 0
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
 

+ 0 - 21
libm/sh/Makefile.arch

@@ -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)
-

+ 24 - 0
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)
+

+ 0 - 0
libm/sh/feholdexcpt.c → libm/sh/sh4/feholdexcpt.c


+ 0 - 0
libm/sh/fesetenv.c → libm/sh/sh4/fesetenv.c


+ 52 - 0
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)

+ 39 - 0
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)

+ 4 - 7
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
 

+ 1 - 1
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)

+ 1 - 1
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)

+ 4 - 0
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
 

+ 5 - 1
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

+ 1 - 0
libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pt-__syscall_error.c

@@ -0,0 +1 @@
+#include <../../../../../../../libc/sysdeps/linux/sparc/__syscall_error.c>

+ 1 - 2
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