[review] nptl: Add default pthreadtypes-arch.h
diff mbox series

Message ID gerrit.1573136666000.Ie0cd586258a2650f715c1af0c9fe4e7063b0409a@gnutoolchain-gerrit.osci.io
State New
Headers show
Series
  • [review] nptl: Add default pthreadtypes-arch.h
Related show

Commit Message

Carlos O'Donell (Code Review) Nov. 7, 2019, 2:24 p.m. UTC
Change URL: https://gnutoolchain-gerrit.osci.io/r/c/glibc/+/520
......................................................................

nptl: Add default pthreadtypes-arch.h

This patch adds a default pthreadtypes-arch.h, the idea is to simpify
new ports inclusion and an override is required only if the architecture
adds some arch-specific extensions or requirement (such internal member
alignment).

The default values on the new generic header are based on current
architecture define value and they are not optimal compared to current
code requirements as below.

  - On 64 bits __SIZEOF_PTHREAD_BARRIER_T is defined as 32 while is
    sizeof (struct pthread_barrier) is 20 bytes.

  - On 32 bits __SIZEOF_PTHREAD_ATTR_T is defined as 36 while
    sizeof (struct pthread_attr) is 32.

The default values are not changed so the generic header could be
used by some architectures.

Checked with a build on affected abis.

Change-Id: Ie0cd586258a2650f715c1af0c9fe4e7063b0409a
---
D sysdeps/alpha/nptl/bits/pthreadtypes-arch.h
D sysdeps/arm/nptl/bits/pthreadtypes-arch.h
D sysdeps/csky/nptl/bits/pthreadtypes-arch.h
D sysdeps/ia64/nptl/bits/pthreadtypes-arch.h
D sysdeps/microblaze/nptl/bits/pthreadtypes-arch.h
A sysdeps/nptl/bits/pthreadtypes-arch.h
D sysdeps/powerpc/nptl/bits/pthreadtypes-arch.h
D sysdeps/s390/nptl/bits/pthreadtypes-arch.h
D sysdeps/sh/nptl/bits/pthreadtypes-arch.h
D sysdeps/sparc/nptl/bits/pthreadtypes-arch.h
10 files changed, 50 insertions(+), 348 deletions(-)

Comments

Carlos O'Donell (Code Review) Nov. 14, 2019, 2:37 p.m. UTC | #1
Florian Weimer has posted comments on this change.

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


Patch Set 2:

(2 comments)

| --- /dev/null
| +++ /COMMIT_MSG
| @@ -1,0 +2,20 @@ Parent:     575d1eb7 (nptl: Add struct_rwlock.h)
| +Author:     Adhemerval Zanella <adhemerval.zanella@linaro.org>
| +AuthorDate: 2017-11-14 19:10:13 -0200
| +Commit:     Adhemerval Zanella <adhemerval.zanella@linaro.org>
| +CommitDate: 2019-11-08 16:43:07 -0300
| +
| +nptl: Add default pthreadtypes-arch.h
| +
| +This patch adds a default pthreadtypes-arch.h, the idea is to simpify
| +new ports inclusion and an override is required only if the architecture
| +adds some arch-specific extensions or requirement (such internal member
| +alignment).

PS2, Line 12:

As already suggested elsewhere, this is a rather dodgy requirement
causing ABI problems, so we should not advertise it.

