From 48dbce60cfdd328b671aaa9ee0c54ded3246ece9 Mon Sep 17 00:00:00 2001 From: Adhemerval Zanella Date: Mon, 4 Nov 2019 13:36:05 +0000 Subject: 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 --- nptl/pthread_rwlock_init.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'nptl') diff --git a/nptl/pthread_rwlock_init.c b/nptl/pthread_rwlock_init.c index 04f0d40ed8..8813e32383 100644 --- a/nptl/pthread_rwlock_init.c +++ b/nptl/pthread_rwlock_init.c @@ -18,6 +18,7 @@ #include "pthreadP.h" #include +#include static const struct pthread_rwlockattr default_rwlockattr = @@ -34,6 +35,13 @@ __pthread_rwlock_init (pthread_rwlock_t *rwlock, { 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; -- cgit 1.4.1