diff mbox

[uclibc-ng-devel] uClibc-ng - small C library for embedded systems branch master updated. v1.0.17-24-g4b7d25c

Message ID 20160927182307.EA40210142@helium.openadk.org
State Not Applicable
Headers show

Commit Message

wbx Sept. 27, 2016, 6:23 p.m. UTC
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "uClibc-ng - small C library for embedded systems".

The branch, master has been updated
       via  4b7d25c83cdcaa50625647408e388c3b400fafce (commit)
       via  2b1421826c8f074da53b3c01611c2bab61e3aa76 (commit)
       via  dd3d37c44ef2016a69ce28de7d483d23120acfa9 (commit)
       via  62a8b660f429394eea93cddc1cd70c2c7b463074 (commit)
       via  b5d946a333f8faff998160c4da499c3c25a2d3ac (commit)
       via  29ff9055c80efe77a7130767a9fcb3ab8c67e8ce (commit)
      from  b06f85d62c41a4ed108628b1c564203f36c0ab4e (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 4b7d25c83cdcaa50625647408e388c3b400fafce
Author: Waldemar Brodkorb <wbx@uclibc-ng.org>
Date:   Tue Sep 27 18:20:45 2016 +0200

    test: remove ULPs for unsupported architecture

commit 2b1421826c8f074da53b3c01611c2bab61e3aa76
Author: Waldemar Brodkorb <wbx@uclibc-ng.org>
Date:   Tue Sep 27 18:18:36 2016 +0200

    ldd: fix compile for some architectures
    
    Reorder entries alphabetically (architecture name as order
    criterium) and remove unused entries.

commit dd3d37c44ef2016a69ce28de7d483d23120acfa9
Author: Waldemar Brodkorb <wbx@uclibc-ng.org>
Date:   Tue Sep 27 18:18:18 2016 +0200

    test: fix parallel build issue

commit 62a8b660f429394eea93cddc1cd70c2c7b463074
Author: Waldemar Brodkorb <wbx@uclibc-ng.org>
Date:   Mon Sep 26 20:22:31 2016 +0200

    microblaze: add ulps file

commit b5d946a333f8faff998160c4da499c3c25a2d3ac
Author: Waldemar Brodkorb <wbx@uclibc-ng.org>
Date:   Sat Sep 24 10:29:47 2016 +0200

    locale: cleanup support
    
    Enable locale application to be build when utils are
    build. Remove useless compile and link warnings.
    Default to minimal locale builds.
    
    Signed-off-by: Waldemar Brodkorb <wbx@uclibc-ng.org>

commit 29ff9055c80efe77a7130767a9fcb3ab8c67e8ce
Author: Waldemar Brodkorb <wbx@uclibc-ng.org>
Date:   Sat Sep 24 02:55:31 2016 +0200

    use a single libc and deduplicate threading code
    
    Similar to musl libc a single libc has many benefits and solves
    some open issues with uClibc-ng.
    
    - no pthread_mutex_* weak symbols exported anymore
    - applications no longer failing to link when either
      -lrt or -lpthread are missing for dynamic and static linking mode
    - smaller C library
    - slightly better runtime performance

-----------------------------------------------------------------------

Summary of changes:
 Makefile.in                                        |   30 +-
 Rules.mak                                          |    8 +-
 extra/Configs/Config.in                            |   16 +-
 extra/locale/Makefile.in                           |    9 +-
 extra/locale/gen_collate.c                         |   18 -
 extra/locale/gen_locale.c                          |    2 -
 extra/locale/gen_wc8bit.c                          |   19 -
 extra/locale/gen_wctype.c                          |    1 -
 ldso/ldso/arm/dl-syscalls.h                        |   37 +-
 ldso/ldso/fdpic/dl-inlines.h                       |    2 +-
 ldso/libdl/Makefile.in                             |   18 -
 libc/Makefile.in                                   |   31 +-
 libc/misc/internals/__uClibc_main.c                |   45 -
 libc/misc/locale/locale.c                          |   13 -
 libc/signal/Makefile.in                            |    7 +-
 libc/sysdeps/linux/arm/Makefile.arch               |    1 -
 libc/sysdeps/linux/arm/libc-thumb_atomics.S        |    1 -
 libc/sysdeps/linux/common/Makefile.in              |   10 +-
 libc/sysdeps/linux/common/bits/uClibc_locale.h     |    5 -
 libc/sysdeps/linux/i386/Makefile.arch              |    3 +-
 libcrypt/Makefile.in                               |   27 -
 libintl/Makefile.in                                |   26 -
 libm/Makefile.in                                   |   27 -
 libnsl/Makefile.in                                 |   27 -
 libpthread/linuxthreads/Makefile.in                |   43 +-
 libpthread/linuxthreads/forward.c                  |  173 ---
 libpthread/linuxthreads/internals.h                |    3 +-
 libpthread/linuxthreads/libc_pthread_init.c        |   11 +-
 libpthread/linuxthreads/manager.c                  |    3 -
 libpthread/linuxthreads/pthread.c                  |   98 +-
 .../linuxthreads/sysdeps/pthread/bits/libc-lock.h  |   66 +-
 .../sysdeps/pthread/pthread-functions.h            |  113 --
 libpthread/nptl/Makefile.in                        |   54 +-
 libpthread/nptl/forward.c                          |  169 ---
 libpthread/nptl/init.c                             |   74 +-
 libpthread/nptl/pt-system.c                        |   35 -
 libpthread/nptl/pthreadP.h                         |    7 +-
 libpthread/nptl/pthread_setgid.c                   |    3 -
 libpthread/nptl/pthread_setuid.c                   |    3 -
 libpthread/nptl/res.c                              |   26 -
 libpthread/nptl/sysdeps/arm/Makefile.arch          |    1 -
 libpthread/nptl/sysdeps/arm/aeabi_read_tp.S        |    1 -
 libpthread/nptl/sysdeps/arm/thumb_atomics.S        |    1 -
 libpthread/nptl/sysdeps/metag/metag_load_tp.S      |    7 -
 libpthread/nptl/sysdeps/mips/nptl-sysdep.S         |    2 -
 libpthread/nptl/sysdeps/pthread/Makefile.in        |   51 -
 libpthread/nptl/sysdeps/pthread/bits/libc-lock.h   |   10 -
 libpthread/nptl/sysdeps/pthread/pt-initfini.c      |  128 --
 libpthread/nptl/sysdeps/pthread/pt-sigaction.c     |    7 +-
 .../nptl/sysdeps/pthread/pthread-functions.h       |  108 --
 libpthread/nptl/sysdeps/pthread/setxid.h           |    6 +-
 libpthread/nptl/sysdeps/pthread/uClibc-glue.h      |    1 -
 .../sysdeps/unix/sysv/linux/Makefile.commonarch    |    1 -
 .../nptl/sysdeps/unix/sysv/linux/arc/Makefile.arch |    3 +-
 .../unix/sysv/linux/arc/pt-__syscall_error.c       |    7 -
 .../sysv/linux/arc/pt-__syscall_rt_sigaction.c     |   13 -
 .../nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch |    5 +-
 .../unix/sysv/linux/arm/pt-__syscall_error.c       |    1 -
 .../sysv/linux/arm/pt-__syscall_rt_sigaction.c     |    1 -
 .../sysdeps/unix/sysv/linux/i386/Makefile.arch     |    2 +-
 .../unix/sysv/linux/i386/pt-__syscall_error.c      |    1 -
 .../nptl/sysdeps/unix/sysv/linux/jmp-unwind.c      |    7 -
 .../sysdeps/unix/sysv/linux/libc_pthread_init.c    |   24 +-
 .../sysdeps/unix/sysv/linux/metag/Makefile.arch    |    3 +-
 .../unix/sysv/linux/metag/pt-__syscall_error.c     |    7 -
 .../sysv/linux/metag/pt-__syscall_rt_sigaction.c   |    7 -
 .../sysdeps/unix/sysv/linux/mips/Makefile.arch     |    2 +-
 .../sysv/linux/mips/pt-__syscall_rt_sigaction.c    |    1 -
 .../sysdeps/unix/sysv/linux/powerpc/Makefile.arch  |    5 +-
 .../unix/sysv/linux/powerpc/pt-__syscall_error.c   |    1 -
 .../nptl/sysdeps/unix/sysv/linux/pt-sigwait.c      |    2 -
 .../nptl/sysdeps/unix/sysv/linux/sh/pt-initfini.c  |  125 --
 .../sysdeps/unix/sysv/linux/sparc/Makefile.arch    |    5 +-
 .../unix/sysv/linux/sparc/pt-__syscall_error.c     |    1 -
 .../sysdeps/unix/sysv/linux/x86_64/Makefile.arch   |    2 +-
 .../unix/sysv/linux/x86_64/pt-__syscall_error.c    |    1 -
 .../sysdeps/unix/sysv/linux/xtensa/Makefile.arch   |    1 -
 .../sysdeps/unix/sysv/linux/xtensa/pt-initfini.c   |  134 --
 libpthread/nptl/sysdeps/xtensa/Makefile.arch       |    3 -
 libresolv/Makefile.in                              |   27 -
 librt/Makefile.in                                  |   34 -
 libuargp/Makefile.in                               |   25 -
 libubacktrace/Makefile.in                          |   23 -
 libutil/Makefile.in                                |   27 -
 test/argp/Makefile.in                              |    2 -
 ...-test-ulps-xtensa => libm-test-ulps-microblaze} |    0
 test/math/libm-test-ulps-s390                      | 1332 --------------------
 test/tls/Makefile.in                               |   11 +
 utils/Makefile.in                                  |    4 +-
 utils/ldd.c                                        |   39 +-
 90 files changed, 125 insertions(+), 3351 deletions(-)
 delete mode 100644 libc/sysdeps/linux/arm/libc-thumb_atomics.S
 delete mode 100644 libpthread/linuxthreads/forward.c
 delete mode 100644 libpthread/linuxthreads/sysdeps/pthread/pthread-functions.h
 delete mode 100644 libpthread/nptl/forward.c
 delete mode 100644 libpthread/nptl/pt-system.c
 delete mode 100644 libpthread/nptl/pthread_setgid.c
 delete mode 100644 libpthread/nptl/pthread_setuid.c
 delete mode 100644 libpthread/nptl/res.c
 delete mode 100644 libpthread/nptl/sysdeps/arm/aeabi_read_tp.S
 delete mode 100644 libpthread/nptl/sysdeps/arm/thumb_atomics.S
 delete mode 100644 libpthread/nptl/sysdeps/metag/metag_load_tp.S
 delete mode 100644 libpthread/nptl/sysdeps/mips/nptl-sysdep.S
 delete mode 100644 libpthread/nptl/sysdeps/pthread/pt-initfini.c
 delete mode 100644 libpthread/nptl/sysdeps/pthread/pthread-functions.h
 delete mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/arc/pt-__syscall_error.c
 delete mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/arc/pt-__syscall_rt_sigaction.c
 delete mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/arm/pt-__syscall_error.c
 delete mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/arm/pt-__syscall_rt_sigaction.c
 delete mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/i386/pt-__syscall_error.c
 delete mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-__syscall_error.c
 delete mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-__syscall_rt_sigaction.c
 delete mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/mips/pt-__syscall_rt_sigaction.c
 delete mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pt-__syscall_error.c
 delete mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/pt-sigwait.c
 delete mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/sh/pt-initfini.c
 delete mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pt-__syscall_error.c
 delete mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pt-__syscall_error.c
 delete mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/xtensa/pt-initfini.c
 copy test/math/{libm-test-ulps-xtensa => libm-test-ulps-microblaze} (100%)
 delete mode 100644 test/math/libm-test-ulps-s390



hooks/post-receive
diff mbox

Patch

diff --git a/Makefile.in b/Makefile.in
index 5965685..c289ed3 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -363,12 +363,19 @@  else
 	$(Q)cd $(PREFIX)$(DEVEL_PREFIX)include && $(RM) -f wchar-stub.h
 endif
 
+EMPTY_LIB_NAMES = m crypt nsl resolv util dl rt pthread intl
+EMPTY_LIBS = $(EMPTY_LIB_NAMES:%=lib/lib%.a)
+
+$(EMPTY_LIBS):
+	rm -f $(top_builddir)$@
+	$(AR) rc $(top_builddir)$@
+
 # Installs startfiles
 install_startfiles: startfiles | $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)
 	-$(INSTALL) -m 644 $(startfiles) $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/
 
 # Installs development library links.
-install_dev: install_headers install_runtime install_startfiles | $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)
+install_dev: install_headers install_runtime install_startfiles $(EMPTY_LIBS) | $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)
 	-$(INSTALL) -m 644 $(top_builddir)lib/*.a $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/
 ifeq ($(HAVE_SHARED),y)
 	for i in `cd $(top_builddir) && find lib/ -type l -name 'lib[a-zA-Z]*.so' | \
@@ -389,28 +396,7 @@  else
 	-$(INSTALL) -m 755 $(top_builddir)lib/libc.so $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/
 endif
 	echo "$(UBACKTRACE_ASNEEDED)" >> $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libc.so
-ifeq ($(UCLIBC_HAS_ARGP),y)
-# Add the AS_NEEDED entry for libuargp.so
-	if [ -f $(top_builddir)lib/libc.so -a -f $(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR)/$(SHARED_MAJORNAME) ] ; then \
-		echo "GROUP ( $(UARGP_ASNEEDED) )" >> $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libc.so; \
-	fi
-endif
 
-ifeq ($(UCLIBC_HAS_THREADS),y)
-ifneq ($(UCLIBC_HAS_LINUXTHREADS),y)
-ifeq ($(HARDWIRED_ABSPATH),y)
-	if [ -f $(top_builddir)lib/libpthread.so -a -f $(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR)/libpthread.so.$(ABI_VERSION) ] ; then \
-		$(RM) $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libpthread.so; \
-		cp $(top_srcdir)extra/scripts/format.lds $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libpthread.so; \
-		echo "GROUP ( $(RUNTIME_PREFIX)$(MULTILIB_DIR)/libpthread.so.$(ABI_VERSION) $(DEVEL_PREFIX)$(MULTILIB_DIR)/libpthread_nonshared.a )" \
-			>> $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libpthread.so; \
-		$(SED) -i -e 's://:/:g' $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libpthread.so; \
-	fi
-else
-	-$(INSTALL) -m 755 $(top_builddir)lib/libpthread.so $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/
-endif
-endif
-endif
 ifeq ($(PTHREADS_DEBUG_SUPPORT),y)
 	$(LN) -sf $(RUNTIME_PREFIX_LIB_FROM_DEVEL_PREFIX_LIB)libthread_db.so.1 \
 		$(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libthread_db.so
diff --git a/Rules.mak b/Rules.mak
index f226dca..9b76e4f 100644
--- a/Rules.mak
+++ b/Rules.mak
@@ -156,14 +156,10 @@  endif
 
 UCLIBC_LDSO := $(UCLIBC_LDSO_NAME).so.$(ABI_VERSION)
 NONSHARED_LIBNAME := uclibc_nonshared.a
+NONSHARED_LIBPTHREAD := libpthread_nonshared.a
+
 libc := $(top_builddir)lib/$(SHARED_LIBNAME)
 libc.depend := $(top_builddir)lib/$(SHARED_LIBNAME:.$(ABI_VERSION)=)
-ifneq ($(ARCH_HAS_NO_SHARED),y)
-libdl.depend := $(top_builddir)lib/libdl.so
-endif
-ifneq ($(HAS_NO_THREADS),y)
-libpthread.depend := $(top_builddir)lib/libpthread.so
-endif
 interp := $(top_builddir)lib/interp.os
 ldso := $(top_builddir)lib/$(UCLIBC_LDSO)
 headers_dep := $(top_builddir)include/bits/sysnum.h \
diff --git a/extra/Configs/Config.in b/extra/Configs/Config.in
index 12dc0df..fc6669b 100644
--- a/extra/Configs/Config.in
+++ b/extra/Configs/Config.in
@@ -1526,14 +1526,7 @@  choice
 
 prompt "Locale data"
 	depends on UCLIBC_HAS_LOCALE
-	default UCLIBC_BUILD_ALL_LOCALE
-
-config UCLIBC_BUILD_ALL_LOCALE
-	bool "All locales"
-	depends on UCLIBC_HAS_LOCALE
-	help
-	  This builds all the locales that are available on your
-	  host-box.
+	default UCLIBC_BUILD_MINIMAL_LOCALE
 
 config UCLIBC_BUILD_MINIMAL_LOCALE
 	bool "Only selected locales"
@@ -1542,6 +1535,13 @@  config UCLIBC_BUILD_MINIMAL_LOCALE
 	  If you do not need all locales that are available on your
 	  host-box, then set this to 'Y'.
 
+config UCLIBC_BUILD_ALL_LOCALE
+	bool "All locales"
+	depends on UCLIBC_HAS_LOCALE
+	help
+	  This builds all the locales that are available on your
+	  host-box.
+
 endchoice
 
 config UCLIBC_BUILD_MINIMAL_LOCALES
diff --git a/extra/locale/Makefile.in b/extra/locale/Makefile.in
index 117993f..a16f82b 100644
--- a/extra/locale/Makefile.in
+++ b/extra/locale/Makefile.in
@@ -8,11 +8,6 @@ 
 locale_DIR := $(top_srcdir)extra/locale
 locale_OUT := $(top_builddir)extra/locale
 
-# command used to download source code
-WGET := wget --passive-ftp
-
-LOCALE_DATA_FILENAME := uClibc-locale-20081111-$(ARCH_NATIVE_BIT)-$(if $(ARCH_LITTLE_ENDIAN),el,eb).tgz
-
 BUILD_CFLAGS-locale-common := \
 	-D__UCLIBC_GEN_LOCALE \
 	-I$(top_builddir)
@@ -72,7 +67,7 @@  locale_headers: $(locale_headers-y)
 # we do not know though which locales were really enabled for libc at build time
 ifeq ($(wildcard /usr/include/iconv.h),)
 
-$(locale_OUT)/codesets.txt:
+$(locale_OUT)/codesets.txt: $(locale_OUT)/gen_wc8bit
 	@if [ ! -f $@ ] ; then \
 	    set -e; \
 	    echo " "; \
@@ -117,7 +112,7 @@  endif
 
 # the lines beginning w/ '#-' are mandatory
 # at least one conversion is needed (euro/cyrillic)
-$(locale_OUT)/locales.txt: $(locale_DIR)/LOCALES
+$(locale_OUT)/locales.txt: $(locale_DIR)/LOCALES $(locale_OUT)/gen_locale
 	@$(disp_gen)
 ifeq ($(UCLIBC_BUILD_MINIMAL_LOCALE),y)
 	$(Q)echo "@euro e" > $@
diff --git a/extra/locale/gen_collate.c b/extra/locale/gen_collate.c
index 15582c1..fc219ad 100644
--- a/extra/locale/gen_collate.c
+++ b/extra/locale/gen_collate.c
@@ -339,7 +339,6 @@  static section_t *new_section(const char *name)
 		snprintf(buf, sizeof(buf), "%s %05d", cur_col->name, anonsection);
 		++anonsection;
 	}
-#warning devel code
 /* 	verbose_msg(VDETAIL, "section %s\n", name); */
 	p->name = xsymdup(name);
 	p->itm_list = NULL;
@@ -350,7 +349,6 @@  static section_t *new_section(const char *name)
 /* 	memset(p->rules, 0, MAX_COLLATION_WEIGHTS); */
 /* 	memset(cur_rule, R_FORWARD, 4); */
 
