public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [PATCH v9 0/2] Support semctl_syscall() for __TIMESIZE==64
@ 2020-06-02 20:41 Alistair Francis
  2020-06-02 20:41 ` [PATCH v9 1/2] sysv: linux: Define the __semid_ds32 struct Alistair Francis
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Alistair Francis @ 2020-06-02 20:41 UTC (permalink / raw)
  To: libc-alpha; +Cc: adhemerval.zanella, stepan, alistair23, Alistair Francis

This series supports the semctl calls on a system with __TIMESIZE==64
and __WORDSIZE==32 while not breaking current architectures. This is a
step towards full y2038 support, but does not get us there yet.

See: https://sourceware.org/pipermail/libc-alpha/2020-May/113774.html
for more details on what is still required.

This series adds a new __semid_ds32 that is passed to the kernel
(as part of a union) when running on 32-bit systems. If we are doing an
IPC_STAT/SEM_STAT command then the 32-bit sem_{c,o}time{_high} values
are combined to create a 64-bit value.

The semctl_syscall() function passes a union semun to the kernel. The
union includes struct semid_ds as a member. On 32-bit architectures the
Linux kernel provides a *_high version of the 32-bit sem_otime and
sem_ctime values. These can be combined to get a 64-bit version of the
time.

This patch adjusts the struct semid_ds to support the *_high versions
of sem_otime and sem_ctime. For 32-bit systems with a 64-bit time_t
this can be used to get a 64-bit time from the two 32-bit values.

This series was tested by running:
  ./scripts/build-many-glibcs.py ... compilers
  ./scripts/build-many-glibcs.py ... glibcs
on my x86_64 machine.

I also ran make check on RV32 and I only see a total of 9 test failures.

v9:
 - Don't use defined inside a #define
v8:
 - Revert back to v6-ish and only support __TIMESIZE==64
v7:
 - Re-write based on code from Adhemerval.
v6:
 - Update the 3rd patch to pass a temp buffer to the kernel
v5:
 - Address v4 review comments
 - Set the semid_ds struct from a temp struct
v4:
 - Remove the __IPC_TIME64 macro
    - It was only used once and doesn't work if __IPC_64 is 0 (which is
      usually is)
 - Address failures pointed out by Vineet Gupta

Alistair Francis (2):
  sysv: linux: Define the __semid_ds32 struct
  sysv: linux: Pass 64-bit version of semctl syscall

 .../unix/sysv/linux/hppa/struct__semid_ds32.h | 30 +++++++++++
 sysdeps/unix/sysv/linux/ipc_priv.h            |  7 +++
 .../unix/sysv/linux/mips/struct__semid_ds32.h | 28 +++++++++++
 .../sysv/linux/powerpc/struct__semid_ds32.h   | 30 +++++++++++
 sysdeps/unix/sysv/linux/semctl.c              | 50 +++++++++++++++++--
 .../sysv/linux/sparc/struct__semid_ds32.h     | 30 +++++++++++
 sysdeps/unix/sysv/linux/struct__semid_ds32.h  | 30 +++++++++++
 .../unix/sysv/linux/x86/struct__semid_ds32.h  | 30 +++++++++++
 8 files changed, 231 insertions(+), 4 deletions(-)
 create mode 100644 sysdeps/unix/sysv/linux/hppa/struct__semid_ds32.h
 create mode 100644 sysdeps/unix/sysv/linux/mips/struct__semid_ds32.h
 create mode 100644 sysdeps/unix/sysv/linux/powerpc/struct__semid_ds32.h
 create mode 100644 sysdeps/unix/sysv/linux/sparc/struct__semid_ds32.h
 create mode 100644 sysdeps/unix/sysv/linux/struct__semid_ds32.h
 create mode 100644 sysdeps/unix/sysv/linux/x86/struct__semid_ds32.h

-- 
2.26.2


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v9 1/2] sysv: linux: Define the __semid_ds32 struct
  2020-06-02 20:41 [PATCH v9 0/2] Support semctl_syscall() for __TIMESIZE==64 Alistair Francis
@ 2020-06-02 20:41 ` Alistair Francis
  2020-06-10 20:44   ` Alistair Francis
  2020-06-02 20:41 ` [PATCH v9 2/2] sysv: linux: Pass 64-bit version of semctl syscall Alistair Francis
  2020-06-29 20:51 ` [PATCH v9 0/2] Support semctl_syscall() for __TIMESIZE==64 Adhemerval Zanella
  2 siblings, 1 reply; 7+ messages in thread
From: Alistair Francis @ 2020-06-02 20:41 UTC (permalink / raw)
  To: libc-alpha; +Cc: adhemerval.zanella, stepan, alistair23, Alistair Francis

Define a struct for 32-bit systems for the semctl command.
---
 .../unix/sysv/linux/hppa/struct__semid_ds32.h | 30 +++++++++++++++++++
 .../unix/sysv/linux/mips/struct__semid_ds32.h | 28 +++++++++++++++++
 .../sysv/linux/powerpc/struct__semid_ds32.h   | 30 +++++++++++++++++++
 .../sysv/linux/sparc/struct__semid_ds32.h     | 30 +++++++++++++++++++
 sysdeps/unix/sysv/linux/struct__semid_ds32.h  | 30 +++++++++++++++++++
 .../unix/sysv/linux/x86/struct__semid_ds32.h  | 30 +++++++++++++++++++
 6 files changed, 178 insertions(+)
 create mode 100644 sysdeps/unix/sysv/linux/hppa/struct__semid_ds32.h
 create mode 100644 sysdeps/unix/sysv/linux/mips/struct__semid_ds32.h
 create mode 100644 sysdeps/unix/sysv/linux/powerpc/struct__semid_ds32.h
 create mode 100644 sysdeps/unix/sysv/linux/sparc/struct__semid_ds32.h
 create mode 100644 sysdeps/unix/sysv/linux/struct__semid_ds32.h
 create mode 100644 sysdeps/unix/sysv/linux/x86/struct__semid_ds32.h

diff --git a/sysdeps/unix/sysv/linux/hppa/struct__semid_ds32.h b/sysdeps/unix/sysv/linux/hppa/struct__semid_ds32.h
new file mode 100644
index 0000000000..7a6b803cee
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/hppa/struct__semid_ds32.h
@@ -0,0 +1,30 @@
+/* HPPA implementation of the semaphore struct __semid_ds32.
+   Copyright (C) 1995-2020 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/>.  */
+
+/* This is the "new" y2038 types defined after the 5.1 kernel. It allows
+   the kernel to use {o,c}time{_high} values to support a 64-bit time_t.  */
+struct __semid_ds32 {
+  struct ipc_perm sem_perm;              /* operation permission struct */
+  __syscall_ulong_t   sem_otime_high;    /* last semop() time high */
+  __syscall_ulong_t   sem_otime;         /* last semop() time */
+  __syscall_ulong_t   sem_ctime_high;    /* last time changed by semctl() high */
+  __syscall_ulong_t   sem_ctime;         /* last time changed by semctl() */
+  __syscall_ulong_t   sem_nsems;         /* number of semaphores in set */
+  __syscall_ulong_t   __glibc_reserved3;
+  __syscall_ulong_t   __glibc_reserved4;
+};
diff --git a/sysdeps/unix/sysv/linux/mips/struct__semid_ds32.h b/sysdeps/unix/sysv/linux/mips/struct__semid_ds32.h
new file mode 100644
index 0000000000..3a1d7c6885
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/struct__semid_ds32.h
@@ -0,0 +1,28 @@
+/* MIPS implementation of the semaphore struct __semid_ds32.
+   Copyright (C) 1995-2020 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/>.  */
+
+/* This is the "new" y2038 types defined after the 5.1 kernel. It allows
+   the kernel to use {o,c}time{_high} values to support a 64-bit time_t.  */
+struct __semid_ds32 {
+  struct ipc_perm sem_perm;              /* operation permission struct */
+  __syscall_ulong_t   sem_otime;         /* last semop time */
+  __syscall_ulong_t   sem_ctime;         /* last change time */
+  __syscall_ulong_t   sem_nsems;         /* number of semaphores in set */
+  __syscall_ulong_t   sem_otime_high;
+  __syscall_ulong_t   sem_ctime_high;
+};
diff --git a/sysdeps/unix/sysv/linux/powerpc/struct__semid_ds32.h b/sysdeps/unix/sysv/linux/powerpc/struct__semid_ds32.h
new file mode 100644
index 0000000000..880c0a3c04
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/struct__semid_ds32.h
@@ -0,0 +1,30 @@
+/* PowerPC implementation of the semaphore struct __semid_ds32.
+   Copyright (C) 1995-2020 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/>.  */
+
+/* This is the "new" y2038 types defined after the 5.1 kernel. It allows
+   the kernel to use {o,c}time{_high} values to support a 64-bit time_t.  */
+struct __semid_ds32 {
+  struct ipc_perm sem_perm;              /* operation permission struct */
+  __syscall_ulong_t   sem_otime_high;    /* last semop() time high */
+  __syscall_ulong_t   sem_otime;         /* last semop() time */
+  __syscall_ulong_t   sem_ctime_high;    /* last time changed by semctl() high */
+  __syscall_ulong_t   sem_ctime;         /* last time changed by semctl() */
+  __syscall_ulong_t   sem_nsems;         /* number of semaphores in set */
+  __syscall_ulong_t   __glibc_reserved3;
+  __syscall_ulong_t   __glibc_reserved4;
+};
diff --git a/sysdeps/unix/sysv/linux/sparc/struct__semid_ds32.h b/sysdeps/unix/sysv/linux/sparc/struct__semid_ds32.h
new file mode 100644
index 0000000000..0be263ccd0
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sparc/struct__semid_ds32.h
@@ -0,0 +1,30 @@
+/* Sparc implementation of the semaphore struct __semid_ds32.
+   Copyright (C) 1995-2020 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/>.  */
+
+/* This is the "new" y2038 types defined after the 5.1 kernel. It allows
+   the kernel to use {o,c}time{_high} values to support a 64-bit time_t.  */
+struct __semid_ds32 {
+  struct ipc_perm sem_perm;              /* operation permission struct */
+  __syscall_ulong_t   sem_otime_high;    /* last semop() time high */
+  __syscall_ulong_t   sem_otime;         /* last semop() time */
+  __syscall_ulong_t   sem_ctime_high;    /* last time changed by semctl() high */
+  __syscall_ulong_t   sem_ctime;         /* last time changed by semctl() */
+  __syscall_ulong_t   sem_nsems;         /* number of semaphores in set */
+  __syscall_ulong_t   __glibc_reserved3;
+  __syscall_ulong_t   __glibc_reserved4;
+};
diff --git a/sysdeps/unix/sysv/linux/struct__semid_ds32.h b/sysdeps/unix/sysv/linux/struct__semid_ds32.h
new file mode 100644
index 0000000000..c5242f4096
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/struct__semid_ds32.h
@@ -0,0 +1,30 @@
+/* Generic implementation of the semaphore struct __semid_ds32.
+   Copyright (C) 1995-2020 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/>.  */
+
+/* This is the "new" y2038 types defined after the 5.1 kernel. It allows
+   the kernel to use {o,c}time{_high} values to support a 64-bit time_t.  */
+struct __semid_ds32 {
+  struct ipc_perm sem_perm;              /* operation permission struct */
+  __syscall_ulong_t   sem_otime;         /* last semop() time */
+  __syscall_ulong_t   sem_otime_high;    /* last semop() time high */
+  __syscall_ulong_t   sem_ctime;         /* last time changed by semctl() */
+  __syscall_ulong_t   sem_ctime_high;    /* last time changed by semctl() high */
+  __syscall_ulong_t   sem_nsems;         /* number of semaphores in set */
+  __syscall_ulong_t   __glibc_reserved3;
+  __syscall_ulong_t   __glibc_reserved4;
+};
diff --git a/sysdeps/unix/sysv/linux/x86/struct__semid_ds32.h b/sysdeps/unix/sysv/linux/x86/struct__semid_ds32.h
new file mode 100644
index 0000000000..1155f5f93a
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/x86/struct__semid_ds32.h
@@ -0,0 +1,30 @@
+/* x86 implementation of the semaphore struct __semid_ds32.
+   Copyright (C) 1995-2020 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/>.  */
+
+/* This is the "new" y2038 types defined after the 5.1 kernel. It allows
+   the kernel to use {o,c}time{_high} values to support a 64-bit time_t.  */
+struct __semid_ds32 {
+  struct ipc_perm sem_perm;              /* operation permission struct */
+  __syscall_ulong_t   sem_otime;         /* last semop() time */
+  __syscall_ulong_t   sem_otime_high;    /* last semop() time high */
+  __syscall_ulong_t   sem_ctime;         /* last time changed by semctl() */
+  __syscall_ulong_t   sem_ctime_high;    /* last time changed by semctl() high */
+  __syscall_ulong_t   sem_nsems;         /* number of semaphores in set */
+  __syscall_ulong_t   __glibc_reserved3;
+  __syscall_ulong_t   __glibc_reserved4;
+};
-- 
2.26.2


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v9 2/2] sysv: linux: Pass 64-bit version of semctl syscall
  2020-06-02 20:41 [PATCH v9 0/2] Support semctl_syscall() for __TIMESIZE==64 Alistair Francis
  2020-06-02 20:41 ` [PATCH v9 1/2] sysv: linux: Define the __semid_ds32 struct Alistair Francis
