From 29ff9055c80efe77a7130767a9fcb3ab8c67e8ce Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Sat, 24 Sep 2016 02:55:31 +0200 Subject: 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 --- ldso/ldso/arm/dl-syscalls.h | 37 +------------------------------------ ldso/ldso/fdpic/dl-inlines.h | 2 +- ldso/libdl/Makefile.in | 18 ------------------ 3 files changed, 2 insertions(+), 55 deletions(-) (limited to 'ldso') diff --git a/ldso/ldso/arm/dl-syscalls.h b/ldso/ldso/arm/dl-syscalls.h index 195461f83..f40c4fd31 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 a9bfc9311..f59087568 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 1ba877071..24e00faf0 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) -- cgit v1.2.3