-#warning devel code
 	if (*p->name == 'a') {
 		cur_num_weights = p->num_rules = 4;
 		memset(p->rules, R_FORWARD, 4);
@@ -725,7 +723,6 @@  static void processfile(void)
 	const keyword_table_t *k;
 
 	order_state = 0;
-#warning devel code
 /* 	cur_num_weights = 0; */
 /* 	cur_num_weights = 4; */
 /* 	memset(cur_rule, R_FORWARD, 4); */
@@ -1289,7 +1286,6 @@  static int old_main(int argc, char **argv)
 			override_len, multistart_len, weightstr_len,
 			wcs2colidt_len, index2weight_len, index2ruleidx_len,
 			ruletable_len,
-#warning mult by 2 for rule indecies
 			(override_len + multistart_len + weightstr_len
 			 + wcs2colidt_len + index2weight_len + index2ruleidx_len + ruletable_len) * 2,
 			(override_len + multistart_len + weightstr_len
@@ -1515,7 +1511,6 @@  static void do_copy(void)
 			++s;
 			if (cur_base && !strcmp(cur_base->name,s)) {
 /* 				verbose_msg(VDETAIL, "skipping copy of base file %s\n", s); */
-#warning need to update last in order and position or check
 				return;
 			}
 /* 			verbose_msg(VDETAIL, "full copy of %s\n", s); */
@@ -1601,7 +1596,6 @@  static ll_item_t *find_section_list_item(const char *name, col_locale_t *loc)
 	p = loc->section_list;
 
 	while (p) {
-#warning devel code
 /* 		if (!((p->data_type == DT_SECTION) || (p->data_type == DT_REORDER))) { */
 /* 			verbose_msg(VDETAIL, "fsli = %d\n", p->data_type); */
 /* 		} */
@@ -1744,7 +1738,6 @@  static void add_colitem(char *item, char *def)
 
 	p = new_colitem(item, def);
 
-#warning devel code
 	if (superset) {
 		if (tfind(p, &cur_base->root_colitem, colitem_cmp)) {
 /* 			verbose_msg(VDETAIL, "skipping superset duplicate collating item \"%s\"\n", p->string); */
@@ -1865,7 +1858,6 @@  static void do_order_start(void)
 	cur_section = sect;
 /* 	fprintf(stdout, "cur_section now %s\n", cur_section->name); */
 
-#warning need to add section to weight list?
 
 	/* now do rules */
 	do {
@@ -1945,7 +1937,6 @@  static void do_reorder_after(void)
 		error_msg("currently reorder_after is not supported in supersets");
 	}
 
-#warning have to use rule for current section!!!
 
 	if (!(t = next_token())) {
 		error_msg("missing arg for reorder_after");
@@ -1996,10 +1987,8 @@  static void do_reorder_after(void)
 	memcpy(cur_section->rules, save_cur_rule, MAX_COLLATION_WEIGHTS);
 
 
-#warning devel code
 /* 	verbose_msg(VDETAIL, "reorder -- %s %d\n", ((weighted_item_t *)(lli->data))->symbol, w->num_weights); */
 
-#warning hack to get around hu_HU reorder-after problem
 /* 	if (!w->num_weights) { */
 
 /* 	} else { */
@@ -2406,7 +2395,6 @@  static ll_item_t *init_comm_ptr(void)
 		comm_cur_ptr = comm_cur_ptr->next;
 	}
 
-#warning devel code
 /* 	{ */
 /* 		ll_item_t *p = comm_cur_ptr; */
 /* 		verbose_msg(VDETAIL, "init_comm_ptr\n"); */
@@ -2672,7 +2660,6 @@  static void finalize_base(void)
 	base_locale_array[base_locale_len].index2weight_offset = index2weight_len;
 	base_locale_array[base_locale_len].index2ruleidx_offset = index2ruleidx_len;
 	if (!strcmp(cur_base->name,"ja_JP") || !strcmp(cur_base->name,"ko_KR")) {
-#warning fix the index2weight check!!
 		index2weight_len_inc = 0;
 	}
 /* 	printf("%s -- index2weight_len = %d\n", cur_base->name, index2weight_len); */
@@ -2709,14 +2696,12 @@  static void finalize_base(void)
 			if (lli->data_type & DT_RANGE) {
 				i += mr;
 				mr = 0;
-#warning check ko_kR and 9
 /* 				++i; */
 				lli->idx = i;
 				assert(!rli);
 				rli = lli;
 				verbose_msg(VDETAIL, "range pre = %d  after = ", i);
 				i += ((range_item_t *)(lli->data))->length + 1;
-#warning check ko_kR and 9
 /* 				++i; */
 				verbose_msg(VDETAIL, "%d\n", i);
 				if (!index2weight_len_inc) { /* ko_KR hack */
@@ -2740,7 +2725,6 @@  static void finalize_base(void)
 			} else {
 				assert(lli->data_type & DT_REORDER);
 				r = ll_len( ((section_t *)(lli->data))->itm_list );
-#warning check ko_kR and 9
 				if (r > mr) {
 					mr = r;
 				}
@@ -2762,7 +2746,6 @@  static void finalize_base(void)
 				i += mr;
 				mr = 0;
 				i = lli->idx + ((range_item_t *)(lli->data))->length + 1;
-#warning check
 			} else if ((lli->data_type & DT_WEIGHTED) && !(s->data_type & DT_REORDER)) {
 				i += mr;
 				mr = 0;
@@ -3247,7 +3230,6 @@  static void finalize_base(void)
 
 #endif
 
-#warning handle UNDEFINED idx specially?  what if in only some of derived?
 /* 	base_locale_array[base_locale_len].undefined_idx = final_index_val0("UNDEFINED"); */
 	base_locale_array[base_locale_len].undefined_idx = 0;
 
diff --git a/extra/locale/gen_locale.c b/extra/locale/gen_locale.c
index 5e89360..a2cb52e 100644
--- a/extra/locale/gen_locale.c
+++ b/extra/locale/gen_locale.c
@@ -1080,8 +1080,6 @@  static void lc_monetary_C(int X, int k)
 	int j, m;
 	char c_buf[2];
 
-#warning fix the char entries for monetary... target signedness of char may be different!
-
 	c_buf[1] = 0;
 	c_buf[0] = *nl_langinfo(X);
 	j = addstring(c_buf);
diff --git a/extra/locale/gen_wc8bit.c b/extra/locale/gen_wc8bit.c
index e16b283..8031df1 100644
--- a/extra/locale/gen_wc8bit.c
+++ b/extra/locale/gen_wc8bit.c
@@ -127,25 +127,6 @@  int main(int argc, char **argv)
 		pclose(fp);
 	}
 
-#if 0
-	if (argc == 1) {
-		/* User requested 8-bit codesets, but didn't list any... */
-		/* Allow to build, just so this feature can be left on in config. */
-		printf("#ifdef __CTYPE_HAS_8_BIT_LOCALES\n");
-		printf("#warning ignoring 8 bit codesets request"
-				" as no codesets specified.\n");
-		printf("#endif\n");
-		printf("#undef __CTYPE_HAS_8_BIT_LOCALES\n\n");
-
-		printf("#define __LOCALE_DATA_NUM_CODESETS\t\t0\n");
-		printf("#define __LOCALE_DATA_CODESET_LIST\t\t\"\"\n");
-		return EXIT_SUCCESS;
-	}
-
-/*  	printf("#define __CTYPE_HAS_8_BIT_LOCALES\t1\n\n"); */
-	printf("#ifdef __CTYPE_HAS_8_BIT_LOCALES\n\n");
-#endif
-
 	if (argc == 1) {
 		printf("#undef __CTYPE_HAS_8_BIT_LOCALES\n\n");
 
diff --git a/extra/locale/gen_wctype.c b/extra/locale/gen_wctype.c
index d5b5c5c..7034509 100644
--- a/extra/locale/gen_wctype.c
+++ b/extra/locale/gen_wctype.c
@@ -682,7 +682,6 @@  int main(int argc, char **argv)
 		output_table("ctype", &cttable);
 		output_table("uplow", &ultable);
 
-#warning fix the upper bound on the upper/lower tables... save 200 bytes or so
 		printf("#define __LOCALE_DATA_WCuplow_diffs  %7u\n", ul_count);
 		printf("\n#ifdef WANT_WCuplow_diff_data\n\n");
 		printf("\nstatic const short __LOCALE_DATA_WCuplow_diff_data[%zu] = {",
diff --git a/ldso/ldso/arm/dl-syscalls.h b/ldso/ldso/arm/dl-syscalls.h
index 195461f..f40c4fd 100644
--- a/ldso/ldso/arm/dl-syscalls.h
+++ b/ldso/ldso/arm/dl-syscalls.h
@@ -1,36 +1 @@ 
-/* _call_via_rX calls are used in thumb ldso because of calls via
- * function pointers, but ldso is not linked with anything which
- * provides them, so define them here (only required for thumb).
- */
-#if defined(__thumb__)
-__asm__(
-	".macro call_via register\n"
-	"	.global	_call_via_\\register\n"
-	"	.hidden	_call_via_\\register\n"
-	"	.type	_call_via_\\register, %function\n"
-	"	.thumb_func\n"
-	"_call_via_\\register:\n"
-	"	bx	\\register\n"
-	"	.size	_call_via_\\register, . - _call_via_\\register\n"
-	".endm\n"
-
-	".text\n"
-	".thumb\n"
-	".align 1\n"
-	"	call_via r0\n"
-	"	call_via r1\n"
-	"	call_via r2\n"
-	"	call_via r3\n"
-	"	call_via r4\n"
-	"	call_via r5\n"
-	"	call_via r6\n"
-	"	call_via r7\n"
-	"	call_via r8\n"
-	"	call_via r9\n"
-	"	call_via r10\n"
-	"	call_via r11\n"
-	"	call_via r12\n"
-	"	call_via r13\n"
-	"	call_via r14\n"
-);
-#endif
+/* stub for arch-specific syscall issues */
diff --git a/ldso/ldso/fdpic/dl-inlines.h b/ldso/ldso/fdpic/dl-inlines.h
index a9bfc93..f590875 100644
--- a/ldso/ldso/fdpic/dl-inlines.h
+++ b/ldso/ldso/fdpic/dl-inlines.h
@@ -159,7 +159,7 @@  eq_pointer(void *p, void *q)
 	return entry->entry_point == q;
 }
 
-void *
+static __always_inline void *
 _dl_funcdesc_for (void *entry_point, void *got_value)
 {
 	struct elf_resolve *tpnt = ((void**)got_value)[2];
diff --git a/ldso/libdl/Makefile.in b/ldso/libdl/Makefile.in
index 1ba8770..24e00fa 100644
--- a/ldso/libdl/Makefile.in
+++ b/ldso/libdl/Makefile.in
@@ -26,8 +26,6 @@  endif
 
 LIBS-libdl.so := $(LIBS) $(ldso)
 
-libdl_FULL_NAME := libdl-$(VERSION).so
-
 libdl_DIR := $(top_srcdir)ldso/libdl
 libdl_OUT := $(top_builddir)ldso/libdl
 
@@ -42,23 +40,7 @@  libdl-a-y := $(libdl-a-y:.o=.os)
 endif
 libdl-so-y := $(libdl_OUT)/libdl.oS
 
-lib-a-$(HAVE_SHARED) += $(top_builddir)lib/libdl.a
-lib-so-y += $(top_builddir)lib/libdl.so
 objclean-y += CLEAN_ldso/libdl
 
-$(top_builddir)lib/libdl.so: $(libdl_OUT)/libdl_so.a $(libc.depend)
-	$(call link.so,$(libdl_FULL_NAME),$(ABI_VERSION))
-	# link for backward compatibility
-	$(call link.so,$(libdl_FULL_NAME),0)
-
-$(libdl_OUT)/libdl_so.a: $(libdl-so-y)
-	$(Q)$(RM) $@
-	$(do_ar)
-
-$(top_builddir)lib/libdl.a: $(libdl-a-y)
-	$(Q)$(INSTALL) -d $(dir $@)
-	$(Q)$(RM) $@
-	$(do_ar)
-
 CLEAN_ldso/libdl:
 	$(do_rm) $(addprefix $(libdl_OUT)/*., o os oS a)
diff --git a/libc/Makefile.in b/libc/Makefile.in
index 05cec18..55fd3d3 100644
--- a/libc/Makefile.in
+++ b/libc/Makefile.in
@@ -18,7 +18,7 @@  endif
 CFLAGS-libc :=# intentionally left blank
 LDFLAGS-$(UCLIBC_FORMAT_DSBT_ELF)-libc.so := -Wl,--dsbt-index=2
 LDFLAGS-libc.so := $(LDFLAGS) $(VERSION_SCRIPT) -Wl,-init,$(SYMBOL_PREFIX)__uClibc_init
-LIBS-libc.so := $(interp) $(ldso) $(top_builddir)lib/$(NONSHARED_LIBNAME)
+LIBS-libc.so := $(interp) $(ldso) $(top_builddir)lib/$(NONSHARED_LIBNAME) $(top_builddir)lib/$(NONSHARED_LIBPTHREAD)
 
 # we have SHARED_LIBNAME=libc.so.$(ABI_VERSION) defined in Rules.mak
 libc_FULL_NAME := libuClibc-$(VERSION).so
@@ -42,7 +42,32 @@  else
 libc-a-y = $(libc-y) $(libc-static-y)
 endif
 
+libc-a-y += $(libnsl-a-y)
+libc-a-y += $(libresolv-a-y)
+libc-a-$(HAVE_SHARED) += $(libdl-a-y)
+libc-a-y += $(libm-a-y)
+libc-a-$(UCLIBC_HAS_LIBUTIL) += $(libutil-a-y)
+libc-a-$(UCLIBC_HAS_CRYPT) += $(libcrypt-a-y)
+libc-a-$(UCLIBC_HAS_ARGP) += $(libuargp-a-y)
+libc-a-$(UCLIBC_HAS_THREADS) += $(libpthread-a-y)
+libc-a-$(UCLIBC_HAS_REALTIME) += $(librt-a-y)
+libc-a-$(UCLIBC_HAS_GETTEXT_AWARENESS) += $(libintl-a-y)
+libc-a-$(UCLIBC_HAS_BACKTRACE) += $(libubacktrace-a-y)
+
 libc-so-y = $(libc-y:.o=.os) $(libc-shared-y)
+
+libc-so-y += $(libnsl-so-y)
+libc-so-y += $(libresolv-so-y)
+libc-so-y += $(libdl-so-y)
+libc-so-y += $(libm-so-y)
+libc-so-$(UCLIBC_HAS_LIBUTIL) += $(libutil-so-y)
+libc-so-$(UCLIBC_HAS_CRYPT) += $(libcrypt-so-y)
+libc-so-$(UCLIBC_HAS_ARGP) += $(libuargp-so-y)
+libc-so-$(UCLIBC_HAS_THREADS) += $(libpthread-so-y)
+libc-so-$(UCLIBC_HAS_REALTIME) += $(librt-so-y)
+libc-so-$(UCLIBC_HAS_GETTEXT_AWARENESS) += $(libintl-so-y)
+libc-so-$(UCLIBC_HAS_BACKTRACE) += $(libubacktrace-so-y)
+
 lib-a-y += $(top_builddir)lib/libc.a
 lib-gdb-y += $(top_builddir)lib/libc.gdb
 lib-so-y += $(libc.depend)
@@ -58,9 +83,9 @@  $(libc.depend): $(libc_OUT)/libc_so.a $(LIBS-libc.so)
 	$(Q)cat $(top_srcdir)extra/scripts/format.lds > $@.tmp
 	$(Q)$(OUTPUT_FORMAT) >> $@.tmp
 ifeq ($(COMPAT_ATEXIT),y)
-	$(Q)echo "GROUP ( $(NONSHARED_LIBNAME) $(SHARED_LIBNAME) $(ASNEEDED) )" >> $@.tmp
+	$(Q)echo "GROUP ( $(NONSHARED_LIBNAME) $(NONSHARED_LIBPTHREAD) $(SHARED_LIBNAME) $(ASNEEDED) )" >> $@.tmp
 else
-	$(Q)echo "GROUP ( $(SHARED_LIBNAME) $(NONSHARED_LIBNAME) $(ASNEEDED) )" >> $@.tmp
+	$(Q)echo "GROUP ( $(SHARED_LIBNAME) $(NONSHARED_LIBNAME) $(NONSHARED_LIBPTHREAD) $(ASNEEDED) )" >> $@.tmp
 endif
 	$(Q)mv $@.tmp $@
 
diff --git a/libc/misc/internals/__uClibc_main.c b/libc/misc/internals/__uClibc_main.c
index 9bb81fc..46e24d8 100644
--- a/libc/misc/internals/__uClibc_main.c
+++ b/libc/misc/internals/__uClibc_main.c
@@ -29,7 +29,6 @@ 
 #include <fcntl.h>
 #endif
 #ifdef __UCLIBC_HAS_THREADS_NATIVE__
-#include <pthread-functions.h>
 #include <not-cancel.h>
 #include <atomic.h>
 #include <tls.h>
@@ -69,42 +68,6 @@  uintptr_t __stack_chk_guard attribute_relro;
 
 void internal_function _dl_aux_init (ElfW(auxv_t) *av);
 
-#ifdef __UCLIBC_HAS_THREADS__
-/*
- * uClibc internal locking requires that we have weak aliases
- * for dummy functions in case libpthread.a is not linked in.
- * This needs to be in compilation unit that is pulled always
- * in or linker will disregard these weaks.
- */
-
-static int __pthread_return_0 (pthread_mutex_t *unused) { return 0; }
-weak_alias (__pthread_return_0, __pthread_mutex_lock)
-weak_alias (__pthread_return_0, __pthread_mutex_trylock)
-weak_alias (__pthread_return_0, __pthread_mutex_unlock)
-
-int weak_function
-__pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr)
-{
-        return 0;
-}
-
-void weak_function
-_pthread_cleanup_push_defer(struct _pthread_cleanup_buffer *__buffer,
-                            void (*__routine) (void *), void *__arg)
-{
-        __buffer->__routine = __routine;
-        __buffer->__arg = __arg;
-}
-
-void weak_function
-_pthread_cleanup_pop_restore(struct _pthread_cleanup_buffer *__buffer,
-                             int __execute)
-{
-        if (__execute)
-                __buffer->__routine(__buffer->__arg);
-}
-#endif /* __UCLIBC_HAS_THREADS__ */
-
 #endif /* !SHARED */
 
 /* Defeat compiler optimization which assumes function addresses are never NULL */
@@ -492,20 +455,12 @@  void __uClibc_main(int (*main)(int, char **, char **), int argc,
 	else
 	{
 		/* Remove the thread-local data.  */
-# ifdef SHARED
-		__libc_pthread_functions.ptr__nptl_deallocate_tsd ();
-# else
 		__nptl_deallocate_tsd ();
-# endif
 
 		/* One less thread.  Decrement the counter.  If it is zero we
 		   terminate the entire process.  */
 		result = 0;
-# ifdef SHARED
-		unsigned int *const ptr = __libc_pthread_functions.ptr_nthreads;
-# else
 		unsigned int *const ptr = &__nptl_nthreads;
-# endif
 
 		if (! atomic_decrement_and_test (ptr))
 			/* Not much left to do but to exit the thread, not the process.  */
diff --git a/libc/misc/locale/locale.c b/libc/misc/locale/locale.c
index f868ac0..e38792b 100644
--- a/libc/misc/locale/locale.c
+++ b/libc/misc/locale/locale.c
@@ -58,9 +58,6 @@ 
 #include <ctype.h>
 #include <stdio.h>
 
-#undef link_warning
-#define link_warning(A,B)
-
 #undef __LOCALE_C_ONLY
 #ifndef __UCLIBC_HAS_LOCALE__
 #define __LOCALE_C_ONLY
@@ -118,8 +115,6 @@  extern void _locale_init_l(__locale_t base) attribute_hidden;
 
 #ifdef __LOCALE_C_ONLY
 
-link_warning(setlocale,"REMINDER: The 'setlocale' function supports only C|POSIX locales.")
-
 static const char C_string[] = "C";
 
 char *setlocale(int category, register const char *locale)
@@ -135,10 +130,6 @@  char *setlocale(int category, register const char *locale)
 
 #else /* ---------------------------------------------- __LOCALE_C_ONLY */
 
-#ifdef __UCLIBC_HAS_THREADS__
-link_warning(setlocale,"REMINDER: The 'setlocale' function is _not_ threadsafe except for simple queries.")
-#endif
-
 #if !defined(__LOCALE_DATA_NUM_LOCALES) || (__LOCALE_DATA_NUM_LOCALES <= 1)
 #error locales enabled, but not data other than for C locale!
 #endif
@@ -263,8 +254,6 @@  char *setlocale(int category, const char *locale)
 
 #ifdef __LOCALE_C_ONLY
 
-link_warning(localeconv,"REMINDER: The 'localeconv' function is hardwired for C/POSIX locale only.")
-
 static struct lconv the_lconv;
 
 static const char decpt[] = ".";
@@ -1002,8 +991,6 @@  libc_hidden_def(__XL_NPP(nl_langinfo))
 /**********************************************************************/
 #ifdef L_newlocale
 
-#warning mask defines for extra locale categories
-
 static const char posix[] = "POSIX";
 static const char utf8[] = "UTF-8";
 
diff --git a/libc/signal/Makefile.in b/libc/signal/Makefile.in
index 6c355b5..d5639d1 100644
--- a/libc/signal/Makefile.in
+++ b/libc/signal/Makefile.in
@@ -7,7 +7,7 @@ 
 
 subdirs += libc/signal
 
-CSRC-y := allocrtsig.c killpg.c raise.c sigaction.c sigaddset.c sigandset.c \
+CSRC-y := allocrtsig.c killpg.c sigaction.c sigaddset.c sigandset.c \
 	sigdelset.c sigempty.c sigfillset.c \
 	sigisempty.c sigismem.c sigjmp.c signal.c \
 	sigorset.c sigsetops.c sigwait.c
@@ -16,7 +16,10 @@  CSRC-$(UCLIBC_HAS_OBSOLETE_BSD_SIGNAL) += \
 CSRC-$(UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL) += sysv_signal.c
 CSRC-$(UCLIBC_SUSV4_LEGACY) += sigintr.c sigpause.c
 
-CSRC-$(UCLIBC_HAS_THREADS_NATIVE):=$(filter-out raise.c,$(CSRC-y))
+# only use simple raise.c when threads are disabled
+ifeq ($(UCLIBC_HAS_THREADS),)
+CSRC-y += raise.c
+endif
 
 ifneq ($(strip $(ARCH_OBJS-y)),)
 CSRC-y := $(filter-out $(notdir $(ARCH_OBJS-y:.o=.c)),$(CSRC-y))
diff --git a/libc/sysdeps/linux/arm/Makefile.arch b/libc/sysdeps/linux/arm/Makefile.arch
index cda3db2..78f7533 100644
--- a/libc/sysdeps/linux/arm/Makefile.arch
+++ b/libc/sysdeps/linux/arm/Makefile.arch
@@ -13,7 +13,6 @@  SSRC-y := \
 	vfork.S clone.S
 
 SSRC-$(UCLIBC_HAS_LFS) += mmap64.S
-SSRC-$(UCLIBC_HAS_THREADS_NATIVE) += libc-thumb_atomics.S
 libc-nonshared-$(UCLIBC_HAS_THREADS_NATIVE) += $(ARCH_OUT)/libc-aeabi_read_tp.os
 libc-static-$(UCLIBC_HAS_THREADS_NATIVE) += $(ARCH_OUT)/libc-aeabi_read_tp.o
 CSRC-$(UCLIBC_HAS_CONTEXT_FUNCS) += makecontext.c
diff --git a/libc/sysdeps/linux/arm/libc-thumb_atomics.S b/libc/sysdeps/linux/arm/libc-thumb_atomics.S
deleted file mode 100644
index e7bc895..0000000
--- a/libc/sysdeps/linux/arm/libc-thumb_atomics.S
+++ /dev/null
@@ -1 +0,0 @@ 
-#include <ldso/ldso/arm/thumb_atomics.S>
diff --git a/libc/sysdeps/linux/common/Makefile.in b/libc/sysdeps/linux/common/Makefile.in
index 887dc3d..6c35bff 100644
--- a/libc/sysdeps/linux/common/Makefile.in
+++ b/libc/sysdeps/linux/common/Makefile.in
@@ -75,11 +75,13 @@  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),y)
+CSRC- += raise.c
+endif
 ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
-CSRC- += fork.c getpid.c raise.c #open.c close.c read.c write.c
+CSRC- += fork.c getpid.c
 CSRC- += $(if $(findstring =arm=,=$(TARGET_ARCH)=),vfork.c)
 CSRC- += $(if $(findstring =x86_64=,=$(TARGET_ARCH)=),vfork.c)
-#CSRC- += $(if $(findstring =mips=y=,=$(TARGET_ARCH)=$(CONFIG_MIPS_O32_ABI)=),waitpid.c)
 CSRC- += $(if $(findstring =metag=,=$(TARGET_ARCH)=),vfork.c)
 endif
 ifneq ($(ARCH_HAS_DEPRECATED_SYSCALLS),y)
@@ -97,6 +99,10 @@  CSRC-$(UCLIBC_HAS_REALTIME) += clock_adjtime.c clock_getres.c clock_gettime.c cl
 	nanosleep.c __rt_sigtimedwait.c __rt_sigwaitinfo.c sched_getparam.c \
 	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
+# use clock_gettime.c from librt only for NPTL
+ifeq ($(UCLIBC_HAS_REALTIME)$(UCLIBC_HAS_THREADS_NATIVE),yy)
+CSRC- += clock_gettime.c
+endif
 # 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 \
 	posix_fallocate.c posix_fallocate64.c
diff --git a/libc/sysdeps/linux/common/bits/uClibc_locale.h b/libc/sysdeps/linux/common/bits/uClibc_locale.h
index b42236d..6598eaf 100644
--- a/libc/sysdeps/linux/common/bits/uClibc_locale.h
+++ b/libc/sysdeps/linux/common/bits/uClibc_locale.h
@@ -326,11 +326,6 @@  extern int __locale_mbrtowc_l(wchar_t *__restrict dst,
 				__locale_t loc) attribute_hidden;
 #endif
 
-#ifdef L_setlocale
-/* so we only get the warning once... */
-#warning need thread version of CUR_LOCALE!
-#endif
-
 /**********************************************************************/
 #ifdef __UCLIBC_HAS_XLOCALE__
 
diff --git a/libc/sysdeps/linux/i386/Makefile.arch b/libc/sysdeps/linux/i386/Makefile.arch
index 1c72d23..581e10a 100644
--- a/libc/sysdeps/linux/i386/Makefile.arch
+++ b/libc/sysdeps/linux/i386/Makefile.arch
@@ -9,8 +9,7 @@  CSRC-y := brk.c __syscall_error.c sigaction.c
 
 SSRC-y := \
 	__longjmp.S setjmp.S bsd-setjmp.S bsd-_setjmp.S \
-	sync_file_range.S syscall.S mmap.S \
-	copysign.S
+	sync_file_range.S syscall.S mmap.S
 
 SSRC-$(UCLIBC_HAS_LFS) += mmap64.S
 SSRC-$(if $(findstring yy,$(UCLIBC_HAS_ADVANCED_REALTIME)$(UCLIBC_HAS_LFS)),y) += posix_fadvise64.S
diff --git a/libcrypt/Makefile.in b/libcrypt/Makefile.in
index eb2d452..fe3df29 100644
--- a/libcrypt/Makefile.in
+++ b/libcrypt/Makefile.in
@@ -9,13 +9,6 @@  subdirs += libcrypt
 
 CFLAGS-libcrypt := -DNOT_IN_libc -DIS_IN_libcrypt $(SSP_ALL_CFLAGS)
 
-LDFLAGS-$(UCLIBC_FORMAT_DSBT_ELF)-libcrypt.so := -Wl,--dsbt-index=4
-LDFLAGS-libcrypt.so := $(LDFLAGS)
-
-LIBS-libcrypt.so := $(LIBS)
-
-libcrypt_FULL_NAME := libcrypt-$(VERSION).so
-
 libcrypt_DIR := $(top_srcdir)libcrypt
 libcrypt_OUT := $(top_builddir)libcrypt
 
@@ -35,31 +28,11 @@  libcrypt-a-y := $(libcrypt_OBJ)
 endif
 libcrypt-so-y := $(libcrypt_OBJ:.o=.os)
 
-lib-a-$(UCLIBC_HAS_CRYPT)  += $(top_builddir)lib/libcrypt.a
-lib-so-$(UCLIBC_HAS_CRYPT) += $(top_builddir)lib/libcrypt.so
 objclean-y += CLEAN_libcrypt
 
-ifeq ($(DOPIC),y)
-$(top_builddir)lib/libcrypt.so: $(top_builddir)lib/libcrypt.a $(libc.depend)
-else
-$(top_builddir)lib/libcrypt.so: $(libcrypt_OUT)/libcrypt_so.a $(libc.depend)
-endif
-	$(call link.so,$(libcrypt_FULL_NAME),$(ABI_VERSION))
-	# link for backward compatibility
-	$(call link.so,$(libcrypt_FULL_NAME),0)
-
-$(libcrypt_OUT)/libcrypt_so.a: $(libcrypt-so-y)
-	$(Q)$(RM) $@
-	$(do_ar)
-
 $(libcrypt_OUT)/libcrypt.oS: $(libcrypt_SRC)
 	$(Q)$(RM) $@
 	$(compile-m)
 
-$(top_builddir)lib/libcrypt.a: $(libcrypt-a-y)
-	$(Q)$(INSTALL) -d $(dir $@)
-	$(Q)$(RM) $@
-	$(do_ar)
-
 CLEAN_libcrypt:
 	$(do_rm) $(addprefix $(libcrypt_OUT)/*., o os oS a)
diff --git a/libintl/Makefile.in b/libintl/Makefile.in
index 6c3e79b..b54e23d 100644
--- a/libintl/Makefile.in
+++ b/libintl/Makefile.in
@@ -9,12 +9,6 @@  subdirs += libintl
 
 CFLAGS-libintl := -DNOT_IN_libc -DIS_IN_libintl $(SSP_ALL_CFLAGS)
 
-LDFLAGS-libintl.so := $(LDFLAGS)
-
-LIBS-libintl.so := $(LIBS)
-
-libintl_FULL_NAME := libintl-$(VERSION).so
-
 MOBJ := \
 	gettext.o ngettext.o  dgettext.o dcgettext.o dngettext.o dcngettext.o \
 	textdomain.o bindtextdomain.o bind_textdomain_codeset.o \
@@ -33,32 +27,12 @@  libintl-a-y := $(libintl_MOBJ)
 endif
 libintl-so-y := $(libintl_MOBJ:.o=.os)
 
-lib-a-$(UCLIBC_HAS_GETTEXT_AWARENESS) += $(top_builddir)lib/libintl.a
-lib-so-$(UCLIBC_HAS_GETTEXT_AWARENESS) += $(top_builddir)lib/libintl.so
 objclean-y += CLEAN_libintl
 
-ifeq ($(DOPIC),y)
-$(top_builddir)lib/libintl.so: $(top_builddir)lib/libintl.a $(libc.depend)
-else
-$(top_builddir)lib/libintl.so: $(libintl_OUT)/libintl_so.a $(libc.depend)
-endif
-	$(call link.so,$(libintl_FULL_NAME),$(ABI_VERSION))
-	# link for backward compatibility
-	$(call link.so,$(libintl_FULL_NAME),0)
-
-$(libintl_OUT)/libintl_so.a: $(libintl-so-y)
-	$(Q)$(RM) $@
-	$(do_ar)
-
 $(libintl_OUT)/libintl.oS: $(libintl_MSRC)
 	$(Q)$(RM) $@
 	$(compile-m)
 
-$(top_builddir)lib/libintl.a: $(libintl-a-y)
-	$(Q)$(INSTALL) -d $(dir $@)
-	$(Q)$(RM) $@
-	$(do_ar)
-
 $(libintl_MOBJ): $(libintl_MSRC)
 	$(compile.m)
 
diff --git a/libm/Makefile.in b/libm/Makefile.in
index 0d6ca05..9b40a94 100644
--- a/libm/Makefile.in
+++ b/libm/Makefile.in
@@ -24,13 +24,6 @@  subdirs += libm libm/$(TARGET_ARCH)
 
 CFLAGS-libm := -DNOT_IN_libc -DIS_IN_libm $(SSP_ALL_CFLAGS)
 
-LDFLAGS-$(UCLIBC_FORMAT_DSBT_ELF)-libm.so := -Wl,--dsbt-index=5
-LDFLAGS-libm.so := $(LDFLAGS)
-
-LIBS-libm.so := $(LIBS)
-
-libm_FULL_NAME := libm-$(VERSION).so
-
 libm_DIR:=$(top_srcdir)libm
 libm_OUT:=$(top_builddir)libm
 
@@ -286,32 +279,12 @@  libm-a-y += $(libm_OBJS)
 endif
 libm-so-y += $(libm_OBJS:.o=.os)
 
-lib-a-$(UCLIBC_HAS_FLOATS) += $(top_builddir)lib/libm.a
-lib-so-$(UCLIBC_HAS_FLOATS) += $(top_builddir)lib/libm.so
 objclean-y += CLEAN_libm
 
-ifeq ($(DOPIC),y)
-$(top_builddir)lib/libm.so: $(top_builddir)lib/libm.a $(libc.depend)
-else
-$(top_builddir)lib/libm.so: $(libm_OUT)/libm_so.a $(libc.depend)
-endif
-	$(call link.so,$(libm_FULL_NAME),$(ABI_VERSION))
-	# link for backward compatibility
-	$(call link.so,$(libm_FULL_NAME),0)
-
-$(libm_OUT)/libm_so.a: $(libm-so-y)
-	$(Q)$(RM) $@
-	$(do_ar)
-
 $(libm_OUT)/libm.oS: $(libm_SRC) $(libm_MSRC_FL) $(libm_MSRC_LD) $(libm_ARCH_SRC)
 	$(Q)$(RM) $@
 	$(compile-m)
 
-$(top_builddir)lib/libm.a: $(libm-a-y)
-	$(Q)$(INSTALL) -d $(dir $@)
-	$(Q)$(RM) $@
-	$(do_ar)
-
 $(libm_MOBJ_FL): $(libm_MSRC_FL)
 	$(compile.m)
 
diff --git a/libnsl/Makefile.in b/libnsl/Makefile.in
index e79268c..d6ee956 100644
--- a/libnsl/Makefile.in
+++ b/libnsl/Makefile.in
@@ -9,13 +9,6 @@  subdirs += libnsl
 
 CFLAGS-libnsl := -DNOT_IN_libc -DIS_IN_libnsl $(SSP_ALL_CFLAGS)
 
-LDFLAGS-$(UCLIBC_FORMAT_DSBT_ELF)-libnsl.so := -Wl,--dsbt-index=6
-LDFLAGS-libnsl.so := $(LDFLAGS) $(call link.asneeded,-lc)
-
-LIBS-libnsl.so := $(LIBS)
-
-libnsl_FULL_NAME := libnsl-$(VERSION).so
-
 libnsl_DIR := $(top_srcdir)libnsl
 libnsl_OUT := $(top_builddir)libnsl
 
@@ -29,27 +22,7 @@  libnsl-a-y := $(libnsl_OBJ)
 endif
 libnsl-so-y := $(libnsl_OBJ:.o=.os)
 
-lib-a-$(UCLIBC_HAS_LIBNSL_STUB) += $(top_builddir)lib/libnsl.a
-lib-so-$(UCLIBC_HAS_LIBNSL_STUB) += $(top_builddir)lib/libnsl.so
 objclean-y += CLEAN_libnsl
 
-ifeq ($(DOPIC),y)
-$(top_builddir)lib/libnsl.so: $(top_builddir)lib/libnsl.a $(libc.depend)
-else
-$(top_builddir)lib/libnsl.so: $(libnsl_OUT)/libnsl_so.a $(libc.depend)
-endif
-	$(call link.so,$(libnsl_FULL_NAME),$(ABI_VERSION))
-	# link for backward compatibility
-	$(call link.so,$(libnsl_FULL_NAME),0)
-
-$(libnsl_OUT)/libnsl_so.a: $(libnsl-so-y)
-	$(Q)$(RM) $@
-	$(do_ar)
-
-$(top_builddir)lib/libnsl.a: $(libnsl-a-y)
-	$(Q)$(INSTALL) -d $(dir $@)
-	$(Q)$(RM) $@
-	$(do_ar)
-
 CLEAN_libnsl:
 	$(do_rm) $(addprefix $(libnsl_OUT)/*., o os a)
diff --git a/libpthread/linuxthreads/Makefile.in b/libpthread/linuxthreads/Makefile.in
index 47c45ef..ffdd5d4 100644
--- a/libpthread/linuxthreads/Makefile.in
+++ b/libpthread/linuxthreads/Makefile.in
@@ -11,20 +11,6 @@  subdirs += libpthread/linuxthreads
 CFLAGS-dir_linuxthreads := -DNOT_IN_libc -DIS_IN_libpthread
 CFLAGS-libpthread/linuxthreads := $(CFLAGS-dir_linuxthreads) $(SSP_ALL_CFLAGS)
 
-ifeq ($(PTHREADS_DEBUG_SUPPORT),y)
-LDFLAGS-libpthread.so := $(LDFLAGS_NOSTRIP) -Wl,-z,defs
-else
-LDFLAGS-libpthread.so := $(LDFLAGS)
-endif
-LDFLAGS-$(UCLIBC_FORMAT_DSBT_ELF)-libpthread.so := -Wl,--dsbt-index=10
-
-LIBS-libpthread.so := $(LIBS) $(ldso)
-
-START_FILE-libpthread.so := $(SHARED_START_FILES)
-END_FILE-libpthread.so := $(SHARED_END_FILES)
-
-libpthread_FULL_NAME := libpthread-$(VERSION).so
-
 libpthread_DIR := $(top_srcdir)libpthread/linuxthreads
 libpthread_OUT := $(top_builddir)libpthread/linuxthreads
 
@@ -50,9 +36,8 @@  libpthread_OBJ := $(patsubst $(libpthread_DIR)/%.c,$(libpthread_OUT)/%.o,$(libpt
 #
 # Stuff that goes into libc.so, not libpthread.so
 #
-CFLAGS-OMIT-forward.c := $(CFLAGS-dir_linuxthreads)
 CFLAGS-OMIT-libc_pthread_init.c := $(CFLAGS-dir_linuxthreads)
-libpthread_libc_CSRC := forward.c libc_pthread_init.c
+libpthread_libc_CSRC := libc_pthread_init.c
 libpthread_libc_OBJ  := $(patsubst %.c, $(libpthread_OUT)/%.o,$(libpthread_libc_CSRC))
 libc-static-y += $(libpthread_OUT)/libc_pthread_init.o
 libc-shared-y += $(libpthread_libc_OBJ:.o=.oS)
@@ -64,24 +49,6 @@  libpthread-a-y  += $(libpthread_OBJ)
 endif
 libpthread-so-y += $(libpthread_OBJ:.o=.oS)
 
-lib-a-$(UCLIBC_HAS_THREADS) += $(top_builddir)lib/libpthread.a
-lib-so-$(UCLIBC_HAS_THREADS) += $(top_builddir)lib/libpthread.so
-
-$(top_builddir)lib/libpthread.so: $(libpthread_OUT)/libpthread_so.a $(libc.depend) $(top_builddir)lib/libpthread_nonshared.a
-	$(call link.so,$(libpthread_FULL_NAME),$(ABI_VERSION))
-	# link for backward compatibility
-	$(call link.so,$(libpthread_FULL_NAME),0)
-	$(Q)cat $(top_srcdir)extra/scripts/format.lds > $@.tmp
-	$(Q)echo "GROUP ( $(notdir $@).$(ABI_VERSION) libpthread_nonshared.a )" >> $@.tmp
-	$(Q)mv $@.tmp $@
-
-ifeq ($(PTHREADS_DEBUG_SUPPORT),y)
-$(libpthread_OUT)/libpthread_so.a: STRIP_FLAGS:=$(STRIP_FLAGS:-x=-X --strip-debug)
-endif
-$(libpthread_OUT)/libpthread_so.a: $(libpthread-so-y)
-	$(Q)$(RM) $@
-	$(do_ar)
-
 ifeq ($(PTHREADS_DEBUG_SUPPORT),y)
 $(libpthread_OUT)/libpthread.oS: STRIP_FLAGS:=$(STRIP_FLAGS:-x=-X --strip-debug)
 endif
@@ -89,14 +56,6 @@  $(libpthread_OUT)/libpthread.oS: $(libpthread_SRC)
 	$(Q)$(RM) $@
 	$(compile-m)
 
-ifeq ($(PTHREADS_DEBUG_SUPPORT),y)
-$(top_builddir)lib/libpthread.a: STRIP_FLAGS:=$(STRIP_FLAGS:-x=-X --strip-debug)
-endif
-$(top_builddir)lib/libpthread.a: $(libpthread-a-y)
-	$(Q)$(INSTALL) -d $(dir $@)
-	$(Q)$(RM) $@
-	$(do_ar)
-
 $(top_builddir)include/pthread.h:
 	$(do_ln) $(call rel_srcdir)$(PTDIR)/sysdeps/pthread/$(@F) $@
 $(top_builddir)include/semaphore.h:
diff --git a/libpthread/linuxthreads/forward.c b/libpthread/linuxthreads/forward.c
deleted file mode 100644
index 08295c8..0000000
--- a/libpthread/linuxthreads/forward.c
+++ /dev/null
@@ -1,173 +0,0 @@ 
-/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
-
-   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 <features.h>
-#include <stdlib.h>
-#include <dlfcn.h>
-
-/* psm: keep this before internals.h */
-#if 0
-vda: here is why:
-headers contain libc_hidden_proto(foo).
-In libpthread/linuxthreads/sysdeps/pthread/bits/libc-lock.h
-adding libc_hidden_proto(foo) just before weak_extern (__pthread_initialize)
-will not warn:
-    /* libc_hidden_proto(foo) */
-    weak_extern (__pthread_initialize)
-    /* libc_hidden_proto(foo) */
-but adding after will! Which is extremely strange -
-weak_extern expands into just "#pragma weak __pthread_initialize".
-TODO: determine whether it is a gcc bug or what
-(see gcc.gnu.org/PR36282).
-For now, just include all headers before internals.h
-(they are again included in internals.h - maybe remove them there later)
-#endif
-
-#include <string.h>
-#include <limits.h>
-#include <setjmp.h>
-#include <signal.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <sys/time.h>
-
-#include "internals.h"
-
-/* Pointers to the libc functions.  */
-struct pthread_functions __libc_pthread_functions attribute_hidden;
-
-
-# define FORWARD2(name, rettype, decl, params, defaction) \
-rettype									      \
-name decl								      \
-{									      \
-  if (__libc_pthread_functions.ptr_##name == NULL)			      \
-    defaction;								      \
-									      \
-  return __libc_pthread_functions.ptr_##name params;			      \
-}
-
-# define FORWARD(name, decl, params, defretval) \
-  FORWARD2 (name, int, decl, params, return defretval)
-
-FORWARD (pthread_attr_destroy, (pthread_attr_t *attr), (attr), 0)
-
-FORWARD (pthread_attr_init, (pthread_attr_t *attr), (attr), 0)
-
-FORWARD (pthread_attr_getdetachstate,
-	 (const pthread_attr_t *attr, int *detachstate), (attr, detachstate),
-	 0)
-FORWARD (pthread_attr_setdetachstate, (pthread_attr_t *attr, int detachstate),
-	 (attr, detachstate), 0)
-
-FORWARD (pthread_attr_getinheritsched,
-	 (const pthread_attr_t *attr, int *inherit), (attr, inherit), 0)
-FORWARD (pthread_attr_setinheritsched, (pthread_attr_t *attr, int inherit),
-	 (attr, inherit), 0)
-
-FORWARD (pthread_attr_getschedparam,
-	 (const pthread_attr_t *attr, struct sched_param *param),
-	 (attr, param), 0)
-FORWARD (pthread_attr_setschedparam,
-	 (pthread_attr_t *attr, const struct sched_param *param),
-	 (attr, param), 0)
-
-FORWARD (pthread_attr_getschedpolicy,
-	 (const pthread_attr_t *attr, int *policy), (attr, policy), 0)
-FORWARD (pthread_attr_setschedpolicy, (pthread_attr_t *attr, int policy),
-	 (attr, policy), 0)
-
-FORWARD (pthread_attr_getscope,
-	 (const pthread_attr_t *attr, int *scope), (attr, scope), 0)
-FORWARD (pthread_attr_setscope, (pthread_attr_t *attr, int scope),
-	 (attr, scope), 0)
-
-
-FORWARD (pthread_condattr_destroy, (pthread_condattr_t *attr), (attr), 0)
-FORWARD (pthread_condattr_init, (pthread_condattr_t *attr), (attr), 0)
-
-
-FORWARD (pthread_cond_broadcast, (pthread_cond_t *cond), (cond), 0)
-
-FORWARD (pthread_cond_destroy, (pthread_cond_t *cond), (cond), 0)
-
-FORWARD (pthread_cond_init,
-	 (pthread_cond_t *cond, const pthread_condattr_t *cond_attr),
-	 (cond, cond_attr), 0)
-
-FORWARD (pthread_cond_signal, (pthread_cond_t *cond), (cond), 0)
-
-FORWARD (pthread_cond_wait, (pthread_cond_t *cond, pthread_mutex_t *mutex),
-	 (cond, mutex), 0)
-
-FORWARD (pthread_cond_timedwait,
-	 (pthread_cond_t *cond, pthread_mutex_t *mutex,
-	  const struct timespec *abstime), (cond, mutex, abstime), 0)
-
-
-FORWARD (pthread_equal, (pthread_t thread1, pthread_t thread2),
-	 (thread1, thread2), 1)
-
-
-/* Use an alias to avoid warning, as pthread_exit is declared noreturn.  */
-FORWARD2 (__pthread_exit, void, (void *retval), (retval), exit (EXIT_SUCCESS))
-strong_alias (__pthread_exit, pthread_exit)
-
-
-FORWARD (pthread_getschedparam,
-	 (pthread_t target_thread, int *policy, struct sched_param *param),
-	 (target_thread, policy, param), 0)
-FORWARD (pthread_setschedparam,
-	 (pthread_t target_thread, int policy,
-	  const struct sched_param *param), (target_thread, policy, param), 0)
-
-
-FORWARD (pthread_mutex_destroy, (pthread_mutex_t *mutex), (mutex), 0)
-
-FORWARD (pthread_mutex_init,
-	 (pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr),
-	 (mutex, mutexattr), 0)
-strong_alias(pthread_mutex_init, __pthread_mutex_init)
-
-FORWARD (pthread_mutex_lock, (pthread_mutex_t *mutex), (mutex), 0)
-strong_alias(pthread_mutex_lock, __pthread_mutex_lock)
-
-FORWARD (pthread_mutex_trylock, (pthread_mutex_t *mutex), (mutex), 0)
-strong_alias(pthread_mutex_trylock, __pthread_mutex_trylock)
-
-FORWARD (pthread_mutex_unlock, (pthread_mutex_t *mutex), (mutex), 0)
-strong_alias(pthread_mutex_unlock, __pthread_mutex_unlock)
-
-FORWARD2 (pthread_self, pthread_t, (void), (), return 0)
-
-
-FORWARD (pthread_setcancelstate, (int state, int *oldstate), (state, oldstate),
-	 0)
-
-FORWARD (pthread_setcanceltype, (int type, int *oldtype), (type, oldtype), 0)
-
-#if 0
-FORWARD2 (_pthread_cleanup_push, void, (struct _pthread_cleanup_buffer * buffer, void (*routine)(void *), void * arg), (buffer, routine, arg), return)
-#endif
-FORWARD2 (_pthread_cleanup_push_defer, void, (struct _pthread_cleanup_buffer * buffer, void (*routine)(void *), void * arg), (buffer, routine, arg), return)
-
-#if 0
-FORWARD2 (_pthread_cleanup_pop, void, (struct _pthread_cleanup_buffer * buffer, int execute), (buffer, execute), return)
-#endif
-FORWARD2 (_pthread_cleanup_pop_restore, void, (struct _pthread_cleanup_buffer * buffer, int execute), (buffer, execute), return)
diff --git a/libpthread/linuxthreads/internals.h b/libpthread/linuxthreads/internals.h
index 1b310b5..ab6b015 100644
--- a/libpthread/linuxthreads/internals.h
+++ b/libpthread/linuxthreads/internals.h
@@ -446,7 +446,6 @@  static __inline__ pthread_descr thread_self (void)
 
 /* Defined and used in libc.so.  */
 extern int __libc_multiple_threads attribute_hidden;
-extern int __librt_multiple_threads;
 
 /* Internal global functions */
 
@@ -524,6 +523,6 @@  extern void __linuxthreads_create_event (void) attribute_hidden;
 extern void __linuxthreads_death_event (void) attribute_hidden;
 extern void __linuxthreads_reap_event (void) attribute_hidden;
 
-#include <pthread-functions.h>
+extern int * __libc_pthread_init (void);
 
 #endif /* internals.h */
diff --git a/libpthread/linuxthreads/libc_pthread_init.c b/libpthread/linuxthreads/libc_pthread_init.c
index b64da05..26f1abc 100644
--- a/libpthread/linuxthreads/libc_pthread_init.c
+++ b/libpthread/linuxthreads/libc_pthread_init.c
@@ -18,20 +18,11 @@ 
 
 #include <locale.h>
 #include <string.h>
-#include <linuxthreads/sysdeps/pthread/pthread-functions.h>
-
 
 int __libc_multiple_threads attribute_hidden __attribute__((nocommon));
 
-int * __libc_pthread_init (const struct pthread_functions *functions)
+int * __libc_pthread_init (void)
 {
-#ifdef SHARED
-  /* We copy the content of the variable pointed to by the FUNCTIONS
-     parameter to one in libc.so since this means access to the array
-     can be done with one memory access instead of two.  */
-  memcpy (&__libc_pthread_functions, functions,
-	  sizeof (__libc_pthread_functions));
-#endif
 
 #if !defined __UCLIBC_HAS_TLS__ && defined __UCLIBC_HAS_XLOCALE__
   /* Initialize thread-locale current locale to point to the global one.
diff --git a/libpthread/linuxthreads/manager.c b/libpthread/linuxthreads/manager.c
index e4022f8..2a1ee62 100644
--- a/libpthread/linuxthreads/manager.c
+++ b/libpthread/linuxthreads/manager.c
@@ -47,9 +47,6 @@ 
 # define USE_SELECT
 #endif
 
-libpthread_hidden_proto(waitpid)
-libpthread_hidden_proto(raise)
-
 /* Array of active threads. Entry 0 is reserved for the initial thread. */
 struct pthread_handle_struct __pthread_handles[PTHREAD_THREADS_MAX] =
 { { __LOCK_INITIALIZER, &__pthread_initial_thread, 0},
diff --git a/libpthread/linuxthreads/pthread.c b/libpthread/linuxthreads/pthread.c
index 00197b1..d02da6b 100644
--- a/libpthread/linuxthreads/pthread.c
+++ b/libpthread/linuxthreads/pthread.c
@@ -36,9 +36,6 @@ 
 #include <sys/types.h>
 #include <sys/syscall.h>
 
-libpthread_hidden_proto(waitpid)
-libpthread_hidden_proto(raise)
-
 /* These variables are used by the setup code.  */
 extern int _errno;
 extern int _h_errno;
@@ -216,16 +213,12 @@  int __pthread_timedsuspend_new(pthread_descr self, const struct timespec *abstim
    values to some unreasonable value which will signal failing of all
    the functions below.  */
 #ifndef __NR_rt_sigaction
-static int current_rtmin = -1;
-static int current_rtmax = -1;
 int __pthread_sig_restart = SIGUSR1;
 int __pthread_sig_cancel = SIGUSR2;
 int __pthread_sig_debug;
 #else
 
 #if __SIGRTMAX - __SIGRTMIN >= 3
-static int current_rtmin = __SIGRTMIN + 3;
-static int current_rtmax = __SIGRTMAX;
 int __pthread_sig_restart = __SIGRTMIN;
 int __pthread_sig_cancel = __SIGRTMIN + 1;
 int __pthread_sig_debug = __SIGRTMIN + 2;
@@ -233,8 +226,6 @@  void (*__pthread_restart)(pthread_descr) = __pthread_restart_new;
 void (*__pthread_suspend)(pthread_descr) = __pthread_wait_for_restart_signal;
 int (*__pthread_timedsuspend)(pthread_descr, const struct timespec *) = __pthread_timedsuspend_new;
 #else
-static int current_rtmin = __SIGRTMIN;
-static int current_rtmax = __SIGRTMAX;
 int __pthread_sig_restart = SIGUSR1;
 int __pthread_sig_cancel = SIGUSR2;
 int __pthread_sig_debug;
@@ -243,32 +234,6 @@  void (*__pthread_suspend)(pthread_descr) = __pthread_suspend_old;
 int (*__pthread_timedsuspend)(pthread_descr, const struct timespec *) = __pthread_timedsuspend_old;
 
 #endif
-
-/* Return number of available real-time signal with highest priority.  */
-int __libc_current_sigrtmin (void)
-{
-    return current_rtmin;
-}
-
-/* Return number of available real-time signal with lowest priority.  */
-int __libc_current_sigrtmax (void)
-{
-    return current_rtmax;
-}
-
-#if 0
-/* Allocate real-time signal with highest/lowest available
-   priority.  Please note that we don't use a lock since we assume
-   this function to be called at program start.  */
-int __libc_allocate_rtsig (int high);
-int __libc_allocate_rtsig (int high)
-{
-    if (current_rtmin == -1 || current_rtmin > current_rtmax)
-	/* We don't have anymore signal available.  */
-	return -1;
-    return high ? current_rtmin++ : current_rtmax--;
-}
-#endif
 #endif
 
 /* Initialize the pthread library.
@@ -315,67 +280,6 @@  libpthread_hidden_proto(pthread_cond_timedwait)
 libpthread_hidden_proto(pthread_condattr_destroy)
 libpthread_hidden_proto(pthread_condattr_init)
 
-struct pthread_functions __pthread_functions =
-  {
-#if !defined __UCLIBC_HAS_TLS__ && defined __UCLIBC_HAS_RPC__
-    .ptr_pthread_internal_tsd_set = __pthread_internal_tsd_set,
-    .ptr_pthread_internal_tsd_get = __pthread_internal_tsd_get,
-    .ptr_pthread_internal_tsd_address = __pthread_internal_tsd_address,
-#endif
-/*
-    .ptr_pthread_fork = __pthread_fork,
-*/
-    .ptr_pthread_attr_destroy = pthread_attr_destroy,
-    .ptr_pthread_attr_init = pthread_attr_init,
-    .ptr_pthread_attr_getdetachstate = pthread_attr_getdetachstate,
-    .ptr_pthread_attr_setdetachstate = pthread_attr_setdetachstate,
-    .ptr_pthread_attr_getinheritsched = pthread_attr_getinheritsched,
-    .ptr_pthread_attr_setinheritsched = pthread_attr_setinheritsched,
-    .ptr_pthread_attr_getschedparam = pthread_attr_getschedparam,
-    .ptr_pthread_attr_setschedparam = pthread_attr_setschedparam,
-    .ptr_pthread_attr_getschedpolicy = pthread_attr_getschedpolicy,
-    .ptr_pthread_attr_setschedpolicy = pthread_attr_setschedpolicy,
-    .ptr_pthread_attr_getscope = pthread_attr_getscope,
-    .ptr_pthread_attr_setscope = pthread_attr_setscope,
-    .ptr_pthread_condattr_destroy = pthread_condattr_destroy,
-    .ptr_pthread_condattr_init = pthread_condattr_init,
-    .ptr_pthread_cond_broadcast = pthread_cond_broadcast,
-    .ptr_pthread_cond_destroy = pthread_cond_destroy,
-    .ptr_pthread_cond_init = pthread_cond_init,
-    .ptr_pthread_cond_signal = pthread_cond_signal,
-    .ptr_pthread_cond_wait = pthread_cond_wait,
-    .ptr_pthread_cond_timedwait = pthread_cond_timedwait,
-    .ptr_pthread_equal = pthread_equal,
-    .ptr___pthread_exit = pthread_exit,
-    .ptr_pthread_getschedparam = pthread_getschedparam,
-    .ptr_pthread_setschedparam = pthread_setschedparam,
-    .ptr_pthread_mutex_destroy = __pthread_mutex_destroy,
-    .ptr_pthread_mutex_init = __pthread_mutex_init,
-    .ptr_pthread_mutex_lock = __pthread_mutex_lock,
-    .ptr_pthread_mutex_trylock = __pthread_mutex_trylock,
-    .ptr_pthread_mutex_unlock = __pthread_mutex_unlock,
-    .ptr_pthread_self = pthread_self,
-    .ptr_pthread_setcancelstate = pthread_setcancelstate,
-    .ptr_pthread_setcanceltype = pthread_setcanceltype,
-/*
-    .ptr_pthread_do_exit = pthread_do_exit,
-    .ptr_pthread_thread_self = pthread_thread_self,
-    .ptr_pthread_cleanup_upto = pthread_cleanup_upto,
-    .ptr_pthread_sigaction = pthread_sigaction,
-    .ptr_pthread_sigwait = pthread_sigwait,
-    .ptr_pthread_raise = pthread_raise,
-    .ptr__pthread_cleanup_push = _pthread_cleanup_push,
-    .ptr__pthread_cleanup_pop = _pthread_cleanup_pop,
-*/
-    .ptr__pthread_cleanup_push_defer = __pthread_cleanup_push_defer,
-    .ptr__pthread_cleanup_pop_restore = __pthread_cleanup_pop_restore
-  };
-#ifdef SHARED
-# define ptr_pthread_functions &__pthread_functions
-#else
-# define ptr_pthread_functions NULL
-#endif
-
 static int *__libc_multiple_threads_ptr;
 
  /* Do some minimal initialization which has to be done during the
@@ -388,7 +292,7 @@  void __pthread_initialize_minimal(void)
     INIT_THREAD_SELF(&__pthread_initial_thread, 0);
 #endif
 
-    __libc_multiple_threads_ptr = __libc_pthread_init (ptr_pthread_functions);
+    __libc_multiple_threads_ptr = __libc_pthread_init ();
 }
 
 
diff --git a/libpthread/linuxthreads/sysdeps/pthread/bits/libc-lock.h b/libpthread/linuxthreads/sysdeps/pthread/bits/libc-lock.h
index a7c0249..c00d60b 100644
--- a/libpthread/linuxthreads/sysdeps/pthread/bits/libc-lock.h
+++ b/libpthread/linuxthreads/sysdeps/pthread/bits/libc-lock.h
@@ -105,13 +105,8 @@  typedef pthread_key_t __libc_key_t;
   (FUNC != NULL ? FUNC ARGS : ELSE)
 # endif
 #endif
-#if defined _LIBC && !defined NOT_IN_libc && defined SHARED
-# define __libc_maybe_call2(FUNC, ARGS, ELSE) \
-  ({__builtin_expect (__libc_pthread_functions.ptr_##FUNC != NULL, 0) \
-    ? __libc_pthread_functions.ptr_##FUNC ARGS : ELSE; })
-#else
-# define __libc_maybe_call2(FUNC, ARGS, ELSE) __libc_maybe_call (__##FUNC, ARGS, ELSE)
-#endif
+
+#define __libc_maybe_call2(FUNC, ARGS, ELSE) __libc_maybe_call (__##FUNC, ARGS, ELSE)
 
 /* Initialize the named lock variable, leaving it in a consistent, unlocked
    state.  */
@@ -351,63 +346,6 @@  extern int __pthread_atfork (void (*__prepare) (void),
 			     void (*__child) (void));
 
 
-
-/* Make the pthread functions weak so that we can elide them from
-   single-threaded processes.  */
-#ifndef __NO_WEAK_PTHREAD_ALIASES
-# ifdef weak_extern
-#   define BP_SYM(sym) sym
-weak_extern (BP_SYM (__pthread_mutex_init))
-weak_extern (BP_SYM (__pthread_mutex_destroy))
-weak_extern (BP_SYM (__pthread_mutex_lock))
-weak_extern (BP_SYM (__pthread_mutex_trylock))
-weak_extern (BP_SYM (__pthread_mutex_unlock))
-weak_extern (BP_SYM (__pthread_mutexattr_init))
-weak_extern (BP_SYM (__pthread_mutexattr_destroy))
-weak_extern (BP_SYM (__pthread_mutexattr_settype))
-weak_extern (BP_SYM (__pthread_rwlock_init))
-weak_extern (BP_SYM (__pthread_rwlock_destroy))
-weak_extern (BP_SYM (__pthread_rwlock_rdlock))
-weak_extern (BP_SYM (__pthread_rwlock_tryrdlock))
-weak_extern (BP_SYM (__pthread_rwlock_wrlock))
-weak_extern (BP_SYM (__pthread_rwlock_trywrlock))
-weak_extern (BP_SYM (__pthread_rwlock_unlock))
-weak_extern (BP_SYM (__pthread_key_create))
-weak_extern (BP_SYM (__pthread_setspecific))
-weak_extern (BP_SYM (__pthread_getspecific))
-weak_extern (BP_SYM (__pthread_once))
-weak_extern (__pthread_atfork)
-weak_extern (BP_SYM (_pthread_cleanup_push))
-weak_extern (BP_SYM (_pthread_cleanup_pop))
-weak_extern (BP_SYM (_pthread_cleanup_push_defer))
-weak_extern (BP_SYM (_pthread_cleanup_pop_restore))
-# else
-#  pragma weak __pthread_mutex_init
-#  pragma weak __pthread_mutex_destroy
-#  pragma weak __pthread_mutex_lock
-#  pragma weak __pthread_mutex_trylock
-#  pragma weak __pthread_mutex_unlock
-#  pragma weak __pthread_mutexattr_init
-#  pragma weak __pthread_mutexattr_destroy
-#  pragma weak __pthread_mutexattr_settype
-#  pragma weak __pthread_rwlock_destroy
-#  pragma weak __pthread_rwlock_rdlock
-#  pragma weak __pthread_rwlock_tryrdlock
-#  pragma weak __pthread_rwlock_wrlock
-#  pragma weak __pthread_rwlock_trywrlock
-#  pragma weak __pthread_rwlock_unlock
-#  pragma weak __pthread_key_create
-#  pragma weak __pthread_setspecific
-#  pragma weak __pthread_getspecific
-#  pragma weak __pthread_once
-#  pragma weak __pthread_atfork
-#  pragma weak _pthread_cleanup_push_defer
-#  pragma weak _pthread_cleanup_pop_restore
-#  pragma weak _pthread_cleanup_push
-#  pragma weak _pthread_cleanup_pop
-# endif
-#endif
-
 /* We need portable names for some functions.  E.g., when they are
    used as argument to __libc_cleanup_region_start.  */
 #define __libc_mutex_unlock __pthread_mutex_unlock
diff --git a/libpthread/linuxthreads/sysdeps/pthread/pthread-functions.h b/libpthread/linuxthreads/sysdeps/pthread/pthread-functions.h
deleted file mode 100644
index 119953d..0000000
--- a/libpthread/linuxthreads/sysdeps/pthread/pthread-functions.h
+++ /dev/null
@@ -1,113 +0,0 @@ 
-/* Copyright (C) 2003 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
-
-   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 _PTHREAD_FUNCTIONS_H
-#define _PTHREAD_FUNCTIONS_H	1
-
-#include <pthread.h>
-#if 0
-#include <setjmp.h>
-#include <linuxthreads/internals.h>
-
-struct fork_block;
-#endif
-
-/* Data type shared with libc.  The libc uses it to pass on calls to
-   the thread functions.  Wine pokes directly into this structure,
-   so if possible avoid breaking it and append new hooks to the end.  */
-struct pthread_functions
-{
-#if 0
-  pid_t (*ptr_pthread_fork) (struct fork_block *);
-#endif
-  int (*ptr_pthread_attr_destroy) (pthread_attr_t *);
-  int (*ptr_pthread_attr_init) (pthread_attr_t *);
-  int (*ptr_pthread_attr_getdetachstate) (const pthread_attr_t *, int *);
-  int (*ptr_pthread_attr_setdetachstate) (pthread_attr_t *, int);
-  int (*ptr_pthread_attr_getinheritsched) (const pthread_attr_t *, int *);
-  int (*ptr_pthread_attr_setinheritsched) (pthread_attr_t *, int);
-  int (*ptr_pthread_attr_getschedparam) (const pthread_attr_t *,
-					 struct sched_param *);
-  int (*ptr_pthread_attr_setschedparam) (pthread_attr_t *,
-					 const struct sched_param *);
-  int (*ptr_pthread_attr_getschedpolicy) (const pthread_attr_t *, int *);
-  int (*ptr_pthread_attr_setschedpolicy) (pthread_attr_t *, int);
-  int (*ptr_pthread_attr_getscope) (const pthread_attr_t *, int *);
-  int (*ptr_pthread_attr_setscope) (pthread_attr_t *, int);
-  int (*ptr_pthread_condattr_destroy) (pthread_condattr_t *);
-  int (*ptr_pthread_condattr_init) (pthread_condattr_t *);
-  int (*ptr_pthread_cond_broadcast) (pthread_cond_t *);
-  int (*ptr_pthread_cond_destroy) (pthread_cond_t *);
-  int (*ptr_pthread_cond_init) (pthread_cond_t *,
-				  const pthread_condattr_t *);
-  int (*ptr_pthread_cond_signal) (pthread_cond_t *);
-  int (*ptr_pthread_cond_wait) (pthread_cond_t *, pthread_mutex_t *);
-  int (*ptr_pthread_equal) (pthread_t, pthread_t);
-  void (*ptr___pthread_exit) (void *);
-  int (*ptr_pthread_getschedparam) (pthread_t, int *, struct sched_param *);
-  int (*ptr_pthread_setschedparam) (pthread_t, int,
-				    const struct sched_param *);
-  int (*ptr_pthread_mutex_destroy) (pthread_mutex_t *);
-  int (*ptr_pthread_mutex_init) (pthread_mutex_t *,
-				 const pthread_mutexattr_t *);
-  int (*ptr_pthread_mutex_lock) (pthread_mutex_t *);
-  int (*ptr_pthread_mutex_trylock) (pthread_mutex_t *);
-  int (*ptr_pthread_mutex_unlock) (pthread_mutex_t *);
-  pthread_t (*ptr_pthread_self) (void);
-  int (*ptr_pthread_setcancelstate) (int, int *);
-  int (*ptr_pthread_setcanceltype) (int, int *);
-#if 0
-  void (*ptr_pthread_do_exit) (void *retval, char *currentframe);
-  void (*ptr_pthread_cleanup_upto) (__jmp_buf target,
-				    char *targetframe);
-  pthread_descr (*ptr_pthread_thread_self) (void);
-#endif
-#if !defined __UCLIBC_HAS_TLS__ && defined __UCLIBC_HAS_RPC__
-  int (*ptr_pthread_internal_tsd_set) (int key, const void *pointer);
-  void * (*ptr_pthread_internal_tsd_get) (int key);
-  void ** __attribute__ ((__const__))
-    (*ptr_pthread_internal_tsd_address) (int key);
-#endif
-#if 0
-  int (*ptr_pthread_sigaction) (int sig, const struct sigaction * act,
-				struct sigaction *oact);
-  int (*ptr_pthread_sigwait) (const sigset_t *set, int *sig);
-  int (*ptr_pthread_raise) (int sig);
-#endif
-  int (*ptr_pthread_cond_timedwait) (pthread_cond_t *, pthread_mutex_t *,
-				       const struct timespec *);
-#if 0
-  void (*ptr__pthread_cleanup_push) (struct _pthread_cleanup_buffer * buffer,
-				     void (*routine)(void *), void * arg);
-#endif
-  void (*ptr__pthread_cleanup_push_defer) (struct _pthread_cleanup_buffer * buffer,
-					   void (*routine)(void *), void * arg);
-#if 0
-  void (*ptr__pthread_cleanup_pop) (struct _pthread_cleanup_buffer * buffer,
-				    int execute);
-#endif
-  void (*ptr__pthread_cleanup_pop_restore) (struct _pthread_cleanup_buffer * buffer,
-					    int execute);
-};
-
-/* Variable in libc.so.  */
-extern struct pthread_functions __libc_pthread_functions attribute_hidden;
-
-extern int * __libc_pthread_init (const struct pthread_functions *functions);
-
-#endif	/* pthread-functions.h */
diff --git a/libpthread/nptl/Makefile.in b/libpthread/nptl/Makefile.in
index f0d5ad6..0fc83e2 100644
--- a/libpthread/nptl/Makefile.in
+++ b/libpthread/nptl/Makefile.in
@@ -12,14 +12,13 @@  libpthread_OUT = $(top_builddir)libpthread/nptl
 
 include $(libpthread_DIR)/sysdeps/Makefile.in
 
-libc-shared-routines-y = forward.c libc-cancellation.c
+libc-shared-routines-y = libc-cancellation.c
 libc-static-routines-y = alloca_cutoff.c libc-cancellation.c
 libpthread-shared-only-routines-y = version.c
 libpthread-static-only-routines-y = pthread_atfork.c
 libpthread-routines- += $(notdir $(wildcard $(libpthread_DIR)/gen_*.c)) # dummy generated files
 libpthread-routines- += allocatestack.c # dummy included by pthread_create.c
 libpthread-routines- += pthread_mutex_getprioceiling.c pthread_mutex_setprioceiling.c # XXX: delete those or use them!
-libpthread-routines-$(UCLIBC_HAS_RESOLVER_SUPPORT) += res.c
 libpthread-routines-$(UCLIBC_SUSV4_LEGACY) += pthread_getconcurrency.c \
 	pthread_setconcurrency.c
 libpthread_CSRC = $(filter-out $(libpthread-routines-) \
@@ -42,6 +41,8 @@  else
 libpthread-a-y := $(libpthread-static-y)
 endif
 
+libpthread-a-y += $(top_builddir)lib/libpthread_nonshared.a
+
 libc-shared-routines-y := $(filter-out $(notdir $(libpthread_libc_OBJS:.o=.c)), $(libc-shared-routines-y))
 libc-static-routines-y := $(filter-out $(notdir $(libpthread_libc_OBJS:.o=.c)), $(libc-static-routines-y))
 libc-shared-routines-y := $(addprefix $(libpthread_OUT)/,$(libc-shared-routines-y:.c=.oS))
@@ -63,37 +64,6 @@  librt-a-y += $(librt_OBJS)
 endif
 librt-so-y += $(librt_OBJS:.o=.oS) $(librt-pt-shared-only-routines-y:.o=.oS)
 
-ifeq ($(UCLIBC_CTOR_DTOR),y)
-START_FILE-libpthread.so := $(top_builddir)libpthread/nptl/sysdeps/pthread/pt-crti.o
-END_FILE-libpthread.so := $(top_builddir)libpthread/nptl/sysdeps/pthread/pt-crtn.o
-LDFLAGS-libpthread.so += -nostartfiles
-$(top_builddir)lib/libpthread.so: | $(START_FILE-libpthread.so) $(END_FILE-libpthread.so)
-endif
-
-libpthread_FULL_NAME := libpthread-$(VERSION).so
-lib-a-$(UCLIBC_HAS_THREADS) += $(top_builddir)lib/libpthread.a
-lib-so-$(UCLIBC_HAS_THREADS) += $(top_builddir)lib/libpthread.so
-
-$(top_builddir)lib/libpthread.so: $(libpthread_OUT)/libpthread_so.a $(libc.depend) $(libdl.depend) $(top_builddir)lib/libpthread_nonshared.a
-	$(call link.so,$(libpthread_FULL_NAME),$(ABI_VERSION))
-	# link for backward compatibility
-	$(call link.so,$(libpthread_FULL_NAME),0)
-	$(Q)cat $(top_srcdir)extra/scripts/format.lds > $@.tmp
-	$(Q)echo "GROUP ( $(notdir $@).$(ABI_VERSION) libpthread_nonshared.a )" >> $@.tmp
-	$(Q)mv $@.tmp $@
-
-ifeq ($(PTHREADS_DEBUG_SUPPORT),y)
-$(libpthread_OUT)/libpthread_so.a: STRIP_FLAGS:=$(STRIP_FLAGS:-x=-X --strip-debug)
-endif
-$(libpthread_OUT)/libpthread_so.a: $(libpthread-so-y)
-	$(Q)$(RM) $@
-	$(do_ar)
-
-$(top_builddir)lib/libpthread.a: $(libpthread-a-y)
-	$(Q)$(INSTALL) -d $(dir $@)
-	$(Q)$(RM) $@
-	$(do_ar)
-
 $(libpthread_OUT)/pthread-errnos.h: $(top_srcdir)extra/scripts/gen-as-const.awk
 $(libpthread_OUT)/pthread-errnos.h: $(libpthread_DIR)/pthread-errnos.sym
 	@$(disp_gen)
@@ -132,17 +102,6 @@  HEADERCLEAN_libpthread/nptl:
 CLEAN_libpthread/nptl:
 	$(do_rm) $(addprefix $(libpthread_OUT)/*., o os oS a)
 
-ifeq ($(PTHREADS_DEBUG_SUPPORT),y)
-LDFLAGS-libpthread.so += $(LDFLAGS_NOSTRIP) -Wl,-z,defs
-else
-LDFLAGS-libpthread.so += $(LDFLAGS)
-endif
-
-LDFLAGS-libpthread.so += $(top_builddir)lib/$(UCLIBC_LDSO_NAME)-$(VERSION).so $(top_builddir)lib/libdl-$(VERSION).so \
-	-Wl,-z,nodelete,-z,initfirst,-init=$(SYMBOL_PREFIX)__pthread_initialize_minimal_internal
-
-LIBS-libpthread.so := $(LIBS)
-
 CFLAGS-dir_nptl := -DNOT_IN_libc -DIS_IN_libpthread
 CFLAGS-libpthread/nptl := $(CFLAGS-dir_nptl) $(SSP_ALL_CFLAGS)
 
@@ -171,10 +130,6 @@  CFLAGS-libc-cancellation.c = -fasynchronous-unwind-tables
 # function.
 CFLAGS-pthread_exit.c = -fexceptions
 
-# Among others, __pthread_unwind is forwarded.  This function must handle
-# exceptions.
-CFLAGS-forward.c = -fexceptions
-
 # The following are cancellation points.  Some of the functions can
 # block and therefore temporarily enable asynchronous cancellation.
 # Those must be compiled asynchronous unwind tables.
@@ -235,8 +190,6 @@  CFLAGS-waitpid.c = -fexceptions -fasynchronous-unwind-tables
 CFLAGS-write.c = -fexceptions -fasynchronous-unwind-tables
 CFLAGS-writev.c = -fexceptions -fasynchronous-unwind-tables
 
-CFLAGS-pt-system.c = -fexceptions -I$(top_srcdir)libc/stdlib
-
 #
 # The rest of this file is uClibc specific.
 #
@@ -249,6 +202,5 @@  CFLAGS-pthread_barrierattr_setpshared.c = -D_GNU_SOURCE
 CFLAGS-sem_open.c = -D_GNU_SOURCE
 
 CFLAGS-OMIT-alloca_cutoff.c = $(CFLAGS-dir_nptl)
-CFLAGS-OMIT-forward.c = $(CFLAGS-dir_nptl)
 CFLAGS-OMIT-libc-lowlevelock.c = $(CFLAGS-dir_nptl)
 CFLAGS-OMIT-libc-cancellation.c = $(CFLAGS-dir_nptl)
diff --git a/libpthread/nptl/forward.c b/libpthread/nptl/forward.c
deleted file mode 100644
index 076d437..0000000
--- a/libpthread/nptl/forward.c
+++ /dev/null
@@ -1,169 +0,0 @@ 
-/* Copyright (C) 2002, 2003, 2004, 2007 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
-
-   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 <dlfcn.h>
-#include <pthreadP.h>
-#include <signal.h>
-#include <stdlib.h>
-
-#include <atomic.h>
-#include <sysdep.h>
-
-
-/* Pointers to the libc functions.  */
-struct pthread_functions __libc_pthread_functions attribute_hidden;
-int __libc_pthread_functions_init attribute_hidden;
-
-
-#define FORWARD2(name, rettype, decl, params, defaction) \
-rettype									      \
-name decl								      \
-{									      \
-  if (!__libc_pthread_functions_init) {					      \
-    defaction;								      \
-  } else {								      \
-    return PTHFCT_CALL (ptr_##name, params);				      \
-  }									      \
-}
-
-#define FORWARD(name, decl, params, defretval) \
-  FORWARD2 (name, int, decl, params, return defretval)
-
-
-FORWARD (pthread_attr_destroy, (pthread_attr_t *attr), (attr), 0)
-
-FORWARD (__pthread_attr_init_2_1, (pthread_attr_t *attr), (attr), 0)
-weak_alias(__pthread_attr_init_2_1, pthread_attr_init)
-
-FORWARD (pthread_attr_getdetachstate,
-	 (const pthread_attr_t *attr, int *detachstate), (attr, detachstate),
-	 0)
-FORWARD (pthread_attr_setdetachstate, (pthread_attr_t *attr, int detachstate),
-	 (attr, detachstate), 0)
-
-FORWARD (pthread_attr_getinheritsched,
-	 (const pthread_attr_t *attr, int *inherit), (attr, inherit), 0)
-FORWARD (pthread_attr_setinheritsched, (pthread_attr_t *attr, int inherit),
-	 (attr, inherit), 0)
-
-FORWARD (pthread_attr_getschedparam,
-	 (const pthread_attr_t *attr, struct sched_param *param),
-	 (attr, param), 0)
-FORWARD (pthread_attr_setschedparam,
-	 (pthread_attr_t *attr, const struct sched_param *param),
-	 (attr, param), 0)
-
-FORWARD (pthread_attr_getschedpolicy,
-	 (const pthread_attr_t *attr, int *policy), (attr, policy), 0)
-FORWARD (pthread_attr_setschedpolicy, (pthread_attr_t *attr, int policy),
-	 (attr, policy), 0)
-
-FORWARD (pthread_attr_getscope,
-	 (const pthread_attr_t *attr, int *scope), (attr, scope), 0)
-FORWARD (pthread_attr_setscope, (pthread_attr_t *attr, int scope),
-	 (attr, scope), 0)
-
-
-FORWARD (pthread_condattr_destroy, (pthread_condattr_t *attr), (attr), 0)
-FORWARD (pthread_condattr_init, (pthread_condattr_t *attr), (attr), 0)
-
-FORWARD (__pthread_cond_broadcast, (pthread_cond_t *cond), (cond), 0)
-weak_alias(__pthread_cond_broadcast, pthread_cond_broadcast)
-
-FORWARD (__pthread_cond_destroy, (pthread_cond_t *cond), (cond), 0)
-weak_alias(__pthread_cond_destroy, pthread_cond_destroy)
-
-FORWARD (__pthread_cond_init,
-	 (pthread_cond_t *cond, const pthread_condattr_t *cond_attr),
-	 (cond, cond_attr), 0)
-weak_alias(__pthread_cond_init, pthread_cond_init)
-
-FORWARD (__pthread_cond_signal, (pthread_cond_t *cond), (cond), 0)
-weak_alias(__pthread_cond_signal, pthread_cond_signal)
-
-FORWARD (__pthread_cond_wait, (pthread_cond_t *cond, pthread_mutex_t *mutex),
-	 (cond, mutex), 0)
-weak_alias(__pthread_cond_wait, pthread_cond_wait)
-
-FORWARD (__pthread_cond_timedwait,
-	 (pthread_cond_t *cond, pthread_mutex_t *mutex,
-	  const struct timespec *abstime), (cond, mutex, abstime), 0)
-weak_alias(__pthread_cond_timedwait, pthread_cond_timedwait)
-
-
-FORWARD (pthread_equal, (pthread_t thread1, pthread_t thread2),
-	 (thread1, thread2), 1)
-
-
-/* Use an alias to avoid warning, as pthread_exit is declared noreturn.  */
-FORWARD2 (__pthread_exit, void, (void *retval), (retval), exit (EXIT_SUCCESS))
-strong_alias (__pthread_exit, pthread_exit);
-
-
-FORWARD (pthread_getschedparam,
-	 (pthread_t target_thread, int *policy, struct sched_param *param),
-	 (target_thread, policy, param), 0)
-FORWARD (pthread_setschedparam,
-	 (pthread_t target_thread, int policy,
-	  const struct sched_param *param), (target_thread, policy, param), 0)
-
-
-FORWARD (pthread_mutex_destroy, (pthread_mutex_t *mutex), (mutex), 0)
-
-FORWARD (pthread_mutex_init,
-	 (pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr),
-	 (mutex, mutexattr), 0)
-
-FORWARD (pthread_mutex_lock, (pthread_mutex_t *mutex), (mutex), 0)
-weak_alias (pthread_mutex_lock, __pthread_mutex_lock)
-
-FORWARD (pthread_mutex_unlock, (pthread_mutex_t *mutex), (mutex), 0)
-weak_alias (pthread_mutex_unlock, __pthread_mutex_unlock)
-
-FORWARD2 (pthread_self, pthread_t, (void), (), return 0)
-
-
-FORWARD (pthread_setcancelstate, (int state, int *oldstate), (state, oldstate),
-	 0)
-
-FORWARD (pthread_setcanceltype, (int type, int *oldtype), (type, oldtype), 0)
-
-#define return /* value is void */
-FORWARD2(_pthread_cleanup_push_defer,
-	 void, (struct _pthread_cleanup_buffer *buffer, void (*routine)(void *), void *arg),
-	 (buffer, routine, arg),
-	 { buffer->__routine = routine; buffer->__arg = arg; });
-
-FORWARD2(_pthread_cleanup_pop_restore,
-	 void, (struct _pthread_cleanup_buffer *buffer, int execute),
-	 (buffer, execute),
-	 if (execute) { buffer->__routine(buffer->__arg); });
-
-FORWARD2(__pthread_unwind,
-	 void attribute_hidden __attribute ((noreturn)) __cleanup_fct_attribute,
-	 (__pthread_unwind_buf_t *buf), (buf), {
-		       /* We cannot call abort() here.  */
-		       INTERNAL_SYSCALL_DECL (err);
-		       INTERNAL_SYSCALL (kill, err, 1, SIGKILL);
-#if __GNUC_PREREQ(4, 5)
-		       __builtin_unreachable();
-#else
-			while(1);
-#endif
-		     })
-#undef return
diff --git a/libpthread/nptl/init.c b/libpthread/nptl/init.c
index eb84d6e..0e1c60c 100644
--- a/libpthread/nptl/init.c
+++ b/libpthread/nptl/init.c
@@ -60,77 +60,6 @@  int __have_futex_clock_realtime;
 /* Version of the library, used in libthread_db to detect mismatches.  */
 static const char nptl_version[] __attribute_used__ = VERSION;
 
-#ifdef SHARED
-static void nptl_freeres (void);
-
-static const struct pthread_functions pthread_functions =
-  {
-    .ptr_pthread_attr_destroy = __pthread_attr_destroy,
-    .ptr___pthread_attr_init_2_1 = __pthread_attr_init_2_1,
-    .ptr_pthread_attr_getdetachstate = __pthread_attr_getdetachstate,
-    .ptr_pthread_attr_setdetachstate = __pthread_attr_setdetachstate,
-    .ptr_pthread_attr_getinheritsched = __pthread_attr_getinheritsched,
-    .ptr_pthread_attr_setinheritsched = __pthread_attr_setinheritsched,
-    .ptr_pthread_attr_getschedparam = __pthread_attr_getschedparam,
-    .ptr_pthread_attr_setschedparam = __pthread_attr_setschedparam,
-    .ptr_pthread_attr_getschedpolicy = __pthread_attr_getschedpolicy,
-    .ptr_pthread_attr_setschedpolicy = __pthread_attr_setschedpolicy,
-    .ptr_pthread_attr_getscope = __pthread_attr_getscope,
-    .ptr_pthread_attr_setscope = __pthread_attr_setscope,
-    .ptr_pthread_condattr_destroy = __pthread_condattr_destroy,
-    .ptr_pthread_condattr_init = __pthread_condattr_init,
-    .ptr___pthread_cond_broadcast = __pthread_cond_broadcast,
-    .ptr___pthread_cond_destroy = __pthread_cond_destroy,
-    .ptr___pthread_cond_init = __pthread_cond_init,
-    .ptr___pthread_cond_signal = __pthread_cond_signal,
-    .ptr___pthread_cond_wait = __pthread_cond_wait,
-    .ptr___pthread_cond_timedwait = __pthread_cond_timedwait,
-    .ptr_pthread_equal = __pthread_equal,
-    .ptr___pthread_exit = __pthread_exit,
-    .ptr_pthread_getschedparam = __pthread_getschedparam,
-    .ptr_pthread_setschedparam = __pthread_setschedparam,
-    .ptr_pthread_mutex_destroy = INTUSE(__pthread_mutex_destroy),
-    .ptr_pthread_mutex_init = INTUSE(__pthread_mutex_init),
-    .ptr_pthread_mutex_lock = INTUSE(__pthread_mutex_lock),
-    .ptr_pthread_mutex_unlock = INTUSE(__pthread_mutex_unlock),
-    .ptr_pthread_self = __pthread_self,
-    .ptr_pthread_setcancelstate = __pthread_setcancelstate,
-    .ptr_pthread_setcanceltype = __pthread_setcanceltype,
-    .ptr___pthread_cleanup_upto = __pthread_cleanup_upto,
-    .ptr___pthread_once = __pthread_once_internal,
-    .ptr___pthread_rwlock_rdlock = __pthread_rwlock_rdlock_internal,
-    .ptr___pthread_rwlock_wrlock = __pthread_rwlock_wrlock_internal,
-    .ptr___pthread_rwlock_unlock = __pthread_rwlock_unlock_internal,
-    .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_nthreads = &__nptl_nthreads,
-    .ptr___pthread_unwind = &__pthread_unwind,
-    .ptr__nptl_deallocate_tsd = __nptl_deallocate_tsd,
-    .ptr__nptl_setxid = __nptl_setxid,
-    /* For now only the stack cache needs to be freed.  */
-    .ptr_freeres = nptl_freeres
-  };
-# define ptr_pthread_functions &pthread_functions
-#else
-# define ptr_pthread_functions NULL
-#endif
-
-
-#ifdef SHARED
-/* This function is called indirectly from the freeres code in libc.  */
-static void
-__libc_freeres_fn_section
-nptl_freeres (void)
-{
-  __unwind_freeres ();
-  __free_stacks (0);
-}
-#endif
-
-
 /* For asynchronous cancellation we use a signal.  This is the handler.  */
 static void
 sigcancel_handler (int sig, siginfo_t *si, void *ctx)
@@ -410,8 +339,7 @@  __pthread_initialize_minimal_internal (void)
 #ifndef TLS_MULTIPLE_THREADS_IN_TCB
   __libc_multiple_threads_ptr =
 #endif
-    __libc_pthread_init (&__fork_generation, __reclaim_stacks,
-			 ptr_pthread_functions);
+    __libc_pthread_init (&__fork_generation, __reclaim_stacks);
 
   /* Determine whether the machine is SMP or not.  */
   __is_smp = is_smp_system ();
diff --git a/libpthread/nptl/pt-system.c b/libpthread/nptl/pt-system.c
deleted file mode 100644
index 31567f0..0000000
--- a/libpthread/nptl/pt-system.c
+++ /dev/null
@@ -1,35 +0,0 @@ 
-/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
-
-   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 <errno.h>
-#include <stdlib.h>
-#include <sysdep.h>
-#include "pthreadP.h"
-
-extern __typeof(system) __libc_system;
-#include <system.c>
-
-
-int
-system (const char *line)
-{
-  return __libc_system (line);
-}
-
-/* __libc_system in libc.so handles cancellation.  */
-LIBC_CANCEL_HANDLED ();
diff --git a/libpthread/nptl/pthreadP.h b/libpthread/nptl/pthreadP.h
index f46dd40..a2aa5a0 100644
--- a/libpthread/nptl/pthreadP.h
+++ b/libpthread/nptl/pthreadP.h
@@ -28,7 +28,6 @@ 
 #include <lowlevellock.h>
 #include <bits/stackinfo.h>
 #include <internaltypes.h>
-#include <pthread-functions.h>
 #include <atomic.h>
 #include <bits/kernel-features.h>
 
@@ -377,12 +376,10 @@  hidden_proto (__nptl_death_event)
 /* Register the generation counter in the libpthread with the libc.  */
 #ifdef TLS_MULTIPLE_THREADS_IN_TCB
 extern void __libc_pthread_init (unsigned long int *ptr,
-				 void (*reclaim) (void),
-				 const struct pthread_functions *functions);
+				 void (*reclaim) (void));
 #else
 extern int *__libc_pthread_init (unsigned long int *ptr,
-				 void (*reclaim) (void),
-				 const struct pthread_functions *functions);
+				 void (*reclaim) (void));
 
 /* Variable set to a nonzero value if more than one thread runs or ran.  */
 extern int __pthread_multiple_threads attribute_hidden;
diff --git a/libpthread/nptl/pthread_setgid.c b/libpthread/nptl/pthread_setgid.c
deleted file mode 100644
index b06bffb..0000000
--- a/libpthread/nptl/pthread_setgid.c
+++ /dev/null
@@ -1,3 +0,0 @@ 
-#define SINGLE_THREAD
-#define __setgid pthread_setgid_np
-#include <setgid.c>
diff --git a/libpthread/nptl/pthread_setuid.c b/libpthread/nptl/pthread_setuid.c
deleted file mode 100644
index ff949c8..0000000
--- a/libpthread/nptl/pthread_setuid.c
+++ /dev/null
@@ -1,3 +0,0 @@ 
-#define SINGLE_THREAD
-#define __setuid pthread_setuid_np
-#include <setuid.c>
diff --git a/libpthread/nptl/res.c b/libpthread/nptl/res.c
deleted file mode 100644
index 3ce84ea..0000000
--- a/libpthread/nptl/res.c
+++ /dev/null
@@ -1,26 +0,0 @@ 
-/* Copyright (C) 2002, 2003 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 <features.h>
-#include <tls.h>
-#include <resolv.h>
-
-struct __res_state *
-__res_state (void)
-{
-  return __resp;
-}
diff --git a/libpthread/nptl/sysdeps/arm/Makefile.arch b/libpthread/nptl/sysdeps/arm/Makefile.arch
index 62a2822..c190b9a 100644
--- a/libpthread/nptl/sysdeps/arm/Makefile.arch
+++ b/libpthread/nptl/sysdeps/arm/Makefile.arch
@@ -6,5 +6,4 @@ 
 # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
 #
 
-librt_arch_SSRC = aeabi_read_tp.S thumb_atomics.S
 libc_arch_a_CSRC = libc-tls.c
diff --git a/libpthread/nptl/sysdeps/arm/aeabi_read_tp.S b/libpthread/nptl/sysdeps/arm/aeabi_read_tp.S
deleted file mode 100644
index af640d6..0000000
--- a/libpthread/nptl/sysdeps/arm/aeabi_read_tp.S
+++ /dev/null
@@ -1 +0,0 @@ 
-#include <../../../../ldso/ldso/arm/aeabi_read_tp.S>
diff --git a/libpthread/nptl/sysdeps/arm/thumb_atomics.S b/libpthread/nptl/sysdeps/arm/thumb_atomics.S
deleted file mode 100644
index aaa7a3d..0000000
--- a/libpthread/nptl/sysdeps/arm/thumb_atomics.S
+++ /dev/null
@@ -1 +0,0 @@ 
-#include <../../../../ldso/ldso/arm/thumb_atomics.S>
diff --git a/libpthread/nptl/sysdeps/metag/metag_load_tp.S b/libpthread/nptl/sysdeps/metag/metag_load_tp.S
deleted file mode 100644
index f17f7de..0000000
--- a/libpthread/nptl/sysdeps/metag/metag_load_tp.S
+++ /dev/null
@@ -1,7 +0,0 @@ 
-/*
- * Copyright (C) 2013 Imagination Technologies Ltd.
- *
- * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
- */
-
-#include <../../../../ldso/ldso/metag/metag_load_tp.S>
diff --git a/libpthread/nptl/sysdeps/mips/nptl-sysdep.S b/libpthread/nptl/sysdeps/mips/nptl-sysdep.S
deleted file mode 100644
index 7a4a8d3..0000000
--- a/libpthread/nptl/sysdeps/mips/nptl-sysdep.S
+++ /dev/null
@@ -1,2 +0,0 @@ 
-/* Pull in __syscall_error.  */
-#include <syscall_error.S>
diff --git a/libpthread/nptl/sysdeps/pthread/Makefile.in b/libpthread/nptl/sysdeps/pthread/Makefile.in
index 9d99f31..a501b64 100644
--- a/libpthread/nptl/sysdeps/pthread/Makefile.in
+++ b/libpthread/nptl/sysdeps/pthread/Makefile.in
@@ -43,62 +43,11 @@  CFLAGS-pthread_spin_unlock.c = -D_GNU_SOURCE
 CFLAGS-unwind-forcedunwind.c = -fexceptions -fasynchronous-unwind-tables
 
 CFLAGS-OMIT-librt-cancellation.c = -DIS_IN_libpthread
-CFLAGS-OMIT-rt-unwind-resume.c = -DIS_IN_libpthread
 CFLAGS-librt-cancellation.c = -DIS_IN_librt				\
 			      -fexceptions -fasynchronous-unwind-tables
-CFLAGS-rt-unwind-resume.c = -DIS_IN_librt				\
-			    -fexceptions -fasynchronous-unwind-tables
-
 libpthread-so-y += $(patsubst %,$(libpthread_pthread_OUT)/%.oS, unwind-forcedunwind)
 
 librt-pt-routines-y = librt-cancellation.c
-librt-pt-shared-only-routines-y = rt-unwind-resume.c
-
-ifeq ($(UCLIBC_CTOR_DTOR),y)
-CFLAGS-OMIT-pt-initfini.c = $(CFLAGS-y-libpthread/nptl/sysdeps/pthread)
-CFLAGS-pt-initfini.c = -S -g0 $(PICFLAG) -fno-inline-functions	\
-			$(call check_gcc,-fno-unit-at-a-time,)	\
-			$(SSP_DISABLE_FLAGS) \
-			-finhibit-size-directive			\
-			-fno-asynchronous-unwind-tables -fno-unwind-tables \
-			$(patsubst -f%,-fno-%,$(call check_gcc,-fexceptions,))
-
-#ASFLAGS += $(PICFLAG) -I$(top_srcdir)include -I$(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)
-ifneq ($(wildcard $(libpthread_pthread_DIR)/../unix/sysv/linux/$(TARGET_ARCH)/pt-initfini.c),)
-PTHREAD_INITFINI := $(libpthread_pthread_DIR)/../unix/sysv/linux/$(TARGET_ARCH)/pt-initfini.c
-else
-PTHREAD_INITFINI := $(libpthread_pthread_DIR)/pt-initfini.c
-endif
-
-ASFLAGS-pt-crti.S =  $(PICFLAG)
-ASFLAGS-pt-crtn.S =  $(PICFLAG)
-
-$(libpthread_pthread_OUT)/pt-crti.o: $(libpthread_pthread_OUT)/pt-crti.S
-	$(compile.S)
-
-$(libpthread_pthread_OUT)/pt-crtn.o: $(libpthread_pthread_OUT)/pt-crtn.S
-	$(compile.S)
-
-$(libpthread_pthread_OUT)/pt-initfini.s: $(PTHREAD_INITFINI) | $(headers_dep)
-	$(compile.c)
-$(libpthread_pthread_OUT)/defs.h: $(PTHREAD_INITFINI)
-	$(do_sed) -n -e '/@TESTS_BEGIN/,/@TESTS_END/p' $< | \
-		$(AWK) -f $(top_srcdir)extra/scripts/defs.awk > $@.tmp
-	$(Q)mv $@.tmp $@
-
-$(libpthread_pthread_OUT)/pt-crti.S: $(libpthread_pthread_OUT)/pt-initfini.s $(libpthread_pthread_OUT)/defs.h
-	$(do_sed) -n -e '/[ 	]*\.file/d' \
-		-e '1,/@HEADER_ENDS/p' \
-		-e '/@_.*_PROLOG_BEGINS/,/@_.*_PROLOG_ENDS/p' \
-		-e '/@TRAILER_BEGINS/,$$p' $< > $@.tmp
-	$(Q)mv $@.tmp $@
-$(libpthread_pthread_OUT)/pt-crtn.S: $(libpthread_pthread_OUT)/pt-initfini.s $(libpthread_pthread_OUT)/defs.h
-	$(do_sed) -n -e '/[ 	]*\.file/d' \
-		-e '1,/@HEADER_ENDS/p' \
-		-e '/@_.*_EPILOG_BEGINS/,/@_.*_EPILOG_ENDS/p' \
-		-e '/@TRAILER_BEGINS/,$$p' $< > $@.tmp
-	$(Q)mv $@.tmp $@
-endif
 
 objclean-y += CLEAN_libpthread/nptl/sysdeps/pthread
 
diff --git a/libpthread/nptl/sysdeps/pthread/bits/libc-lock.h b/libpthread/nptl/sysdeps/pthread/bits/libc-lock.h
index 633021a..a4c5b62 100644
--- a/libpthread/nptl/sysdeps/pthread/bits/libc-lock.h
+++ b/libpthread/nptl/sysdeps/pthread/bits/libc-lock.h
@@ -34,7 +34,6 @@ 
 #ifdef _LIBC
 # include <lowlevellock.h>
 # include <tls.h>
-# include <pthread-functions.h>
 #endif
 
 /* Mutex type.  */
@@ -152,20 +151,11 @@  typedef pthread_key_t __libc_key_t;
   (FUNC != NULL ? FUNC ARGS : ELSE)
 #endif
 
-/* Call thread functions through the function pointer table.  */
-#if defined SHARED && !defined NOT_IN_libc
-# define PTFAVAIL(NAME) __libc_pthread_functions_init
-# define __libc_ptf_call(FUNC, ARGS, ELSE) \
-  (__libc_pthread_functions_init ? PTHFCT_CALL (ptr_##FUNC, ARGS) : ELSE)
-# define __libc_ptf_call_always(FUNC, ARGS) \
-  PTHFCT_CALL (ptr_##FUNC, ARGS)
-#else
 # define PTFAVAIL(NAME) (NAME != NULL)
 # define __libc_ptf_call(FUNC, ARGS, ELSE) \
   __libc_maybe_call (FUNC, ARGS, ELSE)
 # define __libc_ptf_call_always(FUNC, ARGS) \
   FUNC ARGS
-#endif
 
 
 /* Initialize the named lock variable, leaving it in a consistent, unlocked
diff --git a/libpthread/nptl/sysdeps/pthread/pt-initfini.c b/libpthread/nptl/sysdeps/pthread/pt-initfini.c
deleted file mode 100644
index d9881c7..0000000
--- a/libpthread/nptl/sysdeps/pthread/pt-initfini.c
+++ /dev/null
@@ -1,128 +0,0 @@ 
-/* Special .init and .fini section support.  Linuxthread version.
-   Copyright (C) 1995,1996,1997,2000,2001,2002 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 of the License, or (at your option) any later version.
-
-   In addition to the permissions in the GNU Lesser General Public
-   License, the Free Software Foundation gives you unlimited
-   permission to link the compiled version of this file with other
-   programs, and to distribute those programs without any restriction
-   coming from the use of this file.  (The Library General Public
-   License restrictions do apply in other respects; for example, they
-   cover modification of the file, and distribution when not linked
-   into another program.)
-
-   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; see the file COPYING.LIB.  If not,
-   see <http://www.gnu.org/licenses/>.  */
-
-/* This file is compiled into assembly code which is then munged by a sed
-   script into two files: crti.s and crtn.s.
-
-   * crti.s puts a function prologue at the beginning of the
-   .init and .fini sections and defines global symbols for
-   those addresses, so they can be called as functions.
-
-   * crtn.s puts the corresponding function epilogues
-   in the .init and .fini sections. */
-
-#include <stdlib.h>
-
-/* We use embedded asm for .section unconditionally, as this makes it
-   easier to insert the necessary directives into crtn.S. */
-#define SECTION(x) __asm__ (".section " x )
-
-/* Embed an #include to pull in the alignment and .end directives. */
-__asm__ ("\n#include \"defs.h\"");
-__asm__ ("\n#if defined __i686 && defined __ASSEMBLER__");
-__asm__ ("\n#undef __i686");
-__asm__ ("\n#define __i686 __i686");
-__asm__ ("\n#endif");
-
-/* The initial common code ends here. */
-__asm__ ("\n/*@HEADER_ENDS*/");
-
-/* To determine whether we need .end and .align: */
-__asm__ ("\n/*@TESTS_BEGIN*/");
-extern void dummy (void (*foo) (void));
-void
-dummy (void (*foo) (void))
-{
-  if (foo)
-    (*foo) ();
-}
-__asm__ ("\n/*@TESTS_END*/");
-
-/* The beginning of _init:  */
-__asm__ ("\n/*@_init_PROLOG_BEGINS*/");
-
-static void
-call_initialize_minimal (void)
-{
-  extern void __pthread_initialize_minimal_internal (void)
-    __attribute ((visibility ("hidden")));
-
-  __pthread_initialize_minimal_internal ();
-}
-
-SECTION (".init");
-extern void __attribute__ ((section (".init"))) _init (void);
-void
-_init (void)
-{
-  /* The very first thing we must do is to set up the registers.  */
-  call_initialize_minimal ();
-
-  __asm__ ("ALIGN");
-  __asm__("END_INIT");
-  /* Now the epilog. */
-  __asm__ ("\n/*@_init_PROLOG_ENDS*/");
-  __asm__ ("\n/*@_init_EPILOG_BEGINS*/");
-  SECTION(".init");
-}
-__asm__ ("END_INIT");
-
-/* End of the _init epilog, beginning of the _fini prolog. */
-__asm__ ("\n/*@_init_EPILOG_ENDS*/");
-__asm__ ("\n/*@_fini_PROLOG_BEGINS*/");
-
-SECTION (".fini");
-extern void __attribute__ ((section (".fini"))) _fini (void);
-void
-_fini (void)
-{
-
-  /* End of the _fini prolog. */
-  __asm__ ("ALIGN");
-  __asm__ ("END_FINI");
-  __asm__ ("\n/*@_fini_PROLOG_ENDS*/");
-
-  {
-    /* Let GCC know that _fini is not a leaf function by having a dummy
-       function call here.  We arrange for this call to be omitted from
-       either crt file.  */
-    extern void i_am_not_a_leaf (void);
-    i_am_not_a_leaf ();
-  }
-
-  /* Beginning of the _fini epilog. */
-  __asm__ ("\n/*@_fini_EPILOG_BEGINS*/");
-  SECTION (".fini");
-}
-__asm__ ("END_FINI");
-
-/* End of the _fini epilog.  Any further generated assembly (e.g. .ident)
-   is shared between both crt files. */
-__asm__ ("\n/*@_fini_EPILOG_ENDS*/");
-__asm__ ("\n/*@TRAILER_BEGINS*/");
-
-/* End of file. */
diff --git a/libpthread/nptl/sysdeps/pthread/pt-sigaction.c b/libpthread/nptl/sysdeps/pthread/pt-sigaction.c
index 43a2da2..d8fa4c9 100644
--- a/libpthread/nptl/sysdeps/pthread/pt-sigaction.c
+++ b/libpthread/nptl/sysdeps/pthread/pt-sigaction.c
@@ -22,9 +22,10 @@ 
 /* We use the libc implementation but we tell it to not allow
    SIGCANCEL or SIGTIMER to be handled.  */
 
+libc_hidden_proto(sigaction)
 extern __typeof(sigaction) __libc_sigaction;
 int
-__sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
+sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
 {
   if (unlikely (sig == SIGCANCEL || sig == SIGSETXID))
     {
@@ -34,6 +35,4 @@  __sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
 
   return __libc_sigaction (sig, act, oact);
 }
-libc_hidden_proto(sigaction)
-weak_alias (__sigaction, sigaction)
-libc_hidden_weak(sigaction)
+libc_hidden_def(sigaction)
diff --git a/libpthread/nptl/sysdeps/pthread/pthread-functions.h b/libpthread/nptl/sysdeps/pthread/pthread-functions.h
deleted file mode 100644
index 9c78180..0000000
--- a/libpthread/nptl/sysdeps/pthread/pthread-functions.h
+++ /dev/null
@@ -1,108 +0,0 @@ 
-/* Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
-
-   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 _PTHREAD_FUNCTIONS_H
-#define _PTHREAD_FUNCTIONS_H	1
-
-#include <pthread.h>
-#include <setjmp.h>
-#include <internaltypes.h>
-#include <sysdep.h>
-
-struct xid_command;
-
-/* Data type shared with libc.  The libc uses it to pass on calls to
-   the thread functions.  */
-struct pthread_functions
-{
-  int (*ptr_pthread_attr_destroy) (pthread_attr_t *);
-  int (*ptr___pthread_attr_init_2_0) (pthread_attr_t *);
-  int (*ptr___pthread_attr_init_2_1) (pthread_attr_t *);
-  int (*ptr_pthread_attr_getdetachstate) (const pthread_attr_t *, int *);
-  int (*ptr_pthread_attr_setdetachstate) (pthread_attr_t *, int);
-  int (*ptr_pthread_attr_getinheritsched) (const pthread_attr_t *, int *);
-  int (*ptr_pthread_attr_setinheritsched) (pthread_attr_t *, int);
-  int (*ptr_pthread_attr_getschedparam) (const pthread_attr_t *,
-					 struct sched_param *);
-  int (*ptr_pthread_attr_setschedparam) (pthread_attr_t *,
-					 const struct sched_param *);
-  int (*ptr_pthread_attr_getschedpolicy) (const pthread_attr_t *, int *);
-  int (*ptr_pthread_attr_setschedpolicy) (pthread_attr_t *, int);
-  int (*ptr_pthread_attr_getscope) (const pthread_attr_t *, int *);
-  int (*ptr_pthread_attr_setscope) (pthread_attr_t *, int);
-  int (*ptr_pthread_condattr_destroy) (pthread_condattr_t *);
-  int (*ptr_pthread_condattr_init) (pthread_condattr_t *);
-  int (*ptr___pthread_cond_broadcast) (pthread_cond_t *);
-  int (*ptr___pthread_cond_destroy) (pthread_cond_t *);
-  int (*ptr___pthread_cond_init) (pthread_cond_t *,
-				  const pthread_condattr_t *);
-  int (*ptr___pthread_cond_signal) (pthread_cond_t *);
-  int (*ptr___pthread_cond_wait) (pthread_cond_t *, pthread_mutex_t *);
-  int (*ptr___pthread_cond_timedwait) (pthread_cond_t *, pthread_mutex_t *,
-				       const struct timespec *);
-  int (*ptr___pthread_cond_broadcast_2_0) (pthread_cond_2_0_t *);
-  int (*ptr___pthread_cond_destroy_2_0) (pthread_cond_2_0_t *);
-  int (*ptr___pthread_cond_init_2_0) (pthread_cond_2_0_t *,
-				      const pthread_condattr_t *);
-  int (*ptr___pthread_cond_signal_2_0) (pthread_cond_2_0_t *);
-  int (*ptr___pthread_cond_wait_2_0) (pthread_cond_2_0_t *, pthread_mutex_t *);
-  int (*ptr___pthread_cond_timedwait_2_0) (pthread_cond_2_0_t *,
-					   pthread_mutex_t *,
-					   const struct timespec *);
-  int (*ptr_pthread_equal) (pthread_t, pthread_t);
-  void (*ptr___pthread_exit) (void *);
-  int (*ptr_pthread_getschedparam) (pthread_t, int *, struct sched_param *);
-  int (*ptr_pthread_setschedparam) (pthread_t, int,
-				    const struct sched_param *);
-  int (*ptr_pthread_mutex_destroy) (pthread_mutex_t *);
-  int (*ptr_pthread_mutex_init) (pthread_mutex_t *,
-				 const pthread_mutexattr_t *);
-  int (*ptr_pthread_mutex_lock) (pthread_mutex_t *);
-  int (*ptr_pthread_mutex_unlock) (pthread_mutex_t *);
-  pthread_t (*ptr_pthread_self) (void);
-  int (*ptr_pthread_setcancelstate) (int, int *);
-  int (*ptr_pthread_setcanceltype) (int, int *);
-  void (*ptr___pthread_cleanup_upto) (__jmp_buf, char *);
-  int (*ptr___pthread_once) (pthread_once_t *, void (*) (void));
-  int (*ptr___pthread_rwlock_rdlock) (pthread_rwlock_t *);
-  int (*ptr___pthread_rwlock_wrlock) (pthread_rwlock_t *);
-  int (*ptr___pthread_rwlock_unlock) (pthread_rwlock_t *);
-  int (*ptr___pthread_key_create) (pthread_key_t *, void (*) (void *));
-  void *(*ptr___pthread_getspecific) (pthread_key_t);
-  int (*ptr___pthread_setspecific) (pthread_key_t, const void *);
-  void (*ptr__pthread_cleanup_push_defer) (struct _pthread_cleanup_buffer *,
-					   void (*) (void *), void *);
-  void (*ptr__pthread_cleanup_pop_restore) (struct _pthread_cleanup_buffer *,
-					    int);
-#define HAVE_PTR_NTHREADS
-  unsigned int *ptr_nthreads;
-  void (*ptr___pthread_unwind) (__pthread_unwind_buf_t *)
-       __attribute ((noreturn)) __cleanup_fct_attribute;
-  void (*ptr__nptl_deallocate_tsd) (void);
-  int (*ptr__nptl_setxid) (struct xid_command *);
-  void (*ptr_freeres) (void);
-};
-
-/* Variable in libc.so.  */
-extern struct pthread_functions __libc_pthread_functions attribute_hidden;
-extern int __libc_pthread_functions_init attribute_hidden;
-
-# define PTHFCT_CALL(fct, params) \
-  __libc_pthread_functions.fct params
-
-#endif	/* pthread-functions.h */
diff --git a/libpthread/nptl/sysdeps/pthread/setxid.h b/libpthread/nptl/sysdeps/pthread/setxid.h
index 9331649..c2763cd 100644
--- a/libpthread/nptl/sysdeps/pthread/setxid.h
+++ b/libpthread/nptl/sysdeps/pthread/setxid.h
@@ -32,15 +32,11 @@ 
 # define INLINE_SETXID_SYSCALL(name, nr, args...) \
   ({									\
     int __result;							\
-    if (__builtin_expect (__libc_pthread_functions_init, 0))		\
-      {									\
 	struct xid_command __cmd;					\
 	__cmd.syscall_no = __NR_##name;					\
 	__SETXID_##nr (__cmd, args);					\
-	__result = PTHFCT_CALL (ptr__nptl_setxid, (&__cmd));		\
+	__result = PTHFCT_CALL (__nptl_setxid, (&__cmd));		\
 	}								\
-    else								\
-      __result = INLINE_SYSCALL (name, nr, args);			\
     __result;								\
    })
 #else
diff --git a/libpthread/nptl/sysdeps/pthread/uClibc-glue.h b/libpthread/nptl/sysdeps/pthread/uClibc-glue.h
index b957ded..46f8f87 100644
--- a/libpthread/nptl/sysdeps/pthread/uClibc-glue.h
+++ b/libpthread/nptl/sysdeps/pthread/uClibc-glue.h
@@ -26,7 +26,6 @@ 
 #define __read read
 #define __close close
 #define __on_exit on_exit
-#define __libc_current_sigrtmin_private __libc_current_sigrtmin
 #define __clone clone
 
 extern void *__libc_stack_end;
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.commonarch b/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.commonarch
index 57481fd..649d188 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.commonarch
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.commonarch
@@ -62,7 +62,6 @@  libpthread_linux_CSRC += pthread_attr_getaffinity.c pthread_attr_setaffinity.c \
 	pthread_getcpuclockid.c pthread_kill.c			\
 	pthread_mutex_cond_lock.c pthread_yield.c		\
 	sem_post.c sem_timedwait.c sem_trywait.c sem_wait.c	\
-	pt-tempname.c \
 	pthread_sigqueue.c \
 	lowlevellock.c lowlevelrobustlock.c
 
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/arc/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/arc/Makefile.arch
index 468e646..fa5d530 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/arc/Makefile.arch
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/arc/Makefile.arch
@@ -6,8 +6,7 @@ 
 #
 
 libpthread_linux_arch_SSRC =
-libpthread_linux_arch_CSRC = pthread_once.c \
-	pt-__syscall_rt_sigaction.c pt-__syscall_error.c
+libpthread_linux_arch_CSRC = pthread_once.c
 
 libc_linux_arch_CSRC = fork.c
 libc_linux_arch_SSRC = clone.S vfork.S
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/arc/pt-__syscall_error.c b/libpthread/nptl/sysdeps/unix/sysv/linux/arc/pt-__syscall_error.c
deleted file mode 100644
index 8002e65..0000000
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/arc/pt-__syscall_error.c
+++ /dev/null
@@ -1,7 +0,0 @@ 
-/*
- * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
- *
- * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
- */
-
-#include <../../../../../../../libc/sysdeps/linux/arc/__syscall_error.c>
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/arc/pt-__syscall_rt_sigaction.c b/libpthread/nptl/sysdeps/unix/sysv/linux/arc/pt-__syscall_rt_sigaction.c
deleted file mode 100644
index 967dad1..0000000
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/arc/pt-__syscall_rt_sigaction.c
+++ /dev/null
@@ -1,13 +0,0 @@ 
-/*
- * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
- *
- * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
- */
-
-/*
- * ARC syscall ABI only has __NR_rt_sigaction, thus vanilla sigaction does
- * some SA_RESTORER tricks before calling __syscall_rt_sigaction.
- * However including that file here causes a redefinition of __libc_sigaction
- * in static links involving pthreads
- */
-//#include <../../../../../../../libc/sysdeps/linux/arc/sigaction.c>
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch
index 80a0306..49d0684 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch
@@ -6,8 +6,7 @@ 
 #
 
 libpthread_linux_arch_SSRC =
-libpthread_linux_arch_CSRC = pthread_once.c \
-	pt-__syscall_rt_sigaction.c pt-__syscall_error.c
+libpthread_linux_arch_CSRC = pthread_once.c
 
 libc_linux_arch_CSRC = fork.c
 libc_linux_arch_SSRC = clone.S vfork.S
@@ -16,7 +15,5 @@  libc_linux_arch_SSRC-OMIT = waitpid.S
 # We always compile it in arm mode because of SAVE_PID macro
 # This macro should be alternatively implemented in THUMB
 # assembly.
-ASFLAGS-pt-vfork.S = -marm
-CFLAGS-OMIT-pt-vfork.S = -mthumb
 ASFLAGS-vfork.S = -marm
 CFLAGS-OMIT-vfork.S = -mthumb
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pt-__syscall_error.c b/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pt-__syscall_error.c
deleted file mode 100644
index 5a48a9b..0000000
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pt-__syscall_error.c
+++ /dev/null
@@ -1 +0,0 @@ 
-#include <../../../../../../../libc/sysdeps/linux/arm/__syscall_error.c>
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pt-__syscall_rt_sigaction.c b/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pt-__syscall_rt_sigaction.c
deleted file mode 100644
index 50137c8..0000000
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pt-__syscall_rt_sigaction.c
+++ /dev/null
@@ -1 +0,0 @@ 
-#include <../../../../../../../libc/sysdeps/linux/common/__syscall_rt_sigaction.c>
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/i386/Makefile.arch
index 9dc878c..be07d9c 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/Makefile.arch
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/i386/Makefile.arch
@@ -6,7 +6,7 @@ 
 #
 
 libpthread_linux_arch_SSRC = clone.S pthread_spin_unlock.S pthread_once.S
-libpthread_linux_arch_CSRC = pthread_spin_init.c pt-__syscall_error.c
+libpthread_linux_arch_CSRC = pthread_spin_init.c
 
 libc_linux_arch_CSRC = fork.c
 libc_linux_arch_SSRC = clone.S vfork.S
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/pt-__syscall_error.c b/libpthread/nptl/sysdeps/unix/sysv/linux/i386/pt-__syscall_error.c
deleted file mode 100644
index 620640a..0000000
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/pt-__syscall_error.c
+++ /dev/null
@@ -1 +0,0 @@ 
-#include <../../../../../../../libc/sysdeps/linux/i386/__syscall_error.c>
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/jmp-unwind.c b/libpthread/nptl/sysdeps/unix/sysv/linux/jmp-unwind.c
index 67587f4..6013ab0 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/jmp-unwind.c
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/jmp-unwind.c
@@ -27,13 +27,6 @@  extern void __pthread_cleanup_upto (__jmp_buf env, char *targetframe);
 void
 _longjmp_unwind (jmp_buf env, int val)
 {
-#ifdef SHARED
-  if (__libc_pthread_functions_init)
-    PTHFCT_CALL (ptr___pthread_cleanup_upto, (env->__jmpbuf,
-					      CURRENT_STACK_FRAME));
-#else
-  if (__pthread_cleanup_upto != NULL)
     __pthread_cleanup_upto (env->__jmpbuf, CURRENT_STACK_FRAME);
-#endif
 }
 libc_hidden_def(_longjmp_unwind)
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c b/libpthread/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c
index cc8d390..0df9951 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c
@@ -37,8 +37,7 @@  int *
 #endif
 __libc_pthread_init (
      unsigned long int *ptr,
-     void (*reclaim) (void),
-     const struct pthread_functions *functions)
+     void (*reclaim) (void))
 {
   /* Remember the pointer to the generation counter in libpthread.  */
   __fork_generation_pointer = ptr;
@@ -46,28 +45,7 @@  __libc_pthread_init (
   /* Called by a child after fork.  */
   __register_atfork (NULL, NULL, reclaim, NULL);
 
-#ifdef SHARED
-  /* We copy the content of the variable pointed to by the FUNCTIONS
-     parameter to one in libc.so since this means access to the array
-     can be done with one memory access instead of two.
-   */
-   memcpy (&__libc_pthread_functions, functions,
-           sizeof (__libc_pthread_functions));
-  __libc_pthread_functions_init = 1;
-#endif
-
 #ifndef TLS_MULTIPLE_THREADS_IN_TCB
   return &__libc_multiple_threads;
 #endif
 }
-
-#ifdef SHARED
-#if 0
-void
-libc_freeres_fn (freeres_libptread)
-{
-  if (__libc_pthread_functions_init)
-    PTHFCT_CALL (ptr_freeres, ());
-}
-#endif
-#endif
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/metag/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/metag/Makefile.arch
index b38c375..0f4d8d3 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/metag/Makefile.arch
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/metag/Makefile.arch
@@ -6,8 +6,7 @@ 
 #
 
 libpthread_linux_arch_SSRC =
-libpthread_linux_arch_CSRC = pthread_once.c \
-	pt-__syscall_rt_sigaction.c pt-__syscall_error.c
+libpthread_linux_arch_CSRC = pthread_once.c
 
 libc_linux_arch_CSRC = fork.c
 libc_linux_arch_SSRC = clone.S vfork.S
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-__syscall_error.c b/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-__syscall_error.c
deleted file mode 100644
index 8f97734..0000000
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-__syscall_error.c
+++ /dev/null
@@ -1,7 +0,0 @@ 
-/*
- * Copyright (C) 2013 Imagination Technologies Ltd.
- *
- * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
- */
-
-#include <../../../../../../../libc/sysdeps/linux/metag/__syscall_error.c>
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-__syscall_rt_sigaction.c b/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-__syscall_rt_sigaction.c
deleted file mode 100644
index 18769ca..0000000
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-__syscall_rt_sigaction.c
+++ /dev/null
@@ -1,7 +0,0 @@ 
-/*
- * Copyright (C) 2013 Imagination Technologies Ltd.
- *
- * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
- */
-
-#include <../../../../../../../libc/sysdeps/linux/common/__syscall_rt_sigaction.c>
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/mips/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/mips/Makefile.arch
index f87dedc..565efd4 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/mips/Makefile.arch
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/mips/Makefile.arch
@@ -6,7 +6,7 @@ 
 #
 
 libpthread_linux_arch_SSRC = clone.S
-libpthread_linux_arch_CSRC = pthread_once.c pt-__syscall_rt_sigaction.c
+libpthread_linux_arch_CSRC = pthread_once.c
 
 libc_linux_arch_CSRC = fork.c
 libc_linux_arch_SSRC = clone.S vfork.S
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/mips/pt-__syscall_rt_sigaction.c b/libpthread/nptl/sysdeps/unix/sysv/linux/mips/pt-__syscall_rt_sigaction.c
deleted file mode 100644
index 50137c8..0000000
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/mips/pt-__syscall_rt_sigaction.c
+++ /dev/null
@@ -1 +0,0 @@ 
-#include <../../../../../../../libc/sysdeps/linux/common/__syscall_rt_sigaction.c>
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/Makefile.arch
index df4bb69..2abb1d2 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/Makefile.arch
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/Makefile.arch
@@ -6,13 +6,10 @@ 
 #
 
 libpthread_linux_arch_SSRC =
-libpthread_linux_arch_CSRC = pthread_once.c pt-__syscall_error.c
+libpthread_linux_arch_CSRC = pthread_once.c
 
 libc_linux_arch_CSRC = fork.c
 libc_linux_arch_SSRC = clone.S vfork.S
 
-# powerpc32's PSEUDO_RET needs __syscall_error@local
-librt_linux_arch_CSRC = pt-__syscall_error.c
-
 ASFLAGS += -DUSE___THREAD
 
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pt-__syscall_error.c b/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pt-__syscall_error.c
deleted file mode 100644
index 2a402e5..0000000
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pt-__syscall_error.c
+++ /dev/null
@@ -1 +0,0 @@ 
-#include <../../../../../../../libc/sysdeps/linux/powerpc/__syscall_error.c>
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/pt-sigwait.c b/libpthread/nptl/sysdeps/unix/sysv/linux/pt-sigwait.c
deleted file mode 100644
index bde0a92..0000000
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/pt-sigwait.c
+++ /dev/null
@@ -1,2 +0,0 @@ 
-#include <pthreadP.h>
-#include "../../../../../../libc/signal/sigwait.c"
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pt-initfini.c b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pt-initfini.c
deleted file mode 100644
index 71fef93..0000000
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pt-initfini.c
+++ /dev/null
@@ -1,125 +0,0 @@ 
-/* Special .init and .fini section support for SH.  NPTL version.
-   Copyright (C) 2003, 2009 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 Library General Public
-   License as published by the Free Software Foundation; either
-   version 2 of the License, or (at your option) any later version.
-
-   In addition to the permissions in the GNU Library General Public
-   License, the Free Software Foundation gives you unlimited
-   permission to link the compiled version of this file with other
-   programs, and to distribute those programs without any restriction
-   coming from the use of this file.  (The Library General Public
-   License restrictions do apply in other respects; for example, they
-   cover modification of the file, and distribution when not linked
-   into another program.)
-
-   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 Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   see <http://www.gnu.org/licenses/>.  */
-
-/* This file is compiled into assembly code which is then munged by a sed
-   script into two files: crti.s and crtn.s.
-
-   * crti.s puts a function prologue at the beginning of the
-   .init and .fini sections and defines global symbols for
-   those addresses, so they can be called as functions.
-
-   * crtn.s puts the corresponding function epilogues
-   in the .init and .fini sections. */
-
-__asm__ ("\n\
-\n\
-#include \"defs.h\"\n\
-\n\
-/*@HEADER_ENDS*/\n\
-\n\
-/*@TESTS_BEGIN*/\n\
-\n\
-/*@TESTS_END*/\n\
-\n\
-/*@_init_PROLOG_BEGINS*/\n\
-	.section .init\n\
-	.align 5\n\
-	.global	_init\n\
-	.type	_init,@function\n\
-_init:\n\
-	mov.l	r12,@-r15\n\
-	mov.l	r14,@-r15\n\
-	sts.l	pr,@-r15\n\
-	mova	.L22,r0\n\
-	mov.l	.L22,r12\n\
-	add	r0,r12\n\
-	mova	.L24,r0\n\
-	mov.l	.L24,r1\n\
-	add	r0,r1\n\
-	jsr	@r1\n\
-	 mov	r15,r14\n\
-	bra	1f\n\
-	 nop\n\
-	.align 2\n\
-.L22:\n\
-	.long	_GLOBAL_OFFSET_TABLE_\n\
-.L24:\n\
-	.long	__pthread_initialize_minimal_internal@PLT\n\
-1:\n\
-	ALIGN\n\
-	END_INIT\n\
-\n\
-/*@_init_PROLOG_ENDS*/\n\
-\n\
-/*@_init_EPILOG_BEGINS*/\n\
-	.section .init\n\
-	mov	r14,r15\n\
-	lds.l	@r15+,pr\n\
-	mov.l	@r15+,r14\n\
-	rts	\n\
-	mov.l	@r15+,r12\n\
-	END_INIT\n\
-	\n\
-/*@_init_EPILOG_ENDS*/\n\
-\n\
-/*@_fini_PROLOG_BEGINS*/\n\
-	.section .fini\n\
-	.align 5\n\
-	.global	_fini\n\
-	.type	_fini,@function\n\
-_fini:\n\
-	mov.l	r12,@-r15\n\
-	mov.l	r14,@-r15\n\
-	sts.l	pr,@-r15\n\
-	mova	.L27,r0\n\
-	mov.l	.L27,r12\n\
-	add	r0,r12\n\
-	mov	r15,r14\n\
-	ALIGN\n\
-	END_FINI\n\
-	bra	1f\n\
-	 nop\n\
-	.align	2\n\
-.L27:\n\
-	.long	_GLOBAL_OFFSET_TABLE_\n\
-1:\n\
-/*@_fini_PROLOG_ENDS*/\n\
-\n\
-/*@_fini_EPILOG_BEGINS*/\n\
-	.section .fini\n\
-	mov	r14,r15\n\
-	lds.l	@r15+,pr\n\
-	mov.l	@r15+,r14\n\
-	rts	\n\
-	mov.l	@r15+,r12\n\
-\n\
-	END_FINI\n\
-	\n\
-/*@_fini_EPILOG_ENDS*/\n\
-\n\
-/*@TRAILER_BEGINS*/\n\
-");
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/Makefile.arch
index 01a9e87..f93ad4d 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/Makefile.arch
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/Makefile.arch
@@ -7,13 +7,10 @@ 
 
 libpthread_linux_arch_SSRC = clone.S
 libpthread_linux_arch_CSRC = pthread_once.c lowlevellock.c \
-	pthread_barrier_init.c pthread_barrier_wait.c pthread_barrier_destroy.c \
-	pt-__syscall_error.c
+	pthread_barrier_init.c pthread_barrier_wait.c pthread_barrier_destroy.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
 
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
deleted file mode 100644
index 872e4ef..0000000
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pt-__syscall_error.c
+++ /dev/null
@@ -1 +0,0 @@ 
-#include <../../../../../../../libc/sysdeps/linux/sparc/__syscall_error.c>
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/Makefile.arch
index b49db54..b48f4cb 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/Makefile.arch
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/Makefile.arch
@@ -11,7 +11,7 @@  libpthread_linux_arch_SSRC = clone.S pthread_once.S \
 	sem_trywait.S sem_wait.S pthread_rwlock_rdlock.S pthread_rwlock_wrlock.S \
 	pthread_rwlock_timedrdlock.S pthread_rwlock_timedwrlock.S pthread_rwlock_unlock.S \
 	pthread_spin_unlock.S cancellation.S
-libpthread_linux_arch_CSRC = pthread_spin_init.c pt-__syscall_error.c
+libpthread_linux_arch_CSRC = pthread_spin_init.c
 
 libc_linux_arch_CSRC = fork.c
 libc_linux_arch_SSRC = clone.S vfork.S libc-cancellation.S libc-lowlevellock.S
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pt-__syscall_error.c b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pt-__syscall_error.c
deleted file mode 100644
index 2ab8149..0000000
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pt-__syscall_error.c
+++ /dev/null
@@ -1 +0,0 @@ 
-#include <../../../../../../../libc/sysdeps/linux/x86_64/__syscall_error.c>
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/xtensa/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/xtensa/Makefile.arch
index 8ebe287..7014c3f 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/xtensa/Makefile.arch
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/xtensa/Makefile.arch
@@ -7,7 +7,6 @@  libpthread_linux_arch_CSRC = pthread_once.c
 libpthread_linux_arch_SSRC =
 
 CFLAGS-OMIT-fork.c = -DNOT_IN_libc -DIS_IN_libpthread
-ASFLAGS-pt-vfork.S = -DNOT_IN_libc -DIS_IN_libpthread -D_LIBC_REENTRANT
 
 ASFLAGS-clone.S = -D_LIBC_REENTRANT
 ASFLAGS-vfork.S = -D_LIBC_REENTRANT
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/xtensa/pt-initfini.c b/libpthread/nptl/sysdeps/unix/sysv/linux/xtensa/pt-initfini.c
deleted file mode 100644
index 4e6d26e..0000000
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/xtensa/pt-initfini.c
+++ /dev/null
@@ -1,134 +0,0 @@ 
-/* Special .init and .fini section support.  Linuxthread version.
-   Copyright (C) 1995,1996,1997,2000,2001,2002 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 of the License, or (at your option) any later version.
-
-   In addition to the permissions in the GNU Lesser General Public
-   License, the Free Software Foundation gives you unlimited
-   permission to link the compiled version of this file with other
-   programs, and to distribute those programs without any restriction
-   coming from the use of this file.  (The Library General Public
-   License restrictions do apply in other respects; for example, they
-   cover modification of the file, and distribution when not linked
-   into another program.)
-
-   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; see the file COPYING.LIB.  If not,
-   see <http://www.gnu.org/licenses/>.  */
-
-/* This file is compiled into assembly code which is then munged by a sed
-   script into two files: crti.s and crtn.s.
-
-   * crti.s puts a function prologue at the beginning of the
-   .init and .fini sections and defines global symbols for
-   those addresses, so they can be called as functions.
-
-   * crtn.s puts the corresponding function epilogues
-   in the .init and .fini sections. */
-
-#include <stdlib.h>
-
-/* We use embedded asm for .section unconditionally, as this makes it
-   easier to insert the necessary directives into crtn.S. */
-#define SECTION(x) __asm__ (".section " x )
-
-/* Embed an #include to pull in the alignment and .end directives. */
-__asm__ ("\n#include \"defs.h\"");
-__asm__ ("\n#if defined __i686 && defined __ASSEMBLER__");
-__asm__ ("\n#undef __i686");
-__asm__ ("\n#define __i686 __i686");
-__asm__ ("\n#endif");
-
-/* The initial common code ends here. */
-__asm__ ("\n/*@HEADER_ENDS*/");
-
-/* To determine whether we need .end and .align: */
-__asm__ ("\n/*@TESTS_BEGIN*/");
-extern void dummy (void (*foo) (void));
-void
-dummy (void (*foo) (void))
-{
-  if (foo)
-    (*foo) ();
-}
-__asm__ ("\n/*@TESTS_END*/");
-
-/* The beginning of _init:  */
-__asm__ ("\n/*@_init_PROLOG_BEGINS*/");
-
-static void
-call_initialize_minimal (void)
-{
-  extern void __pthread_initialize_minimal_internal (void)
-    __attribute ((visibility ("hidden")));
-
-  __pthread_initialize_minimal_internal ();
-}
-
-SECTION (".init");
-extern void __attribute__ ((section (".init"))) _init (void);
-void
-_init (void)
-{
-  /* The very first thing we must do is to set up the registers.  */
-  call_initialize_minimal ();
-
-  __asm__ ("ALIGN");
-  __asm__("END_INIT");
-  /* Now the epilog. */
-  __asm__ ("\n/*@_init_PROLOG_ENDS*/");
-  __asm__ ("\n/*@_init_EPILOG_BEGINS*/");
-  SECTION(".init");
-}
-__asm__ ("END_INIT");
-
-/* End of the _init epilog, beginning of the _fini prolog. */
-__asm__ ("\n/*@_init_EPILOG_ENDS*/");
-__asm__ ("\n/*@_fini_PROLOG_BEGINS*/");
-
-SECTION (".fini");
-extern void __attribute__ ((section (".fini"))) _fini (void);
-void
-_fini (void)
-{
-
-  /* End of the _fini prolog. */
-  __asm__ ("ALIGN");
-  __asm__ ("END_FINI");
-  __asm__ ("\n/*@_fini_PROLOG_ENDS*/");
-
-  /* Xtensa: It doesn't really matter whether GCC thinks this is a leaf
-     function or not, and the scripts that are supposed to remove the
-     call don't catch the literal, resulting in an undefined symbol
-     reference.  */
-#if 0
-  {
-    /* Let GCC know that _fini is not a leaf function by having a dummy
-       function call here.  We arrange for this call to be omitted from
-       either crt file.  */
-    extern void i_am_not_a_leaf (void);
-    i_am_not_a_leaf ();
-  }
-#endif
-
-  /* Beginning of the _fini epilog. */
-  __asm__ ("\n/*@_fini_EPILOG_BEGINS*/");
-  SECTION (".fini");
-}
-__asm__ ("END_FINI");
-
-/* End of the _fini epilog.  Any further generated assembly (e.g. .ident)
-   is shared between both crt files. */
-__asm__ ("\n/*@_fini_EPILOG_ENDS*/");
-__asm__ ("\n/*@TRAILER_BEGINS*/");
-
-/* End of file. */
diff --git a/libpthread/nptl/sysdeps/xtensa/Makefile.arch b/libpthread/nptl/sysdeps/xtensa/Makefile.arch
index 2c1fc1b..9e63b19 100644
--- a/libpthread/nptl/sysdeps/xtensa/Makefile.arch
+++ b/libpthread/nptl/sysdeps/xtensa/Makefile.arch
@@ -18,9 +18,6 @@ 
 ASFLAGS-dl-tlsdesc.S = -DNOT_IN_libc=1
 ASFLAGS-pthread_spin_lock.S = -DNOT_IN_libc -DIS_IN_libpthread
 ASFLAGS-pthread_spin_trylock.S = -DNOT_IN_libc -DIS_IN_libpthread
-ASFLAGS-nptl-sysdep.S = -DNOT_IN_libc -DIS_IN_libpthread	\
-                        -D_LIBC_REENTRANT			\
-                        -I$(top_srcdir)libc/sysdeps/linux/xtensa
 
 libc_arch_a_CSRC = libc-tls.c
 librt_arch_a_SSRC = dl-tlsdesc.S
diff --git a/libresolv/Makefile.in b/libresolv/Makefile.in
index 89ef4f7..3425a7c 100644
--- a/libresolv/Makefile.in
+++ b/libresolv/Makefile.in
@@ -9,13 +9,6 @@  subdirs += libresolv
 
 CFLAGS-libresolv := -DNOT_IN_libc -DIS_IN_libresolv $(SSP_ALL_CFLAGS)
 
-LDFLAGS-$(UCLIBC_FORMAT_DSBT_ELF)-libresolv.so := -Wl,--dsbt-index=7
-LDFLAGS-libresolv.so := $(LDFLAGS) $(call link.asneeded,-lc)
-
-LIBS-libresolv.so := $(LIBS)
-
-libresolv_FULL_NAME := libresolv-$(VERSION).so
-
 libresolv_DIR := $(top_srcdir)libresolv
 libresolv_OUT := $(top_builddir)libresolv
 
@@ -29,27 +22,7 @@  libresolv-a-y := $(libresolv_OBJ)
 endif
 libresolv-so-y := $(libresolv_OBJ:.o=.os)
 
-lib-a-$(UCLIBC_HAS_LIBRESOLV_STUB)  += $(top_builddir)lib/libresolv.a
-lib-so-$(UCLIBC_HAS_LIBRESOLV_STUB) += $(top_builddir)lib/libresolv.so
 objclean-y += CLEAN_libresolv
 
-ifeq ($(DOPIC),y)
-$(top_builddir)lib/libresolv.so: $(top_builddir)lib/libresolv.a $(libc.depend)
-else
-$(top_builddir)lib/libresolv.so: $(libresolv_OUT)/libresolv_so.a $(libc.depend)
-endif
-	$(call link.so,$(libresolv_FULL_NAME),$(ABI_VERSION))
-	# link for backward compatibility
-	$(call link.so,$(libresolv_FULL_NAME),0)
-
-$(libresolv_OUT)/libresolv_so.a: $(libresolv-so-y)
-	$(Q)$(RM) $@
-	$(do_ar)
-
-$(top_builddir)lib/libresolv.a: $(libresolv-a-y)
-	$(Q)$(INSTALL) -d $(dir $@)
-	$(Q)$(RM) $@
-	$(do_ar)
-
 CLEAN_libresolv:
 	$(do_rm) $(addprefix $(libresolv_OUT)/*., o os a)
diff --git a/librt/Makefile.in b/librt/Makefile.in
index 88f15f9..8405ec0 100644
--- a/librt/Makefile.in
+++ b/librt/Makefile.in
@@ -9,16 +9,6 @@  subdirs += librt
 
 CFLAGS-librt := -DNOT_IN_libc -DIS_IN_librt $(SSP_ALL_CFLAGS)
 
-LDFLAGS-$(UCLIBC_FORMAT_DSBT_ELF)-librt.so := -Wl,--dsbt-index=9
-LDFLAGS-librt.so := $(LDFLAGS)
-LIBS-librt.so := $(LIBS)
-ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
-LIBS-librt.so += $(top_builddir)lib/libpthread.so \
-	$(CC_FLAG_ASNEEDED) $(top_builddir)lib/libdl.so $(CC_FLAG_NO_ASNEEDED)
-endif
-
-librt_FULL_NAME := librt-$(VERSION).so
-
 librt_DIR := $(top_srcdir)librt
 librt_OUT := $(top_builddir)librt
 
@@ -58,31 +48,7 @@  librt-a-y += $(librt_OBJ)
 endif
 librt-so-y += $(librt_OBJ:.o=.oS)
 
-ifeq ($(UCLIBC_HAS_REALTIME),y)
-lib-a-y += $(top_builddir)lib/librt.a
-lib-so-y += $(top_builddir)lib/librt.so
-endif
-
 librt-dep-y := $(libc.depend)
-librt-dep-$(UCLIBC_HAS_THREADS_NATIVE) += $(libpthread.depend) $(libdl.depend)
-
-# for NPTL we need SHARED regardless of DOPIC
-ifeq ($(if $(UCLIBC_HAS_THREADS_NATIVE),,$(DOPIC)),y)
-$(top_builddir)lib/librt.so: $(top_builddir)lib/librt.a $(librt-dep-y)
-else
-$(top_builddir)lib/librt.so: $(librt_OUT)/librt_so.a $(librt-dep-y)
-endif
-	$(call link.so,$(librt_FULL_NAME),$(ABI_VERSION))
-	# link for backward compatibility
-	$(call link.so,$(librt_FULL_NAME),0)
-
-$(librt_OUT)/librt_so.a: $(librt-so-y)
-	$(Q)$(RM) $@
-	$(do_ar)
-
-$(top_builddir)lib/librt.a: $(librt-a-y)
-	$(Q)$(RM) $@
-	$(do_ar)
 
 objclean-y += CLEAN_librt
 
diff --git a/libuargp/Makefile.in b/libuargp/Makefile.in
index f1ccfa6..91d41ce 100644
--- a/libuargp/Makefile.in
+++ b/libuargp/Makefile.in
@@ -11,12 +11,6 @@ 
 
 CFLAGS-libuargp := -DNOT_IN_libc -DIS_IN_libuargp $(SSP_ALL_CFLAGS)
 
-LDFLAGS-libuargp.so := $(LDFLAGS)
-
-LIBS-libuargp.so := $(LIBS)
-
-libuargp_FULL_NAME := libuargp-$(VERSION).so
-
 libuargp_DIR := $(top_srcdir)libuargp
 libuargp_OUT := $(top_builddir)libuargp
 
@@ -39,30 +33,11 @@  libuargp-a-y := $(libuargp_OBJS)
 endif
 libuargp-so-y := $(libuargp_OBJS:.o=.os)
 
-lib-a-$(UCLIBC_HAS_ARGP) += $(top_builddir)lib/libuargp.a
-lib-so-$(UCLIBC_HAS_ARGP) += $(top_builddir)lib/libuargp.so
-
 objclean-y += CLEAN_libuargp
 
-ifeq ($(DOPIC),y)
-$(top_builddir)lib/libuargp.so: $(top_builddir)lib/libuargp.a $(libc.depend)
-else
-$(top_builddir)lib/libuargp.so: $(libuargp_OUT)/libuargp_so.a $(libc.depend)
-endif
-	$(call link.so,$(libuargp_FULL_NAME),$(MAJOR_VERSION))
-
-$(libuargp_OUT)/libuargp_so.a: $(libuargp-so-y)
-	$(Q)$(RM) $@
-	$(do_ar)
-
 $(libuargp_OUT)/libuargp.oS: $(libuargp_SRCS)
 	$(Q)$(RM) $@
 	$(compile-m)
 
-$(top_builddir)lib/libuargp.a: $(libuargp-a-y)
-	$(Q)$(INSTALL) -d $(dir $@)
-	$(Q)$(RM) $@
-	$(do_ar)
-
 CLEAN_libuargp:
 	$(do_rm) $(addprefix $(libuargp_OUT)/*., o os oS a)
diff --git a/libubacktrace/Makefile.in b/libubacktrace/Makefile.in
index fdd73fa..2d1478d 100644
--- a/libubacktrace/Makefile.in
+++ b/libubacktrace/Makefile.in
@@ -10,12 +10,6 @@  subdirs += libubacktrace libubacktrace/$(TARGET_ARCH)
 
 CFLAGS-libubacktrace := -DNOT_IN_libc -DIS_IN_libubacktrace $(SSP_ALL_CFLAGS)
 
-LDFLAGS-libubacktrace.so := $(LDFLAGS) $(top_builddir)lib/libdl-$(VERSION).so
-
-LIBS-libubacktrace.so := $(LIBS)
-
-libubacktrace_FULL_NAME := libubacktrace-$(VERSION).so
-
 libubacktrace_DIR := $(top_srcdir)libubacktrace
 libubacktrace_OUT := $(top_builddir)libubacktrace
 
@@ -54,28 +48,11 @@  endif
 libubacktrace-so-y += $(libubacktrace_OBJS:.o=.os) $(libubacktrace-shared-y)
 
 
-lib-a-$(UCLIBC_HAS_BACKTRACE) += $(top_builddir)lib/libubacktrace.a
-lib-so-$(UCLIBC_HAS_BACKTRACE) += $(top_builddir)lib/libubacktrace.so
-
 objclean-y += CLEAN_libubacktrace
 
-$(top_builddir)lib/libubacktrace.so: $(libubacktrace_OUT)/libubacktrace_so.a $(libdl.depend)
-	$(call link.so,$(libubacktrace_FULL_NAME),$(ABI_VERSION))
-	# link for backward compatibility
-	$(call link.so,$(libubacktrace_FULL_NAME),0)
-
-$(libubacktrace_OUT)/libubacktrace_so.a: $(libubacktrace-so-y)
-	$(Q)$(RM) $@
-	$(do_ar)
-
 $(libubacktrace_OUT)/libubacktrace.oS: $(libubacktrace_SRCS) $(libubacktrace_ARCH_SRCS) $(libubacktrace_SHARED_SRCS)
 	$(Q)$(RM) $@
 	$(compile-m)
 
-$(top_builddir)lib/libubacktrace.a: $(libubacktrace-a-y)
-	$(Q)$(INSTALL) -d $(dir $@)
-	$(Q)$(RM) $@
-	$(do_ar)
-
 CLEAN_libubacktrace:
 	$(do_rm) $(addprefix $(libubacktrace_OUT)/*., o os oS a)
diff --git a/libutil/Makefile.in b/libutil/Makefile.in
index d36995f..dd4df05 100644
--- a/libutil/Makefile.in
+++ b/libutil/Makefile.in
@@ -9,13 +9,6 @@  subdirs += libutil
 
 CFLAGS-libutil := -DNOT_IN_libc -DIS_IN_libutil $(SSP_ALL_CFLAGS)
 
-LDFLAGS-$(UCLIBC_FORMAT_DSBT_ELF)-libutil.so := -Wl,--dsbt-index=8
-LDFLAGS-libutil.so := $(LDFLAGS)
-
-LIBS-libutil.so := $(LIBS)
-
-libutil_FULL_NAME := libutil-$(VERSION).so
-
 libutil_DIR := $(top_srcdir)libutil
 libutil_OUT := $(top_builddir)libutil
 
@@ -44,31 +37,11 @@  libutil-a-y := $(libutil_OBJ)
 endif
 libutil-so-y := $(libutil_OBJ:.o=.os)
 
-lib-a-$(UCLIBC_HAS_LIBUTIL) += $(top_builddir)lib/libutil.a
-lib-so-$(UCLIBC_HAS_LIBUTIL) += $(top_builddir)lib/libutil.so
 objclean-y += CLEAN_libutil
 
-ifeq ($(DOPIC),y)
-$(top_builddir)lib/libutil.so: $(top_builddir)lib/libutil.a $(libc.depend)
-else
-$(top_builddir)lib/libutil.so: $(libutil_OUT)/libutil_so.a $(libc.depend)
-endif
-	$(call link.so,$(libutil_FULL_NAME),$(ABI_VERSION))
-	# link for backward compatibility
-	$(call link.so,$(libutil_FULL_NAME),0)
-
-$(libutil_OUT)/libutil_so.a: $(libutil-so-y)
-	$(Q)$(RM) $@
-	$(do_ar)
-
 $(libutil_OUT)/libutil.oS: $(libutil_SRC)
 	$(Q)$(RM) $@
 	$(compile-m)
 
-$(top_builddir)lib/libutil.a: $(libutil-a-y)
-	$(Q)$(INSTALL) -d $(dir $@)
-	$(Q)$(RM) $@
-	$(do_ar)
-
 CLEAN_libutil:
 	$(do_rm) $(addprefix $(libutil_OUT)/*., o os oS a)
diff --git a/test/argp/Makefile.in b/test/argp/Makefile.in
index d81b359..c472964 100644
--- a/test/argp/Makefile.in
+++ b/test/argp/Makefile.in
@@ -4,8 +4,6 @@ 
 TESTS := $(addprefix argp-, ex1 ex2 ex3 ex4 test) \
          bug-argp1 tst-argp1 tst-argp2
 
-EXTRA_LDFLAGS = -luargp
-
 OPTS_argp-ex3 = ARG1 ARG2
 OPTS_argp-ex4 = ARG1 string1 string2 string3
 OPTS_bug-argp1 = -- --help
diff --git a/test/math/libm-test-ulps-xtensa b/test/math/libm-test-ulps-microblaze
similarity index 100%
copy from test/math/libm-test-ulps-xtensa
copy to test/math/libm-test-ulps-microblaze
diff --git a/test/math/libm-test-ulps-s390 b/test/math/libm-test-ulps-s390
deleted file mode 100644
index 989722e..0000000
--- a/test/math/libm-test-ulps-s390
+++ /dev/null
@@ -1,1332 +0,0 @@ 
-# Begin of automatic generation
-
-# atan2
-Test "atan2 (-0.00756827042671106339, -.001792735857538728036) == -1.80338464113663849327153994379639112":
-ildouble: 1
-ldouble: 1
-Test "atan2 (-0.75, -1.0) == -2.49809154479650885165983415456218025":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "atan2 (0.75, -1.0) == 2.49809154479650885165983415456218025":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "atan2 (1.390625, 0.9296875) == 0.981498387184244311516296577615519772":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-# atanh
-Test "atanh (0.75) == 0.972955074527656652552676371721589865":
-float: 1
-ifloat: 1
-
-# cacos
-Test "Imaginary part of: cacos (0.75 + 1.25 i) == 1.11752014915610270578240049553777969 - 1.13239363160530819522266333696834467 i":
-ildouble: 1
-ldouble: 1
-
-# cacosh
-Test "Real part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i":
-double: 1
-float: 7
-idouble: 1
-ifloat: 7
-Test "Imaginary part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i":
-double: 1
-float: 3
-idouble: 1
-ifloat: 3
-ildouble: 1
-ldouble: 1
-
-# casin
-Test "Real part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i":
-ildouble: 1
-ldouble: 1
-
-# casinh
-Test "Real part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i":
-double: 5
-float: 1
-idouble: 5
-ifloat: 1
-ildouble: 4
-ldouble: 4
-Test "Imaginary part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i":
-double: 3
-float: 6
-idouble: 3
-ifloat: 6
-ildouble: 2
-ldouble: 2
-Test "Real part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-# catan
-Test "Real part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i":
-float: 3
-ifloat: 3
-Test "Imaginary part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: catan (0.75 + 1.25 i) == 1.10714871779409050301706546017853704 + 0.549306144334054845697622618461262852 i":
-float: 4
-ifloat: 4
-Test "Imaginary part of: catan (0.75 + 1.25 i) == 1.10714871779409050301706546017853704 + 0.549306144334054845697622618461262852 i":
-ildouble: 1
-ldouble: 1
-
-# catanh
-Test "Real part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i":
-double: 4
-idouble: 4
-Test "Imaginary part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i":
-float: 4
-ifloat: 4
-Test "Real part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i":
-float: 6
-ifloat: 6
-ildouble: 1
-ldouble: 1
-
-# cbrt
-Test "cbrt (-0.001) == -0.1":
-ildouble: 1
-ldouble: 1
-Test "cbrt (-27.0) == -3.0":
-double: 1
-idouble: 1
-Test "cbrt (0.75) == 0.908560296416069829445605878163630251":
-double: 1
-idouble: 1
-Test "cbrt (0.9921875) == 0.997389022060725270579075195353955217":
-double: 1
-idouble: 1
-
-# ccos
-Test "Real part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
-float: 1
-ifloat: 1
-
-# ccosh
-Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
-float: 1
-ifloat: 1
-
-# cexp
-Test "Real part of: cexp (-2.0 - 3.0 i) == -0.13398091492954261346140525546115575 - 0.019098516261135196432576240858800925 i":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cexp (-2.0 - 3.0 i) == -0.13398091492954261346140525546115575 - 0.019098516261135196432576240858800925 i":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i":
-ildouble: 1
-ldouble: 1
-
-# clog
-Test "Imaginary part of: clog (-2 - 3 i) == 1.2824746787307683680267437207826593 - 2.1587989303424641704769327722648368 i":
-float: 3
-ifloat: 3
-Test "Real part of: clog (0.75 + 1.25 i) == 0.376885901188190075998919126749298416 + 1.03037682652431246378774332703115153 i":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-# clog10
-Test "Imaginary part of: clog10 (-0 + inf i) == inf + pi/2*log10(e) i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
-double: 1
-float: 5
-idouble: 1
-ifloat: 5
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-3 - inf i) == inf - pi/2*log10(e) i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-inf + 0 i) == inf + pi*log10(e) i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-inf + 1 i) == inf + pi*log10(e) i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-inf + inf i) == inf + 3/4 pi*log10(e) i":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (-inf - 0 i) == inf - pi*log10(e) i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-inf - 1 i) == inf - pi*log10(e) i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (0 + inf i) == inf + pi/2*log10(e) i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (0 - inf i) == inf - pi/2*log10(e) i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: clog10 (0.75 + 1.25 i) == 0.163679467193165171449476605077428975 + 0.447486970040493067069984724340855636 i":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (0.75 + 1.25 i) == 0.163679467193165171449476605077428975 + 0.447486970040493067069984724340855636 i":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (3 + inf i) == inf + pi/2*log10(e) i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (3 - inf i) == inf - pi/2*log10(e) i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (inf + inf i) == inf + pi/4*log10(e) i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (inf - inf i) == inf - pi/4*log10(e) i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-# cos
-Test "cos (M_PI_6l * 2.0) == 0.5":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "cos (M_PI_6l * 4.0) == -0.5":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "cos (pi/2) == 0":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-# cpow
-Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
-float: 1
-ifloat: 1
-Test "Real part of: cpow (0.75 + 1.25 i, 0.75 + 1.25 i) == 0.117506293914473555420279832210420483 + 0.346552747708338676483025352060418001 i":
-double: 1
-float: 4
-idouble: 1
-ifloat: 4
-ildouble: 4
-ldouble: 4
-Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 0.0 i) == 0.75 + 1.25 i":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: cpow (0.75 + 1.25 i, 1.0 + 0.0 i) == 0.75 + 1.25 i":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 1.0 i) == 0.0846958290317209430433805274189191353 + 0.513285749182902449043287190519090481 i":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 10
-ldouble: 10
-Test "Real part of: cpow (2 + 0 i, 10 + 0 i) == 1024.0 + 0.0 i":
-ildouble: 2
-ldouble: 2
-Test "Real part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i":
-double: 1
-float: 4
-idouble: 1
-ifloat: 4
-ildouble: 3
-ldouble: 3
-Test "Imaginary part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i":
-float: 2
-ifloat: 2
-Test "Imaginary part of: cpow (e + 0 i, 0 + 2 * M_PIl i) == 1.0 + 0.0 i":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-# csin
-Test "Imaginary part of: csin (-2 - 3 i) == -9.15449914691142957346729954460983256 + 4.16890695996656435075481305885375484 i":
-ildouble: 1
-ldouble: 1
-Test "Real part of: csin (0.75 + 1.25 i) == 1.28722291002649188575873510790565441 + 1.17210635989270256101081285116138863 i":
-ildouble: 1
-ldouble: 1
-
-# csinh
-Test "Real part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
-double: 1
-idouble: 1
-Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
-float: 1
-ifloat: 1
-Test "Imaginary part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
-float: 1
-ifloat: 1
-
-# csqrt
-Test "Real part of: csqrt (-2 + 3 i) == 0.89597747612983812471573375529004348 + 1.6741492280355400404480393008490519 i":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: csqrt (-2 - 3 i) == 0.89597747612983812471573375529004348 - 1.6741492280355400404480393008490519 i":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csqrt (0.75 + 1.25 i) == 1.05065169626078392338656675760808326 + 0.594868882070379067881984030639932657 i":
-ildouble: 1
-ldouble: 1
-
-# ctan
-Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-
-# ctanh
-Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i":
-float: 1
-ifloat: 1
-Test "Real part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i":
-double: 1
-idouble: 1
-
-# erf
-Test "erf (1.25) == 0.922900128256458230136523481197281140":
-double: 1
-idouble: 1
-
-# erfc
-Test "erfc (0.75) == 0.288844366346484868401062165408589223":
-float: 1
-ifloat: 1
-Test "erfc (2.0) == 0.00467773498104726583793074363274707139":
-double: 1
-idouble: 1
-Test "erfc (27.0) == 0.523704892378925568501606768284954709e-318":
-ildouble: 1
-ldouble: 1
-Test "erfc (4.125) == 0.542340079956506600531223408575531062e-8":
-double: 1
-idouble: 1
-
-# exp10
-Test "exp10 (-1) == 0.1":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "exp10 (0.75) == 5.62341325190349080394951039776481231":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "exp10 (3) == 1000":
-double: 6
-float: 2
-idouble: 6
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-# exp2
-Test "exp2 (10) == 1024":
-ildouble: 2
-ldouble: 2
-
-# expm1
-Test "expm1 (0.75) == 1.11700001661267466854536981983709561":
-double: 1
-idouble: 1
-Test "expm1 (1) == M_El - 1.0":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-# gamma
-Test "gamma (-0.5) == log(2*sqrt(pi))":
-ildouble: 1
-ldouble: 1
-
-# hypot
-Test "hypot (-0.7, -12.4) == 12.419742348374220601176836866763271":
-float: 1
-ifloat: 1
-Test "hypot (-0.7, 12.4) == 12.419742348374220601176836866763271":
-float: 1
-ifloat: 1
-Test "hypot (-12.4, -0.7) == 12.419742348374220601176836866763271":
-float: 1
-ifloat: 1
-Test "hypot (-12.4, 0.7) == 12.419742348374220601176836866763271":
-float: 1
-ifloat: 1
-Test "hypot (0.7, -12.4) == 12.419742348374220601176836866763271":
-float: 1
-ifloat: 1
-Test "hypot (0.7, 12.4) == 12.419742348374220601176836866763271":
-float: 1
-ifloat: 1
-Test "hypot (12.4, -0.7) == 12.419742348374220601176836866763271":
-float: 1
-ifloat: 1
-Test "hypot (12.4, 0.7) == 12.419742348374220601176836866763271":
-float: 1
-ifloat: 1
-
-# j0
-Test "j0 (-4.0) == -3.9714980986384737228659076845169804197562E-1":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-Test "j0 (0.75) == 0.864242275166648623555731103820923211":
-float: 1
-ifloat: 1
-Test "j0 (10.0) == -0.245935764451348335197760862485328754":
-double: 3
-float: 1
-idouble: 3
-ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "j0 (2.0) == 0.223890779141235668051827454649948626":
-float: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-Test "j0 (4.0) == -3.9714980986384737228659076845169804197562E-1":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-Test "j0 (8.0) == 0.171650807137553906090869407851972001":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-# j1
-Test "j1 (-1.0) == -0.440050585744933515959682203718914913":
-ildouble: 1
-ldouble: 1
-Test "j1 (0.75) == 0.349243602174862192523281016426251335":
-ildouble: 1
-ldouble: 1
-Test "j1 (1.0) == 0.440050585744933515959682203718914913":
-ildouble: 1
-ldouble: 1
-Test "j1 (10.0) == 0.0434727461688614366697487680258592883":
-float: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-Test "j1 (2.0) == 0.576724807756873387202448242269137087":
-double: 1
-idouble: 1
-Test "j1 (8.0) == 0.234636346853914624381276651590454612":
-double: 1
-idouble: 1
-ildouble: 4
-ldouble: 4
-
-# jn
-Test "jn (0, -4.0) == -3.9714980986384737228659076845169804197562E-1":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-Test "jn (0, 0.75) == 0.864242275166648623555731103820923211":
-float: 1
-ifloat: 1
-Test "jn (0, 10.0) == -0.245935764451348335197760862485328754":
-double: 3
-float: 1
-idouble: 3
-ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "jn (0, 2.0) == 0.223890779141235668051827454649948626":
-float: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-Test "jn (0, 4.0) == -3.9714980986384737228659076845169804197562E-1":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-Test "jn (0, 8.0) == 0.171650807137553906090869407851972001":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "jn (1, -1.0) == -0.440050585744933515959682203718914913":
-ildouble: 1
-ldouble: 1
-Test "jn (1, 0.75) == 0.349243602174862192523281016426251335":
-ildouble: 1
-ldouble: 1
-Test "jn (1, 1.0) == 0.440050585744933515959682203718914913":
-ildouble: 1
-ldouble: 1
-Test "jn (1, 10.0) == 0.0434727461688614366697487680258592883":
-float: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-Test "jn (1, 2.0) == 0.576724807756873387202448242269137087":
-double: 1
-idouble: 1
-Test "jn (1, 8.0) == 0.234636346853914624381276651590454612":
-double: 1
-idouble: 1
-ildouble: 4
-ldouble: 4
-Test "jn (10, -1.0) == 0.263061512368745320699785368779050294e-9":
-ildouble: 1
-ldouble: 1
-Test "jn (10, 0.125) == 0.250543369809369890173993791865771547e-18":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "jn (10, 0.75) == 0.149621713117596814698712483621682835e-10":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "jn (10, 1.0) == 0.263061512368745320699785368779050294e-9":
-ildouble: 1
-ldouble: 1
-Test "jn (10, 10.0) == 0.207486106633358857697278723518753428":
-double: 4
-float: 3
-idouble: 4
-ifloat: 3
-ildouble: 2
-ldouble: 2
-Test "jn (10, 2.0) == 0.251538628271673670963516093751820639e-6":
-float: 4
-ifloat: 4
-Test "jn (3, 0.125) == 0.406503832554912875023029337653442868e-4":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "jn (3, 0.75) == 0.848438342327410884392755236884386804e-2":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "jn (3, 10.0) == 0.0583793793051868123429354784103409563":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 2
-ldouble: 2
-Test "jn (3, 2.0) == 0.128943249474402051098793332969239835":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-
-# lgamma
-Test "lgamma (-0.5) == log(2*sqrt(pi))":
-ildouble: 1
-ldouble: 1
-Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-# log10
-Test "log10 (0.75) == -0.124938736608299953132449886193870744":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-Test "log10 (e) == log10(e)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-# log1p
-Test "log1p (-0.25) == -0.287682072451780927439219005993827432":
-float: 1
-ifloat: 1
-
-# log2
-Test "log2 (0.75) == -.415037499278843818546261056052183492":
-ildouble: 1
-ldouble: 1
-
-# sincos
-Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res":
-float: 1
-ifloat: 1
-
-# sqrt
-Test "sqrt (2) == M_SQRT2l":
-ildouble: 1
-ldouble: 1
-
-# tan
-Test "tan (pi/4) == 1":
-double: 1
-idouble: 1
-
-# tanh
-Test "tanh (-0.75) == -0.635148952387287319214434357312496495":
-ildouble: 1
-ldouble: 1
-Test "tanh (-1.0) == -0.7615941559557648881194582826047935904":
-ildouble: 1
-ldouble: 1
-Test "tanh (0.75) == 0.635148952387287319214434357312496495":
-ildouble: 1
-ldouble: 1
-Test "tanh (1.0) == 0.7615941559557648881194582826047935904":
-ildouble: 1
-ldouble: 1
-
-# tgamma
-Test "tgamma (-0.5) == -2 sqrt (pi)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (0.5) == sqrt (pi)":
-float: 1
-ifloat: 1
-Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tgamma (4) == 6":
-ildouble: 1
-ldouble: 1
-
-# y0
-Test "y0 (1.0) == 0.0882569642156769579829267660235151628":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "y0 (1.5) == 0.382448923797758843955068554978089862":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "y0 (10.0) == 0.0556711672835993914244598774101900481":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 3
-ldouble: 3
-Test "y0 (2.0) == 0.510375672649745119596606592727157873":
-double: 1
-idouble: 1
-Test "y0 (8.0) == 0.223521489387566220527323400498620359":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-# y1
-Test "y1 (0.125) == -5.19993611253477499595928744876579921":
-double: 1
-idouble: 1
-Test "y1 (0.75) == -1.03759455076928541973767132140642198":
-ildouble: 1
-ldouble: 1
-Test "y1 (1.5) == -0.412308626973911295952829820633445323":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "y1 (10.0) == 0.249015424206953883923283474663222803":
-double: 3
-float: 1
-idouble: 3
-ifloat: 1
-Test "y1 (2.0) == -0.107032431540937546888370772277476637":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "y1 (8.0) == -0.158060461731247494255555266187483550":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-# yn
-Test "yn (0, 1.0) == 0.0882569642156769579829267660235151628":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "yn (0, 1.5) == 0.382448923797758843955068554978089862":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "yn (0, 10.0) == 0.0556711672835993914244598774101900481":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 3
-ldouble: 3
-Test "yn (0, 2.0) == 0.510375672649745119596606592727157873":
-double: 1
-idouble: 1
-Test "yn (0, 8.0) == 0.223521489387566220527323400498620359":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 3
-ldouble: 3
-Test "yn (1, 0.125) == -5.19993611253477499595928744876579921":
-double: 1
-idouble: 1
-Test "yn (1, 0.75) == -1.03759455076928541973767132140642198":
-ildouble: 1
-ldouble: 1
-Test "yn (1, 1.5) == -0.412308626973911295952829820633445323":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "yn (1, 10.0) == 0.249015424206953883923283474663222803":
-double: 3
-float: 1
-idouble: 3
-ifloat: 1
-Test "yn (1, 2.0) == -0.107032431540937546888370772277476637":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "yn (1, 8.0) == -0.158060461731247494255555266187483550":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 1
-ldouble: 1
-Test "yn (10, 0.125) == -127057845771019398.252538486899753195":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-Test "yn (10, 0.75) == -2133501638.90573424452445412893839236":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 5
-ldouble: 5
-Test "yn (10, 1.0) == -121618014.278689189288130426667971145":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 1
-ldouble: 1
-Test "yn (10, 10.0) == -0.359814152183402722051986577343560609":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-Test "yn (10, 2.0) == -129184.542208039282635913145923304214":
-double: 3
-float: 1
-idouble: 3
-ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "yn (3, 0.125) == -2612.69757350066712600220955744091741":
-double: 1
-idouble: 1
-Test "yn (3, 0.75) == -12.9877176234475433186319774484809207":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "yn (3, 10.0) == -0.251362657183837329779204747654240998":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "yn (3, 2.0) == -1.12778377684042778608158395773179238":
-double: 1
-idouble: 1
-
-# Maximal error of functions:
-Function: "atan2":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "atanh":
-float: 1
-ifloat: 1
-
-Function: Imaginary part of "cacos":
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "cacosh":
-double: 1
-float: 7
-idouble: 1
-ifloat: 7
-
-Function: Imaginary part of "cacosh":
-double: 1
-float: 3
-idouble: 1
-ifloat: 3
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "casin":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: Imaginary part of "casin":
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "casinh":
-double: 5
-float: 1
-idouble: 5
-ifloat: 1
-ildouble: 4
-ldouble: 4
-
-Function: Imaginary part of "casinh":
-double: 3
-float: 6
-idouble: 3
-ifloat: 6
-ildouble: 2
-ldouble: 2
-
-Function: Real part of "catan":
-float: 4
-ifloat: 4
-
-Function: Imaginary part of "catan":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "catanh":
-double: 4
-idouble: 4
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "catanh":
-float: 6
-ifloat: 6
-ildouble: 1
-ldouble: 1
-
-Function: "cbrt":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "ccos":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "ccos":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "ccosh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "ccosh":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "cexp":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "cexp":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "clog":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "clog":
-float: 3
-ifloat: 3
-
-Function: Real part of "clog10":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "clog10":
-double: 1
-float: 5
-idouble: 1
-ifloat: 5
-ildouble: 1
-ldouble: 1
-
-Function: "cos":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "cpow":
-double: 2
-float: 4
-idouble: 2
-ifloat: 4
-ildouble: 10
-ldouble: 10
-
-Function: Imaginary part of "cpow":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "csin":
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "csin":
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "csinh":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "csinh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: Real part of "csqrt":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "csqrt":
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "ctan":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "ctan":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-
-Function: Real part of "ctanh":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "ctanh":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "erf":
-double: 1
-idouble: 1
-
-Function: "erfc":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "exp10":
-double: 6
-float: 2
-idouble: 6
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: "exp2":
-ildouble: 2
-ldouble: 2
-
-Function: "expm1":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "gamma":
-ildouble: 1
-ldouble: 1
-
-Function: "hypot":
-float: 1
-ifloat: 1
-
-Function: "j0":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: "j1":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 4
-ldouble: 4
-
-Function: "jn":
-double: 4
-float: 4
-idouble: 4
-ifloat: 4
-ildouble: 4
-ldouble: 4
-
-Function: "lgamma":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: "log10":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: "log1p":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "log2":
-ildouble: 1
-ldouble: 1
-
-Function: "sincos":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "sqrt":
-ildouble: 1
-ldouble: 1
-
-Function: "tan":
-double: 1
-idouble: 1
-
-Function: "tanh":
-ildouble: 1
-ldouble: 1
-
-Function: "tgamma":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "y0":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: "y1":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: "yn":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 5
-ldouble: 5
-
-# end of automatic generation
diff --git a/test/tls/Makefile.in b/test/tls/Makefile.in
index 6e193a9..9f10378 100644
--- a/test/tls/Makefile.in
+++ b/test/tls/Makefile.in
@@ -116,6 +116,17 @@  LDFLAGS_tst-tls17 := -ldl -Wl,-rpath-link=.
 LDFLAGS_tst-tls18 := -ldl -Wl,-rpath-link=.
 LDFLAGS_tst-tls-at-ctor := tst-tlsmod-at-ctor.so
 
+tst-tlsmod3.so: tst-tlsmod2.so
+tst-tlsmod4.so: tst-tlsmod3.so
+tst-tlsmod6.so: tst-tlsmod5.so
+tst-tlsmod8.so: tst-tlsmod7.so
+tst-tlsmod9.so: tst-tlsmod8.so
+tst-tlsmod10.so: tst-tlsmod9.so
+tst-tlsmod12.so: tst-tlsmod11.so
+tst-tlsmod13a.so: tst-tlsmod13.so
+tst-tlsmod14b.so: tst-tlsmod14a.so
+tst-tlsmod16b.so: tst-tlsmod16a.so
+
 tst-tls3: tst-tlsmod1.so tst-tlsmod4.so
 tst-tls4: tst-tlsmod2.so
 tst-tls5: tst-tlsmod2.so
diff --git a/utils/Makefile.in b/utils/Makefile.in
index 6349aa7..5457776 100644
--- a/utils/Makefile.in
+++ b/utils/Makefile.in
@@ -91,7 +91,7 @@  endif
 utils_LOCALE_OBJ :=
 ifeq ($(UCLIBC_HAS_LOCALE),y)
 utils_OBJ += iconv
-#utils_LOCALE_OBJ += $(utils_OUT)/locale
+utils_LOCALE_OBJ += $(utils_OUT)/locale
 endif
 
 utils_OBJ := $(patsubst %,$(utils_OUT)/%,$(utils_OBJ))
@@ -130,7 +130,7 @@  ifeq ($(HAVE_SHARED),y)
 endif
 ifeq ($(UCLIBC_HAS_LOCALE),y)
 	$(Q)$(INSTALL) -D -m 755 $(utils_OUT)/iconv$(DOTHOST) $(PREFIX)$(DEVEL_PREFIX)bin/iconv
-	#$(Q)$(INSTALL) -m 755 $(utils_OUT)/locale$(DOTHOST) $(PREFIX)$(DEVEL_PREFIX)bin/locale
+	$(Q)$(INSTALL) -m 755 $(utils_OUT)/locale$(DOTHOST) $(PREFIX)$(DEVEL_PREFIX)bin/locale
 endif
 
 
diff --git a/utils/ldd.c b/utils/ldd.c
index 5d2c8f4..5b41e2e 100644
--- a/utils/ldd.c
+++ b/utils/ldd.c
@@ -40,8 +40,18 @@ 
 #define ELFCLASSM      ELFCLASS32
 #endif
 
-#if defined(__s390__)
-#define MATCH_MACHINE(x) (x == EM_S390)
+#if defined(__TMS320C6X__)
+#define MATCH_MACHINE(x) (x == EM_TI_C6000)
+#define ELFCLASSM	ELFCLASS32
+#endif
+
+#if defined(__cris__)
+#define MATCH_MACHINE(x) (x == EM_CRIS)
+#define ELFCLASSM	ELFCLASS32
+#endif
+
+#if defined(__frv__)
+#define MATCH_MACHINE(x) (x == EM_CYGNUS_FRV)
 #define ELFCLASSM	ELFCLASS32
 #endif
 
@@ -78,15 +88,22 @@ 
 #define ELFCLASSM	ELFCLASS32
 #endif
 
+#if defined(__microblaze__)
+#define MATCH_MACHINE(x) (x == EM_MICROBLAZE)
+#define ELFCLASSM	ELFCLASS32
+#endif
+
 #if defined(__mips__)
 #define MATCH_MACHINE(x) (x == EM_MIPS || x == EM_MIPS_RS3_LE)
 #define ELFCLASSM	ELFCLASS32
 #endif
 
-#if defined(__powerpc64__)
-#define MATCH_MACHINE(x) (x == EM_PPC64)
-#define ELFCLASSM	ELFCLASS64
-#elif defined(__powerpc__)
+#if defined(__nds32__)
+#define MATCH_MACHINE(x) (x == EM_NDS32)
+#define ELFCLASSM	ELFCLASS32
+#endif
+
+#if defined(__powerpc__)
 #define MATCH_MACHINE(x) (x == EM_PPC)
 #define ELFCLASSM	ELFCLASS32
 #endif
@@ -101,21 +118,11 @@ 
 #define ELFCLASSM    ELFCLASS32
 #endif
 
-#if defined(__cris__)
-#define MATCH_MACHINE(x) (x == EM_CRIS)
-#define ELFCLASSM	ELFCLASS32
-#endif
-
 #if defined(__x86_64__)
 #define MATCH_MACHINE(x) (x == EM_X86_64)
 #define ELFCLASSM	ELFCLASS64
 #endif
 
-#if defined(__microblaze__)
-#define MATCH_MACHINE(x) (x == EM_MICROBLAZE)
-#define ELFCLASSM	ELFCLASS32
-#endif
-
 #if defined(__xtensa__)
 #define MATCH_MACHINE(x) (x == EM_XTENSA)
 #define ELFCLASSM	ELFCLASS32