@ 2020-06-02 20:41 ` Alistair Francis
  2020-06-29 20:51 ` [PATCH v9 0/2] Support semctl_syscall() for __TIMESIZE==64 Adhemerval Zanella
  2 siblings, 0 replies; 7+ messages in thread
From: Alistair Francis @ 2020-06-02 20:41 UTC (permalink / raw)
  To: libc-alpha; +Cc: adhemerval.zanella, stepan, alistair23, Alistair Francis

The semctl_syscall() function passes a union semun to the kernel. The
union includes struct semid_ds as a member. On 32-bit architectures the
Linux kernel provides a *_high version of the 32-bit sem_otime and
sem_ctime values. These can be combined to get a 64-bit version of the
time.

This patch adjusts the struct semid_ds to support the *_high versions
of sem_otime and sem_ctime. For 32-bit systems with a 64-bit time_t
this can be used to get a 64-bit time from the two 32-bit values.

Due to alignment differences between 64-bit and 32-bit variables we
also need to set nsems to ensure it's correct.
---
 sysdeps/unix/sysv/linux/ipc_priv.h |  7 +++++
 sysdeps/unix/sysv/linux/semctl.c   | 50 +++++++++++++++++++++++++++---
 2 files changed, 53 insertions(+), 4 deletions(-)

