diff --git a/Makefile.in b/Makefile.in index b4dcf6b..d7a5fca 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 \ diff --git a/extra/locale/Makefile b/extra/locale/Makefile index 11f362a..ff229e2 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/sysdeps/linux/sparc/Makefile.arch b/libc/sysdeps/linux/sparc/Makefile.arch index 91c6e85..d0cae9f 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/libpthread/linuxthreads/pthread.c b/libpthread/linuxthreads/pthread.c index 614cad1..db43634 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 # 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 28dd3aa..71bebb0 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 beed02e..f3e7f1a 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 8ccf96d..fc0c6ac 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 88ca01a..102c0da 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 0000000..872e4ef --- /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 644ec55..a3fc1cd 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