| +
| +The default values on the new generic header are based on current
| +architecture define value and they are not optimal compared to current
| +code requirements as below.
| +
| +  - On 64 bits __SIZEOF_PTHREAD_BARRIER_T is defined as 32 while is
| +    sizeof (struct pthread_barrier) is 20 bytes.
| +
| +  - On 32 bits __SIZEOF_PTHREAD_ATTR_T is defined as 36 while
| --- /dev/null
| +++ sysdeps/nptl/bits/pthreadtypes-arch.h
| @@ -1,0 +16,35 @@ /* Machine-specific pthread type layouts.  Generic version.
| +   You should have received a copy of the GNU Lesser General Public
| +   License along with the GNU C Library; if not, see
| +   <http://www.gnu.org/licenses/>.  */
| +
| +#ifndef _BITS_PTHREADTYPES_ARCH_H
| +#define _BITS_PTHREADTYPES_ARCH_H	1
| +
| +#include <bits/wordsize.h>
| +
| +#if __WORDSIZE == 64
| +# define __SIZEOF_PTHREAD_ATTR_T        56
| +# define __SIZEOF_PTHREAD_MUTEX_T       40
| +# define __SIZEOF_PTHREAD_MUTEXATTR_T    4
| +# define __SIZEOF_PTHREAD_RWLOCK_T      56
| +# define __SIZEOF_PTHREAD_RWLOCKATTR_T   8
| +# define __SIZEOF_PTHREAD_BARRIER_T     32
| +# define __SIZEOF_PTHREAD_BARRIERATTR_T  4
| +# define __SIZEOF_PTHREAD_COND_T        48
| +# define __SIZEOF_PTHREAD_CONDATTR_T     4
| +#else
| +# define __SIZEOF_PTHREAD_ATTR_T        36
| +# define __SIZEOF_PTHREAD_MUTEX_T       24
| +# define __SIZEOF_PTHREAD_MUTEXATTR_T    4
| +# define __SIZEOF_PTHREAD_RWLOCK_T      32
| +# define __SIZEOF_PTHREAD_RWLOCKATTR_T   8
| +# define __SIZEOF_PTHREAD_BARRIER_T     20
| +# define __SIZEOF_PTHREAD_BARRIERATTR_T  4
| +# define __SIZEOF_PTHREAD_COND_T        48
| +# define __SIZEOF_PTHREAD_CONDATTR_T     4
| +#endif

PS2, Line 45:

You coud factor out the commonalities (4 byte attributes, cond_t).

| +
| +#define __LOCK_ALIGNMENT
| +#define __ONCE_ALIGNMENT
| +
| +#endif	/* bits/pthreadtypes.h */
Carlos O'Donell (Code Review) Nov. 20, 2019, 2:49 p.m. UTC | #2
Adhemerval Zanella has posted comments on this change.

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


Patch Set 2:

(2 comments)

| --- /dev/null
| +++ /COMMIT_MSG
| @@ -1,0 +2,20 @@ Parent:     575d1eb7 (nptl: Add struct_rwlock.h)
| +Author:     Adhemerval Zanella <adhemerval.zanella@linaro.org>
| +AuthorDate: 2017-11-14 19:10:13 -0200
| +Commit:     Adhemerval Zanella <adhemerval.zanella@linaro.org>
| +CommitDate: 2019-11-08 16:43:07 -0300
| +
| +nptl: Add default pthreadtypes-arch.h
| +
| +This patch adds a default pthreadtypes-arch.h, the idea is to simpify
| +new ports inclusion and an override is required only if the architecture
| +adds some arch-specific extensions or requirement (such internal member
| +alignment).

PS2, Line 12:

Ack