diff --git a/sysdeps/unix/sysv/linux/ipc_priv.h b/sysdeps/unix/sysv/linux/ipc_priv.h
index 15a6e683a4..ff20323337 100644
--- a/sysdeps/unix/sysv/linux/ipc_priv.h
+++ b/sysdeps/unix/sysv/linux/ipc_priv.h
@@ -43,6 +43,13 @@ struct __old_ipc_perm
   unsigned short int __seq;		/* Sequence number.  */
 };
 
+#if (__WORDSIZE == 32 && __TIMESIZE == 64 \
+     && (!defined __SYSCALL_WORDSIZE || __SYSCALL_WORDSIZE == 32))
+# define __IPC_TIME64 1
+#else
+# define __IPC_TIME64 0
+#endif
+
 #define SEMCTL_ARG_ADDRESS(__arg) &__arg.array
 
 #define MSGRCV_ARGS(__msgp, __msgtyp) \
diff --git a/sysdeps/unix/sysv/linux/semctl.c b/sysdeps/unix/sysv/linux/semctl.c
index 30571af49f..3ed2af89d1 100644
--- a/sysdeps/unix/sysv/linux/semctl.c
+++ b/sysdeps/unix/sysv/linux/semctl.c
@@ -22,6 +22,7 @@
 #include <sysdep.h>
 #include <shlib-compat.h>
 #include <errno.h>
+#include <struct__semid_ds32.h>
 #include <linux/posix_types.h>  /* For __kernel_mode_t.  */
 
 /* Define a `union semun' suitable for Linux here.  */
@@ -44,13 +45,54 @@ union semun
 static int
 semctl_syscall (int semid, int semnum, int cmd, union semun arg)
 {
+  int ret;
+#if __IPC_TIME64
+  /* A temporary buffer is used to avoid both an issue where the export
+     semid_ds might not follow the kernel's expected layout (due
+     to {o,c}time{_high} alignment in 64-bit time case) and the issue where
+     some kernel versions might not clear the high bits when returning
+     then {o,c}time{_high} information.  */
+  struct __semid_ds32 tmp;
+  struct semid_ds *orig;
+  bool restore = false;
+  if (cmd == IPC_STAT || cmd == SEM_STAT || cmd == SEM_STAT_ANY)
+    {
+      tmp = (struct __semid_ds32) {
+        .sem_perm  = arg.buf->sem_perm,
+        .sem_otime = arg.buf->sem_otime,
+        .sem_otime_high = arg.buf->sem_otime >> 32,
+        .sem_ctime = arg.buf->sem_ctime,
+        .sem_ctime_high = arg.buf->sem_ctime >> 32,
+        .sem_nsems = arg.buf->sem_nsems,
+      };
+      orig = arg.buf;
+      arg.buf = (struct semid_ds*) &tmp;
+      restore = true;
+    }
+#endif
+
 #ifdef __ASSUME_DIRECT_SYSVIPC_SYSCALLS
-  return INLINE_SYSCALL_CALL (semctl, semid, semnum, cmd | __IPC_64,
-			      arg.array);
+  ret = INLINE_SYSCALL_CALL (semctl, semid, semnum, cmd | __IPC_64,
+                             arg.array);
 #else
-  return INLINE_SYSCALL_CALL (ipc, IPCOP_semctl, semid, semnum, cmd | __IPC_64,
-			      SEMCTL_ARG_ADDRESS (arg));
+  ret = INLINE_SYSCALL_CALL (ipc, IPCOP_semctl, semid, semnum, cmd | __IPC_64,
+                             SEMCTL_ARG_ADDRESS (arg));
 #endif
+
+#if __IPC_TIME64
+  if (ret >= 0 && restore)
+    {
+      arg.buf = orig;
+      arg.buf->sem_perm  = tmp.sem_perm;
+      arg.buf->sem_otime = tmp.sem_otime
+                           | ((__time64_t) tmp.sem_otime_high << 32);
+      arg.buf->sem_ctime = tmp.sem_ctime
+                           | ((__time64_t) tmp.sem_ctime_high << 32);
+      arg.buf->sem_nsems = tmp.sem_nsems;
+    }
+#endif
+
+    return ret;
 }
 
 int
