summaryrefslogtreecommitdiffstats
path: root/libpthread/nptl
diff options
context:
space:
mode:
Diffstat (limited to 'libpthread/nptl')
-rw-r--r--libpthread/nptl/Makefile.in59
-rw-r--r--libpthread/nptl/pthread-errnos.sym12
-rw-r--r--libpthread/nptl/sysdeps/mips/Makefile.arch48
-rw-r--r--libpthread/nptl/sysdeps/mips/tcb-offsets.h3
-rw-r--r--libpthread/nptl/sysdeps/mips/tcb-offsets.sym11
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in94
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelbarrier.sym11
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelcond.sym16
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelrwlock.sym14
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/unwindbuf.sym7
10 files changed, 221 insertions, 54 deletions
diff --git a/libpthread/nptl/Makefile.in b/libpthread/nptl/Makefile.in
index 45f3bd1f2..84a1cd124 100644
--- a/libpthread/nptl/Makefile.in
+++ b/libpthread/nptl/Makefile.in
@@ -44,9 +44,6 @@ libpthread-routines = init vars events version \
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 @@ endif
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 @@ endif
$(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 @@ nptl_headers:
$(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}
diff --git a/libpthread/nptl/pthread-errnos.sym b/libpthread/nptl/pthread-errnos.sym
new file mode 100644
index 000000000..2bb4d0d3c
--- /dev/null
+++ b/libpthread/nptl/pthread-errnos.sym
@@ -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
diff --git a/libpthread/nptl/sysdeps/mips/Makefile.arch b/libpthread/nptl/sysdeps/mips/Makefile.arch
index 4c73ef583..fa22a5454 100644
--- a/libpthread/nptl/sysdeps/mips/Makefile.arch
+++ b/libpthread/nptl/sysdeps/mips/Makefile.arch
@@ -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_OBJ:=$(patsubst %.S,$(PTHREAD_ARCH_OUT)/%.o,$(libpthread_SSRC))
+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))
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-a-y += $(LIBC_ARCH_OBJ)
+
+libc-nomulti-y += $(LIBC_ARCH_OBJ)
+
+objclean-y += nptl_arch_objclean
+headers_clean-y += nptl_arch_headers_clean
+
+#
+# Create 'tcb-offsets.h' header file.
+#
+CFLAGS-tcb-offsets.c = -S
-LIBC_ARCH_OBJ:=$(patsubst %.c,$(PTHREAD_ARCH_OUT)/%.o,$(libc_a_CSRC))
+$(PTHREAD_ARCH_OUT)/tcb-offsets.c: $(PTHREAD_ARCH_DIR)/tcb-offsets.sym
+ awk -f $(top_srcdir)extra/scripts/gen-as-const.awk $< > $@
-libc-a-y+=$(LIBC_ARCH_OBJ)
+$(PTHREAD_ARCH_OUT)/tcb-offsets.s: $(PTHREAD_ARCH_OUT)/tcb-offsets.c
+ $(compile.c)
-libc-nomulti-y+=$(LIBC_ARCH_OBJ)
+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
-objclean-y+=pthread_arch_objclean
+nptl_arch_headers_clean:
+ $(RM) $(PTHREAD_ARCH_OUT)/tcb-offsets.c \
+ $(PTHREAD_ARCH_OUT)/tcb-offsets.s \
+ $(PTHREAD_ARCH_OUT)/tcb-offsets.h
-pthread_arch_objclean:
+nptl_arch_objclean:
$(RM) $(PTHREAD_ARCH_OUT)/*.{o,os,oS}
diff --git a/libpthread/nptl/sysdeps/mips/tcb-offsets.h b/libpthread/nptl/sysdeps/mips/tcb-offsets.h
deleted file mode 100644
index 3ba80c55d..000000000
--- a/libpthread/nptl/sysdeps/mips/tcb-offsets.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#define MULTIPLE_THREADS_OFFSET -29776
-#define PID_OFFSET -29700
-#define TID_OFFSET -29704
diff --git a/libpthread/nptl/sysdeps/mips/tcb-offsets.sym b/libpthread/nptl/sysdeps/mips/tcb-offsets.sym
new file mode 100644
index 000000000..e0e71dc43
--- /dev/null
+++ b/libpthread/nptl/sysdeps/mips/tcb-offsets.sym
@@ -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)
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in b/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in
index 8bd512731..a39ada190 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in
@@ -1,6 +1,6 @@
# Makefile for uClibc NPTL
#
-# Copyright (C) 2005 Steven J. Hill <sjhill@uclibc.org>
+# Copyright (C) 2006 Steven J. Hill <sjhill@uclibc.org>
#
# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
#
@@ -13,10 +13,14 @@ libpthread_CSRC = pt-raise.c pthread_attr_getaffinity.c \
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-raise.c = -DNOT_IN_libc=1 -DIS_IN_libpthread=1
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_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_LINUX_OBJ)
+libpthread-so-y += $(PTHREAD_LINUX_OBJ:.o=.oS)
+
+libpthread-nomulti-y += $(PTHREAD_LINUX_OBJ)
-PTHREAD_OBJ = $(patsubst %.c, $(linux_OUT)/%.o, $(libpthread_CSRC))
+LIBC_LINUX_OBJ := $(patsubst %.c,$(PTHREAD_LINUX_OUT)/%.o,$(libc_CSRC))
+LIBC_LINUX_OBJ += $(patsubst %.S,$(PTHREAD_LINUX_OUT)/%.o,$(libc_SSRC))
-libpthread-a-y += $(PTHREAD_OBJ)
-libpthread-so-y += $(PTHREAD_OBJ:.o=.oS)
+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 $< > $@
+
+$(PTHREAD_LINUX_OUT)/lowlevelcond.c: $(PTHREAD_LINUX_DIR)/lowlevelcond.sym
+ awk -f $(top_srcdir)extra/scripts/gen-as-const.awk $< > $@
+
+$(PTHREAD_LINUX_OUT)/lowlevelrwlock.c: $(PTHREAD_LINUX_DIR)/lowlevelrwlock.sym
+ awk -f $(top_srcdir)extra/scripts/gen-as-const.awk $< > $@
+
+$(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
-libc-a-y += $(LIBC_OBJ)
-libc-so-y += $(LIBC_OBJ:.o=.oS)
+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
-objclean-y += pthread_linux_objclean
+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}
-pthread_linux_objclean:
- $(RM) $(linux_OUT)/*.{o,os,oS}
+nptl_linux_objclean:
+ $(RM) $(PTHREAD_LINUX_OUT)/*.{o,os,oS}
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelbarrier.sym b/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelbarrier.sym
new file mode 100644
index 000000000..36e28eb2a
--- /dev/null
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelbarrier.sym
@@ -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)
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelcond.sym b/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelcond.sym
new file mode 100644
index 000000000..c5e797806
--- /dev/null
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelcond.sym
@@ -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
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelrwlock.sym b/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelrwlock.sym
new file mode 100644
index 000000000..e82c878d3
--- /dev/null
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelrwlock.sym
@@ -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)
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/unwindbuf.sym b/libpthread/nptl/sysdeps/unix/sysv/linux/unwindbuf.sym
new file mode 100644
index 000000000..8044b4078
--- /dev/null
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/unwindbuf.sym
@@ -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)