| +
| +The default values on the new generic header are based on current
| +architecture define value and they are not optimal compared to current
| +code requirements as below.
| +
| +  - On 64 bits __SIZEOF_PTHREAD_BARRIER_T is defined as 32 while is
| +    sizeof (struct pthread_barrier) is 20 bytes.
| +
| +  - On 32 bits __SIZEOF_PTHREAD_ATTR_T is defined as 36 while
| --- /dev/null
| +++ sysdeps/nptl/bits/pthreadtypes-arch.h
| @@ -1,0 +16,35 @@ /* Machine-specific pthread type layouts.  Generic version.
| +   You should have received a copy of the GNU Lesser General Public
| +   License along with the GNU C Library; if not, see
| +   <http://www.gnu.org/licenses/>.  */
| +
| +#ifndef _BITS_PTHREADTYPES_ARCH_H
| +#define _BITS_PTHREADTYPES_ARCH_H	1
| +
| +#include <bits/wordsize.h>
| +
| +#if __WORDSIZE == 64
| +# define __SIZEOF_PTHREAD_ATTR_T        56
| +# define __SIZEOF_PTHREAD_MUTEX_T       40
| +# define __SIZEOF_PTHREAD_MUTEXATTR_T    4
| +# define __SIZEOF_PTHREAD_RWLOCK_T      56
| +# define __SIZEOF_PTHREAD_RWLOCKATTR_T   8
| +# define __SIZEOF_PTHREAD_BARRIER_T     32
| +# define __SIZEOF_PTHREAD_BARRIERATTR_T  4
| +# define __SIZEOF_PTHREAD_COND_T        48
| +# define __SIZEOF_PTHREAD_CONDATTR_T     4
| +#else
| +# define __SIZEOF_PTHREAD_ATTR_T        36
| +# define __SIZEOF_PTHREAD_MUTEX_T       24
| +# define __SIZEOF_PTHREAD_MUTEXATTR_T    4
| +# define __SIZEOF_PTHREAD_RWLOCK_T      32
| +# define __SIZEOF_PTHREAD_RWLOCKATTR_T   8
| +# define __SIZEOF_PTHREAD_BARRIER_T     20
| +# define __SIZEOF_PTHREAD_BARRIERATTR_T  4
| +# define __SIZEOF_PTHREAD_COND_T        48
| +# define __SIZEOF_PTHREAD_CONDATTR_T     4
| +#endif

PS2, Line 45:

Ack

| +
| +#define __LOCK_ALIGNMENT
| +#define __ONCE_ALIGNMENT
| +
| +#endif	/* bits/pthreadtypes.h */
Carlos O'Donell (Code Review) Nov. 22, 2019, 11:51 a.m. UTC | #3
Florian Weimer has posted comments on this change.

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


Patch Set 3:

(1 comment)

| --- /dev/null
| +++ sysdeps/nptl/bits/pthreadtypes-arch.h
| @@ -1,0 +27,19 @@ # define __SIZEOF_PTHREAD_ATTR_T        56
| +# define __SIZEOF_PTHREAD_MUTEX_T       40
| +# define __SIZEOF_PTHREAD_RWLOCK_T      56
| +# define __SIZEOF_PTHREAD_BARRIER_T     32
| +# define __SIZEOF_PTHREAD_COND_T        48
| +#else
| +# define __SIZEOF_PTHREAD_ATTR_T        36
| +# define __SIZEOF_PTHREAD_MUTEX_T       24
| +# define __SIZEOF_PTHREAD_RWLOCK_T      32
| +# define __SIZEOF_PTHREAD_BARRIER_T     20
| +# define __SIZEOF_PTHREAD_COND_T        48

PS3, Line 36:

I think this could also be moved out of the conditional.

| +#endif
| +#define __SIZEOF_PTHREAD_MUTEXATTR_T     4
| +#define __SIZEOF_PTHREAD_RWLOCKATTR_T    8
| +#define __SIZEOF_PTHREAD_BARRIERATTR_T   4
| +#define __SIZEOF_PTHREAD_CONDATTR_T      4
| +
| +#define __LOCK_ALIGNMENT
| +#define __ONCE_ALIGNMENT
| +
Carlos O'Donell (Code Review) Nov. 22, 2019, 5:53 p.m. UTC | #4
Adhemerval Zanella has posted comments on this change.

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


Patch Set 3:

(1 comment)

