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