glibc/sysdeps/unix/sysv/linux/sparc
Adhemerval Zanella ffd178c651 sysv: linux: Add 64-bit time_t variant for shmctl
To provide a y2038 safe interface a new symbol __shmctl64 is added
and __shmctl is change to call it instead (it adds some extra buffer
copying for the 32 bit time_t implementation).

Two new structures are added:

  1. kernel_shmid64_ds: used internally only on 32-bit architectures
     to issue the syscall.  A handful of architectures (hppa, i386,
     mips, powerpc32, and sparc32) require specific implementations
     due to their kernel ABI.

  2. shmid_ds64: this is only for __TIMESIZE != 64 to use along with
     the 64-bit shmctl.  It is different than the kernel struct because
     the exported 64-bit time_t might require different alignment
     depending on the architecture ABI.

So the resulting implementation does:

  1. For 64-bit architectures it assumes shmid_ds already contains
     64-bit time_t fields and will result in just the __shmctl symbol
     using the __shmctl64 code.  The shmid_ds argument is passed as-is
     to the syscall.

  2. For 32-bit architectures with default 64-bit time_t (newer ABIs
     such riscv32 or arc), it will also result in only one exported
     symbol but with the required high/low time handling.

  3. Finally for 32-bit architecture with both 32-bit and 64-bit time_t
     support we follow the already set way to provide one symbol with
     64-bit time_t support and implement the 32-bit time_t support
     using of the 64-bit one.

     The default 32-bit symbol will allocate and copy the shmid_ds
     over multiple buffers, but this should be deprecated in favor
     of the __shmctl64 anyway.

Checked on i686-linux-gnu and x86_64-linux-gnu.  I also did some sniff
tests on powerpc, powerpc64, mips, mips64, armhf, sparcv9, and
sparc64.

Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Tested-by: Alistair Francis <alistair.francis@wdc.com>
Tested-by: Carlos O'Donell <carlos@redhat.com>
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2020-07-09 12:05:47 -03:00
..
bits sysv: linux: Add 64-bit time_t variant for shmctl 2020-07-09 12:05:47 -03:00
sparc32 sysv: linux: Add 64-bit time_t variant for msgctl 2020-07-09 12:05:40 -03:00
sparc64 string: Add strerrorname_np and strerrordesc_np 2020-07-07 15:02:57 -03:00
sys Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
a.out.h
aio_cancel.c Move remaining SPARC code out of nptl/. 2014-06-20 17:13:47 -07:00
configure Move architecture cases out of sysdeps/unix/sysv/linux/configure.ac. 2014-06-24 20:53:03 +00:00
configure.ac Move architecture cases out of sysdeps/unix/sysv/linux/configure.ac. 2014-06-24 20:53:03 +00:00
dl-cache.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
errlist-compat.c signal: Move sys_errlist to a compat symbol 2020-07-07 14:10:58 -03:00
getrlimit64.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
getshmlba.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
getsysstats.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
Implies NPTL is no longer an add-on! 2014-07-07 09:29:06 -07:00
kernel_sigaction.h m68k: Fix sigaction kernel definition (BZ #23960) 2018-12-18 16:45:10 -02:00
kernel_termios.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
kernel-features.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
ldd-rewrite.sed
Makefile sparc: Move sigreturn stub to assembly 2020-03-06 13:17:20 -03:00
profil-counter.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
readelflib.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
rt-sysdep.c
struct_kernel_shmid64_ds.h sysv: linux: Add 64-bit time_t variant for shmctl 2020-07-09 12:05:47 -03:00
sysdep.c
sysdep.h linux: Remove INTERNAL_SYSCALL_DECL 2020-02-14 21:12:45 -03:00
Versions signal: Move sys_errlist to a compat symbol 2020-07-07 14:10:58 -03:00