-- 
2.26.2


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v9 1/2] sysv: linux: Define the __semid_ds32 struct
  2020-06-02 20:41 ` [PATCH v9 1/2] sysv: linux: Define the __semid_ds32 struct Alistair Francis
@ 2020-06-10 20:44   ` Alistair Francis
  2020-06-15 22:35     ` Alistair Francis
  0 siblings, 1 reply; 7+ messages in thread
From: Alistair Francis @ 2020-06-10 20:44 UTC (permalink / raw)
  To: Alistair Francis; +Cc: GNU C Library, Adhemerval Zanella, Stepan Golosunov

On Tue, Jun 2, 2020 at 1:49 PM Alistair Francis
<alistair.francis@wdc.com> wrote:
>
> Define a struct for 32-bit systems for the semctl command.
> ---

Ping

>  .../unix/sysv/linux/hppa/struct__semid_ds32.h | 30 +++++++++++++++++++
>  .../unix/sysv/linux/mips/struct__semid_ds32.h | 28 +++++++++++++++++
>  .../sysv/linux/powerpc/struct__semid_ds32.h   | 30 +++++++++++++++++++
>  .../sysv/linux/sparc/struct__semid_ds32.h     | 30 +++++++++++++++++++
>  sysdeps/unix/sysv/linux/struct__semid_ds32.h  | 30 +++++++++++++++++++
>  .../unix/sysv/linux/x86/struct__semid_ds32.h  | 30 +++++++++++++++++++
>  6 files changed, 178 insertions(+)
>  create mode 100644 sysdeps/unix/sysv/linux/hppa/struct__semid_ds32.h
>  create mode 100644 sysdeps/unix/sysv/linux/mips/struct__semid_ds32.h
>  create mode 100644 sysdeps/unix/sysv/linux/powerpc/struct__semid_ds32.h
>  create mode 100644 sysdeps/unix/sysv/linux/sparc/struct__semid_ds32.h
>  create mode 100644 sysdeps/unix/sysv/linux/struct__semid_ds32.h
>  create mode 100644 sysdeps/unix/sysv/linux/x86/struct__semid_ds32.h
>
> diff --git a/sysdeps/unix/sysv/linux/hppa/struct__semid_ds32.h b/sysdeps/unix/sysv/linux/hppa/struct__semid_ds32.h
> new file mode 100644
> index 0000000000..7a6b803cee
> --- /dev/null
> +++ b/sysdeps/unix/sysv/linux/hppa/struct__semid_ds32.h
> @@ -0,0 +1,30 @@
> +/* HPPA implementation of the semaphore struct __semid_ds32.
> +   Copyright (C) 1995-2020 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/>.  */
> +
> +/* This is the "new" y2038 types defined after the 5.1 kernel. It allows
> +   the kernel to use {o,c}time{_high} values to support a 64-bit time_t.  */
> +struct __semid_ds32 {
> +  struct ipc_perm sem_perm;              /* operation permission struct */
> +  __syscall_ulong_t   sem_otime_high;    /* last semop() time high */
> +  __syscall_ulong_t   sem_otime;         /* last semop() time */
> +  __syscall_ulong_t   sem_ctime_high;    /* last time changed by semctl() high */
> +  __syscall_ulong_t   sem_ctime;         /* last time changed by semctl() */
> +  __syscall_ulong_t   sem_nsems;         /* number of semaphores in set */
> +  __syscall_ulong_t   __glibc_reserved3;
> +  __syscall_ulong_t   __glibc_reserved4;
> +};
> diff --git a/sysdeps/unix/sysv/linux/mips/struct__semid_ds32.h b/sysdeps/unix/sysv/linux/mips/struct__semid_ds32.h
> new file mode 100644
> index 0000000000..3a1d7c6885
> --- /dev/null
> +++ b/sysdeps/unix/sysv/linux/mips/struct__semid_ds32.h
> @@ -0,0 +1,28 @@
> +/* MIPS implementation of the semaphore struct __semid_ds32.
> +   Copyright (C) 1995-2020 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/>.  */
> +
> +/* This is the "new" y2038 types defined after the 5.1 kernel. It allows
> +   the kernel to use {o,c}time{_high} values to support a 64-bit time_t.  */
> +struct __semid_ds32 {
> +  struct ipc_perm sem_perm;              /* operation permission struct */
> +  __syscall_ulong_t   sem_otime;         /* last semop time */
> +  __syscall_ulong_t   sem_ctime;         /* last change time */
> +  __syscall_ulong_t   sem_nsems;         /* number of semaphores in set */
> +  __syscall_ulong_t   sem_otime_high;
> +  __syscall_ulong_t   sem_ctime_high;
> +};
> diff --git a/sysdeps/unix/sysv/linux/powerpc/struct__semid_ds32.h b/sysdeps/unix/sysv/linux/powerpc/struct__semid_ds32.h
> new file mode 100644
> index 0000000000..880c0a3c04
> --- /dev/null
> +++ b/sysdeps/unix/sysv/linux/powerpc/struct__semid_ds32.h
> @@ -0,0 +1,30 @@
> +/* PowerPC implementation of the semaphore struct __semid_ds32.
> +   Copyright (C) 1995-2020 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/>.  */
> +
> +/* This is the "new" y2038 types defined after the 5.1 kernel. It allows
> +   the kernel to use {o,c}time{_high} values to support a 64-bit time_t.  */
> +struct __semid_ds32 {
> +  struct ipc_perm sem_perm;              /* operation permission struct */
> +  __syscall_ulong_t   sem_otime_high;    /* last semop() time high */
> +  __syscall_ulong_t   sem_otime;         /* last semop() time */
> +  __syscall_ulong_t   sem_ctime_high;    /* last time changed by semctl() high */
> +  __syscall_ulong_t   sem_ctime;         /* last time changed by semctl() */
> +  __syscall_ulong_t   sem_nsems;         /* number of semaphores in set */
> +  __syscall_ulong_t   __glibc_reserved3;
> +  __syscall_ulong_t   __glibc_reserved4;
> +};
> diff --git a/sysdeps/unix/sysv/linux/sparc/struct__semid_ds32.h b/sysdeps/unix/sysv/linux/sparc/struct__semid_ds32.h
> new file mode 100644
> index 0000000000..0be263ccd0
> --- /dev/null
> +++ b/sysdeps/unix/sysv/linux/sparc/struct__semid_ds32.h
> @@ -0,0 +1,30 @@
> +/* Sparc implementation of the semaphore struct __semid_ds32.
> +   Copyright (C) 1995-2020 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/>.  */
> +
> +/* This is the "new" y2038 types defined after the 5.1 kernel. It allows
> +   the kernel to use {o,c}time{_high} values to support a 64-bit time_t.  */
> +struct __semid_ds32 {
> +  struct ipc_perm sem_perm;              /* operation permission struct */
> +  __syscall_ulong_t   sem_otime_high;    /* last semop() time high */
> +  __syscall_ulong_t   sem_otime;         /* last semop() time */
> +  __syscall_ulong_t   sem_ctime_high;    /* last time changed by semctl() high */
> +  __syscall_ulong_t   sem_ctime;         /* last time changed by semctl() */
> +  __syscall_ulong_t   sem_nsems;         /* number of semaphores in set */
> +  __syscall_ulong_t   __glibc_reserved3;
> +  __syscall_ulong_t   __glibc_reserved4;
> +};
> diff --git a/sysdeps/unix/sysv/linux/struct__semid_ds32.h b/sysdeps/unix/sysv/linux/struct__semid_ds32.h
> new file mode 100644
> index 0000000000..c5242f4096
> --- /dev/null
> +++ b/sysdeps/unix/sysv/linux/struct__semid_ds32.h
> @@ -0,0 +1,30 @@
> +/* Generic implementation of the semaphore struct __semid_ds32.
> +   Copyright (C) 1995-2020 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/>.  */
> +
> +/* This is the "new" y2038 types defined after the 5.1 kernel. It allows
> +   the kernel to use {o,c}time{_high} values to support a 64-bit time_t.  */
> +struct __semid_ds32 {
> +  struct ipc_perm sem_perm;              /* operation permission struct */
> +  __syscall_ulong_t   sem_otime;         /* last semop() time */
> +  __syscall_ulong_t   sem_otime_high;    /* last semop() time high */
> +  __syscall_ulong_t   sem_ctime;         /* last time changed by semctl() */
> +  __syscall_ulong_t   sem_ctime_high;    /* last time changed by semctl() high */
> +  __syscall_ulong_t   sem_nsems;         /* number of semaphores in set */
> +  __syscall_ulong_t   __glibc_reserved3;
> +  __syscall_ulong_t   __glibc_reserved4;
> +};
> diff --git a/sysdeps/unix/sysv/linux/x86/struct__semid_ds32.h b/sysdeps/unix/sysv/linux/x86/struct__semid_ds32.h
> new file mode 100644
> index 0000000000..1155f5f93a
> --- /dev/null
> +++ b/sysdeps/unix/sysv/linux/x86/struct__semid_ds32.h
> @@ -0,0 +1,30 @@
> +/* x86 implementation of the semaphore struct __semid_ds32.
> +   Copyright (C) 1995-2020 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/>.  */
> +
> +/* This is the "new" y2038 types defined after the 5.1 kernel. It allows
> +   the kernel to use {o,c}time{_high} values to support a 64-bit time_t.  */
> +struct __semid_ds32 {
> +  struct ipc_perm sem_perm;              /* operation permission struct */
> +  __syscall_ulong_t   sem_otime;         /* last semop() time */
> +  __syscall_ulong_t   sem_otime_high;    /* last semop() time high */
> +  __syscall_ulong_t   sem_ctime;         /* last time changed by semctl() */
> +  __syscall_ulong_t   sem_ctime_high;    /* last time changed by semctl() high */
> +  __syscall_ulong_t   sem_nsems;         /* number of semaphores in set */
> +  __syscall_ulong_t   __glibc_reserved3;
> +  __syscall_ulong_t   __glibc_reserved4;
> +};
> --
> 2.26.2
>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v9 1/2] sysv: linux: Define the __semid_ds32 struct
  2020-06-10 20:44   ` Alistair Francis