| --- /dev/null
| +++ sysdeps/nptl/bits/pthreadtypes-arch.h
| @@ -1,0 +27,19 @@ # define __SIZEOF_PTHREAD_ATTR_T        56
| +# define __SIZEOF_PTHREAD_MUTEX_T       40
| +# define __SIZEOF_PTHREAD_RWLOCK_T      56
| +# define __SIZEOF_PTHREAD_BARRIER_T     32
| +# define __SIZEOF_PTHREAD_COND_T        48
| +#else
| +# define __SIZEOF_PTHREAD_ATTR_T        36
| +# define __SIZEOF_PTHREAD_MUTEX_T       24
| +# define __SIZEOF_PTHREAD_RWLOCK_T      32
| +# define __SIZEOF_PTHREAD_BARRIER_T     20
| +# define __SIZEOF_PTHREAD_COND_T        48

PS3, Line 36:

Ack

| +#endif
| +#define __SIZEOF_PTHREAD_MUTEXATTR_T     4
| +#define __SIZEOF_PTHREAD_RWLOCKATTR_T    8
| +#define __SIZEOF_PTHREAD_BARRIERATTR_T   4
| +#define __SIZEOF_PTHREAD_CONDATTR_T      4
| +
| +#define __LOCK_ALIGNMENT
| +#define __ONCE_ALIGNMENT
| +
Carlos O'Donell (Code Review) Nov. 22, 2019, 7:22 p.m. UTC | #5
Florian Weimer has posted comments on this change.

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


Patch Set 4: Code-Review+2

(1 comment)

Thanks!

| --- /dev/null
| +++ sysdeps/nptl/bits/pthreadtypes-arch.h
| @@ -1,0 +27,19 @@ # define __SIZEOF_PTHREAD_ATTR_T        56
| +# define __SIZEOF_PTHREAD_MUTEX_T       40
| +# define __SIZEOF_PTHREAD_RWLOCK_T      56
| +# define __SIZEOF_PTHREAD_BARRIER_T     32
| +# define __SIZEOF_PTHREAD_COND_T        48
| +#else
| +# define __SIZEOF_PTHREAD_ATTR_T        36
| +# define __SIZEOF_PTHREAD_MUTEX_T       24
| +# define __SIZEOF_PTHREAD_RWLOCK_T      32
| +# define __SIZEOF_PTHREAD_BARRIER_T     20
| +# define __SIZEOF_PTHREAD_COND_T        48

PS3, Line 36:

Done

| +#endif
| +#define __SIZEOF_PTHREAD_MUTEXATTR_T     4
| +#define __SIZEOF_PTHREAD_RWLOCKATTR_T    8
| +#define __SIZEOF_PTHREAD_BARRIERATTR_T   4
| +#define __SIZEOF_PTHREAD_CONDATTR_T      4
| +
| +#define __LOCK_ALIGNMENT
| +#define __ONCE_ALIGNMENT
| +

Patch
diff mbox series

