This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[review] nptl: Add tests for internal pthread_rwlock_t offsets


Change URL: https://gnutoolchain-gerrit.osci.io/r/c/glibc/+/516
......................................................................

nptl: Add tests for internal pthread_rwlock_t offsets

This patch new build tests to check for internal fields offsets for
internal pthread_rwlock_t definition.  Althoug the '__data.__flags'
field layout should be preserved due static initializators, the patch
also adds tests for the futexes that may be used in a shared memory
(although using different libc version in such scenario is not really
supported).

Checked with a build against all affected ABIs.

Change-Id: Iccc103d557de13d17e4a3f59a0cad2f4a640c148
---
M nptl/pthread_rwlock_init.c
M sysdeps/aarch64/nptl/pthread-offsets.h
M sysdeps/alpha/nptl/pthread-offsets.h
M sysdeps/arm/nptl/pthread-offsets.h
M sysdeps/csky/nptl/pthread-offsets.h
M sysdeps/hppa/nptl/pthread-offsets.h
M sysdeps/i386/nptl/pthread-offsets.h
M sysdeps/ia64/nptl/pthread-offsets.h
M sysdeps/m68k/nptl/pthread-offsets.h
M sysdeps/microblaze/nptl/pthread-offsets.h
M sysdeps/mips/nptl/pthread-offsets.h
M sysdeps/nios2/nptl/pthread-offsets.h
M sysdeps/powerpc/nptl/pthread-offsets.h
M sysdeps/riscv/nptl/pthread-offsets.h
M sysdeps/s390/nptl/pthread-offsets.h
M sysdeps/sh/nptl/pthread-offsets.h
M sysdeps/sparc/nptl/pthread-offsets.h
M sysdeps/x86_64/nptl/pthread-offsets.h
18 files changed, 216 insertions(+), 0 deletions(-)



diff --git a/nptl/pthread_rwlock_init.c b/nptl/pthread_rwlock_init.c
index 04f0d40..a485cb8 100644
--- a/nptl/pthread_rwlock_init.c
+++ b/nptl/pthread_rwlock_init.c
@@ -18,6 +18,7 @@
 
 #include "pthreadP.h"
 #include <string.h>
+#include <pthread-offsets.h>
 
 
 static const struct pthread_rwlockattr default_rwlockattr =
