svn commit: branches/uClibc-nptl: extra/scripts libpthread/nptl libpthrea etc...

sjhill at uclibc.org sjhill at uclibc.org
Sun Feb 5 05:08:16 UTC 2006


Author: sjhill
Date: 2006-02-04 21:08:14 -0800 (Sat, 04 Feb 2006)
New Revision: 13844

Log:
Add in files and necessary make targets to autogenerate header files for various offsets needed for TLS storage access and low level locking which be used by architectures other than MIPS. (HINT: maybe I'm working other architectures for NPTL, maybe I'm not. I'll never tell.)


Added:
   branches/uClibc-nptl/extra/scripts/gen-as-const.awk
   branches/uClibc-nptl/libpthread/nptl/pthread-errnos.sym
   branches/uClibc-nptl/libpthread/nptl/sysdeps/mips/tcb-offsets.sym
   branches/uClibc-nptl/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelbarrier.sym
   branches/uClibc-nptl/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelcond.sym
   branches/uClibc-nptl/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelrwlock.sym
   branches/uClibc-nptl/libpthread/nptl/sysdeps/unix/sysv/linux/unwindbuf.sym

Removed:
   branches/uClibc-nptl/libpthread/nptl/sysdeps/mips/tcb-offsets.h

Modified:
   branches/uClibc-nptl/Makefile.in
   branches/uClibc-nptl/libpthread/nptl/Makefile.in
   branches/uClibc-nptl/libpthread/nptl/sysdeps/mips/Makefile.arch
   branches/uClibc-nptl/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in


Changeset:
Modified: branches/uClibc-nptl/Makefile.in
===================================================================
--- branches/uClibc-nptl/Makefile.in	2006-02-05 05:05:53 UTC (rev 13843)
+++ branches/uClibc-nptl/Makefile.in	2006-02-05 05:08:14 UTC (rev 13844)
@@ -96,6 +96,11 @@
 ifeq ($(UCLIBC_HAS_LOCALE),y)
 	$(MAKE) locale_headers
 endif
+ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
+	$(MAKE) nptl_headers
+	$(MAKE) nptl_arch_headers
+	$(MAKE) nptl_linux_headers
+endif
 
 pregen: headers
 

Added: branches/uClibc-nptl/extra/scripts/gen-as-const.awk
===================================================================
--- branches/uClibc-nptl/extra/scripts/gen-as-const.awk	2006-02-05 05:05:53 UTC (rev 13843)
+++ branches/uClibc-nptl/extra/scripts/gen-as-const.awk	2006-02-05 05:08:14 UTC (rev 13844)
@@ -0,0 +1,32 @@
+# Script used in producing headers of assembly constants from C expressions.
+# The input to this script looks like:
+#	#cpp-directive ...
+#	NAME1
+#	NAME2 expression ...
+# The output of this script is C code to be run through gcc -S and then
+# massaged to extract the integer constant values of the given C expressions.
+# A line giving just a name implies an expression consisting of just that name.
+
+BEGIN { started = 0 }
+
+# cpp directives go straight through.
+/^#/ { print; next }
+
+NF >= 1 && !started {
+  print "void dummy(void) {";
+  started = 1;
+}
+
+# Separator.
+$1 == "--" { next }
+
+NF == 1 { sub(/^.*$/, "& &"); }
+
+NF > 1 {
+  name = $1;
+  sub(/^[^ 	]+[ 	]+/, "");
+  printf "asm (\"@@@name@@@%s@@@value@@@%%0@@@end@@@\" : : \"i\" (%s));\n",
+    name, $0;
+}
+
+END { if (started) print "}" }

Modified: branches/uClibc-nptl/libpthread/nptl/Makefile.in
===================================================================
--- branches/uClibc-nptl/libpthread/nptl/Makefile.in	2006-02-05 05:05:53 UTC (rev 13843)
+++ branches/uClibc-nptl/libpthread/nptl/Makefile.in	2006-02-05 05:08:14 UTC (rev 13844)
@@ -44,9 +44,6 @@
 		      pthread_cond_init pthread_cond_destroy \
 		      pthread_cond_wait pthread_cond_timedwait \
 		      pthread_cond_signal pthread_cond_broadcast \
-		      old_pthread_cond_init old_pthread_cond_destroy \
-		      old_pthread_cond_wait old_pthread_cond_timedwait \
-		      old_pthread_cond_signal old_pthread_cond_broadcast \
 		      pthread_condattr_init pthread_condattr_destroy \
 		      pthread_condattr_getpshared pthread_condattr_setpshared \
 		      pthread_condattr_getclock pthread_condattr_setclock \
@@ -223,42 +220,42 @@
 
 libpthread_FULL_NAME := libpthread-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so
 
-libpthread_DIR := $(top_srcdir)libpthread/nptl
-libpthread_OUT := $(top_builddir)libpthread/nptl
+PTHREAD_DIR := $(top_srcdir)libpthread/nptl
+PTHREAD_OUT := $(top_builddir)libpthread/nptl
 
-libpthread_a_SRC = $(patsubst %, $(libpthread_DIR)/%.c,			\
+libpthread_a_SRC = $(patsubst %, $(PTHREAD_DIR)/%.c,			\
 		$(filter-out $(libpthread-os-routines) \
 	       $(libpthread-misc-routines)				 \
 	       $(libpthread-shared-only-routines),			 \
 	       $(libpthread-routines)))
-libpthread_so_SRC = $(patsubst %, $(libpthread_DIR)/%.c,		\
+libpthread_so_SRC = $(patsubst %, $(PTHREAD_DIR)/%.c,		\
 		$(filter-out $(libpthread-os-routines) \
 	       $(libpthread-misc-routines), $(libpthread-routines)))
 
-libc-a-y += $(patsubst %.c, $(libpthread_OUT)/%.o, alloca_cutoff.c	\
+libc-a-y += $(patsubst %.c, $(PTHREAD_OUT)/%.o, alloca_cutoff.c	\
 	    forward.c libc-cancellation.c)
-libc-so-y += $(patsubst %.c, $(libpthread_OUT)/%.oS, forward.c		\
+libc-so-y += $(patsubst %.c, $(PTHREAD_OUT)/%.oS, forward.c		\
 	    libc-cancellation.c)
 
-libpthread-a-y := $(patsubst $(libpthread_DIR)/%.c,$(libpthread_OUT)/%.o,$(libpthread_a_SRC))
-libpthread-so-y := $(patsubst $(libpthread_DIR)/%.c,$(libpthread_OUT)/%.oS,$(libpthread_so_SRC))
+libpthread-a-y := $(patsubst $(PTHREAD_DIR)/%.c,$(PTHREAD_OUT)/%.o,$(libpthread_a_SRC))
+libpthread-so-y := $(patsubst $(PTHREAD_DIR)/%.c,$(PTHREAD_OUT)/%.oS,$(libpthread_so_SRC))
 
--include $(libpthread_DIR)/sysdeps/pthread/Makefile.in
--include $(libpthread_DIR)/sysdeps/$(TARGET_ARCH)/Makefile.arch
--include $(libpthread_DIR)/sysdeps/unix/sysv/linux/Makefile.in
--include $(libpthread_DIR)/sysdeps/unix/sysv/linux/$(TARGET_ARCH)/Makefile.arch
+objclean-y += libpthread_clean
+headers_clean-y += nptl_headers_clean
 
+-include $(PTHREAD_DIR)/sysdeps/generic/Makefile.in
+-include $(PTHREAD_DIR)/sysdeps/pthread/Makefile.in
+-include $(PTHREAD_DIR)/sysdeps/$(TARGET_ARCH)/Makefile.arch
+-include $(PTHREAD_DIR)/sysdeps/unix/sysv/linux/Makefile.in
+-include $(PTHREAD_DIR)/sysdeps/unix/sysv/linux/$(TARGET_ARCH)/Makefile.arch
+
 lib-a-y += $(top_builddir)lib/libpthread.a
 lib-so-y += $(top_builddir)lib/libpthread.so
 
-objclean-y += libpthread_clean
-headers-y += nptl_headers
-headers_clean-y += nptl_headers_clean
-
-$(top_builddir)lib/libpthread.so: $(libpthread_OUT)/libpthread_so.a
+$(top_builddir)lib/libpthread.so: $(PTHREAD_OUT)/libpthread_so.a
 	$(call link.so,$(libpthread_FULL_NAME),$(MAJOR_VERSION))
 
-$(libpthread_OUT)/libpthread_so.a: $(libpthread-so-y)
+$(PTHREAD_OUT)/libpthread_so.a: $(libpthread-so-y)
 	$(Q)$(RM) $@
 ifeq ($(PTHREADS_DEBUG_SUPPORT),y)
 	$(do_strip:-x=-X --strip-debug)
@@ -277,6 +274,20 @@
 	$(do_strip)
 	$(do_ar)
 
+#
+# Create 'pthread-errnos.h' header file.
+#
+CFLAGS-pthread-errnos.c = -S
+
+$(PTHREAD_OUT)/pthread-errnos.c: $(PTHREAD_DIR)/pthread-errnos.sym
+	awk -f $(top_srcdir)extra/scripts/gen-as-const.awk $< > $@
+
+$(PTHREAD_OUT)/pthread-errnos.s: $(PTHREAD_OUT)/pthread-errnos.c
+	$(compile.c)
+
+$(PTHREAD_OUT)/pthread-errnos.h: $(PTHREAD_OUT)/pthread-errnos.s
+	@sed -n "s/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*$\/#define \1 \2/p" $< > $(PTHREAD_OUT)/pthread-errnos.h
+
 nptl_headers:
 	@sed 's/\(.*\)/"\1\\n"/' $(PTDIR)/Banner > $(PTDIR)/banner.h
 	@echo "#define VERSION \""$(VERSION)"\"" > $(PTDIR)/version.h
@@ -287,10 +298,12 @@
 	$(LN) -sf ../../$(PTDIR)/sysdeps/unix/sysv/linux/$(TARGET_ARCH)/bits/pthreadtypes.h $(top_builddir)include/bits/
 	$(LN) -sf ../../$(PTDIR)/sysdeps/pthread/bits/libc-lock.h $(top_builddir)include/bits/
 	$(LN) -sf ../../$(PTDIR)/sysdeps/pthread/bits/stdio-lock.h $(top_builddir)include/bits/
+	$(MAKE) $(PTHREAD_OUT)/pthread-errnos.h
 
 nptl_headers_clean:
 	$(RM) $(PTDIR)/banner.h $(top_builddir)include/pthread.h	\
-	      $(PTDIR)/version.h $(top_builddir)include/semaphore.h
+	      $(PTDIR)/version.h $(top_builddir)include/semaphore.h	\
+	      $(PTHREAD_OUT)/pthread-errnos.{c,h,s}
 
 libpthread_clean:
-	$(RM) $(libpthread_OUT)/*.{o,os,oS}
+	$(RM) $(PTHREAD_OUT)/*.{o,os,oS}

Added: branches/uClibc-nptl/libpthread/nptl/pthread-errnos.sym
===================================================================
--- branches/uClibc-nptl/libpthread/nptl/pthread-errnos.sym	2006-02-05 05:05:53 UTC (rev 13843)
+++ branches/uClibc-nptl/libpthread/nptl/pthread-errnos.sym	2006-02-05 05:08:14 UTC (rev 13844)
@@ -0,0 +1,12 @@
+#include <errno.h>
+
+-- These errno codes are used by some assembly code.
+
+EAGAIN		EAGAIN
+EBUSY		EBUSY
+EDEADLK		EDEADLK
+EINTR		EINTR
+EINVAL		EINVAL
+ENOSYS		ENOSYS
+ETIMEDOUT	ETIMEDOUT
+EWOULDBLOCK	EWOULDBLOCK

Modified: branches/uClibc-nptl/libpthread/nptl/sysdeps/mips/Makefile.arch
===================================================================
--- branches/uClibc-nptl/libpthread/nptl/sysdeps/mips/Makefile.arch	2006-02-05 05:05:53 UTC (rev 13843)
+++ branches/uClibc-nptl/libpthread/nptl/sysdeps/mips/Makefile.arch	2006-02-05 05:08:14 UTC (rev 13844)
@@ -6,38 +6,56 @@
 #
 
 libpthread_SSRC = pthread_spin_lock.S pthread_spin_trylock.S	\
-		  nptl-syscall_error.S
+		  nptl-sysdep.S
 
-libc_a_CSRC = dl-support.c dl-tls.c libc-tls.c
+libc_a_CSRC = libc-tls.c
 
 CFLAGS-pt-raise.c = -DNOT_IN_libc=1 -DIS_IN_libpthread=1
-CFLAGS-dl-support.c = -D_GNU_SOURCE
 
 ASFLAGS-pthread_spin_lock.S = -DNOT_IN_libc=1 -DIS_IN_libpthread=1
 ASFLAGS-pthread_spin_trylock.S = -DNOT_IN_libc=1 -DIS_IN_libpthread=1
-ASFLAGS-nptl-syscall_error.S = -DNOT_IN_libc=1 -DIS_IN_libpthread=1	\
-			       -I$(top_srcdir)libc/sysdeps/linux/mips
+ASFLAGS-nptl-sysdep.S = -DNOT_IN_libc=1 -DIS_IN_libpthread=1	\
+		        -I$(top_srcdir)libc/sysdeps/linux/mips
 
 CFLAGS-mips = $(SSP_ALL_CFLAGS)
 #CFLAGS:=$(CFLAGS:-O1=-O2)
 
-PTHREAD_ARCH_DIR:=$(top_srcdir)libpthread/nptl/sysdeps/mips
-PTHREAD_ARCH_OUT:=$(top_builddir)libpthread/nptl/sysdeps/mips
+PTHREAD_ARCH_DIR := $(top_srcdir)libpthread/nptl/sysdeps/mips
+PTHREAD_ARCH_OUT := $(top_builddir)libpthread/nptl/sysdeps/mips
+PTHREAD_ARCH_OBJ := $(patsubst %.S,$(PTHREAD_ARCH_OUT)/%.o,$(libpthread_SSRC))
 
-PTHREAD_ARCH_OBJ:=$(patsubst %.S,$(PTHREAD_ARCH_OUT)/%.o,$(libpthread_SSRC))
-
 libpthread-a-y += $(PTHREAD_ARCH_OBJ)
 libpthread-so-y += $(PTHREAD_ARCH_OBJ:.o=.oS)
 
-libpthread-nomulti-y+=$(PTHREAD_ARCH_OBJ)
+libpthread-nomulti-y += $(PTHREAD_ARCH_OBJ)
 
-LIBC_ARCH_OBJ:=$(patsubst %.c,$(PTHREAD_ARCH_OUT)/%.o,$(libc_a_CSRC))
+LIBC_ARCH_OBJ := $(patsubst %.c,$(PTHREAD_ARCH_OUT)/%.o,$(libc_a_CSRC))
 
-libc-a-y+=$(LIBC_ARCH_OBJ)
+libc-a-y += $(LIBC_ARCH_OBJ)
 
-libc-nomulti-y+=$(LIBC_ARCH_OBJ)
+libc-nomulti-y += $(LIBC_ARCH_OBJ)
 
-objclean-y+=pthread_arch_objclean
+objclean-y += nptl_arch_objclean
+headers_clean-y += nptl_arch_headers_clean
 
-pthread_arch_objclean:
+#
+# Create 'tcb-offsets.h' header file.
+#
+CFLAGS-tcb-offsets.c = -S
+
+$(PTHREAD_ARCH_OUT)/tcb-offsets.c: $(PTHREAD_ARCH_DIR)/tcb-offsets.sym
+	awk -f $(top_srcdir)extra/scripts/gen-as-const.awk $< > $@
+
+$(PTHREAD_ARCH_OUT)/tcb-offsets.s: $(PTHREAD_ARCH_OUT)/tcb-offsets.c
+	$(compile.c)
+
+nptl_arch_headers: $(PTHREAD_ARCH_OUT)/tcb-offsets.s
+	@sed -n "s/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*$\/#define \1 \2/p" $< > $(PTHREAD_ARCH_OUT)/tcb-offsets.h
+
+nptl_arch_headers_clean:
+	$(RM) $(PTHREAD_ARCH_OUT)/tcb-offsets.c		\
+	      $(PTHREAD_ARCH_OUT)/tcb-offsets.s		\
+	      $(PTHREAD_ARCH_OUT)/tcb-offsets.h
+
+nptl_arch_objclean:
 	$(RM) $(PTHREAD_ARCH_OUT)/*.{o,os,oS}

Deleted: branches/uClibc-nptl/libpthread/nptl/sysdeps/mips/tcb-offsets.h
===================================================================
--- branches/uClibc-nptl/libpthread/nptl/sysdeps/mips/tcb-offsets.h	2006-02-05 05:05:53 UTC (rev 13843)
+++ branches/uClibc-nptl/libpthread/nptl/sysdeps/mips/tcb-offsets.h	2006-02-05 05:08:14 UTC (rev 13844)
@@ -1,3 +0,0 @@
-#define MULTIPLE_THREADS_OFFSET -29776
-#define PID_OFFSET -29700
-#define TID_OFFSET -29704

Added: branches/uClibc-nptl/libpthread/nptl/sysdeps/mips/tcb-offsets.sym
===================================================================
--- branches/uClibc-nptl/libpthread/nptl/sysdeps/mips/tcb-offsets.sym	2006-02-05 05:05:53 UTC (rev 13843)
+++ branches/uClibc-nptl/libpthread/nptl/sysdeps/mips/tcb-offsets.sym	2006-02-05 05:08:14 UTC (rev 13844)
@@ -0,0 +1,11 @@
+#include <sysdep.h>
+#include <tls.h>
+
+--
+
+-- Abuse tls.h macros to derive offsets relative to the thread register.
+#define thread_offsetof(mem)	(long)(offsetof(struct pthread, mem) - TLS_TCB_OFFSET - TLS_PRE_TCB_SIZE)
+
+MULTIPLE_THREADS_OFFSET		thread_offsetof (header.multiple_threads)
+PID_OFFSET			thread_offsetof (pid)
+TID_OFFSET			thread_offsetof (tid)

Modified: branches/uClibc-nptl/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in
===================================================================
--- branches/uClibc-nptl/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in	2006-02-05 05:05:53 UTC (rev 13843)
+++ branches/uClibc-nptl/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in	2006-02-05 05:08:14 UTC (rev 13844)
@@ -1,6 +1,6 @@
 # Makefile for uClibc NPTL
 #
-# Copyright (C) 2005 Steven J. Hill <sjhill at uclibc.org>
+# Copyright (C) 2006 Steven J. Hill <sjhill at uclibc.org>
 #
 # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
 #
@@ -13,10 +13,14 @@
 		  sem_trywait.c sem_wait.c pt-fork.c			\
 		  sigtimedwait.c sigwaitinfo.c sigwait.c sleep.c
 
+libpthread_SSRC = #ptw-close.S ptw-open.S ptw-waitid.S ptw-waidpid.S ptw-write.S
+
 libc_CSRC = libc_pthread_init.c libc_multiple_threads.c			\
 	    register-atfork.c unregister-atfork.c getpid.c		\
 	    raise.c sleep.c
 
+libc_SSRC = #close.S open.S waitid.S waidpid.S write.S
+
 ifeq ($(TARGET_ARCH),alpha)
 libpthread_CSRC += lowlevellock.c
 libc_CSRC += libc-lowlevellock.c
@@ -52,24 +56,88 @@
 CFLAGS-OMIT-sleep.c = -DNOT_IN_libc=1 -DIS_IN_libpthread=1
 CFLAGS-OMIT-libc-lowlevellock.c = -DNOT_IN_libc=1 -DIS_IN_libpthread=1
 
-linux_DIR := $(top_srcdir)/libpthread/nptl/sysdeps/unix/sysv/linux
-linux_OUT := $(top_builddir)/libpthread/nptl/sysdeps/unix/sysv/linux
+PTHREAD_LINUX_DIR := $(top_srcdir)/libpthread/nptl/sysdeps/unix/sysv/linux
+PTHREAD_LINUX_OUT := $(top_builddir)/libpthread/nptl/sysdeps/unix/sysv/linux
 
-PTHREAD_OBJ = $(patsubst %.c, $(linux_OUT)/%.o, $(libpthread_CSRC))
+PTHREAD_LINUX_OBJ := $(patsubst %.c,$(PTHREAD_LINUX_OUT)/%.o,$(libpthread_CSRC))
+PTHREAD_LINUX_OBJ += $(patsubst %.S,$(PTHREAD_LINUX_OUT)/%.o,$(libpthread_SSRC))
 
-libpthread-a-y += $(PTHREAD_OBJ)
-libpthread-so-y += $(PTHREAD_OBJ:.o=.oS)
+libpthread-a-y += $(PTHREAD_LINUX_OBJ)
+libpthread-so-y += $(PTHREAD_LINUX_OBJ:.o=.oS)
 
+libpthread-nomulti-y += $(PTHREAD_LINUX_OBJ)
+
+LIBC_LINUX_OBJ := $(patsubst %.c,$(PTHREAD_LINUX_OUT)/%.o,$(libc_CSRC))
+LIBC_LINUX_OBJ += $(patsubst %.S,$(PTHREAD_LINUX_OUT)/%.o,$(libc_SSRC))
+
+libc-a-y += $(LIBC_LINUX_OBJ)
+libc-so-y += $(LIBC_LINUX_OBJ:.o=.oS)
+
+libc-nomulti-y += $(LIBC_LINUX_OBJ)
+
+objclean-y += nptl_linux_objclean
+headers_clean-y += nptl_linux_headers_clean
+
 #
-# Special suffix rules.
+# Create header files.
 #
-LIBC_OBJ = $(patsubst %.c, $(linux_OUT)/%.o, $(libc_CSRC))
+CFLAGS-lowlevelbarrier.c = -S
+CFLAGS-lowlevelcond.c = -S
+CFLAGS-lowlevelrwlock.c = -S
+CFLAGS-unwindbuf.c = -S
 
+$(PTHREAD_LINUX_OUT)/lowlevelbarrier.c: $(PTHREAD_LINUX_DIR)/lowlevelbarrier.sym
+	awk -f $(top_srcdir)extra/scripts/gen-as-const.awk $< > $@
 
-libc-a-y += $(LIBC_OBJ)
-libc-so-y += $(LIBC_OBJ:.o=.oS)
+$(PTHREAD_LINUX_OUT)/lowlevelcond.c: $(PTHREAD_LINUX_DIR)/lowlevelcond.sym
+	awk -f $(top_srcdir)extra/scripts/gen-as-const.awk $< > $@
 
-objclean-y += pthread_linux_objclean
+$(PTHREAD_LINUX_OUT)/lowlevelrwlock.c: $(PTHREAD_LINUX_DIR)/lowlevelrwlock.sym
+	awk -f $(top_srcdir)extra/scripts/gen-as-const.awk $< > $@
 
-pthread_linux_objclean:
-	$(RM) $(linux_OUT)/*.{o,os,oS}
+$(PTHREAD_LINUX_OUT)/unwindbuf.c: $(PTHREAD_LINUX_DIR)/unwindbuf.sym
+	awk -f $(top_srcdir)extra/scripts/gen-as-const.awk $< > $@
+
+$(PTHREAD_LINUX_OUT)/lowlevelbarrier.s: $(PTHREAD_LINUX_OUT)/lowlevelbarrier.c
+	$(compile.c)
+
+$(PTHREAD_LINUX_OUT)/lowlevelcond.s: $(PTHREAD_LINUX_OUT)/lowlevelcond.c
+	$(compile.c)
+
+$(PTHREAD_LINUX_OUT)/lowlevelrwlock.s: $(PTHREAD_LINUX_OUT)/lowlevelrwlock.c
+	$(compile.c)
+
+$(PTHREAD_LINUX_OUT)/unwindbuf.s: $(PTHREAD_LINUX_OUT)/unwindbuf.c
+	$(compile.c)
+
+$(PTHREAD_LINUX_OUT)/lowlevelbarrier.h: $(PTHREAD_LINUX_OUT)/lowlevelbarrier.s
+	@sed -n "s/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*$\/#define \1 \2/p" $< > $@
+
+$(PTHREAD_LINUX_OUT)/lowlevelcond.h: $(PTHREAD_LINUX_OUT)/lowlevelcond.s
+	@sed -n "s/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*$\/#define \1 \2/p" $< > $@
+
+$(PTHREAD_LINUX_OUT)/lowlevelrwlock.h: $(PTHREAD_LINUX_OUT)/lowlevelrwlock.s
+	@sed -n "s/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*$\/#define \1 \2/p" $< > $@
+
+$(PTHREAD_LINUX_OUT)/unwindbuf.h: $(PTHREAD_LINUX_OUT)/unwindbuf.s
+	@sed -n "s/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*$\/#define \1 \2/p" $< > $@
+
+ptw-%.oS:
+	$(PTHREAD_LINUX_OUT)/sjh.sh $* > $(PTHREAD_LINUX_OUT)/tmp.S
+	$(compile.S) -x assembler-with-cpp tmp.S
+
+nptl_linux_headers:
+	$(MAKE) $(PTHREAD_LINUX_OUT)/lowlevelbarrier.h
+	$(MAKE) $(PTHREAD_LINUX_OUT)/lowlevelcond.h
+	$(MAKE) $(PTHREAD_LINUX_OUT)/lowlevelrwlock.h
+	$(MAKE) $(PTHREAD_LINUX_OUT)/unwindbuf.h
+	$(LN) -sf ../../$(PTHREAD_LINUX_DIR)/bits/local_lim.h $(top_builddir)include/bits
+
+nptl_linux_headers_clean:
+	$(RM) $(PTHREAD_LINUX_OUT)/lowlevelbarrier.{c,h,s}	\
+	$(RM) $(PTHREAD_LINUX_OUT)/lowlevelcond.{c,h,s}		\
+	$(RM) $(PTHREAD_LINUX_OUT)/lowlevelrwlock.{c,h,s}	\
+	$(RM) $(PTHREAD_LINUX_OUT)/unwindbuf.{c,h,s}
+
+nptl_linux_objclean:
+	$(RM) $(PTHREAD_LINUX_OUT)/*.{o,os,oS}

Added: branches/uClibc-nptl/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelbarrier.sym
===================================================================
--- branches/uClibc-nptl/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelbarrier.sym	2006-02-05 05:05:53 UTC (rev 13843)
+++ branches/uClibc-nptl/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelbarrier.sym	2006-02-05 05:08:14 UTC (rev 13844)
@@ -0,0 +1,11 @@
+#include <stddef.h>
+#include <sched.h>
+#include <bits/pthreadtypes.h>
+#include "internaltypes.h"
+
+--
+
+CURR_EVENT		offsetof (struct pthread_barrier, curr_event)
+MUTEX			offsetof (struct pthread_barrier, lock)
+LEFT			offsetof (struct pthread_barrier, left)
+INIT_COUNT		offsetof (struct pthread_barrier, init_count)

Added: branches/uClibc-nptl/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelcond.sym
===================================================================
--- branches/uClibc-nptl/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelcond.sym	2006-02-05 05:05:53 UTC (rev 13843)
+++ branches/uClibc-nptl/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelcond.sym	2006-02-05 05:08:14 UTC (rev 13844)
@@ -0,0 +1,16 @@
+#include <stddef.h>
+#include <sched.h>
+#include <bits/pthreadtypes.h>
+#include <internaltypes.h>
+
+--
+
+cond_lock	offsetof (pthread_cond_t, __data.__lock)
+cond_futex	offsetof (pthread_cond_t, __data.__futex)
+cond_nwaiters	offsetof (pthread_cond_t, __data.__nwaiters)
+total_seq	offsetof (pthread_cond_t, __data.__total_seq)
+wakeup_seq	offsetof (pthread_cond_t, __data.__wakeup_seq)
+woken_seq	offsetof (pthread_cond_t, __data.__woken_seq)
+dep_mutex	offsetof (pthread_cond_t, __data.__mutex)
+broadcast_seq	offsetof (pthread_cond_t, __data.__broadcast_seq)
+clock_bits	COND_CLOCK_BITS

Added: branches/uClibc-nptl/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelrwlock.sym
===================================================================
--- branches/uClibc-nptl/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelrwlock.sym	2006-02-05 05:05:53 UTC (rev 13843)
+++ branches/uClibc-nptl/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelrwlock.sym	2006-02-05 05:08:14 UTC (rev 13844)
@@ -0,0 +1,14 @@
+#include <stddef.h>
+#include <stdio.h>
+#include <bits/pthreadtypes.h>
+
+--
+
+MUTEX		offsetof (pthread_rwlock_t, __data.__lock)
+NR_READERS	offsetof (pthread_rwlock_t, __data.__nr_readers)
+READERS_WAKEUP	offsetof (pthread_rwlock_t, __data.__readers_wakeup)
+WRITERS_WAKEUP	offsetof (pthread_rwlock_t, __data.__writer_wakeup)
+READERS_QUEUED	offsetof (pthread_rwlock_t, __data.__nr_readers_queued)
+WRITERS_QUEUED	offsetof (pthread_rwlock_t, __data.__nr_writers_queued)
+FLAGS		offsetof (pthread_rwlock_t, __data.__flags)
+WRITER		offsetof (pthread_rwlock_t, __data.__writer)

Added: branches/uClibc-nptl/libpthread/nptl/sysdeps/unix/sysv/linux/unwindbuf.sym
===================================================================
--- branches/uClibc-nptl/libpthread/nptl/sysdeps/unix/sysv/linux/unwindbuf.sym	2006-02-05 05:05:53 UTC (rev 13843)
+++ branches/uClibc-nptl/libpthread/nptl/sysdeps/unix/sysv/linux/unwindbuf.sym	2006-02-05 05:08:14 UTC (rev 13844)
@@ -0,0 +1,7 @@
+#include <pthread.h>
+#include <stddef.h>
+
+--
+
+UNWINDBUFSIZE	sizeof (__pthread_unwind_buf_t)
+UWJMPBUF	offsetof (__pthread_unwind_buf_t, __cancel_jmp_buf)




More information about the uClibc-cvs mailing list