diff --git a/sysdeps/alpha/nptl/bits/pthreadtypes-arch.h b/sysdeps/alpha/nptl/bits/pthreadtypes-arch.h
deleted file mode 100644
index 09692ab..0000000
--- a/sysdeps/alpha/nptl/bits/pthreadtypes-arch.h
+++ /dev/null
@@ -1,35 +0,0 @@ 
-/* Machine-specific pthread type layouts.  Alpha version.
-   Copyright (C) 2003-2019 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <https://www.gnu.org/licenses/>.  */
-
-#ifndef _BITS_PTHREADTYPES_ARCH_H
-#define _BITS_PTHREADTYPES_ARCH_H	1
-
-#define __SIZEOF_PTHREAD_ATTR_T		56
-#define __SIZEOF_PTHREAD_MUTEX_T	40
-#define __SIZEOF_PTHREAD_MUTEXATTR_T	4
-#define __SIZEOF_PTHREAD_COND_T		48
-#define __SIZEOF_PTHREAD_CONDATTR_T	4
-#define __SIZEOF_PTHREAD_RWLOCK_T	56
-#define __SIZEOF_PTHREAD_RWLOCKATTR_T	8
-#define __SIZEOF_PTHREAD_BARRIER_T	32
-#define __SIZEOF_PTHREAD_BARRIERATTR_T	4
-
-#define __LOCK_ALIGNMENT
-#define __ONCE_ALIGNMENT
-
-#endif	/* bits/pthreadtypes.h */
diff --git a/sysdeps/arm/nptl/bits/pthreadtypes-arch.h b/sysdeps/arm/nptl/bits/pthreadtypes-arch.h
deleted file mode 100644
index 339956c..0000000
--- a/sysdeps/arm/nptl/bits/pthreadtypes-arch.h
+++ /dev/null
@@ -1,36 +0,0 @@ 
-/* Copyright (C) 2002-2019 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <https://www.gnu.org/licenses/>.  */
-
-#ifndef _BITS_PTHREADTYPES_ARCH_H
-#define _BITS_PTHREADTYPES_ARCH_H	1
-
-#include <bits/endian.h>
-
-#define __SIZEOF_PTHREAD_ATTR_T 36
-#define __SIZEOF_PTHREAD_MUTEX_T 24
-#define __SIZEOF_PTHREAD_MUTEXATTR_T 4
-#define __SIZEOF_PTHREAD_COND_T 48
-#define __SIZEOF_PTHREAD_CONDATTR_T 4
-#define __SIZEOF_PTHREAD_RWLOCK_T 32
-#define __SIZEOF_PTHREAD_RWLOCKATTR_T 8
-#define __SIZEOF_PTHREAD_BARRIER_T 20
-#define __SIZEOF_PTHREAD_BARRIERATTR_T 4
-
-#define __LOCK_ALIGNMENT
-#define __ONCE_ALIGNMENT
-
-#endif	/* bits/pthreadtypes.h */
diff --git a/sysdeps/csky/nptl/bits/pthreadtypes-arch.h b/sysdeps/csky/nptl/bits/pthreadtypes-arch.h
deleted file mode 100644
index 4bcc8d7..0000000
--- a/sysdeps/csky/nptl/bits/pthreadtypes-arch.h
+++ /dev/null
@@ -1,37 +0,0 @@ 
-/* Machine-specific pthread type layouts.  C-SKY version.
-   Copyright (C) 2018-2019 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <https://www.gnu.org/licenses/>.  */
-
-#ifndef _BITS_PTHREADTYPES_ARCH_H
-#define _BITS_PTHREADTYPES_ARCH_H	1
-
-#include <bits/endian.h>
-
-#define __SIZEOF_PTHREAD_ATTR_T			36
-#define __SIZEOF_PTHREAD_MUTEX_T		24
-#define __SIZEOF_PTHREAD_MUTEXATTR_T		4
-#define __SIZEOF_PTHREAD_COND_T			48
-#define __SIZEOF_PTHREAD_CONDATTR_T		4
-#define __SIZEOF_PTHREAD_RWLOCK_T		32
-#define __SIZEOF_PTHREAD_RWLOCKATTR_T		8
-#define __SIZEOF_PTHREAD_BARRIER_T		20
-#define __SIZEOF_PTHREAD_BARRIERATTR_T		4
-
-#define __LOCK_ALIGNMENT
-#define __ONCE_ALIGNMENT
-
-#endif /* bits/pthreadtypes.h */
diff --git a/sysdeps/ia64/nptl/bits/pthreadtypes-arch.h b/sysdeps/ia64/nptl/bits/pthreadtypes-arch.h
deleted file mode 100644
index e3b8175..0000000
--- a/sysdeps/ia64/nptl/bits/pthreadtypes-arch.h
+++ /dev/null
@@ -1,35 +0,0 @@ 
-/* Copyright (C) 2003-2019 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <https://www.gnu.org/licenses/>.  */
-
-#ifndef _BITS_PTHREADTYPES_ARCH_H
-#define _BITS_PTHREADTYPES_ARCH_H	1
-
-#define __SIZEOF_PTHREAD_ATTR_T 56
-#define __SIZEOF_PTHREAD_MUTEX_T 40
-#define __SIZEOF_PTHREAD_MUTEXATTR_T 4
-#define __SIZEOF_PTHREAD_COND_T 48
-#define __SIZEOF_PTHREAD_CONDATTR_T 4
-#define __SIZEOF_PTHREAD_RWLOCK_T 56
-#define __SIZEOF_PTHREAD_RWLOCKATTR_T 8
-#define __SIZEOF_PTHREAD_BARRIER_T 32
-#define __SIZEOF_PTHREAD_BARRIERATTR_T 4
-
-#define __LOCK_ALIGNMENT
-#define __ONCE_ALIGNMENT
-
-#endif	/* bits/pthreadtypes.h */
diff --git a/sysdeps/microblaze/nptl/bits/pthreadtypes-arch.h b/sysdeps/microblaze/nptl/bits/pthreadtypes-arch.h
deleted file mode 100644
index ed2852a..0000000
--- a/sysdeps/microblaze/nptl/bits/pthreadtypes-arch.h
+++ /dev/null
@@ -1,37 +0,0 @@ 
-/* Copyright (C) 2002-2019 Free Software Foundation, Inc.
-
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <https://www.gnu.org/licenses/>.  */
-
-#ifndef _BITS_PTHREADTYPES_ARCH_H
-# define _BITS_PTHREADTYPES_ARCH_H	1
-
-# include <bits/endian.h>
-
-# define __SIZEOF_PTHREAD_ATTR_T         36
-# define __SIZEOF_PTHREAD_MUTEX_T        24
-# define __SIZEOF_PTHREAD_MUTEXATTR_T     4
-# define __SIZEOF_PTHREAD_COND_T         48
-# define __SIZEOF_PTHREAD_CONDATTR_T      4
-# define __SIZEOF_PTHREAD_RWLOCK_T       32
-# define __SIZEOF_PTHREAD_RWLOCKATTR_T    8
-# define __SIZEOF_PTHREAD_BARRIER_T      20
-# define __SIZEOF_PTHREAD_BARRIERATTR_T   4
-
-#define __LOCK_ALIGNMENT
-#define __ONCE_ALIGNMENT
-
-#endif	/* bits/pthreadtypes.h.  */
diff --git a/sysdeps/nptl/bits/pthreadtypes-arch.h b/sysdeps/nptl/bits/pthreadtypes-arch.h
new file mode 100644
index 0000000..bb1c2cb
--- /dev/null
+++ b/sysdeps/nptl/bits/pthreadtypes-arch.h
@@ -0,0 +1,50 @@ 
+/* Machine-specific pthread type layouts.  Generic version.
+   Copyright (C) 2019 Free Software Foundation, Inc.
+
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _BITS_PTHREADTYPES_ARCH_H
+#define _BITS_PTHREADTYPES_ARCH_H	1
+
+#include <bits/wordsize.h>
+
+#if __WORDSIZE == 64
+# define __SIZEOF_PTHREAD_ATTR_T        56
+# define __SIZEOF_PTHREAD_MUTEX_T       40
+# define __SIZEOF_PTHREAD_MUTEXATTR_T    4
+# define __SIZEOF_PTHREAD_RWLOCK_T      56
+# define __SIZEOF_PTHREAD_RWLOCKATTR_T   8
+# define __SIZEOF_PTHREAD_BARRIER_T     32
+# define __SIZEOF_PTHREAD_BARRIERATTR_T  4
+# define __SIZEOF_PTHREAD_COND_T        48
+# define __SIZEOF_PTHREAD_CONDATTR_T     4
+#else
+# define __SIZEOF_PTHREAD_ATTR_T        36
+# define __SIZEOF_PTHREAD_MUTEX_T       24
+# define __SIZEOF_PTHREAD_MUTEXATTR_T    4
+# define __SIZEOF_PTHREAD_RWLOCK_T      32
+# define __SIZEOF_PTHREAD_RWLOCKATTR_T   8
+# define __SIZEOF_PTHREAD_BARRIER_T     20
+# define __SIZEOF_PTHREAD_BARRIERATTR_T  4
+# define __SIZEOF_PTHREAD_COND_T        48
+# define __SIZEOF_PTHREAD_CONDATTR_T     4
+#endif
+
+#define __LOCK_ALIGNMENT
+#define __ONCE_ALIGNMENT
+
+#endif	/* bits/pthreadtypes.h */
diff --git a/sysdeps/powerpc/nptl/bits/pthreadtypes-arch.h b/sysdeps/powerpc/nptl/bits/pthreadtypes-arch.h
deleted file mode 100644
index eff60d6..0000000
--- a/sysdeps/powerpc/nptl/bits/pthreadtypes-arch.h
+++ /dev/null
@@ -1,44 +0,0 @@ 
-/* Machine-specific pthread type layouts.  PowerPC version.
-   Copyright (C) 2003-2019 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <https://www.gnu.org/licenses/>.  */
-
-#ifndef _BITS_PTHREADTYPES_ARCH_H
-#define _BITS_PTHREADTYPES_ARCH_H	1
-
-#include <bits/wordsize.h>
-
-#if __WORDSIZE == 64
-# define __SIZEOF_PTHREAD_MUTEX_T 40
-# define __SIZEOF_PTHREAD_ATTR_T 56
-# define __SIZEOF_PTHREAD_RWLOCK_T 56
-# define __SIZEOF_PTHREAD_BARRIER_T 32
-#else
-# define __SIZEOF_PTHREAD_MUTEX_T 24
-# define __SIZEOF_PTHREAD_ATTR_T 36
-# define __SIZEOF_PTHREAD_RWLOCK_T 32
-# define __SIZEOF_PTHREAD_BARRIER_T 20
-#endif
-#define __SIZEOF_PTHREAD_MUTEXATTR_T 4
-#define __SIZEOF_PTHREAD_COND_T 48
-#define __SIZEOF_PTHREAD_CONDATTR_T 4
-#define __SIZEOF_PTHREAD_RWLOCKATTR_T 8
-#define __SIZEOF_PTHREAD_BARRIERATTR_T 4
-
-#define __LOCK_ALIGNMENT
-#define __ONCE_ALIGNMENT
-
-#endif	/* bits/pthreadtypes.h */
diff --git a/sysdeps/s390/nptl/bits/pthreadtypes-arch.h b/sysdeps/s390/nptl/bits/pthreadtypes-arch.h
deleted file mode 100644
index 99f27d3..0000000
--- a/sysdeps/s390/nptl/bits/pthreadtypes-arch.h
+++ /dev/null
@@ -1,43 +0,0 @@ 
-/* Copyright (C) 2003-2019 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <https://www.gnu.org/licenses/>.  */
-
-#ifndef _BITS_PTHREADTYPES_ARCH_H
-#define _BITS_PTHREADTYPES_ARCH_H	1
-
-#include <bits/wordsize.h>
-
-#if __WORDSIZE == 64
-# define __SIZEOF_PTHREAD_ATTR_T 56
-# define __SIZEOF_PTHREAD_MUTEX_T 40
-# define __SIZEOF_PTHREAD_RWLOCK_T 56
-# define __SIZEOF_PTHREAD_BARRIER_T 32
-#else
-# define __SIZEOF_PTHREAD_ATTR_T 36
-# define __SIZEOF_PTHREAD_MUTEX_T 24
-# define __SIZEOF_PTHREAD_RWLOCK_T 32
-# define __SIZEOF_PTHREAD_BARRIER_T 20
-#endif
-#define __SIZEOF_PTHREAD_MUTEXATTR_T 4
-#define __SIZEOF_PTHREAD_CONDATTR_T 4
-#define __SIZEOF_PTHREAD_COND_T 48
-#define __SIZEOF_PTHREAD_RWLOCKATTR_T 8
-#define __SIZEOF_PTHREAD_BARRIERATTR_T 4
-
-#define __LOCK_ALIGNMENT
-#define __ONCE_ALIGNMENT
-
-#endif	/* bits/pthreadtypes.h */
diff --git a/sysdeps/sh/nptl/bits/pthreadtypes-arch.h b/sysdeps/sh/nptl/bits/pthreadtypes-arch.h
deleted file mode 100644
index dd70a5d..0000000
--- a/sysdeps/sh/nptl/bits/pthreadtypes-arch.h
+++ /dev/null
@@ -1,36 +0,0 @@ 
-/* Copyright (C) 2002-2019 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <https://www.gnu.org/licenses/>.  */
-
-#ifndef _BITS_PTHREADTYPES_ARCH_H
-#define _BITS_PTHREADTYPES_ARCH_H	1
-
-#include <bits/endian.h>
-
-#define __SIZEOF_PTHREAD_ATTR_T 36
-#define __SIZEOF_PTHREAD_MUTEX_T 24
-#define __SIZEOF_PTHREAD_MUTEXATTR_T 4
-#define __SIZEOF_PTHREAD_COND_T 48
-#define __SIZEOF_PTHREAD_CONDATTR_T 4
-#define __SIZEOF_PTHREAD_RWLOCK_T 32
-#define __SIZEOF_PTHREAD_RWLOCKATTR_T 8
-#define __SIZEOF_PTHREAD_BARRIER_T 20
-#define __SIZEOF_PTHREAD_BARRIERATTR_T 4
-
-#define __LOCK_ALIGNMENT
-#define __ONCE_ALIGNMENT
-
-#endif	/* bits/pthreadtypes.h */
diff --git a/sysdeps/sparc/nptl/bits/pthreadtypes-arch.h b/sysdeps/sparc/nptl/bits/pthreadtypes-arch.h
deleted file mode 100644
index 8ea295d..0000000
--- a/sysdeps/sparc/nptl/bits/pthreadtypes-arch.h
+++ /dev/null
@@ -1,45 +0,0 @@ 
-/* Machine-specific pthread type layouts.  SPARC version.
-   Copyright (C) 2003-2019 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <https://www.gnu.org/licenses/>.  */
-
-#ifndef _BITS_PTHREADTYPES_ARCH_H
-#define _BITS_PTHREADTYPES_ARCH_H	1
-
-#include <bits/wordsize.h>
-
-#if __WORDSIZE == 64
-# define __SIZEOF_PTHREAD_ATTR_T 56
-# define __SIZEOF_PTHREAD_MUTEX_T 40
-# define __SIZEOF_PTHREAD_CONDATTR_T 4
-# define __SIZEOF_PTHREAD_RWLOCK_T 56
-# define __SIZEOF_PTHREAD_BARRIER_T 32
-#else
-# define __SIZEOF_PTHREAD_ATTR_T 36
-# define __SIZEOF_PTHREAD_MUTEX_T 24
-# define __SIZEOF_PTHREAD_CONDATTR_T 4
-# define __SIZEOF_PTHREAD_RWLOCK_T 32
-# define __SIZEOF_PTHREAD_BARRIER_T 20
-#endif
-#define __SIZEOF_PTHREAD_MUTEXATTR_T 4
-#define __SIZEOF_PTHREAD_COND_T 48
-#define __SIZEOF_PTHREAD_RWLOCKATTR_T 8
-#define __SIZEOF_PTHREAD_BARRIERATTR_T 4
-
-#define __LOCK_ALIGNMENT
-#define __ONCE_ALIGNMENT
-
-#endif	/* bits/pthreadtypes.h */