@ 2020-06-15 22:35     ` Alistair Francis
  2020-06-25 23:35       ` Alistair Francis
  0 siblings, 1 reply; 7+ messages in thread
From: Alistair Francis @ 2020-06-15 22:35 UTC (permalink / raw)
  To: Alistair Francis; +Cc: GNU C Library, Adhemerval Zanella, Stepan Golosunov

On Wed, Jun 10, 2020 at 1:44 PM Alistair Francis <alistair23@gmail.com> wrote:
>
> On Tue, Jun 2, 2020 at 1:49 PM Alistair Francis
> <alistair.francis@wdc.com> wrote:
> >
> > Define a struct for 32-bit systems for the semctl command.
> > ---
>
> Ping

Ping^2

>
> >  .../unix/sysv/linux/hppa/struct__semid_ds32.h | 30 +++++++++++++++++++
> >  .../unix/sysv/linux/mips/struct__semid_ds32.h | 28 +++++++++++++++++
> >  .../sysv/linux/powerpc/struct__semid_ds32.h   | 30 +++++++++++++++++++
> >  .../sysv/linux/sparc/struct__semid_ds32.h     | 30 +++++++++++++++++++
> >  sysdeps/unix/sysv/linux/struct__semid_ds32.h  | 30 +++++++++++++++++++
> >  .../unix/sysv/linux/x86/struct__semid_ds32.h  | 30 +++++++++++++++++++
> >  6 files changed, 178 insertions(+)
> >  create mode 100644 sysdeps/unix/sysv/linux/hppa/struct__semid_ds32.h
> >  create mode 100644 sysdeps/unix/sysv/linux/mips/struct__semid_ds32.h
> >  create mode 100644 sysdeps/unix/sysv/linux/powerpc/struct__semid_ds32.h
> >  create mode 100644 sysdeps/unix/sysv/linux/sparc/struct__semid_ds32.h
> >  create mode 100644 sysdeps/unix/sysv/linux/struct__semid_ds32.h
> >  create mode 100644 sysdeps/unix/sysv/linux/x86/struct__semid_ds32.h
> >
> > diff --git a/sysdeps/unix/sysv/linux/hppa/struct__semid_ds32.h b/sysdeps/unix/sysv/linux/hppa/struct__semid_ds32.h
> > new file mode 100644
> > index 0000000000..7a6b803cee
> > --- /dev/null
> > +++ b/sysdeps/unix/sysv/linux/hppa/struct__semid_ds32.h
> > @@ -0,0 +1,30 @@
> > +/* HPPA implementation of the semaphore struct __semid_ds32.
> > +   Copyright (C) 1995-2020 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/>.  */
> > +
> > +/* This is the "new" y2038 types defined after the 5.1 kernel. It allows
> > +   the kernel to use {o,c}time{_high} values to support a 64-bit time_t.  */
> > +struct __semid_ds32 {
> > +  struct ipc_perm sem_perm;              /* operation permission struct */
> > +  __syscall_ulong_t   sem_otime_high;    /* last semop() time high */
> > +  __syscall_ulong_t   sem_otime;         /* last semop() time */
> > +  __syscall_ulong_t   sem_ctime_high;    /* last time changed by semctl() high */
> > +  __syscall_ulong_t   sem_ctime;         /* last time changed by semctl() */
> > +  __syscall_ulong_t   sem_nsems;         /* number of semaphores in set */
> > +  __syscall_ulong_t   __glibc_reserved3;
> > +  __syscall_ulong_t   __glibc_reserved4;
> > +};
> > diff --git a/sysdeps/unix/sysv/linux/mips/struct__semid_ds32.h b/sysdeps/unix/sysv/linux/mips/struct__semid_ds32.h
> > new file mode 100644
> > index 0000000000..3a1d7c6885
> > --- /dev/null
> > +++ b/sysdeps/unix/sysv/linux/mips/struct__semid_ds32.h
> > @@ -0,0 +1,28 @@
> > +/* MIPS implementation of the semaphore struct __semid_ds32.
> > +   Copyright (C) 1995-2020 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/>.  */
> > +
> > +/* This is the "new" y2038 types defined after the 5.1 kernel. It allows
> > +   the kernel to use {o,c}time{_high} values to support a 64-bit time_t.  */
> > +struct __semid_ds32 {
> > +  struct ipc_perm sem_perm;              /* operation permission struct */
> > +  __syscall_ulong_t   sem_otime;         /* last semop time */
> > +  __syscall_ulong_t   sem_ctime;         /* last change time */
> > +  __syscall_ulong_t   sem_nsems;         /* number of semaphores in set */
> > +  __syscall_ulong_t   sem_otime_high;
> > +  __syscall_ulong_t   sem_ctime_high;
> > +};
> > diff --git a/sysdeps/unix/sysv/linux/powerpc/struct__semid_ds32.h b/sysdeps/unix/sysv/linux/powerpc/struct__semid_ds32.h
> > new file mode 100644
> > index 0000000000..880c0a3c04
> > --- /dev/null
> > +++ b/sysdeps/unix/sysv/linux/powerpc/struct__semid_ds32.h
> > @@ -0,0 +1,30 @@
> > +/* PowerPC implementation of the semaphore struct __semid_ds32.
> > +   Copyright (C) 1995-2020 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/>.  */
> > +
> > +/* This is the "new" y2038 types defined after the 5.1 kernel. It allows
> > +   the kernel to use {o,c}time{_high} values to support a 64-bit time_t.  */
> > +struct __semid_ds32 {
> > +  struct ipc_perm sem_perm;              /* operation permission struct */
> > +  __syscall_ulong_t   sem_otime_high;    /* last semop() time high */
> > +  __syscall_ulong_t   sem_otime;         /* last semop() time */
> > +  __syscall_ulong_t   sem_ctime_high;    /* last time changed by semctl() high */
> > +  __syscall_ulong_t   sem_ctime;         /* last time changed by semctl() */
> > +  __syscall_ulong_t   sem_nsems;         /* number of semaphores in set */
> > +  __syscall_ulong_t   __glibc_reserved3;
> > +  __syscall_ulong_t   __glibc_reserved4;
> > +};
> > diff --git a/sysdeps/unix/sysv/linux/sparc/struct__semid_ds32.h b/sysdeps/unix/sysv/linux/sparc/struct__semid_ds32.h
> > new file mode 100644
> > index 0000000000..0be263ccd0
> > --- /dev/null
> > +++ b/sysdeps/unix/sysv/linux/sparc/struct__semid_ds32.h
> > @@ -0,0 +1,30 @@
> > +/* Sparc implementation of the semaphore struct __semid_ds32.
> > +   Copyright (C) 1995-2020 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/>.  */
> > +
> > +/* This is the "new" y2038 types defined after the 5.1 kernel. It allows
> > +   the kernel to use {o,c}time{_high} values to support a 64-bit time_t.  */
> > +struct __semid_ds32 {
> > +  struct ipc_perm sem_perm;              /* operation permission struct */
> > +  __syscall_ulong_t   sem_otime_high;    /* last semop() time high */
> > +  __syscall_ulong_t   sem_otime;         /* last semop() time */
> > +  __syscall_ulong_t   sem_ctime_high;    /* last time changed by semctl() high */
> > +  __syscall_ulong_t   sem_ctime;         /* last time changed by semctl() */
> > +  __syscall_ulong_t   sem_nsems;         /* number of semaphores in set */
> > +  __syscall_ulong_t   __glibc_reserved3;
> > +  __syscall_ulong_t   __glibc_reserved4;
> > +};
> > diff --git a/sysdeps/unix/sysv/linux/struct__semid_ds32.h b/sysdeps/unix/sysv/linux/struct__semid_ds32.h
> > new file mode 100644
> > index 0000000000..c5242f4096
> > --- /dev/null
> > +++ b/sysdeps/unix/sysv/linux/struct__semid_ds32.h
> > @@ -0,0 +1,30 @@
> > +/* Generic implementation of the semaphore struct __semid_ds32.
> > +   Copyright (C) 1995-2020 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/>.  */
> > +
> > +/* This is the "new" y2038 types defined after the 5.1 kernel. It allows
> > +   the kernel to use {o,c}time{_high} values to support a 64-bit time_t.  */
> > +struct __semid_ds32 {
> > +  struct ipc_perm sem_perm;              /* operation permission struct */
> > +  __syscall_ulong_t   sem_otime;         /* last semop() time */
> > +  __syscall_ulong_t   sem_otime_high;    /* last semop() time high */
> > +  __syscall_ulong_t   sem_ctime;         /* last time changed by semctl() */
> > +  __syscall_ulong_t   sem_ctime_high;    /* last time changed by semctl() high */
> > +  __syscall_ulong_t   sem_nsems;         /* number of semaphores in set */
> > +  __syscall_ulong_t   __glibc_reserved3;
> > +  __syscall_ulong_t   __glibc_reserved4;
> > +};
> > diff --git a/sysdeps/unix/sysv/linux/x86/struct__semid_ds32.h b/sysdeps/unix/sysv/linux/x86/struct__semid_ds32.h
> > new file mode 100644
> > index 0000000000..1155f5f93a
> > --- /dev/null
> > +++ b/sysdeps/unix/sysv/linux/x86/struct__semid_ds32.h
> > @@ -0,0 +1,30 @@
> > +/* x86 implementation of the semaphore struct __semid_ds32.
> > +   Copyright (C) 1995-2020 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/>.  */
> > +
> > +/* This is the "new" y2038 types defined after the 5.1 kernel. It allows
> > +   the kernel to use {o,c}time{_high} values to support a 64-bit time_t.  */
> > +struct __semid_ds32 {
> > +  struct ipc_perm sem_perm;              /* operation permission struct */
> > +  __syscall_ulong_t   sem_otime;         /* last semop() time */
> > +  __syscall_ulong_t   sem_otime_high;    /* last semop() time high */
> > +  __syscall_ulong_t   sem_ctime;         /* last time changed by semctl() */
> > +  __syscall_ulong_t   sem_ctime_high;    /* last time changed by semctl() high */
> > +  __syscall_ulong_t   sem_nsems;         /* number of semaphores in set */
> > +  __syscall_ulong_t   __glibc_reserved3;
> > +  __syscall_ulong_t   __glibc_reserved4;
> > +};
> > --
> > 2.26.2
> >

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v9 1/2] sysv: linux: Define the __semid_ds32 struct
  2020-06-15 22:35     ` Alistair Francis
@ 2020-06-25 23:35       ` Alistair Francis
  0 siblings, 0 replies; 7+ messages in thread
