glibc/sysdeps/unix/sysv/linux/x86
Joseph Myers bcdb1bfa0c Use single bits/sem.h for all architectures.
The bits/sem.h headers for architectures using the Linux kernel vary
in a few ways:

* x32 uses __syscall_ulong_t instead of unsigned long int.

* The x86 header uses padding after time fields unconditionally
  (including for both x86_64 ABIs), not just for 32-bit time (unlike
  in msqid_ds where there is only padding for 32-bit time).  Because
  this padding is present for x32, and is __syscall_ulong_t there, it
  does have to be __syscall_ulong_t, not unsigned long int.

* The MIPS header never uses padding around time fields, even when
  32-bit (unlike in msqid_ds where it has endian-dependent padding for
  32-bit time).

* Some older 32-bit big-endian architectures have padding before
  rather than after time fields, although the preferred generic
  approach is padding after the time fields independent of endianness.

(There are also insubstantial differences such as use of unsigned int
for padding instead of unsigned long int, which makes no difference to
layout since the padding fields using unsigned int are only present on
32-bit architectures.)

For the first, __syscall_ulong_t can be used in the generic version as
it's the same as unsigned long int everywhere except x32.  For the
other differences, this patch adds macros __SEM_PAD_BEFORE_TIME and
__SEM_PAD_AFTER_TIME in a new bits/sem-pad.h header, so that header is
the only one needing to be provided on architectures with differences
in this area, and everything else can go in a single common bits/sem.h
header.

Tested for x86_64 and x86, and with build-many-glibcs.py.

	* sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Add
	bits/sem-pad.h.
	* sysdeps/unix/sysv/linux/bits/sem.h: Include <bits/sem-pad.h>
	instead of <bits/wordsize.h>.
	(__SEM_PAD_TIME): New macro, depending on [__SEM_PAD_BEFORE_TIME]
	and [__SEM_PAD_AFTER_TIME].
	(struct semid_ds): Define time fields using __SEM_PAD_TIME.  Use
	__syscall_ulong_t instead of unsigned long int.
	* sysdeps/unix/sysv/linux/bits/sem-pad.h: New file.
	* sysdeps/unix/sysv/linux/hppa/bits/sem-pad.h: Likewise.
	* sysdeps/unix/sysv/linux/mips/bits/sem-pad.h: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/bits/sem-pad.h: Likewise.
	* sysdeps/unix/sysv/linux/sparc/bits/sem-pad.h: Likewise.
	* sysdeps/unix/sysv/linux/x86/bits/sem-pad.h: Likewise.
	* sysdeps/unix/sysv/linux/hppa/bits/sem.h: Remove.
	* sysdeps/unix/sysv/linux/mips/bits/sem.h: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/bits/sem.h: Likewise.
	* sysdeps/unix/sysv/linux/sparc/bits/sem.h: Likewise.
	* sysdeps/unix/sysv/linux/x86/bits/sem.h: Likewise.
2018-10-15 19:28:04 +00:00
..
bits Use single bits/sem.h for all architectures. 2018-10-15 19:28:04 +00:00
include/asm x86/CET: Extend arch_prctl syscall for CET control 2018-07-24 12:23:17 -07:00
sys Unify more sys/procfs.h headers. 2018-09-25 16:49:25 +00:00
arch-pkey.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
cpu-features.c x86/CET: Extend arch_prctl syscall for CET control 2018-07-24 12:23:17 -07:00
dl-cet.h x86/CET: Extend arch_prctl syscall for CET control 2018-07-24 12:23:17 -07:00
dl-sysdep.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
elision-conf.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
elision-conf.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
elision-lock.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
elision-timed.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
elision-trylock.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
elision-unlock.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
force-elision.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
gettimeofday.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
hle.h x86: Use RTM intrinsics in pthread mutex lock elision 2018-10-02 07:51:57 -07:00
Implies Consolidate pthreadtype.h placementConsolidate pthreadtype.h placement 2017-04-10 17:33:10 -03:00
jmp_buf-ssp.sym x86: Make a space in jmpbuf for shadow stack pointer 2017-11-30 04:58:01 -08:00
libc-vdso.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
Makefile x86: Use RTM intrinsics in pthread mutex lock elision 2018-10-02 07:51:57 -07:00
pkey_get.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
pkey_set.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
pthread_mutex_cond_lock.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
pthread_mutex_lock.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
pthread_mutex_timedlock.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
pthread_mutex_trylock.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
setjmpP.h x86: Use pad in pthread_unwind_buf to preserve shadow stack register 2018-05-02 06:17:41 -07:00
sysconf.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
time.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-cet-property-1.c x86/CET: Fix property note parser [BZ #23467] 2018-07-30 16:15:38 -07:00
tst-cet-property-2.c x86/CET: Fix property note parser [BZ #23467] 2018-07-30 16:15:38 -07:00
tst-cet-property-dep-2.S x86/CET: Fix property note parser [BZ #23467] 2018-07-30 16:15:38 -07:00
tst-cet-setcontext-1.c x86/CET: Add a setcontext test for CET 2018-07-25 08:40:50 -07:00
tst-saved_mask-1.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00