@@ -34,6 +35,21 @@
 {
   ASSERT_TYPE_SIZE (pthread_rwlock_t, __SIZEOF_PTHREAD_RWLOCK_T);
 
+  ASSERT_PTHREAD_INTERNAL_OFFSET (pthread_rwlock_t, __data.__readers,
+				  __PTHREAD_RWLOCK_READERS_OFFSET);
+  ASSERT_PTHREAD_INTERNAL_OFFSET (pthread_rwlock_t, __data.__writers,
+				  __PTHREAD_RWLOCK_WRITERS_OFFSET);
+  ASSERT_PTHREAD_INTERNAL_OFFSET (pthread_rwlock_t, __data.__wrphase_futex,
+				  __PTHREAD_RWLOCK_WRPHASE_FUTEX_OFFSET);
+  ASSERT_PTHREAD_INTERNAL_OFFSET (pthread_rwlock_t, __data.__writers_futex,
+				  __PTHREAD_RWLOCK_WRITERS_FUTEX_OFFSET);
+  ASSERT_PTHREAD_INTERNAL_OFFSET (pthread_rwlock_t, __data.__cur_writer,
+				  __PTHREAD_RWLOCK_CUR_WRITER_OFFSET);
+  ASSERT_PTHREAD_INTERNAL_OFFSET (pthread_rwlock_t, __data.__shared,
+				  __PTHREAD_RWLOCK_SHARED_OFFSET);
+  ASSERT_PTHREAD_INTERNAL_OFFSET (pthread_rwlock_t, __data.__flags,
+				  __PTHREAD_RWLOCK_FLAGS_OFFSET);
+
   const struct pthread_rwlockattr *iattr;
 
   iattr = ((const struct pthread_rwlockattr *) attr) ?: &default_rwlockattr;
diff --git a/sysdeps/aarch64/nptl/pthread-offsets.h b/sysdeps/aarch64/nptl/pthread-offsets.h
index 16c6b0d..679cec5 100644
--- a/sysdeps/aarch64/nptl/pthread-offsets.h
+++ b/sysdeps/aarch64/nptl/pthread-offsets.h
@@ -3,3 +3,11 @@
 #define __PTHREAD_MUTEX_SPINS_OFFSET    20
 #define __PTHREAD_MUTEX_ELISION_OFFSET  22
 #define __PTHREAD_MUTEX_LIST_OFFSET     24
+
+#define __PTHREAD_RWLOCK_READERS_OFFSET         0
+#define __PTHREAD_RWLOCK_WRITERS_OFFSET         4
+#define __PTHREAD_RWLOCK_WRPHASE_FUTEX_OFFSET   8
+#define __PTHREAD_RWLOCK_WRITERS_FUTEX_OFFSET  12
+#define __PTHREAD_RWLOCK_CUR_WRITER_OFFSET     24
+#define __PTHREAD_RWLOCK_SHARED_OFFSET         28
+#define __PTHREAD_RWLOCK_FLAGS_OFFSET          48
diff --git a/sysdeps/alpha/nptl/pthread-offsets.h b/sysdeps/alpha/nptl/pthread-offsets.h
index 16c6b0d..679cec5 100644
--- a/sysdeps/alpha/nptl/pthread-offsets.h
+++ b/sysdeps/alpha/nptl/pthread-offsets.h
@@ -3,3 +3,11 @@
 #define __PTHREAD_MUTEX_SPINS_OFFSET    20
 #define __PTHREAD_MUTEX_ELISION_OFFSET  22
 #define __PTHREAD_MUTEX_LIST_OFFSET     24
+
+#define __PTHREAD_RWLOCK_READERS_OFFSET         0
+#define __PTHREAD_RWLOCK_WRITERS_OFFSET         4
+#define __PTHREAD_RWLOCK_WRPHASE_FUTEX_OFFSET   8
+#define __PTHREAD_RWLOCK_WRITERS_FUTEX_OFFSET  12
+#define __PTHREAD_RWLOCK_CUR_WRITER_OFFSET     24
+#define __PTHREAD_RWLOCK_SHARED_OFFSET         28
+#define __PTHREAD_RWLOCK_FLAGS_OFFSET          48
diff --git a/sysdeps/arm/nptl/pthread-offsets.h b/sysdeps/arm/nptl/pthread-offsets.h
index 9617354..cc2a939 100644
--- a/sysdeps/arm/nptl/pthread-offsets.h
+++ b/sysdeps/arm/nptl/pthread-offsets.h
@@ -3,3 +3,16 @@
 #define __PTHREAD_MUTEX_SPINS_OFFSET    20
 #define __PTHREAD_MUTEX_ELISION_OFFSET  22
 #define __PTHREAD_MUTEX_LIST_OFFSET     20
+
+#define __PTHREAD_RWLOCK_READERS_OFFSET         0
+#define __PTHREAD_RWLOCK_WRITERS_OFFSET         4
+#define __PTHREAD_RWLOCK_WRPHASE_FUTEX_OFFSET   8
+#define __PTHREAD_RWLOCK_WRITERS_FUTEX_OFFSET  12
+#define __PTHREAD_RWLOCK_CUR_WRITER_OFFSET     28
+#if __BYTE_ORDER == __BIG_ENDIAN
+# define __PTHREAD_RWLOCK_SHARED_OFFSET        26
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET         27
+#else
+# define __PTHREAD_RWLOCK_SHARED_OFFSET        25
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET         24
+#endif
diff --git a/sysdeps/csky/nptl/pthread-offsets.h b/sysdeps/csky/nptl/pthread-offsets.h
index 9617354..a0eea7a 100644
--- a/sysdeps/csky/nptl/pthread-offsets.h
+++ b/sysdeps/csky/nptl/pthread-offsets.h
@@ -3,3 +3,11 @@
 #define __PTHREAD_MUTEX_SPINS_OFFSET    20
 #define __PTHREAD_MUTEX_ELISION_OFFSET  22
 #define __PTHREAD_MUTEX_LIST_OFFSET     20
+
+#define __PTHREAD_RWLOCK_READERS_OFFSET         0
+#define __PTHREAD_RWLOCK_WRITERS_OFFSET         4
+#define __PTHREAD_RWLOCK_WRPHASE_FUTEX_OFFSET   8
+#define __PTHREAD_RWLOCK_WRITERS_FUTEX_OFFSET  12
+#define __PTHREAD_RWLOCK_CUR_WRITER_OFFSET     28
+#define __PTHREAD_RWLOCK_SHARED_OFFSET         25
+#define __PTHREAD_RWLOCK_FLAGS_OFFSET          24
diff --git a/sysdeps/hppa/nptl/pthread-offsets.h b/sysdeps/hppa/nptl/pthread-offsets.h
index 8ae01b9..f5d5b9e 100644
--- a/sysdeps/hppa/nptl/pthread-offsets.h
+++ b/sysdeps/hppa/nptl/pthread-offsets.h
@@ -3,3 +3,11 @@
 #define __PTHREAD_MUTEX_SPINS_OFFSET    36
 #define __PTHREAD_MUTEX_ELISION_OFFSET  22
 #define __PTHREAD_MUTEX_LIST_OFFSET     36
+
+#define __PTHREAD_RWLOCK_READERS_OFFSET        16
+#define __PTHREAD_RWLOCK_WRITERS_OFFSET        20
+#define __PTHREAD_RWLOCK_WRPHASE_FUTEX_OFFSET  24
+#define __PTHREAD_RWLOCK_WRITERS_FUTEX_OFFSET  28
+#define __PTHREAD_RWLOCK_CUR_WRITER_OFFSET     40
+#define __PTHREAD_RWLOCK_SHARED_OFFSET         50
+#define __PTHREAD_RWLOCK_FLAGS_OFFSET          51
diff --git a/sysdeps/i386/nptl/pthread-offsets.h b/sysdeps/i386/nptl/pthread-offsets.h
index 9617354..a0eea7a 100644
--- a/sysdeps/i386/nptl/pthread-offsets.h
+++ b/sysdeps/i386/nptl/pthread-offsets.h
@@ -3,3 +3,11 @@
 #define __PTHREAD_MUTEX_SPINS_OFFSET    20
 #define __PTHREAD_MUTEX_ELISION_OFFSET  22
 #define __PTHREAD_MUTEX_LIST_OFFSET     20
+
+#define __PTHREAD_RWLOCK_READERS_OFFSET         0
+#define __PTHREAD_RWLOCK_WRITERS_OFFSET         4
+#define __PTHREAD_RWLOCK_WRPHASE_FUTEX_OFFSET   8
+#define __PTHREAD_RWLOCK_WRITERS_FUTEX_OFFSET  12
+#define __PTHREAD_RWLOCK_CUR_WRITER_OFFSET     28
+#define __PTHREAD_RWLOCK_SHARED_OFFSET         25
+#define __PTHREAD_RWLOCK_FLAGS_OFFSET          24
diff --git a/sysdeps/ia64/nptl/pthread-offsets.h b/sysdeps/ia64/nptl/pthread-offsets.h
index 16c6b0d..679cec5 100644
--- a/sysdeps/ia64/nptl/pthread-offsets.h
+++ b/sysdeps/ia64/nptl/pthread-offsets.h
@@ -3,3 +3,11 @@
 #define __PTHREAD_MUTEX_SPINS_OFFSET    20
 #define __PTHREAD_MUTEX_ELISION_OFFSET  22
 #define __PTHREAD_MUTEX_LIST_OFFSET     24
+
+#define __PTHREAD_RWLOCK_READERS_OFFSET         0
+#define __PTHREAD_RWLOCK_WRITERS_OFFSET         4
+#define __PTHREAD_RWLOCK_WRPHASE_FUTEX_OFFSET   8
+#define __PTHREAD_RWLOCK_WRITERS_FUTEX_OFFSET  12
+#define __PTHREAD_RWLOCK_CUR_WRITER_OFFSET     24
+#define __PTHREAD_RWLOCK_SHARED_OFFSET         28
+#define __PTHREAD_RWLOCK_FLAGS_OFFSET          48
diff --git a/sysdeps/m68k/nptl/pthread-offsets.h b/sysdeps/m68k/nptl/pthread-offsets.h
index 9617354..14d66ac 100644
--- a/sysdeps/m68k/nptl/pthread-offsets.h
+++ b/sysdeps/m68k/nptl/pthread-offsets.h
@@ -3,3 +3,11 @@
 #define __PTHREAD_MUTEX_SPINS_OFFSET    20
 #define __PTHREAD_MUTEX_ELISION_OFFSET  22
 #define __PTHREAD_MUTEX_LIST_OFFSET     20
+
+#define __PTHREAD_RWLOCK_READERS_OFFSET         0
+#define __PTHREAD_RWLOCK_WRITERS_OFFSET         4
+#define __PTHREAD_RWLOCK_WRPHASE_FUTEX_OFFSET   8
+#define __PTHREAD_RWLOCK_WRITERS_FUTEX_OFFSET  12
+#define __PTHREAD_RWLOCK_CUR_WRITER_OFFSET     28
+#define __PTHREAD_RWLOCK_SHARED_OFFSET         26
+#define __PTHREAD_RWLOCK_FLAGS_OFFSET          27
diff --git a/sysdeps/microblaze/nptl/pthread-offsets.h b/sysdeps/microblaze/nptl/pthread-offsets.h
index 9617354..cc2a939 100644
--- a/sysdeps/microblaze/nptl/pthread-offsets.h
+++ b/sysdeps/microblaze/nptl/pthread-offsets.h
@@ -3,3 +3,16 @@
 #define __PTHREAD_MUTEX_SPINS_OFFSET    20
 #define __PTHREAD_MUTEX_ELISION_OFFSET  22
 #define __PTHREAD_MUTEX_LIST_OFFSET     20
+
+#define __PTHREAD_RWLOCK_READERS_OFFSET         0
+#define __PTHREAD_RWLOCK_WRITERS_OFFSET         4
+#define __PTHREAD_RWLOCK_WRPHASE_FUTEX_OFFSET   8
+#define __PTHREAD_RWLOCK_WRITERS_FUTEX_OFFSET  12
+#define __PTHREAD_RWLOCK_CUR_WRITER_OFFSET     28
+#if __BYTE_ORDER == __BIG_ENDIAN
+# define __PTHREAD_RWLOCK_SHARED_OFFSET        26
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET         27
+#else
+# define __PTHREAD_RWLOCK_SHARED_OFFSET        25
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET         24
+#endif
diff --git a/sysdeps/mips/nptl/pthread-offsets.h b/sysdeps/mips/nptl/pthread-offsets.h
index 0ac3eda..cf96b88 100644
--- a/sysdeps/mips/nptl/pthread-offsets.h
+++ b/sysdeps/mips/nptl/pthread-offsets.h
@@ -11,3 +11,26 @@
 # define __PTHREAD_MUTEX_ELISION_OFFSET  22
 # define __PTHREAD_MUTEX_LIST_OFFSET     20
 #endif
+
+#if _MIPS_SIM == _ABI64
+# define __PTHREAD_RWLOCK_READERS_OFFSET         0
+# define __PTHREAD_RWLOCK_WRITERS_OFFSET         4
+# define __PTHREAD_RWLOCK_WRPHASE_FUTEX_OFFSET   8
+# define __PTHREAD_RWLOCK_WRITERS_FUTEX_OFFSET  12
+# define __PTHREAD_RWLOCK_CUR_WRITER_OFFSET     24
+# define __PTHREAD_RWLOCK_SHARED_OFFSET         28
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET          48
+#else
+# define __PTHREAD_RWLOCK_READERS_OFFSET         0
+# define __PTHREAD_RWLOCK_WRITERS_OFFSET         4
+# define __PTHREAD_RWLOCK_WRPHASE_FUTEX_OFFSET   8
+# define __PTHREAD_RWLOCK_WRITERS_FUTEX_OFFSET  12
+# define __PTHREAD_RWLOCK_CUR_WRITER_OFFSET     28
+# if __BYTE_ORDER == __BIG_ENDIAN
+#  define __PTHREAD_RWLOCK_SHARED_OFFSET        26
+#  define __PTHREAD_RWLOCK_FLAGS_OFFSET         27
+# else
+#  define __PTHREAD_RWLOCK_SHARED_OFFSET        25
+#  define __PTHREAD_RWLOCK_FLAGS_OFFSET         24
+# endif
+#endif
diff --git a/sysdeps/nios2/nptl/pthread-offsets.h b/sysdeps/nios2/nptl/pthread-offsets.h
index 9617354..a0eea7a 100644
--- a/sysdeps/nios2/nptl/pthread-offsets.h
+++ b/sysdeps/nios2/nptl/pthread-offsets.h
@@ -3,3 +3,11 @@
 #define __PTHREAD_MUTEX_SPINS_OFFSET    20
 #define __PTHREAD_MUTEX_ELISION_OFFSET  22
 #define __PTHREAD_MUTEX_LIST_OFFSET     20
+
+#define __PTHREAD_RWLOCK_READERS_OFFSET         0
+#define __PTHREAD_RWLOCK_WRITERS_OFFSET         4
+#define __PTHREAD_RWLOCK_WRPHASE_FUTEX_OFFSET   8
+#define __PTHREAD_RWLOCK_WRITERS_FUTEX_OFFSET  12
+#define __PTHREAD_RWLOCK_CUR_WRITER_OFFSET     28
+#define __PTHREAD_RWLOCK_SHARED_OFFSET         25
+#define __PTHREAD_RWLOCK_FLAGS_OFFSET          24
diff --git a/sysdeps/powerpc/nptl/pthread-offsets.h b/sysdeps/powerpc/nptl/pthread-offsets.h
index bdda1f1..a9ce40d 100644
--- a/sysdeps/powerpc/nptl/pthread-offsets.h
+++ b/sysdeps/powerpc/nptl/pthread-offsets.h
@@ -13,3 +13,21 @@
 # define __PTHREAD_MUTEX_ELISION_OFFSET  22
 # define __PTHREAD_MUTEX_LIST_OFFSET     20
 #endif
+
+#if __WORDSIZE == 64
+# define __PTHREAD_RWLOCK_READERS_OFFSET         0
+# define __PTHREAD_RWLOCK_WRITERS_OFFSET         4
+# define __PTHREAD_RWLOCK_WRPHASE_FUTEX_OFFSET   8
+# define __PTHREAD_RWLOCK_WRITERS_FUTEX_OFFSET  12
+# define __PTHREAD_RWLOCK_CUR_WRITER_OFFSET     24
+# define __PTHREAD_RWLOCK_SHARED_OFFSET         28
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET          48
+#else
+# define __PTHREAD_RWLOCK_READERS_OFFSET         0
+# define __PTHREAD_RWLOCK_WRITERS_OFFSET         4
+# define __PTHREAD_RWLOCK_WRPHASE_FUTEX_OFFSET   8
+# define __PTHREAD_RWLOCK_WRITERS_FUTEX_OFFSET  12
+# define __PTHREAD_RWLOCK_CUR_WRITER_OFFSET     28
+# define __PTHREAD_RWLOCK_SHARED_OFFSET         26
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET          27
+#endif
diff --git a/sysdeps/riscv/nptl/pthread-offsets.h b/sysdeps/riscv/nptl/pthread-offsets.h
index f164004..f93af00 100644
--- a/sysdeps/riscv/nptl/pthread-offsets.h
+++ b/sysdeps/riscv/nptl/pthread-offsets.h
@@ -22,3 +22,11 @@
 #define __PTHREAD_MUTEX_SPINS_OFFSET    20
 #define __PTHREAD_MUTEX_ELISION_OFFSET  22
 #define __PTHREAD_MUTEX_LIST_OFFSET     24
+
+#define __PTHREAD_RWLOCK_READERS_OFFSET         0
+#define __PTHREAD_RWLOCK_WRITERS_OFFSET         4
+#define __PTHREAD_RWLOCK_WRPHASE_FUTEX_OFFSET   8
+#define __PTHREAD_RWLOCK_WRITERS_FUTEX_OFFSET  12
+#define __PTHREAD_RWLOCK_CUR_WRITER_OFFSET     24
+#define __PTHREAD_RWLOCK_SHARED_OFFSET         28
+#define __PTHREAD_RWLOCK_FLAGS_OFFSET          48
diff --git a/sysdeps/s390/nptl/pthread-offsets.h b/sysdeps/s390/nptl/pthread-offsets.h
index bdda1f1..a9ce40d 100644
--- a/sysdeps/s390/nptl/pthread-offsets.h
+++ b/sysdeps/s390/nptl/pthread-offsets.h
@@ -13,3 +13,21 @@
 # define __PTHREAD_MUTEX_ELISION_OFFSET  22
 # define __PTHREAD_MUTEX_LIST_OFFSET     20
 #endif
+
+#if __WORDSIZE == 64
+# define __PTHREAD_RWLOCK_READERS_OFFSET         0
+# define __PTHREAD_RWLOCK_WRITERS_OFFSET         4
+# define __PTHREAD_RWLOCK_WRPHASE_FUTEX_OFFSET   8
+# define __PTHREAD_RWLOCK_WRITERS_FUTEX_OFFSET  12
+# define __PTHREAD_RWLOCK_CUR_WRITER_OFFSET     24
+# define __PTHREAD_RWLOCK_SHARED_OFFSET         28
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET          48
+#else
+# define __PTHREAD_RWLOCK_READERS_OFFSET         0
+# define __PTHREAD_RWLOCK_WRITERS_OFFSET         4
+# define __PTHREAD_RWLOCK_WRPHASE_FUTEX_OFFSET   8
+# define __PTHREAD_RWLOCK_WRITERS_FUTEX_OFFSET  12
+# define __PTHREAD_RWLOCK_CUR_WRITER_OFFSET     28
+# define __PTHREAD_RWLOCK_SHARED_OFFSET         26
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET          27
+#endif
diff --git a/sysdeps/sh/nptl/pthread-offsets.h b/sysdeps/sh/nptl/pthread-offsets.h
index 9617354..cc2a939 100644
--- a/sysdeps/sh/nptl/pthread-offsets.h
+++ b/sysdeps/sh/nptl/pthread-offsets.h
@@ -3,3 +3,16 @@
 #define __PTHREAD_MUTEX_SPINS_OFFSET    20
 #define __PTHREAD_MUTEX_ELISION_OFFSET  22
 #define __PTHREAD_MUTEX_LIST_OFFSET     20
+
+#define __PTHREAD_RWLOCK_READERS_OFFSET         0
+#define __PTHREAD_RWLOCK_WRITERS_OFFSET         4
+#define __PTHREAD_RWLOCK_WRPHASE_FUTEX_OFFSET   8
+#define __PTHREAD_RWLOCK_WRITERS_FUTEX_OFFSET  12
+#define __PTHREAD_RWLOCK_CUR_WRITER_OFFSET     28
+#if __BYTE_ORDER == __BIG_ENDIAN
+# define __PTHREAD_RWLOCK_SHARED_OFFSET        26
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET         27
+#else
+# define __PTHREAD_RWLOCK_SHARED_OFFSET        25
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET         24
+#endif
diff --git a/sysdeps/sparc/nptl/pthread-offsets.h b/sysdeps/sparc/nptl/pthread-offsets.h
index bdda1f1..a9ce40d 100644
--- a/sysdeps/sparc/nptl/pthread-offsets.h
+++ b/sysdeps/sparc/nptl/pthread-offsets.h
@@ -13,3 +13,21 @@
 # define __PTHREAD_MUTEX_ELISION_OFFSET  22
 # define __PTHREAD_MUTEX_LIST_OFFSET     20
 #endif
+
+#if __WORDSIZE == 64
+# define __PTHREAD_RWLOCK_READERS_OFFSET         0
+# define __PTHREAD_RWLOCK_WRITERS_OFFSET         4
+# define __PTHREAD_RWLOCK_WRPHASE_FUTEX_OFFSET   8
+# define __PTHREAD_RWLOCK_WRITERS_FUTEX_OFFSET  12
+# define __PTHREAD_RWLOCK_CUR_WRITER_OFFSET     24
+# define __PTHREAD_RWLOCK_SHARED_OFFSET         28
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET          48
+#else
+# define __PTHREAD_RWLOCK_READERS_OFFSET         0
+# define __PTHREAD_RWLOCK_WRITERS_OFFSET         4
+# define __PTHREAD_RWLOCK_WRPHASE_FUTEX_OFFSET   8
+# define __PTHREAD_RWLOCK_WRITERS_FUTEX_OFFSET  12
+# define __PTHREAD_RWLOCK_CUR_WRITER_OFFSET     28
+# define __PTHREAD_RWLOCK_SHARED_OFFSET         26
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET          27
+#endif
diff --git a/sysdeps/x86_64/nptl/pthread-offsets.h b/sysdeps/x86_64/nptl/pthread-offsets.h
index 16c6b0d..5c0cab0 100644
--- a/sysdeps/x86_64/nptl/pthread-offsets.h
+++ b/sysdeps/x86_64/nptl/pthread-offsets.h
@@ -3,3 +3,15 @@
 #define __PTHREAD_MUTEX_SPINS_OFFSET    20
 #define __PTHREAD_MUTEX_ELISION_OFFSET  22
 #define __PTHREAD_MUTEX_LIST_OFFSET     24
+
+#define __PTHREAD_RWLOCK_READERS_OFFSET         0
+#define __PTHREAD_RWLOCK_WRITERS_OFFSET         4
+#define __PTHREAD_RWLOCK_WRPHASE_FUTEX_OFFSET   8
+#define __PTHREAD_RWLOCK_WRITERS_FUTEX_OFFSET  12
+#define __PTHREAD_RWLOCK_CUR_WRITER_OFFSET     24
+#define __PTHREAD_RWLOCK_SHARED_OFFSET         28
+#ifdef  __ILP32__
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET         40
+#else
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET         48
+#endif

-- 
Gerrit-Project: glibc
Gerrit-Branch: master
Gerrit-Change-Id: Iccc103d557de13d17e4a3f59a0cad2f4a640c148
Gerrit-Change-Number: 516
Gerrit-PatchSet: 1
Gerrit-Owner: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Gerrit-MessageType: newchange


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]