From: Alistair Francis @ 2020-06-25 23:35 UTC (permalink / raw)
  To: Alistair Francis; +Cc: GNU C Library, Adhemerval Zanella, Stepan Golosunov

On Mon, Jun 15, 2020 at 3:35 PM Alistair Francis <alistair23@gmail.com> wrote:
>
> On Wed, Jun 10, 2020 at 1:44 PM Alistair Francis <alistair23@gmail.com> wrote:
> >
> > On Tue, Jun 2, 2020 at 1:49 PM Alistair Francis
> > <alistair.francis@wdc.com> wrote:
> > >
> > > Define a struct for 32-bit systems for the semctl command.
> > > ---
> >
> > Ping
>
> Ping^2

Ping^3

>
> >
> > >  .../unix/sysv/linux/hppa/struct__semid_ds32.h | 30 +++++++++++++++++++
> > >  .../unix/sysv/linux/mips/struct__semid_ds32.h | 28 +++++++++++++++++
> > >  .../sysv/linux/powerpc/struct__semid_ds32.h   | 30 +++++++++++++++++++
> > >  .../sysv/linux/sparc/struct__semid_ds32.h     | 30 +++++++++++++++++++
> > >  sysdeps/unix/sysv/linux/struct__semid_ds32.h  | 30 +++++++++++++++++++
> > >  .../unix/sysv/linux/x86/struct__semid_ds32.h  | 30 +++++++++++++++++++
> > >  6 files changed, 178 insertions(+)
> > >  create mode 100644 sysdeps/unix/sysv/linux/hppa/struct__semid_ds32.h
> > >  create mode 100644 sysdeps/unix/sysv/linux/mips/struct__semid_ds32.h
> > >  create mode 100644 sysdeps/unix/sysv/linux/powerpc/struct__semid_ds32.h
> > >  create mode 100644 sysdeps/unix/sysv/linux/sparc/struct__semid_ds32.h
> > >  create mode 100644 sysdeps/unix/sysv/linux/struct__semid_ds32.h
> > >  create mode 100644 sysdeps/unix/sysv/linux/x86/struct__semid_ds32.h
> > >
> > > diff --git a/sysdeps/unix/sysv/linux/hppa/struct__semid_ds32.h b/sysdeps/unix/sysv/linux/hppa/struct__semid_ds32.h
> > > new file mode 100644
> > > index 0000000000..7a6b803cee
> > > --- /dev/null
> > > +++ b/sysdeps/unix/sysv/linux/hppa/struct__semid_ds32.h
> > > @@ -0,0 +1,30 @@
> > > +/* HPPA implementation of the semaphore struct __semid_ds32.
> > > +   Copyright (C) 1995-2020 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/>.  */
> > > +
> > > +/* This is the "new" y2038 types defined after the 5.1 kernel. It allows
> > > +   the kernel to use {o,c}time{_high} values to support a 64-bit time_t.  */
> > > +struct __semid_ds32 {
> > > +  struct ipc_perm sem_perm;              /* operation permission struct */
> > > +  __syscall_ulong_t   sem_otime_high;    /* last semop() time high */
> > > +  __syscall_ulong_t   sem_otime;         /* last semop() time */
> > > +  __syscall_ulong_t   sem_ctime_high;    /* last time changed by semctl() high */
> > > +  __syscall_ulong_t   sem_ctime;         /* last time changed by semctl() */
> > > +  __syscall_ulong_t   sem_nsems;         /* number of semaphores in set */
> > > +  __syscall_ulong_t   __glibc_reserved3;
> > > +  __syscall_ulong_t   __glibc_reserved4;
> > > +};
> > > diff --git a/sysdeps/unix/sysv/linux/mips/struct__semid_ds32.h b/sysdeps/unix/sysv/linux/mips/struct__semid_ds32.h
> > > new file mode 100644
> > > index 0000000000..3a1d7c6885
> > > --- /dev/null
> > > +++ b/sysdeps/unix/sysv/linux/mips/struct__semid_ds32.h
> > > @@ -0,0 +1,28 @@
> > > +/* MIPS implementation of the semaphore struct __semid_ds32.
> > > +   Copyright (C) 1995-2020 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/>.  */
> > > +
> > > +/* This is the "new" y2038 types defined after the 5.1 kernel. It allows
> > > +   the kernel to use {o,c}time{_high} values to support a 64-bit time_t.  */
> > > +struct __semid_ds32 {
> > > +  struct ipc_perm sem_perm;              /* operation permission struct */
> > > +  __syscall_ulong_t   sem_otime;         /* last semop time */
> > > +  __syscall_ulong_t   sem_ctime;         /* last change time */
> > > +  __syscall_ulong_t   sem_nsems;         /* number of semaphores in set */
> > > +  __syscall_ulong_t   sem_otime_high;
> > > +  __syscall_ulong_t   sem_ctime_high;
> > > +};
> > > diff --git a/sysdeps/unix/sysv/linux/powerpc/struct__semid_ds32.h b/sysdeps/unix/sysv/linux/powerpc/struct__semid_ds32.h
> > > new file mode 100644
> > > index 0000000000..880c0a3c04
> > > --- /dev/null
> > > +++ b/sysdeps/unix/sysv/linux/powerpc/struct__semid_ds32.h
> > > @@ -0,0 +1,30 @@
> > > +/* PowerPC implementation of the semaphore struct __semid_ds32.
> > > +   Copyright (C) 1995-2020 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/>.  */
> > > +
> > > +/* This is the "new" y2038 types defined after the 5.1 kernel. It allows
> > > +   the kernel to use {o,c}time{_high} values to support a 64-bit time_t.  */
> > > +struct __semid_ds32 {
> > > +  struct ipc_perm sem_perm;              /* operation permission struct */
> > > +  __syscall_ulong_t   sem_otime_high;    /* last semop() time high */
> > > +  __syscall_ulong_t   sem_otime;         /* last semop() time */
> > > +  __syscall_ulong_t   sem_ctime_high;    /* last time changed by semctl() high */
> > > +  __syscall_ulong_t   sem_ctime;         /* last time changed by semctl() */
> > > +  __syscall_ulong_t   sem_nsems;         /* number of semaphores in set */
> > > +  __syscall_ulong_t   __glibc_reserved3;
> > > +  __syscall_ulong_t   __glibc_reserved4;
> > > +};
> > > diff --git a/sysdeps/unix/sysv/linux/sparc/struct__semid_ds32.h b/sysdeps/unix/sysv/linux/sparc/struct__semid_ds32.h
> > > new file mode 100644
> > > index 0000000000..0be263ccd0
> > > --- /dev/null
> > > +++ b/sysdeps/unix/sysv/linux/sparc/struct__semid_ds32.h
> > > @@ -0,0 +1,30 @@
> > > +/* Sparc implementation of the semaphore struct __semid_ds32.
> > > +   Copyright (C) 1995-2020 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/>.  */
> > > +
> > > +/* This is the "new" y2038 types defined after the 5.1 kernel. It allows
> > > +   the kernel to use {o,c}time{_high} values to support a 64-bit time_t.  */
> > > +struct __semid_ds32 {
> > > +  struct ipc_perm sem_perm;              /* operation permission struct */
> > > +  __syscall_ulong_t   sem_otime_high;    /* last semop() time high */
> > > +  __syscall_ulong_t   sem_otime;         /* last semop() time */
> > > +  __syscall_ulong_t   sem_ctime_high;    /* last time changed by semctl() high */
> > > +  __syscall_ulong_t   sem_ctime;         /* last time changed by semctl() */
> > > +  __syscall_ulong_t   sem_nsems;         /* number of semaphores in set */
> > > +  __syscall_ulong_t   __glibc_reserved3;
> > > +  __syscall_ulong_t   __glibc_reserved4;
> > > +};
> > > diff --git a/sysdeps/unix/sysv/linux/struct__semid_ds32.h b/sysdeps/unix/sysv/linux/struct__semid_ds32.h
> > > new file mode 100644
> > > index 0000000000..c5242f4096
> > > --- /dev/null
> > > +++ b/sysdeps/unix/sysv/linux/struct__semid_ds32.h
> > > @@ -0,0 +1,30 @@
> > > +/* Generic implementation of the semaphore struct __semid_ds32.
> > > +   Copyright (C) 1995-2020 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/>.  */
> > > +
> > > +/* This is the "new" y2038 types defined after the 5.1 kernel. It allows
> > > +   the kernel to use {o,c}time{_high} values to support a 64-bit time_t.  */
> > > +struct __semid_ds32 {
> > > +  struct ipc_perm sem_perm;              /* operation permission struct */
> > > +  __syscall_ulong_t   sem_otime;         /* last semop() time */
> > > +  __syscall_ulong_t   sem_otime_high;    /* last semop() time high */
> > > +  __syscall_ulong_t   sem_ctime;         /* last time changed by semctl() */
> > > +  __syscall_ulong_t   sem_ctime_high;    /* last time changed by semctl() high */
> > > +  __syscall_ulong_t   sem_nsems;         /* number of semaphores in set */
> > > +  __syscall_ulong_t   __glibc_reserved3;
> > > +  __syscall_ulong_t   __glibc_reserved4;
> > > +};
> > > diff --git a/sysdeps/unix/sysv/linux/x86/struct__semid_ds32.h b/sysdeps/unix/sysv/linux/x86/struct__semid_ds32.h
> > > new file mode 100644
> > > index 0000000000..1155f5f93a
> > > --- /dev/null
> > > +++ b/sysdeps/unix/sysv/linux/x86/struct__semid_ds32.h
> > > @@ -0,0 +1,30 @@
> > > +/* x86 implementation of the semaphore struct __semid_ds32.
> > > +   Copyright (C) 1995-2020 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/>.  */
> > > +
> > > +/* This is the "new" y2038 types defined after the 5.1 kernel. It allows
> > > +   the kernel to use {o,c}time{_high} values to support a 64-bit time_t.  */
> > > +struct __semid_ds32 {
> > > +  struct ipc_perm sem_perm;              /* operation permission struct */
> > > +  __syscall_ulong_t   sem_otime;         /* last semop() time */
> > > +  __syscall_ulong_t   sem_otime_high;    /* last semop() time high */
> > > +  __syscall_ulong_t   sem_ctime;         /* last time changed by semctl() */
> > > +  __syscall_ulong_t   sem_ctime_high;    /* last time changed by semctl() high */
> > > +  __syscall_ulong_t   sem_nsems;         /* number of semaphores in set */
> > > +  __syscall_ulong_t   __glibc_reserved3;
> > > +  __syscall_ulong_t   __glibc_reserved4;
> > > +};
> > > --
> > > 2.26.2
> > >

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v9 0/2] Support semctl_syscall() for __TIMESIZE==64
  2020-06-02 20:41 [PATCH v9 0/2] Support semctl_syscall() for __TIMESIZE==64 Alistair Francis
  2020-06-02 20:41 ` [PATCH v9 1/2] sysv: linux: Define the __semid_ds32 struct Alistair Francis
  2020-06-02 20:41 ` [PATCH v9 2/2] sysv: linux: Pass 64-bit version of semctl syscall Alistair Francis
