#include "pthreadP.h"
#include <string.h>
+#include <pthread-offsets.h>
static const struct pthread_rwlockattr default_rwlockattr =
{
ASSERT_TYPE_SIZE (pthread_rwlock_t, __SIZEOF_PTHREAD_RWLOCK_T);
+ /* The __flags is the only field where its offset should be checked to
+ avoid ABI breakage with static initializers. */
+ ASSERT_PTHREAD_INTERNAL_OFFSET (pthread_rwlock_t, __data.__flags,
+ __PTHREAD_RWLOCK_FLAGS_OFFSET);
+ ASSERT_PTHREAD_INTERNAL_MEMBER_SIZE (pthread_rwlock_t, __data.__flags,
+ int);
+
const struct pthread_rwlockattr *iattr;
iattr = ((const struct pthread_rwlockattr *) attr) ?: &default_rwlockattr;
#define __PTHREAD_MUTEX_KIND_OFFSET 16
+
+#define __PTHREAD_RWLOCK_FLAGS_OFFSET 48
#define __PTHREAD_MUTEX_KIND_OFFSET 16
+
+#define __PTHREAD_RWLOCK_FLAGS_OFFSET 48
#define __PTHREAD_MUTEX_KIND_OFFSET 12
+
+#if __BYTE_ORDER == __BIG_ENDIAN
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET 27
+#else
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET 24
+#endif
#define __PTHREAD_MUTEX_KIND_OFFSET 12
+
+#define __PTHREAD_RWLOCK_FLAGS_OFFSET 24
#define __PTHREAD_MUTEX_KIND_OFFSET 12
+
+#define __PTHREAD_RWLOCK_FLAGS_OFFSET 51
#define __PTHREAD_MUTEX_KIND_OFFSET 12
+
+#define __PTHREAD_RWLOCK_FLAGS_OFFSET 24
#define __PTHREAD_MUTEX_KIND_OFFSET 16
+
+#define __PTHREAD_RWLOCK_FLAGS_OFFSET 48
#define __PTHREAD_MUTEX_KIND_OFFSET 12
+
+#define __PTHREAD_RWLOCK_FLAGS_OFFSET 27
#define __PTHREAD_MUTEX_KIND_OFFSET 12
+
+#if __BYTE_ORDER == __BIG_ENDIAN
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET 27
+#else
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET 24
+#endif
#else
# define __PTHREAD_MUTEX_KIND_OFFSET 12
#endif
+
+#if _MIPS_SIM == _ABI64
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET 48
+#else
+# if __BYTE_ORDER == __BIG_ENDIAN
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET 27
+# else
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET 24
+# endif
+#endif
#define __PTHREAD_MUTEX_KIND_OFFSET 12
+
+#define __PTHREAD_RWLOCK_FLAGS_OFFSET 24
#else
# define __PTHREAD_MUTEX_KIND_OFFSET 12
#endif
+
+#if __WORDSIZE == 64
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET 48
+#else
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET 27
+#endif
<https://www.gnu.org/licenses/>. */
#define __PTHREAD_MUTEX_KIND_OFFSET 16
+
+#define __PTHREAD_RWLOCK_FLAGS_OFFSET 48
#else
# define __PTHREAD_MUTEX_KIND_OFFSET 12
#endif
+
+#if __WORDSIZE == 64
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET 48
+#else
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET 27
+#endif
#define __PTHREAD_MUTEX_KIND_OFFSET 12
+
+#if __BYTE_ORDER == __BIG_ENDIAN
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET 27
+#else
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET 24
+#endif
#else
# define __PTHREAD_MUTEX_KIND_OFFSET 12
#endif
+
+#if __WORDSIZE == 64
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET 48
+#else
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET 27
+#endif
#define __PTHREAD_MUTEX_KIND_OFFSET 16
+
+#ifdef __ILP32__
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET 40
+#else
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET 48
+#endif