summaryrefslogtreecommitdiffstats
path: root/libpthread
diff options
context:
space:
mode:
Diffstat (limited to 'libpthread')
-rw-r--r--libpthread/Makefile112
-rw-r--r--libpthread/linuxthreads/Makefile12
-rw-r--r--libpthread/linuxthreads_db/Makefile9
-rw-r--r--libpthread/nptl/Makefile116
-rw-r--r--libpthread/nptl/Rules.mak13
-rw-r--r--libpthread/nptl/sysdeps/mips/Makefile54
-rw-r--r--libpthread/nptl/sysdeps/pthread/Makefile31
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/Makefile103
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c8
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/mips/Makefile100
-rw-r--r--libpthread/nptl_db/Makefile42
11 files changed, 302 insertions, 298 deletions
diff --git a/libpthread/Makefile b/libpthread/Makefile
index 4b57ab32f..18292917a 100644
--- a/libpthread/Makefile
+++ b/libpthread/Makefile
@@ -18,50 +18,22 @@
TOPDIR=../
include $(TOPDIR)Rules.mak
-ifeq ($(strip $(UCLIBC_HAS_THREADS_NATIVE)),y)
-include nptl/Rules.mak
-endif
-
-#
-# Adjust the soname version to avoid namespace collisions with glibc's
-# libpthread library.
-#
-LIBPTHREAD=libpthread.a
-LIBPTHREAD_SHARED=libpthread.so
-LIBPTHREAD_SHARED_FULLNAME=libpthread-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so
-LIBTHREAD_DB=libthread_db.a
-LIBTHREAD_DB_SHARED=libthread_db.so
-LIBTHREAD_DB_SHARED_FULLNAME=libthread_db-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so
-
-DIRS=
ifeq ($(strip $(UCLIBC_HAS_THREADS_NATIVE)),y)
- DIRS+=nptl
+ALL_SUBDIRS = nptl nptl_db
+DIRS = nptl
ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y)
- DIRS+=nptl_db
+ DIRS += nptl_db
endif
else
- DIRS+=linuxthreads
+ALL_SUBDIRS = linuxthreads linuxthreads_db
+DIRS = linuxthreads
ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y)
- DIRS+=linuxthreads_db
-endif
+ DIRS += linuxthreads_db
endif
-
-ifeq ($(strip $(UCLIBC_CTOR_DTOR)),y)
- SHARED_START_FILES = $(TOPDIR)lib/crti.o $(LIBGCC_DIR)crtbeginS.o
- SHARED_END_FILES = $(LIBGCC_DIR)crtendS.o $(TOPDIR)lib/crtn.o
endif
-ifeq ($(strip $(UCLIBC_HAS_THREADS_NATIVE)),y)
-ALL_SUBDIRS = nptl nptl_db
-else
-ALL_SUBDIRS = linuxthreads linuxthreads_db
-endif
-
-# Remove any -z defs since this lib will have undefined symbols
-LIBTHREAD_DB_LDFLAGS := $(subst -z defs,,$(LDFLAGS))
-
-all: $(LIBPTHREAD) $(LIBTHREAD_DB)
+all: subdirs
headers:
ifeq ($(strip $(UCLIBC_HAS_THREADS_NATIVE)),y)
@@ -71,6 +43,9 @@ ifeq ($(strip $(UCLIBC_HAS_THREADS_NATIVE)),y)
$(LN) -sf ../$(TOPDIR)libpthread/nptl/sysdeps/unix/sysv/linux/$(TARGET_ARCH)/bits/pthreadtypes.h $(TOPDIR)include/bits/
$(LN) -sf ../$(TOPDIR)libpthread/nptl/sysdeps/pthread/bits/libc-lock.h $(TOPDIR)include/bits/
$(LN) -sf ../$(TOPDIR)libpthread/nptl/sysdeps/pthread/bits/stdio-lock.h $(TOPDIR)include/bits/
+ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y)
+ $(LN) -sf $(TOPDIR)libpthread/nptl_db/thread_db.h $(TOPDIR)include/
+endif
else
$(LN) -sf $(TOPDIR)libpthread/linuxthreads/sysdeps/pthread/pthread.h $(TOPDIR)include/
$(LN) -sf $(TOPDIR)libpthread/linuxthreads/semaphore.h $(TOPDIR)include/
@@ -80,69 +55,6 @@ ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y)
endif
endif
-$(LIBPTHREAD): subdirs
- $(INSTALL) -d $(TOPDIR)lib
- $(RM) $(TOPDIR)lib/$(LIBPTHREAD)
- $(INSTALL) -m 644 $(LIBPTHREAD) $(TOPDIR)lib
-
-$(LIBTHREAD_DB): subdirs
-ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y)
- $(INSTALL) -d $(TOPDIR)lib
- $(RM) $(TOPDIR)lib/$(LIBTHREAD_DB)
- $(INSTALL) -m 644 $(LIBTHREAD_DB) $(TOPDIR)lib
-endif
-
-objs-pthread-libc:
-ifeq ($(strip $(UCLIBC_HAS_THREADS_NATIVE)),y)
- $(MAKE) -C nptl $@
-else
- touch $(PTCOBJST) $(PTCOBJSH)
-endif
-
-
-$(OBJS): %.o : %.c
- $(CC) $(CFLAGS) -c $< -o $@
- $(STRIPTOOL) -x -R .note -R .comment $*.o
-
-shared: all
-ifeq ($(strip $(UCLIBC_HAS_THREADS_NATIVE)),y)
- $(LD) $(LDFLAGS_NOSTRIP) -soname=$(LIBPTHREAD_SHARED).$(MAJOR_VERSION) \
- -o $(LIBPTHREAD_SHARED_FULLNAME) $(SHARED_START_FILES) --whole-archive $(LIBPTHREAD_SHARED_ARCHIVE) \
- --no-whole-archive $(TOPDIR)libc/misc/internals/interp.o \
- -L$(TOPDIR)lib -lc $(LDADD_LIBFLOAT) $(LIBGCC) \
- $(TOPDIR)ldso/ldso/ld-uClibc-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so \
- -L$(TOPDIR)ldso/libdl -ldl \
- $(SHARED_END_FILES)
-else
- $(LD) $(LDFLAGS_NOSTRIP) -soname=$(LIBPTHREAD_SHARED).$(MAJOR_VERSION) \
- -o $(LIBPTHREAD_SHARED_FULLNAME) $(SHARED_START_FILES) --whole-archive $(LIBPTHREAD) \
- --no-whole-archive $(TOPDIR)libc/misc/internals/interp.o \
- -L$(TOPDIR)lib -lc $(LDADD_LIBFLOAT) $(LIBGCC) \
- $(SHARED_END_FILES)
-endif
- $(INSTALL) -d $(TOPDIR)lib
- $(RM) $(TOPDIR)lib/$(LIBPTHREAD_SHARED_FULLNAME) \
- $(TOPDIR)lib/$(LIBPTHREAD_SHARED).$(MAJOR_VERSION)
- $(INSTALL) -m 644 $(LIBPTHREAD_SHARED_FULLNAME) $(TOPDIR)lib
- $(LN) -sf $(LIBPTHREAD_SHARED_FULLNAME) \
- $(TOPDIR)lib/$(LIBPTHREAD_SHARED)
- $(LN) -sf $(LIBPTHREAD_SHARED_FULLNAME) \
- $(TOPDIR)lib/$(LIBPTHREAD_SHARED).$(MAJOR_VERSION)
-ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y)
- $(LD) $(LIBTHREAD_DB_LDFLAGS) --warn-unresolved-symbols -soname=$(LIBTHREAD_DB_SHARED).1 \
- -o $(LIBTHREAD_DB_SHARED_FULLNAME) --whole-archive $(LIBTHREAD_DB) \
- --no-whole-archive $(TOPDIR)libc/misc/internals/interp.o \
- -L$(TOPDIR)lib -lc $(LDADD_LIBFLOAT) $(LIBGCC)
- $(INSTALL) -d $(TOPDIR)lib
- $(RM) $(TOPDIR)lib/$(LIBTHREAD_DB_SHARED_FULLNAME) \
- $(TOPDIR)lib/$(LIBTHREAD_DB_SHARED).1
- $(INSTALL) -m 644 $(LIBTHREAD_DB_SHARED_FULLNAME) $(TOPDIR)lib
- $(LN) -sf $(LIBTHREAD_DB_SHARED_FULLNAME) \
- $(TOPDIR)lib/$(LIBTHREAD_DB_SHARED)
- $(LN) -sf $(LIBTHREAD_DB_SHARED_FULLNAME) \
- $(TOPDIR)lib/$(LIBTHREAD_DB_SHARED).1
-endif
-
tags:
ctags -R
@@ -156,9 +68,7 @@ $(patsubst %, _dirclean_%, $(ALL_SUBDIRS)) : dummy
$(MAKE) -C $(patsubst _dirclean_%, %, $@) clean
clean: subdirs_clean
- $(RM) *.[oa] *~ core $(LIBPTHREAD) $(LIBPTHREAD_SHARED_FULLNAME) \
- $(LIBTHREAD_DB) $(LIBTHREAD_DB_SHARED_FULLNAME) \
- $(TOPDIR)include/pthread.h $(TOPDIR)include/semaphore.h \
+ $(RM) $(TOPDIR)include/pthread.h $(TOPDIR)include/semaphore.h \
$(TOPDIR)include/thread_db.h \
$(TOPDIR)include/bits/pthreadtypes.h $(TOPDIR)include/bits/semaphore.h \
$(TOPDIR)include/bits/libc-lock.h $(TOPDIR)include/bits/stdio-lock
diff --git a/libpthread/linuxthreads/Makefile b/libpthread/linuxthreads/Makefile
index 4072d660f..d5637eccf 100644
--- a/libpthread/linuxthreads/Makefile
+++ b/libpthread/linuxthreads/Makefile
@@ -22,17 +22,11 @@ include $(TOPDIR)Rules.mak
CFLAGS+=$(SSP_ALL_CFLAGS)
-#This stuff will not compile without at least -O1
+# This stuff will not compile without at least -O1
CFLAGS :=$(CFLAGS:-O0=-O1)
-# set up system dependencies include dirs (NOTE: order matters!)
-# psm: don't think that the last include makes sense
-# they all should be already linked to $(TOPDIR)include
-PTDIR = $(TOPDIR)libpthread/linuxthreads/
-SYSDEPINC = -I$(PTDIR)sysdeps/pthread \
- -I$(PTDIR)sysdeps/$(TARGET_ARCH) \
- -I$(TOPDIR)libc/sysdeps/linux/$(TARGET_ARCH)
-CFLAGS += $(SYSDEPINC)
+# Get the thread include dependencies
+CFLAGS += $(PTINC)
ARCH_CFLAGS = $(CFLAGS)
diff --git a/libpthread/linuxthreads_db/Makefile b/libpthread/linuxthreads_db/Makefile
index 2c27cdccc..3c7ee91a7 100644
--- a/libpthread/linuxthreads_db/Makefile
+++ b/libpthread/linuxthreads_db/Makefile
@@ -26,13 +26,8 @@ AR_LIB_NAME=$(TOPDIR)lib/$(LIB_NAME).a
SO_LIB_NAME=$(TOPDIR)lib/$(LIB_NAME).so
SO_FULL_NAME=$(LIB_NAME)-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so
-# set up system dependencies include dirs (NOTE: order matters!)
-PTDIR = $(TOPDIR)libpthread/linuxthreads/
-SYSDEPINC = -I$(PTDIR)sysdeps/pthread \
- -I$(PTDIR)sysdeps/$(TARGET_ARCH) \
- -I$(TOPDIR)libc/sysdeps/linux/$(TARGET_ARCH)
-
-CFLAGS += $(SYSDEPINC) -DLIBPTHREAD_SO="\"libpthread.so.$(MAJOR_VERSION)\""
+# Get the thread include dependencies and shared object name
+CFLAGS += $(PTINC) -DLIBPTHREAD_SO="\"libpthread.so.$(MAJOR_VERSION)\""
# Remove any -z defs since this lib will have undefined symbols
LDFLAGS := $(subst -z defs,,$(LDFLAGS)) --warn-unresolved-symbols
diff --git a/libpthread/nptl/Makefile b/libpthread/nptl/Makefile
index 830805fcf..f5efae013 100644
--- a/libpthread/nptl/Makefile
+++ b/libpthread/nptl/Makefile
@@ -1,4 +1,4 @@
-# Makefile for uClibc's NPTL pthread library (Portions stolen from glibc.)
+# Makefile for uClibc's native pthread library (Portions stolen from glibc.)
#
# Copyright (C) 2005 Steven J. Hill <sjhill@realitydiluted.com>
#
@@ -226,36 +226,26 @@ libpthread-misc-routines = pthread_rwlock_rdlock pthread_rwlock_timedrdlock \
DIRS := sysdeps/pthread sysdeps/$(TARGET_ARCH) sysdeps/unix/sysv/linux \
sysdeps/unix/sysv/linux/$(TARGET_ARCH)
-CSRC-LIBP-ST = $(patsubst %, %.c, $(filter-out $(libpthread-os-routines) \
+AR_LIBP_CSRC = $(patsubst %, %.c, $(filter-out $(libpthread-os-routines) \
$(libpthread-misc-routines) \
$(libpthread-shared-only-routines), \
$(libpthread-routines)))
-
-CSRC-LIBP-SH = $(patsubst %, %.c, $(filter-out $(libpthread-os-routines) \
+SO_LIBP_CSRC = $(patsubst %, %.c, $(filter-out $(libpthread-os-routines) \
$(libpthread-misc-routines) \
$(libpthread-static-only-routines) pt-allocrtsig, \
$(libpthread-routines)))
-
-CSRC-LIBC-ST = $(patsubst %, %.c, $(filter-out $(shared-only-routines) \
+AR_LIBC_CSRC = $(patsubst %, %.c, $(filter-out $(shared-only-routines) \
libc-lowlevellock, $(routines)))
+SO_LIBC_CSRC = $(patsubst %, %.c, $(filter-out libc-lowlevellock, $(routines)))
-CSRC-LIBC-SH = $(patsubst %, %.c, $(filter-out libc-lowlevellock, $(routines)))
+AR_LIBP_COBJS = $(patsubst %.c, %.o, $(AR_LIBP_CSRC))
+SO_LIBP_COBJS = $(patsubst %.c, %.os, $(SO_LIBP_CSRC))
+AR_LIBC_COBJS = $(patsubst %.c, %.o, $(AR_LIBC_CSRC))
+SO_LIBC_COBJS = $(patsubst %.c, %.os, $(SO_LIBC_CSRC))
-COBJ-LIBP-ST = $(patsubst %.c, %.o, $(CSRC-LIBP-ST))
-COBJ-LIBP-SH = $(patsubst %.c, %.os, $(CSRC-LIBP-SH))
-COBJ-LIBC-ST = $(patsubst %.c, %.o, $(CSRC-LIBC-ST))
-COBJ-LIBC-SH = $(patsubst %.c, %.os, $(CSRC-LIBC-SH))
+all: headers $(AR_LIB_NAME) $(SO_LIB_NAME)
-ar-target all: version.h banner.h $(COBJ-LIBP-ST) $(COBJ-LIBP-SH) subdirs
-ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y)
- $(STRIPTOOL) -X --strip-debug -R .note -R .comment \
- $(COBJ-LIBP-ST) $(COBJ-LIBP-SH)
-else
- $(STRIPTOOL) -x -R .note -R .comment \
- $(COBJ-LIBP-ST) $(COBJ-LIBP-SH)
-endif
- $(AR) $(ARFLAGS) $(PTDIR)../$(LIBPTHREAD_STATIC_ARCHIVE) $(COBJ-LIBP-ST)
- $(AR) $(ARFLAGS) $(PTDIR)../$(LIBPTHREAD_SHARED_ARCHIVE) $(COBJ-LIBP-SH)
+headers: version.h banner.h
version.h:
@echo "#define VERSION \""$(VERSION)"\"" > $@
@@ -263,36 +253,78 @@ version.h:
banner.h: Banner
sed 's/\(.*\)/"\1\\n"/' $< > $@
-$(COBJ-LIBP-ST): %.o : %.c
- $(CC) $(CFLAGS-$<) $(CFLAGS-LIBP) -c $< -o $@
-
-$(COBJ-LIBP-SH): %.os : %.c
- $(CC) $(CFLAGS-$<) $(CFLAGS-LIBP) -DSHARED -c $< -o $@
-
-$(COBJ-LIBC-ST): %.o : %.c
- $(CC) $(CFLAGS-$<) $(CFLAGS-LIBC) -c $< -o $@
-
-$(COBJ-LIBC-SH): %.os : %.c
- $(CC) $(CFLAGS-$<) $(CFLAGS-LIBC) -DSHARED -c $< -o $@
+$(AR_LIB_NAME): $(AR_LIBP_COBJS)
+ $(INSTALL) -d $(TOPDIR)lib
+ $(RM) $(AR_LIB_NAME)
+ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y)
+ $(STRIPTOOL) -X --strip-debug -R .note -R .comment $(AR_LIBP_COBJS)
+else
+ $(STRIPTOOL) -x -R .note -R .comment $(AR_LIBP_COBJS)
+endif
+ $(AR) $(ARFLAGS) $(AR_LIB_NAME) $(AR_LIBP_COBJS)
-objs-pthread-libc: $(COBJ-LIBC-ST) $(COBJ-LIBC-SH)
+$(AR_SO_LIB_NAME): $(SO_LIBP_COBJS)
+ $(INSTALL) -d $(TOPDIR)lib
+ $(RM) $(TOPDIR)lib/$(SO_FULL_NAME) $(SO_LIB_NAME).$(MAJOR_VERSION) \
+ $(SO_LIB_NAME) $(AR_SO_LIB_NAME)
ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y)
- $(STRIPTOOL) -X --strip-debug -R .note -R .comment \
- $(COBJ-LIBC-ST) $(COBJ-LIBC-SH)
+ $(STRIPTOOL) -X --strip-debug -R .note -R .comment $(SO_LIBP_COBJS)
else
- $(STRIPTOOL) -x -R .note -R .comment \
- $(COBJ-LIBC-ST) $(COBJ-LIBC-SH)
+ $(STRIPTOOL) -x -R .note -R .comment $(SO_LIBP_COBJS)
endif
- @for objfile in $(COBJ-LIBC-ST); do \
- echo ../libpthread/nptl/$$objfile >> $(PTCOBJST); \
- done
- @for objfile in $(COBJ-LIBC-SH); do \
- echo ../libpthread/nptl/$$objfile >> $(PTCOBJSH); \
+ $(AR) $(ARFLAGS) $(AR_SO_LIB_NAME) $(SO_LIBP_COBJS)
+
+$(SO_LIB_NAME): $(AR_SO_LIB_NAME) subdirs
+ $(LD) $(LDFLAGS_NOSTRIP) -soname=$(LIB_NAME).$(MAJOR_VERSION) \
+ -o $(TOPDIR)lib/$(SO_FULL_NAME) $(SHARED_START_FILES) --whole-archive $(AR_SO_LIB_NAME) \
+ --no-whole-archive $(TOPDIR)libc/misc/internals/interp.o \
+ -L$(TOPDIR)lib -lc $(LDADD_LIBFLOAT) $(LIBGCC) \
+ $(TOPDIR)lib/ld-uClibc-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so \
+ -L$(TOPDIR)ldso/libdl -ldl \
+ $(SHARED_END_FILES)
+ $(LN) -sf $(SO_FULL_NAME) $(SO_LIB_NAME).$(MAJOR_VERSION)
+ $(LN) -sf $(SO_FULL_NAME) $(SO_LIB_NAME)
+ $(RM) $(AR_SO_LIB_NAME)
+
+obj.pthread.ar: $(AR_LIBC_COBJS)
+ $(RM) $(TOPDIR)libc/$@
+ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y)
+ $(STRIPTOOL) -X --strip-debug -R .note -R .comment $(AR_LIBC_COBJS)
+else
+ $(STRIPTOOL) -x -R .note -R .comment $(AR_LIBC_COBJS)
+endif
+ @for objfile in $(AR_LIBC_COBJS); do \
+ echo ../libpthread/nptl/$$objfile >> $(TOPDIR)libc/$@; \
done
$(MAKE) -C sysdeps/$(TARGET_ARCH) $@
$(MAKE) -C sysdeps/unix/sysv/linux $@
$(MAKE) -C sysdeps/unix/sysv/linux/$(TARGET_ARCH) $@
+obj.pthread.so: $(SO_LIBC_COBJS)
+ $(RM) $(TOPDIR)libc/$@
+ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y)
+ $(STRIPTOOL) -X --strip-debug -R .note -R .comment $(SO_LIBC_COBJS)
+else
+ $(STRIPTOOL) -x -R .note -R .comment $(SO_LIBC_COBJS)
+endif
+ @for objfile in $(SO_LIBC_COBJS); do \
+ echo ../libpthread/nptl/$$objfile >> $(TOPDIR)libc/$@; \
+ done
+ $(MAKE) -C sysdeps/unix/sysv/linux $@
+ $(MAKE) -C sysdeps/unix/sysv/linux/$(TARGET_ARCH) $@
+
+$(AR_LIBP_COBJS): %.o : %.c
+ $(CC) $(CFLAGS-$<) $(CFLAGS-LIBP) -c $< -o $@
+
+$(SO_LIBP_COBJS): %.os : %.c
+ $(CC) $(CFLAGS-$<) $(CFLAGS-LIBP) -DSHARED -c $< -o $@
+
+$(AR_LIBC_COBJS): %.o : %.c
+ $(CC) $(CFLAGS-$<) $(CFLAGS-LIBC) -c $< -o $@
+
+$(SO_LIBC_COBJS): %.os : %.c
+ $(CC) $(CFLAGS-$<) $(CFLAGS-LIBC) -DSHARED -c $< -o $@
+
clean: subdirs_clean
$(RM) *.o *.os *~ core banner.h version.h
diff --git a/libpthread/nptl/Rules.mak b/libpthread/nptl/Rules.mak
index f96e42cd2..b42995738 100644
--- a/libpthread/nptl/Rules.mak
+++ b/libpthread/nptl/Rules.mak
@@ -1,13 +1,16 @@
#
# These names are used for NPTL since we have to build seperate archives
-# for the static and shared objects. We export them to sub-makes.
+# for the static and shared objects.
#
-LIBPTHREAD_STATIC_ARCHIVE := libpthread.a
-LIBPTHREAD_SHARED_ARCHIVE := libpthread-shared.a
+LIB_NAME := libpthread
+AR_LIB_NAME := $(TOPDIR)lib/$(LIB_NAME).a
+AR_SO_LIB_NAME := $(TOPDIR)lib/shared_$(LIB_NAME).a
+SO_LIB_NAME := $(TOPDIR)lib/$(LIB_NAME).so
+SO_FULL_NAME := $(LIB_NAME)-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so
-CFLAGS-LIBC := $(filter-out -O0 -O1 -Os, $(CFLAGS)) -O2 -I$(PTDIR) \
+CFLAGS-LIBC := $(filter-out -O0 -O1 -Os, $(CFLAGS)) $(PTINC) -O2 \
+ -I$(TOPDIR)libpthread/nptl \
-I$(TOPDIR)ldso/include -std=gnu99
ASFLAGS-LIBC := $(filter-out -std=gnu99, $(CFLAGS-LIBC)) -D__ASSEMBLER__
-
CFLAGS-LIBP := $(CFLAGS-LIBC) -DNOT_IN_libc=1 -DIS_IN_libpthread=1
ASFLAGS-LIBP := $(filter-out -std=gnu99, $(CFLAGS-LIBP)) -D__ASSEMBLER__
diff --git a/libpthread/nptl/sysdeps/mips/Makefile b/libpthread/nptl/sysdeps/mips/Makefile
index 949885073..5a1d6bff1 100644
--- a/libpthread/nptl/sysdeps/mips/Makefile
+++ b/libpthread/nptl/sysdeps/mips/Makefile
@@ -23,39 +23,49 @@ include ../../Rules.mak
CFLAGS-dl-support.c = -D_GNU_SOURCE
-COBJ-LIBC-ST = $(patsubst %.c, %.o, $(wildcard *.c))
+AR_LIBP_AOBJS = $(patsubst %.S, %.o, $(wildcard *.S))
+SO_LIBP_AOBJS = $(patsubst %.S, %.os, $(wildcard *.S))
+AR_LIBC_COBJS = $(patsubst %.c, %.o, $(wildcard *.c))
-AOBJ-LIBP-ST = $(patsubst %.S, %.o, $(wildcard *.S))
-AOBJ-LIBP-SH = $(patsubst %.S, %.os, $(wildcard *.S))
+all: $(AR_LIB_NAME) $(AR_SO_LIB_NAME)
-ar-target all: $(AOBJ-LIBP-ST) $(AOBJ-LIBP-SH)
+$(AR_LIB_NAME): $(AR_LIBP_AOBJS)
ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y)
- $(STRIPTOOL) -X --strip-debug -R .note -R .comment \
- $(AOBJ-LIBP-ST) $(AOBJ-LIBP-SH)
+ $(STRIPTOOL) -X --strip-debug -R .note -R .comment $(AR_LIBP_AOBJS)
else
- $(STRIPTOOL) -x -R .note -R .comment $(AOBJ-LIBP-ST) $(AOBJ-LIBP-SH)
+ $(STRIPTOOL) -x -R .note -R .comment $(AR_LIBP_AOBJS) $(AR_LIBP_AOBJS)
endif
- $(AR) $(ARFLAGS) $(PTDIR)../$(LIBPTHREAD_STATIC_ARCHIVE) $(AOBJ-LIBP-ST)
- $(AR) $(ARFLAGS) $(PTDIR)../$(LIBPTHREAD_SHARED_ARCHIVE) $(AOBJ-LIBP-SH)
+ $(AR) $(ARFLAGS) $(AR_LIB_NAME) $(AR_LIBP_AOBJS)
-$(AOBJ-LIBP-ST): %.o : %.S
- $(CC) $(ASFLAGS) $(ASFLAGS-NPTL) -c $< -o $@
-
-$(AOBJ-LIBP-SH): %.os : %.S
- $(CC) $(ASFLAGS) $(ASFLAGS-NPTL) -DSHARED -c $< -o $@
-
-$(COBJ-LIBC-ST): %.o : %.c
- $(CC) $(CFLAGS-LIBC) $(CFLAGS-$<) -c $< -o $@
+$(AR_SO_LIB_NAME): $(SO_LIBP_AOBJS)
+ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y)
+ $(STRIPTOOL) -X --strip-debug -R .note -R .comment $(SO_LIBP_AOBJS)
+else
+ $(STRIPTOOL) -x -R .note -R .comment $(AR_LIBP_AOBJS) $(SO_LIBP_AOBJS)
+endif
+ $(AR) $(ARFLAGS) $(AR_SO_LIB_NAME) $(SO_LIBP_AOBJS)
-objs-pthread-libc: $(COBJ-LIBC-ST)
+obj.pthread.ar: $(AR_LIBC_COBJS)
ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y)
- $(STRIPTOOL) -X --strip-debug -R .note -R .comment $(COBJ-LIBC-ST)
+ $(STRIPTOOL) -X --strip-debug -R .note -R .comment $(AR_LIBC_COBJS)
else
- $(STRIPTOOL) -x -R .note -R .comment $(COBJ-LIBC-ST)
+ $(STRIPTOOL) -x -R .note -R .comment $(AR_LIBC_COBJS)
endif
- @for objfile in $(COBJ-LIBC-ST); do \
- echo ../libpthread/nptl/sysdeps/mips/$$objfile >> $(PTCOBJST); \
+ @for objfile in $(AR_LIBC_COBJS); do \
+ echo ../libpthread/nptl/sysdeps/mips/$$objfile >> \
+ $(TOPDIR)libc/$@; \
done
+$(AR_LIBP_AOBJS): %.o : %.S
+ $(CC) $(ASFLAGS) $(ASFLAGS-NPTL) -c $< -o $@
+
+$(SO_LIBP_AOBJS): %.os : %.S
+ $(CC) $(ASFLAGS) $(ASFLAGS-NPTL) -DSHARED -c $< -o $@
+
+$(AR_LIBC_COBJS): %.o : %.c
+ $(CC) $(CFLAGS-LIBC) $(CFLAGS-$<) -c $< -o $@
+
clean:
$(RM) *.o *.os *~ core
+
+.PHONY: $(AR_LIB_NAME) $(AR_SO_LIB_NAME)
diff --git a/libpthread/nptl/sysdeps/pthread/Makefile b/libpthread/nptl/sysdeps/pthread/Makefile
index fae8f0800..280db89f1 100644
--- a/libpthread/nptl/sysdeps/pthread/Makefile
+++ b/libpthread/nptl/sysdeps/pthread/Makefile
@@ -42,25 +42,34 @@ CFLAGS-pthread_spin_destroy.c = -D_GNU_SOURCE
CFLAGS-pthread_spin_init.c = -D_GNU_SOURCE
CFLAGS-pthread_spin_unlock.c = -D_GNU_SOURCE
-COBJ-LIBP-ST = $(patsubst %.c, %.o, $(CSRC))
-COBJ-LIBP-SH = $(patsubst %.c, %.os, $(CSRC))
+AR_LIBP_COBJS = $(patsubst %.c, %.o, $(CSRC))
+SO_LIBP_COBJS = $(patsubst %.c, %.os, $(CSRC))
-ar-target all: $(COBJ-LIBP-ST) $(COBJ-LIBP-SH)
+all: $(AR_LIB_NAME) $(AR_SO_LIB_NAME)
+
+$(AR_LIB_NAME): $(AR_LIBP_COBJS)
+ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y)
+ $(STRIPTOOL) -X --strip-debug -R .note -R .comment $(AR_LIBP_COBJS)
+else
+ $(STRIPTOOL) -x -R .note -R .comment $(AR_LIBP_COBJS)
+endif
+ $(AR) $(ARFLAGS) $(AR_LIB_NAME) $(AR_LIBP_COBJS)
+
+$(AR_SO_LIB_NAME): $(SO_LIBP_COBJS)
ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y)
- $(STRIPTOOL) -X --strip-debug -R .note -R .comment \
- $(COBJ-LIBP-ST) $(COBJ-LIBP-SH)
+ $(STRIPTOOL) -X --strip-debug -R .note -R .comment $(SO_LIBP_COBJS)
else
- $(STRIPTOOL) -x -R .note -R .comment \
- $(COBJ-LIBP-ST) $(COBJ-LIBP-SH)
+ $(STRIPTOOL) -x -R .note -R .comment $(SO_LIBP_COBJS)
endif
- $(AR) $(ARFLAGS) $(PTDIR)../$(LIBPTHREAD_STATIC_ARCHIVE) $(COBJ-LIBP-ST)
- $(AR) $(ARFLAGS) $(PTDIR)../$(LIBPTHREAD_SHARED_ARCHIVE) $(COBJ-LIBP-SH)
+ $(AR) $(ARFLAGS) $(AR_SO_LIB_NAME) $(SO_LIBP_COBJS)
-$(COBJ-LIBP-ST): %.o : %.c
+$(AR_LIBP_COBJS): %.o : %.c
$(CC) $(CFLAGS-$<) $(CFLAGS-LIBP) -c $< -o $@
-$(COBJ-LIBP-SH): %.os : %.c
+$(SO_LIBP_COBJS): %.os : %.c
$(CC) $(CFLAGS-$<) $(CFLAGS-LIBP) -DSHARED -c $< -o $@
clean:
$(RM) *.o *.os *~ core
+
+.PHONY: $(AR_LIB_NAME) $(AR_SO_LIB_NAME)
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile b/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile
index 37ea6e05b..3dd1430b7 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile
@@ -21,35 +21,32 @@ TOPDIR=../../../../../../
include $(TOPDIR)Rules.mak
include ../../../../Rules.mak
-CSRC-LIBP-ST = pt-raise.c pthread_attr_getaffinity.c \
+AR_LIBP_CSRC = pt-raise.c pthread_attr_getaffinity.c \
pthread_attr_setaffinity.c pthread_getaffinity.c \
pthread_getcpuclockid.c pthread_kill.c \
pthread_mutex_cond_lock.c pthread_setaffinity.c \
pthread_yield.c sem_post.c sem_timedwait.c \
sem_trywait.c sem_wait.c pt-fork.c
-
-CSRC-LIBP-SH = $(CSRC-LIBP-ST)
-
-CSRC-LIBC-ST = libc_pthread_init.c libc_multiple_threads.c \
+SO_LIBP_CSRC = $(AR_LIBP_CSRC)
+AR_LIBC_CSRC = libc_pthread_init.c libc_multiple_threads.c \
register-atfork.c unregister-atfork.c
-
-CSRC-LIBC-SH = $(CSRC-LIBC-ST)
+SO_LIBC_CSRC = $(AR_LIBC_CSRC)
ifeq ($(strip $(TARGET_ARCH)),alpha)
-CSRC-LIBC-ST += libc-lowlevellock.c
-CSRC-LIBP-ST += rtld-libc-lowlevellock.c
+AR_LIBC_CSRC += libc-lowlevellock.c
+AR_LIBP_CSRC += rtld-libc-lowlevellock.c
endif
ifeq ($(strip $(TARGET_ARCH)),mips)
-CSRC-LIBC-ST += libc-lowlevellock.c
-CSRC-LIBP-ST += rtld-libc-lowlevellock.c
+AR_LIBC_CSRC += libc-lowlevellock.c
+AR_LIBP_CSRC += rtld-libc-lowlevellock.c
endif
ifeq ($(strip $(TARGET_ARCH)),powerpc)
-CSRC-LIBC-ST += libc-lowlevellock.c
-CSRC-LIBP-ST += rtld-libc-lowlevellock.c
+AR_LIBC_CSRC += libc-lowlevellock.c
+AR_LIBP_CSRC += rtld-libc-lowlevellock.c
endif
ifeq ($(strip $(TARGET_ARCH)),sparc)
-CSRC-LIBC-ST += libc-lowlevellock.c
-CSRC-LIBP-ST += rtld-libc-lowlevellock.c
+AR_LIBC_CSRC += libc-lowlevellock.c
+AR_LIBP_CSRC += rtld-libc-lowlevellock.c
endif
#
@@ -57,51 +54,67 @@ endif
#
CFLAGS-pt-fork.c = -D_GNU_SOURCE
-COBJ-LIBP-ST = $(patsubst %.c, %.o, $(CSRC-LIBP-ST))
-COBJ-LIBP-SH = $(patsubst %.c, %.os, $(CSRC-LIBP-SH))
-COBJ-LIBC-ST = $(patsubst %.c, %.o, $(CSRC-LIBC-ST))
-COBJ-LIBC-SH = $(patsubst %.c, %.os, $(CSRC-LIBC-SH))
+AR_LIBP_COBJS = $(patsubst %.c, %.o, $(AR_LIBP_CSRC))
+SO_LIBP_COBJS = $(patsubst %.c, %.os, $(SO_LIBP_CSRC))
+AR_LIBC_COBJS = $(patsubst %.c, %.o, $(AR_LIBC_CSRC))
+SO_LIBC_COBJS = $(patsubst %.c, %.os, $(SO_LIBC_CSRC))
+
+all: $(AR_LIB_NAME) $(AR_SO_LIB_NAME)
-ar-target all: $(COBJ-LIBP-ST) $(COBJ-LIBP-SH)
+$(AR_LIB_NAME): $(AR_LIBP_COBJS)
ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y)
- $(STRIPTOOL) -X --strip-debug -R .note -R .comment \
- $(COBJ-LIBP-ST) $(COBJ-LIBP-SH)
+ $(STRIPTOOL) -X --strip-debug -R .note -R .comment $(AR_LIBP_COBJS)
else
- $(STRIPTOOL) -x -R .note -R .comment \
- $(COBJ-LIBP-ST) $(COBJ-LIBP-SH)
+ $(STRIPTOOL) -x -R .note -R .comment $(AR_LIBP_COBJS)
endif
- $(AR) $(ARFLAGS) $(PTDIR)../$(LIBPTHREAD_STATIC_ARCHIVE) $(COBJ-LIBP-ST)
- $(AR) $(ARFLAGS) $(PTDIR)../$(LIBPTHREAD_SHARED_ARCHIVE) $(COBJ-LIBP-SH)
+ $(AR) $(ARFLAGS) $(AR_LIB_NAME) $(AR_LIBP_COBJS)
+
+$(AR_SO_LIB_NAME): $(SO_LIBP_COBJS)
+ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y)
+ $(STRIPTOOL) -X --strip-debug -R .note -R .comment $(SO_LIBP_COBJS)
+else
+ $(STRIPTOOL) -x -R .note -R .comment $(SO_LIBP_COBJS)
+endif
+ $(AR) $(ARFLAGS) $(AR_SO_LIB_NAME) $(SO_LIBP_COBJS)
+
+obj.pthread.ar: $(AR_LIBC_COBJS)
+ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y)
+ $(STRIPTOOL) -X --strip-debug -R .note -R .comment $(AR_LIBC_COBJS)
+else
+ $(STRIPTOOL) -x -R .note -R .comment $(AR_LIBC_COBJS)
+endif
+ @for objfile in $(AR_LIBC_COBJS); do \
+ echo ../libpthread/nptl/sysdeps/unix/sysv/linux/$$objfile >> \
+ $(TOPDIR)libc/$@; \
+ done
-$(COBJ-LIBP-ST): %.o : %.c
+obj.pthread.so: $(SO_LIBC_COBJS)
+ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y)
+ $(STRIPTOOL) -X --strip-debug -R .note -R .comment $(SO_LIBC_COBJS)
+else
+ $(STRIPTOOL) -x -R .note -R .comment $(SO_LIBC_COBJS)
+endif
+ @for objfile in $(SO_LIBC_COBJS); do \
+ echo ../libpthread/nptl/sysdeps/unix/sysv/linux/$$objfile >> \
+ $(TOPDIR)libc/$@; \
+ done
+
+$(AR_LIBP_COBJS): %.o : %.c
$(CC) $(CFLAGS-$<) $(CFLAGS-LIBP) -c $< -o $@
-$(COBJ-LIBP-SH): %.os : %.c
+$(SO_LIBP_COBJS): %.os : %.c
$(CC) $(CFLAGS-$<) $(CFLAGS-LIBP) -DSHARED -c $< -o $@
-$(COBJ-LIBC-ST): %.o : %.c
+$(AR_LIBC_COBJS): %.o : %.c
$(CC) $(CFLAGS-$<) $(CFLAGS-LIBC) -c $< -o $@
-$(COBJ-LIBC-SH): %.os : %.c
+$(SO_LIBC_COBJS): %.os : %.c
$(CC) $(CFLAGS-$<) $(CFLAGS-LIBC) -DSHARED -c $< -o $@
-objs-pthread-libc: $(COBJ-LIBC-ST) $(COBJ-LIBC-SH)
-ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y)
- $(STRIPTOOL) -X --strip-debug -R .note -R .comment \
- $(COBJ-LIBC-ST) $(COBJ-LIBC-SH)
-else
- $(STRIPTOOL) -x -R .note -R .comment \
- $(COBJ-LIBC-ST) $(COBJ-LIBC-SH)
-endif
- @for objfile in $(COBJ-LIBC-ST); do \
- echo ../libpthread/nptl/sysdeps/unix/sysv/linux/$$objfile >> $(PTCOBJST); \
- done
- @for objfile in $(COBJ-LIBC-SH); do \
- echo ../libpthread/nptl/sysdeps/unix/sysv/linux/$$objfile >> $(PTCOBJSH); \
- done
-
rtld-libc-lowlevellock.c: libc-lowlevellock.c
$(LN) -fs $< $@
clean:
$(RM) *.o *.os *~ core rtld-libc-lowlevellock.c
+
+.PHONY: $(AR_LIB_NAME) $(AR_SO_LIB_NAME)
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 3d1c02181..85b75221e 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c
@@ -57,3 +57,11 @@ __libc_pthread_init (ptr, reclaim, functions)
return &__libc_multiple_threads;
#endif
}
+
+/* I would rather not talk about this. */
+#ifdef SHARED
+#include <link.h>
+void _dl_aux_init (ElfW(auxv_t) *av)
+{
+}
+#endif
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/mips/Makefile b/libpthread/nptl/sysdeps/unix/sysv/linux/mips/Makefile
index dd2bda972..865f74149 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/mips/Makefile
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/mips/Makefile
@@ -21,71 +21,87 @@ TOPDIR=../../../../../../../
include $(TOPDIR)Rules.mak
include ../../../../../Rules.mak
-ASRC-LIBP-ST = pt-vfork.S clone.S
-ASRC-LIBP-SH = $(ASRC-LIBP-ST)
+AR_LIBP_ASRC = pt-vfork.S clone.S
+SO_LIBP_ASRC = $(AR_LIBP_ASRC)
+AR_LIBP_CSRC = pthread_once.c
+SO_LIBP_CSRC = $(AR_LIBP_CSRC)
+AR_LIBC_CSRC = fork-nptl.c
+SO_LIBC_CSRC = $(AR_LIBC_CSRC)
-CSRC-LIBP-ST = pthread_once.c
-CSRC-LIBP-SH = $(CSRC-LIBP-ST)
-
-CSRC-LIBC-ST = fork-nptl.c
-CSRC-LIBC-SH = $(CSRC-LIBC-ST)
-
-AOBJ-LIBP-ST = $(patsubst %.S, %.o, $(ASRC-LIBP-ST))
-AOBJ-LIBP-SH = $(patsubst %.S, %.os, $(ASRC-LIBP-SH))
-COBJ-LIBP-ST = $(patsubst %.c, %.o, $(CSRC-LIBP-ST))
-COBJ-LIBP-SH = $(patsubst %.c, %.os, $(CSRC-LIBP-ST))
-COBJ-LIBC-ST = $(patsubst %.c, %.o, $(CSRC-LIBC-ST))
-COBJ-LIBC-SH = $(patsubst %.c, %.os, $(CSRC-LIBC-SH))
+AR_LIBP_AOBJS = $(patsubst %.S, %.o, $(AR_LIBP_ASRC))
+SO_LIBP_AOBJS = $(patsubst %.S, %.os, $(SO_LIBP_ASRC))
+AR_LIBP_COBJS = $(patsubst %.c, %.o, $(AR_LIBP_CSRC))
+SO_LIBP_COBJS = $(patsubst %.c, %.os, $(SO_LIBP_CSRC))
+AR_LIBC_COBJS = $(patsubst %.c, %.o, $(AR_LIBC_CSRC))
+SO_LIBC_COBJS = $(patsubst %.c, %.os, $(SO_LIBC_CSRC))
ifeq ($(UCLIBC_HAS_STDIO_FUTEXES),y)
CFLAGS-fork-nptl.c = -D__USE_STDIO_FUTEXES__
endif
-ar-target all: $(AOBJ-LIBP-ST) $(AOBJ-LIBP-SH) $(COBJ-LIBP-ST) $(COBJ-LIBP-SH)
+all: $(AR_LIB_NAME) $(AR_SO_LIB_NAME)
+
+$(AR_LIB_NAME): $(AR_LIBP_AOBJS) $(AR_LIBP_COBJS)
+ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y)
+ $(STRIPTOOL) -X --strip-debug -R .note -R .comment \
+ $(AR_LIBP_AOBJS) $(AR_LIBP_COBJS)
+else
+ $(STRIPTOOL) -x -R .note -R .comment \
+ $(AR_LIBP_AOBJS) $(AR_LIBP_COBJS)
+endif
+ $(AR) $(ARFLAGS) $(AR_LIB_NAME) $(AR_LIBP_AOBJS) $(AR_LIBP_COBJS)
+
+$(AR_SO_LIB_NAME): $(SO_LIBP_AOBJS) $(SO_LIBP_COBJS)
ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y)
$(STRIPTOOL) -X --strip-debug -R .note -R .comment \
- $(AOBJ-LIBP-ST) $(AOBJ-LIBP-SH) $(COBJ-LIBP-ST) $(COBJ-LIBP-SH)
+ $(SO_LIBP_AOBJS) $(SO_LIBP_COBJS)
else
$(STRIPTOOL) -x -R .note -R .comment \
- $(AOBJ-LIBP-ST) $(AOBJ-LIBP-SH) $(COBJ-LIBP-ST) $(COBJ-LIBP-SH)
+ $(SO_LIBP_AOBJS) $(SO_LIBP_COBJS)
+endif
+ $(AR) $(ARFLAGS) $(AR_SO_LIB_NAME) $(SO_LIBP_AOBJS) $(SO_LIBP_COBJS)
+
+obj.pthread.ar: $(AR_LIBC_COBJS)
+ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y)
+ $(STRIPTOOL) -X --strip-debug -R .note -R .comment $(AR_LIBC_COBJS)
+else
+ $(STRIPTOOL) -x -R .note -R .comment $(AR_LIBC_COBJS)
+endif
+ @for objfile in $(AR_LIBC_COBJS); do \
+ echo ../libpthread/nptl/sysdeps/unix/sysv/linux/mips/$$objfile \
+ >> $(TOPDIR)libc/$@; \
+ done
+
+obj.pthread.so: $(SO_LIBC_COBJS)
+ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y)
+ $(STRIPTOOL) -X --strip-debug -R .note -R .comment $(SO_LIBC_COBJS)
+else
+ $(STRIPTOOL) -x -R .note -R .comment $(SO_LIBC_COBJS)
endif
- $(AR) $(ARFLAGS) $(PTDIR)../$(LIBPTHREAD_STATIC_ARCHIVE) \
- $(AOBJ-LIBP-ST) $(COBJ-LIBP-ST)
- $(AR) $(ARFLAGS) $(PTDIR)../$(LIBPTHREAD_SHARED_ARCHIVE) \
- $(AOBJ-LIBP-SH) $(COBJ-LIBP-SH)
+ @for objfile in $(SO_LIBC_COBJS); do \
+ echo ../libpthread/nptl/sysdeps/unix/sysv/linux/mips/$$objfile \
+ >> $(TOPDIR)libc/$@; \
+ done
-$(AOBJ-LIBP-ST): %.o : %.S
+$(AR_LIBP_AOBJS): %.o : %.S
$(CC) $(ASFLAGS-LIBP) -c $< -o $@
-$(AOBJ-LIBP-SH): %.os : %.S
+$(SO_LIBP_AOBJS): %.os : %.S
$(CC) $(ASFLAGS-LIBP) -DSHARED -c $< -o $@
-$(COBJ-LIBP-ST): %.o : %.c
+$(AR_LIBP_COBJS): %.o : %.c
$(CC) $(CFLAGS-$<) $(CFLAGS-LIBP) -c $< -o $@
-$(COBJ-LIBP-SH): %.os : %.c
+$(SO_LIBP_COBJS): %.os : %.c
$(CC) $(CFLAGS-$<) $(CFLAGS-LIBP) -DSHARED -c $< -o $@
-$(COBJ-LIBC-ST): %.o : %.c
+$(AR_LIBC_COBJS): %.o : %.c
$(CC) $(CFLAGS-$<) $(CFLAGS-LIBC) -c $< -o $@
-$(COBJ-LIBC-SH): %.os : %.c
+$(SO_LIBC_COBJS): %.os : %.c
$(CC) $(CFLAGS-$<) $(CFLAGS-LIBC) -DSHARED -c $< -o $@
-objs-pthread-libc: $(COBJ-LIBC-ST) $(COBJ-LIBC-SH)
-ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y)
- $(STRIPTOOL) -X --strip-debug -R .note -R .comment \
- $(COBJ-LIBC-ST) $(COBJ-LIBC-SH)
-else
- $(STRIPTOOL) -x -R .note -R .comment \
- $(COBJ-LIBC-ST) $(COBJ-LIBC-SH)
-endif
- @for objfile in $(COBJ-LIBC-ST); do \
- echo ../libpthread/nptl/sysdeps/unix/sysv/linux/mips/$$objfile >> $(PTCOBJST); \
- done
- @for objfile in $(COBJ-LIBC-SH); do \
- echo ../libpthread/nptl/sysdeps/unix/sysv/linux/mips/$$objfile >> $(PTCOBJSH); \
- done
-
clean:
$(RM) *.o *.os *~ core
+
+.PHONY: $(AR_LIB_NAME) $(AR_SO_LIB_NAME)
diff --git a/libpthread/nptl_db/Makefile b/libpthread/nptl_db/Makefile
index 7fa3daa9a..a18912b4c 100644
--- a/libpthread/nptl_db/Makefile
+++ b/libpthread/nptl_db/Makefile
@@ -1,4 +1,4 @@
-# Makefile for uClibc's NPTL pthread debug library
+# Makefile for uClibc's native pthread debug library
#
# Copyright (C) 2005 Steven J. Hill <sjhill@realitydiluted.com>
#
@@ -20,28 +20,42 @@
TOPDIR=../../
include $(TOPDIR)Rules.mak
-LIBTHREAD_DB=../libthread_db.a
+LIB_NAME=libthread_db
+AR_LIB_NAME=$(TOPDIR)lib/$(LIB_NAME).a
+SO_LIB_NAME=$(TOPDIR)lib/$(LIB_NAME).so
+SO_FULL_NAME=$(LIB_NAME)-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so
-CFLAGS := $(CFLAGS:-O0=-O2) -DNOT_IN_libc=1 -DIS_IN_libthread_db=1 \
+CFLAGS := $(CFLAGS:-O0=-O2) -DNOT_IN_libc=1 -DIS_IN_libthread_db=1 $(PTINC) \
-std=gnu99 -DLIBPTHREAD_SO="\"libpthread.so.$(MAJOR_VERSION)\""
-CFLAGS += -I$(PTDIR)compat \
- -I$(PTDIR)sysdeps/unix/sysv/linux/$(TARGET_ARCH) \
- -I$(PTDIR)sysdeps/$(TARGET_ARCH) \
- -I$(PTDIR)sysdeps/unix/sysv/linux \
- -I$(PTDIR)sysdeps/pthread \
- -I$(PTDIR)sysdeps/generic
+# Remove any -z defs since this lib will have undefined symbols
+LDFLAGS := $(subst -z defs,,$(LDFLAGS)) --warn-unresolved-symbols
-OBJS=$(patsubst %.c, %.o, $(filter-out db_info.c, $(wildcard *.c)))
+OBJS = $(patsubst %.c, %.o, $(filter-out db_info.c, $(wildcard *.c)))
-all: $(LIBTHREAD_DB)
+ifeq ($(strip $(HAVE_SHARED)),y)
+all: $(SO_LIB_NAME)
+else
+all: $(AR_LIB_NAME)
+endif
-$(LIBTHREAD_DB) ar-target: $(OBJS)
- $(AR) $(ARFLAGS) $(LIBTHREAD_DB) $(OBJS)
+$(AR_LIB_NAME): $(OBJS)
+ $(INSTALL) -d $(TOPDIR)lib
+ $(RM) $(AR_LIB_NAME)
+ $(AR) $(ARFLAGS) $(AR_LIB_NAME) $(OBJS)
+
+$(SO_LIB_NAME): $(AR_LIB_NAME)
+ $(RM) $(TOPDIR)lib/$(SO_FULL_NAME) $(SO_LIB_NAME).1 $(SO_LIB_NAME)
+ $(LD) $(LDFLAGS) -soname=$(LIB_NAME).so.1 \
+ -o $(TOPDIR)lib/$(SO_FULL_NAME) --whole-archive $(AR_LIB_NAME) \
+ --no-whole-archive $(TOPDIR)libc/misc/internals/interp.o \
+ -L$(TOPDIR)lib -lc $(LDADD_LIBFLOAT) $(LIBGCC)
+ $(LN) -sf $(SO_FULL_NAME) $(SO_LIB_NAME).1
+ $(LN) -sf $(SO_FULL_NAME) $(SO_LIB_NAME)
$(OBJS): %.o : %.c
$(CC) $(CFLAGS) -c $< -o $@
$(STRIPTOOL) -x -R .note -R .comment $*.o
clean:
- $(RM) *.[oa] *~ core
+ $(RM) *.o *~ core