@ 2020-06-29 20:51 ` Adhemerval Zanella
  2 siblings, 0 replies; 7+ messages in thread
From: Adhemerval Zanella @ 2020-06-29 20:51 UTC (permalink / raw)
  To: Alistair Francis, libc-alpha; +Cc: stepan, alistair23



On 02/06/2020 17:41, Alistair Francis wrote:
> This series supports the semctl calls on a system with __TIMESIZE==64
> and __WORDSIZE==32 while not breaking current architectures. This is a
> step towards full y2038 support, but does not get us there yet.
> 
> See: https://sourceware.org/pipermail/libc-alpha/2020-May/113774.html
> for more details on what is still required.
> 
> This series adds a new __semid_ds32 that is passed to the kernel
> (as part of a union) when running on 32-bit systems. If we are doing an
> IPC_STAT/SEM_STAT command then the 32-bit sem_{c,o}time{_high} values
> are combined to create a 64-bit value.

I think this patch still does not go in to the direction it was discussed
in last iteration. This patch just handles the case of 32-bit
architectures with only 64-bit time_t support, where to fully cover all 
possible scenarios we will need to handle the 32-bit architectures where
it would be possible to select the time_t ABI (i386 for instance).

To move this support forward I implemented the idea we discussed in a
personal branch [1].  Instead of adding the the '__semid_ds32' I added
two new structures:

  1. kernel_semid64_ds: used internally only on 32-bit architectures
     to issue the syscall.  As for __semid_ds32, a handful architectures
     (hppa, i386, mips, powerpc32, sparc32) requires specific 
     implementation due its specific kernel ABI.

  2. semid_ds64: this is only for __TIMESIZE != 64 to used along with
     the 64-bit semctl.  It is different than the kernel one because
     the exported 64-bit time_t might require different alignment
     depending of the architecture ABI.  

So the resulting implementation does:


  1. For 64-bit architectures it assumes semid_ds already contains
     64-bit time_t fields it will result in just the __semctl symbol
     using the __semctl64 code:

     static int
     semctl_syscall (int semid, int semnum, int cmd, union semun arg)
     {
       [...]
     }

     int
     semctl ([...])
     {
       union semun arg64 = { 0 };
       [...]
       switch (cmd)
         {
         [...]
           arg64 = va_arg (ap, union semun);
         [...]
         }

       union semun arg = arg64;
 
       int ret = semctl_syscall (semid, semnum, cmd, arg);
       [...]
     }

     Basically the semid_ds argument is passed as-is to the kernel
     interface.


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

     static int
     semctl_syscall (int semid, int semnum, int cmd, union ksemun64 arg)
     {
       [...]
     }

     int
     semctl ([...])
     {
       union semun arg64 = { 0 };
       [...]
       switch (cmd)
         {
         [...]
           arg64 = va_arg (ap, union semun64);
         [...]
         }

       struct kernel_semid64_ds ksemid;
       union ksemun64 ksemun = semun64_to_ksemun64 (cmd, arg64, &ksemid);
       union ksemun64 arg = ksemun;

       int ret = semctl_syscall (semid, semnum, cmd, arg);
       [...]

       switch (cmd)
         {
         case IPC_STAT:
         case SEM_STAT:
         case SEM_STAT_ANY:
         [...]
         ksemid64_to_semid64 (arg.buf, arg64.buf);
         }
       [...]
     }

     It might be possible to optimize it further to avoid the 
     kernel_semid64_ds to semun transformation if the exported glibc ABI
     for the architectures matches the expected kernel ABI, but the 
     implementation is already complex enough and don't think this should
     be a hotspot in any case.
    

  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 on
     basis of the 64-bit one:

     static int
     semctl_syscall (int semid, int semnum, int cmd, union ksemun64 arg)
     {
       [...]
     }

     int
     __semctl64 ([...])
     {
       union semun64 arg64 = { 0 };
       [...]
       switch (cmd)
         {
           [...]
           arg64 = va_arg (ap, union semun64);
           [...]
         }

       struct kernel_semid64_ds ksemid;
       union ksemun64 ksemun = semun64_to_ksemun64 (cmd, arg64, &ksemid);
       union ksemun64 arg = ksemun;

       int ret = semctl_syscall (semid, semnum, cmd, arg);
       [...]

       switch (cmd)
         {
         case IPC_STAT:
         case SEM_STAT:
         case SEM_STAT_ANY:
         [...]
         ksemid64_to_semid64 (arg.buf, arg64.buf);
         }
       [...]
     }

     int
     __semctl (int semid, int semnum, int cmd, ...)
     {
       union semun arg = { 0 };
       [...]
       switch (cmd)
         {
         [...]
           arg = va_arg (ap, union semun);
         [...]
         }

       struct __semid64_ds semid64;
       union semun64 arg64 = semun_to_semun64 (cmd, arg, &semid64);

       int ret = __semctl64 (semid, semnum, cmd, arg64);

       switch (cmd)
         {
         case IPC_STAT:
         case SEM_STAT:
         case SEM_STAT_ANY:
           semid64_ds_to_semid_ds (arg.buf, arg64.buf);
         }
     }

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


I did some sniff tests on i686, arm, mips, and powerpc where this 
code should change the way the function is implemented.  Could you
also check on riscv32 since currently there is no 32-bit architecture
with default 64-bit time_t? If it ok for riscv32 I can send it 
upstream.


[1] https://sourceware.org/git/?p=glibc.git;a=shortlog;h=refs/heads/azanella/semctl-y2038


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2020-06-29 20:51 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-02 20:41 [PATCH v9 0/2] Support semctl_syscall() for __TIMESIZE==64 Alistair Francis
2020-06-02 20:41 ` [PATCH v9 1/2] sysv: linux: Define the __semid_ds32 struct Alistair Francis
2020-06-10 20:44   ` Alistair Francis
2020-06-15 22:35     ` Alistair Francis
2020-06-25 23:35       ` Alistair Francis
2020-06-02 20:41 ` [PATCH v9 2/2] sysv: linux: Pass 64-bit version of semctl syscall Alistair Francis
2020-06-29 20:51 ` [PATCH v9 0/2] Support semctl_syscall() for __TIMESIZE==64 Adhemerval Zanella

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).