All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] linux-user: Move target_struct.h generic definitions to generic/
@ 2022-01-07  4:25 Richard Henderson
  2022-01-07  4:25 ` [PATCH 1/2] linux-user/arm: Move target_oabi_flock64 out of target_structs.h Richard Henderson
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Richard Henderson @ 2022-01-07  4:25 UTC (permalink / raw)
  To: qemu-devel; +Cc: gaosong, laurent

I noticed this while reviewing loongarch64.

r~

Richard Henderson (2):
  linux-user/arm: Move target_oabi_flock64 out of target_structs.h
  linux-user: Move target_struct.h generic definitions to generic/

 linux-user/aarch64/target_structs.h    | 59 +------------------------
 linux-user/arm/target_structs.h        | 60 +-------------------------
 linux-user/cris/target_structs.h       | 59 +------------------------
 linux-user/generic/target_structs.h    | 58 +++++++++++++++++++++++++
 linux-user/hexagon/target_structs.h    | 55 +----------------------
 linux-user/i386/target_structs.h       | 59 +------------------------
 linux-user/m68k/target_structs.h       | 59 +------------------------
 linux-user/microblaze/target_structs.h | 59 +------------------------
 linux-user/nios2/target_structs.h      | 59 +------------------------
 linux-user/openrisc/target_structs.h   | 59 +------------------------
 linux-user/riscv/target_structs.h      | 47 +-------------------
 linux-user/sh4/target_structs.h        | 59 +------------------------
 linux-user/x86_64/target_structs.h     | 36 +---------------
 linux-user/syscall.c                   |  8 ++++
 14 files changed, 78 insertions(+), 658 deletions(-)
 create mode 100644 linux-user/generic/target_structs.h

-- 
2.25.1



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

* [PATCH 1/2] linux-user/arm: Move target_oabi_flock64 out of target_structs.h
  2022-01-07  4:25 [PATCH 0/2] linux-user: Move target_struct.h generic definitions to generic/ Richard Henderson
@ 2022-01-07  4:25 ` Richard Henderson
  2022-01-08 17:57   ` Laurent Vivier
  2022-01-08 17:58   ` Laurent Vivier
  2022-01-07  4:26 ` [PATCH 2/2] linux-user: Move target_struct.h generic definitions to generic/ Richard Henderson
  2022-01-07 13:58 ` [PATCH 0/2] " Philippe Mathieu-Daudé
  2 siblings, 2 replies; 8+ messages in thread
From: Richard Henderson @ 2022-01-07  4:25 UTC (permalink / raw)
  To: qemu-devel; +Cc: gaosong, laurent

Place it next to copy_from/to_user_oabi_flock64, the only users,
inside the existing target-specific ifdef.  This leaves only
generic ipc structs in target_structs.h.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 linux-user/arm/target_structs.h | 8 --------
 linux-user/syscall.c            | 8 ++++++++
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/linux-user/arm/target_structs.h b/linux-user/arm/target_structs.h
index 339b070bf1..25bf8dd3a5 100644
--- a/linux-user/arm/target_structs.h
+++ b/linux-user/arm/target_structs.h
@@ -48,12 +48,4 @@ struct target_shmid_ds {
     abi_ulong __unused4;
     abi_ulong __unused5;
 };
-
-struct target_oabi_flock64 {
-    abi_short l_type;
-    abi_short l_whence;
-    abi_llong l_start;
-    abi_llong l_len;
-    abi_int   l_pid;
-} QEMU_PACKED;
 #endif
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index ce9d64896c..ca6e0b8fb0 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -6927,6 +6927,14 @@ typedef abi_long from_flock64_fn(struct flock64 *fl, abi_ulong target_addr);
 typedef abi_long to_flock64_fn(abi_ulong target_addr, const struct flock64 *fl);
 
 #if defined(TARGET_ARM) && TARGET_ABI_BITS == 32
+struct target_oabi_flock64 {
+    abi_short l_type;
+    abi_short l_whence;
+    abi_llong l_start;
+    abi_llong l_len;
+    abi_int   l_pid;
+} QEMU_PACKED;
+
 static inline abi_long copy_from_user_oabi_flock64(struct flock64 *fl,
                                                    abi_ulong target_flock_addr)
 {
-- 
2.25.1



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

* [PATCH 2/2] linux-user: Move target_struct.h generic definitions to generic/
  2022-01-07  4:25 [PATCH 0/2] linux-user: Move target_struct.h generic definitions to generic/ Richard Henderson
  2022-01-07  4:25 ` [PATCH 1/2] linux-user/arm: Move target_oabi_flock64 out of target_structs.h Richard Henderson
@ 2022-01-07  4:26 ` Richard Henderson
  2022-01-08 17:58   ` Laurent Vivier
  2022-01-08 18:03   ` Laurent Vivier
  2022-01-07 13:58 ` [PATCH 0/2] " Philippe Mathieu-Daudé
  2 siblings, 2 replies; 8+ messages in thread
From: Richard Henderson @ 2022-01-07  4:26 UTC (permalink / raw)
  To: qemu-devel; +Cc: gaosong, laurent

Most targets share the same generic ipc structure definitions.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 linux-user/aarch64/target_structs.h    | 59 +-------------------------
 linux-user/arm/target_structs.h        | 52 +----------------------
 linux-user/cris/target_structs.h       | 59 +-------------------------
 linux-user/generic/target_structs.h    | 58 +++++++++++++++++++++++++
 linux-user/hexagon/target_structs.h    | 55 +-----------------------
 linux-user/i386/target_structs.h       | 59 +-------------------------
 linux-user/m68k/target_structs.h       | 59 +-------------------------
 linux-user/microblaze/target_structs.h | 59 +-------------------------
 linux-user/nios2/target_structs.h      | 59 +-------------------------
 linux-user/openrisc/target_structs.h   | 59 +-------------------------
 linux-user/riscv/target_structs.h      | 47 +-------------------
 linux-user/sh4/target_structs.h        | 59 +-------------------------
 linux-user/x86_64/target_structs.h     | 36 +---------------
 13 files changed, 70 insertions(+), 650 deletions(-)
 create mode 100644 linux-user/generic/target_structs.h

diff --git a/linux-user/aarch64/target_structs.h b/linux-user/aarch64/target_structs.h
index 7c748344ca..3a06f373c3 100644
--- a/linux-user/aarch64/target_structs.h
+++ b/linux-user/aarch64/target_structs.h
@@ -1,58 +1 @@
-/*
- * ARM AArch64 specific structures for linux-user
- *
- * Copyright (c) 2013 Fabrice Bellard
- *
- * This 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.
- *
- * This 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 this library; if not, see <http://www.gnu.org/licenses/>.
- */
-#ifndef AARCH64_TARGET_STRUCTS_H
-#define AARCH64_TARGET_STRUCTS_H
-
-struct target_ipc_perm {
-    abi_int __key;                      /* Key.  */
-    abi_uint uid;                       /* Owner's user ID.  */
-    abi_uint gid;                       /* Owner's group ID.  */
-    abi_uint cuid;                      /* Creator's user ID.  */
-    abi_uint cgid;                      /* Creator's group ID.  */
-    abi_ushort mode;                    /* Read/write permission.  */
-    abi_ushort __pad1;
-    abi_ushort __seq;                   /* Sequence number.  */
-    abi_ushort __pad2;
-    abi_ulong __unused1;
-    abi_ulong __unused2;
-};
-
-struct target_shmid_ds {
-    struct target_ipc_perm shm_perm;    /* operation permission struct */
-    abi_long shm_segsz;                 /* size of segment in bytes */
-    abi_ulong shm_atime;                /* time of last shmat() */
-#if TARGET_ABI_BITS == 32
-    abi_ulong __unused1;
-#endif
-    abi_ulong shm_dtime;                /* time of last shmdt() */
-#if TARGET_ABI_BITS == 32
-    abi_ulong __unused2;
-#endif
-    abi_ulong shm_ctime;                /* time of last change by shmctl() */
-#if TARGET_ABI_BITS == 32
-    abi_ulong __unused3;
-#endif
-    abi_int shm_cpid;                   /* pid of creator */
-    abi_int shm_lpid;                   /* pid of last shmop */
-    abi_ulong shm_nattch;               /* number of current attaches */
-    abi_ulong __unused4;
-    abi_ulong __unused5;
-};
-
-#endif
+#include "../generic/target_structs.h"
diff --git a/linux-user/arm/target_structs.h b/linux-user/arm/target_structs.h
index 25bf8dd3a5..3a06f373c3 100644
--- a/linux-user/arm/target_structs.h
+++ b/linux-user/arm/target_structs.h
@@ -1,51 +1 @@
-/*
- * ARM specific structures for linux-user
- *
- * Copyright (c) 2013 Fabrice Bellard
- *
- * This 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.
- *
- * This 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 this library; if not, see <http://www.gnu.org/licenses/>.
- */
-#ifndef ARM_TARGET_STRUCTS_H
-#define ARM_TARGET_STRUCTS_H
-
-struct target_ipc_perm {
-    abi_int __key;                      /* Key.  */
-    abi_uint uid;                       /* Owner's user ID.  */
-    abi_uint gid;                       /* Owner's group ID.  */
-    abi_uint cuid;                      /* Creator's user ID.  */
-    abi_uint cgid;                      /* Creator's group ID.  */
-    abi_ushort mode;                    /* Read/write permission.  */
-    abi_ushort __pad1;
-    abi_ushort __seq;                   /* Sequence number.  */
-    abi_ushort __pad2;
-    abi_ulong __unused1;
-    abi_ulong __unused2;
-};
-
-struct target_shmid_ds {
-    struct target_ipc_perm shm_perm;    /* operation permission struct */
-    abi_long shm_segsz;                 /* size of segment in bytes */
-    abi_ulong shm_atime;                /* time of last shmat() */
-    abi_ulong __unused1;
-    abi_ulong shm_dtime;                /* time of last shmdt() */
-    abi_ulong __unused2;
-    abi_ulong shm_ctime;                /* time of last change by shmctl() */
-    abi_ulong __unused3;
-    abi_int shm_cpid;                   /* pid of creator */
-    abi_int shm_lpid;                   /* pid of last shmop */
-    abi_ulong shm_nattch;               /* number of current attaches */
-    abi_ulong __unused4;
-    abi_ulong __unused5;
-};
-#endif
+#include "../generic/target_structs.h"
diff --git a/linux-user/cris/target_structs.h b/linux-user/cris/target_structs.h
index f949d2331e..3a06f373c3 100644
--- a/linux-user/cris/target_structs.h
+++ b/linux-user/cris/target_structs.h
@@ -1,58 +1 @@
-/*
- * CRIS specific structures for linux-user
- *
- * Copyright (c) 2013 Fabrice Bellard
- *
- * This 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.
- *
- * This 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 this library; if not, see <http://www.gnu.org/licenses/>.
- */
-#ifndef CRIS_TARGET_STRUCTS_H
-#define CRIS_TARGET_STRUCTS_H
-
-struct target_ipc_perm {
-    abi_int __key;                      /* Key.  */
-    abi_uint uid;                       /* Owner's user ID.  */
-    abi_uint gid;                       /* Owner's group ID.  */
-    abi_uint cuid;                      /* Creator's user ID.  */
-    abi_uint cgid;                      /* Creator's group ID.  */
-    abi_ushort mode;                    /* Read/write permission.  */
-    abi_ushort __pad1;
-    abi_ushort __seq;                   /* Sequence number.  */
-    abi_ushort __pad2;
-    abi_ulong __unused1;
-    abi_ulong __unused2;
-};
-
-struct target_shmid_ds {
-    struct target_ipc_perm shm_perm;    /* operation permission struct */
-    abi_long shm_segsz;                 /* size of segment in bytes */
-    abi_ulong shm_atime;                /* time of last shmat() */
-#if TARGET_ABI_BITS == 32
-    abi_ulong __unused1;
-#endif
-    abi_ulong shm_dtime;                /* time of last shmdt() */
-#if TARGET_ABI_BITS == 32
-    abi_ulong __unused2;
-#endif
-    abi_ulong shm_ctime;                /* time of last change by shmctl() */
-#if TARGET_ABI_BITS == 32
-    abi_ulong __unused3;
-#endif
-    abi_int shm_cpid;                   /* pid of creator */
-    abi_int shm_lpid;                   /* pid of last shmop */
-    abi_ulong shm_nattch;               /* number of current attaches */
-    abi_ulong __unused4;
-    abi_ulong __unused5;
-};
-
-#endif
+#include "../generic/target_structs.h"
diff --git a/linux-user/generic/target_structs.h b/linux-user/generic/target_structs.h
new file mode 100644
index 0000000000..09ff858b6e
--- /dev/null
+++ b/linux-user/generic/target_structs.h
@@ -0,0 +1,58 @@
+/*
+ * Generic structures for linux-user
+ *
+ * Copyright (c) 2013 Fabrice Bellard
+ *
+ * This 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.
+ *
+ * This 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 this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef GENERIC_TARGET_STRUCTS_H
+#define GENERIC_TARGET_STRUCTS_H
+
+struct target_ipc_perm {
+    abi_int __key;                      /* Key.  */
+    abi_uint uid;                       /* Owner's user ID.  */
+    abi_uint gid;                       /* Owner's group ID.  */
+    abi_uint cuid;                      /* Creator's user ID.  */
+    abi_uint cgid;                      /* Creator's group ID.  */
+    abi_ushort mode;                    /* Read/write permission.  */
+    abi_ushort __pad1;
+    abi_ushort __seq;                   /* Sequence number.  */
+    abi_ushort __pad2;
+    abi_ulong __unused1;
+    abi_ulong __unused2;
+};
+
+struct target_shmid_ds {
+    struct target_ipc_perm shm_perm;    /* operation permission struct */
+    abi_long shm_segsz;                 /* size of segment in bytes */
+    abi_ulong shm_atime;                /* time of last shmat() */
+#if TARGET_ABI_BITS == 32
+    abi_ulong __unused1;
+#endif
+    abi_ulong shm_dtime;                /* time of last shmdt() */
+#if TARGET_ABI_BITS == 32
+    abi_ulong __unused2;
+#endif
+    abi_ulong shm_ctime;                /* time of last change by shmctl() */
+#if TARGET_ABI_BITS == 32
+    abi_ulong __unused3;
+#endif
+    abi_int shm_cpid;                   /* pid of creator */
+    abi_int shm_lpid;                   /* pid of last shmop */
+    abi_ulong shm_nattch;               /* number of current attaches */
+    abi_ulong __unused4;
+    abi_ulong __unused5;
+};
+
+#endif
diff --git a/linux-user/hexagon/target_structs.h b/linux-user/hexagon/target_structs.h
index c217d9442a..3a06f373c3 100644
--- a/linux-user/hexagon/target_structs.h
+++ b/linux-user/hexagon/target_structs.h
@@ -1,54 +1 @@
-/*
- *  Copyright(c) 2019-2021 Qualcomm Innovation Center, Inc. All Rights Reserved.
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program 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 General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-/*
- * Hexagon specific structures for linux-user
- */
-#ifndef HEXAGON_TARGET_STRUCTS_H
-#define HEXAGON_TARGET_STRUCTS_H
-
-struct target_ipc_perm {
-    abi_int __key;                      /* Key.  */
-    abi_uint uid;                       /* Owner's user ID.  */
-    abi_uint gid;                       /* Owner's group ID.  */
-    abi_uint cuid;                      /* Creator's user ID.  */
-    abi_uint cgid;                      /* Creator's group ID.  */
-    abi_ushort mode;                    /* Read/write permission.  */
-    abi_ushort __pad1;
-    abi_ushort __seq;                   /* Sequence number.  */
-    abi_ushort __pad2;
-    abi_ulong __unused1;
-    abi_ulong __unused2;
-};
-
-struct target_shmid_ds {
-    struct target_ipc_perm shm_perm;    /* operation permission struct */
-    abi_long shm_segsz;                 /* size of segment in bytes */
-    abi_ulong shm_atime;                /* time of last shmat() */
-    abi_ulong __unused1;
-    abi_ulong shm_dtime;                /* time of last shmdt() */
-    abi_ulong __unused2;
-    abi_ulong shm_ctime;                /* time of last change by shmctl() */
-    abi_ulong __unused3;
-    abi_int shm_cpid;                   /* pid of creator */
-    abi_int shm_lpid;                   /* pid of last shmop */
-    abi_ulong shm_nattch;               /* number of current attaches */
-    abi_ulong __unused4;
-    abi_ulong __unused5;
-};
-
-#endif
+#include "../generic/target_structs.h"
diff --git a/linux-user/i386/target_structs.h b/linux-user/i386/target_structs.h
index e22847fd20..3a06f373c3 100644
--- a/linux-user/i386/target_structs.h
+++ b/linux-user/i386/target_structs.h
@@ -1,58 +1 @@
-/*
- * i386 specific structures for linux-user
- *
- * Copyright (c) 2013 Fabrice Bellard
- *
- * This 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.
- *
- * This 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 this library; if not, see <http://www.gnu.org/licenses/>.
- */
-#ifndef I386_TARGET_STRUCTS_H
-#define I386_TARGET_STRUCTS_H
-
-struct target_ipc_perm {
-    abi_int __key;                      /* Key.  */
-    abi_uint uid;                       /* Owner's user ID.  */
-    abi_uint gid;                       /* Owner's group ID.  */
-    abi_uint cuid;                      /* Creator's user ID.  */
-    abi_uint cgid;                      /* Creator's group ID.  */
-    abi_ushort mode;                    /* Read/write permission.  */
-    abi_ushort __pad1;
-    abi_ushort __seq;                   /* Sequence number.  */
-    abi_ushort __pad2;
-    abi_ulong __unused1;
-    abi_ulong __unused2;
-};
-
-struct target_shmid_ds {
-    struct target_ipc_perm shm_perm;    /* operation permission struct */
-    abi_long shm_segsz;                 /* size of segment in bytes */
-    abi_ulong shm_atime;                /* time of last shmat() */
-#if TARGET_ABI_BITS == 32
-    abi_ulong __unused1;
-#endif
-    abi_ulong shm_dtime;                /* time of last shmdt() */
-#if TARGET_ABI_BITS == 32
-    abi_ulong __unused2;
-#endif
-    abi_ulong shm_ctime;                /* time of last change by shmctl() */
-#if TARGET_ABI_BITS == 32
-    abi_ulong __unused3;
-#endif
-    abi_int shm_cpid;                   /* pid of creator */
-    abi_int shm_lpid;                   /* pid of last shmop */
-    abi_ulong shm_nattch;               /* number of current attaches */
-    abi_ulong __unused4;
-    abi_ulong __unused5;
-};
-
-#endif
+#include "../generic/target_structs.h"
diff --git a/linux-user/m68k/target_structs.h b/linux-user/m68k/target_structs.h
index e373d481e1..3a06f373c3 100644
--- a/linux-user/m68k/target_structs.h
+++ b/linux-user/m68k/target_structs.h
@@ -1,58 +1 @@
-/*
- * m68k specific structures for linux-user
- *
- * Copyright (c) 2013 Fabrice Bellard
- *
- * This 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.
- *
- * This 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 this library; if not, see <http://www.gnu.org/licenses/>.
- */
-#ifndef M68K_TARGET_STRUCTS_H
-#define M68K_TARGET_STRUCTS_H
-
-struct target_ipc_perm {
-    abi_int __key;                      /* Key.  */
-    abi_uint uid;                       /* Owner's user ID.  */
-    abi_uint gid;                       /* Owner's group ID.  */
-    abi_uint cuid;                      /* Creator's user ID.  */
-    abi_uint cgid;                      /* Creator's group ID.  */
-    abi_ushort mode;                    /* Read/write permission.  */
-    abi_ushort __pad1;
-    abi_ushort __seq;                   /* Sequence number.  */
-    abi_ushort __pad2;
-    abi_ulong __unused1;
-    abi_ulong __unused2;
-};
-
-struct target_shmid_ds {
-    struct target_ipc_perm shm_perm;    /* operation permission struct */
-    abi_long shm_segsz;                 /* size of segment in bytes */
-    abi_ulong shm_atime;                /* time of last shmat() */
-#if TARGET_ABI_BITS == 32
-    abi_ulong __unused1;
-#endif
-    abi_ulong shm_dtime;                /* time of last shmdt() */
-#if TARGET_ABI_BITS == 32
-    abi_ulong __unused2;
-#endif
-    abi_ulong shm_ctime;                /* time of last change by shmctl() */
-#if TARGET_ABI_BITS == 32
-    abi_ulong __unused3;
-#endif
-    abi_int shm_cpid;                   /* pid of creator */
-    abi_int shm_lpid;                   /* pid of last shmop */
-    abi_ulong shm_nattch;               /* number of current attaches */
-    abi_ulong __unused4;
-    abi_ulong __unused5;
-};
-
-#endif
+#include "../generic/target_structs.h"
diff --git a/linux-user/microblaze/target_structs.h b/linux-user/microblaze/target_structs.h
index d08f6a53a8..3a06f373c3 100644
--- a/linux-user/microblaze/target_structs.h
+++ b/linux-user/microblaze/target_structs.h
@@ -1,58 +1 @@
-/*
- * MicroBlaze specific structures for linux-user
- *
- * Copyright (c) 2013 Fabrice Bellard
- *
- * This 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.
- *
- * This 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 this library; if not, see <http://www.gnu.org/licenses/>.
- */
-#ifndef MICROBLAZE_TARGET_STRUCTS_H
-#define MICROBLAZE_TARGET_STRUCTS_H
-
-struct target_ipc_perm {
-    abi_int __key;                      /* Key.  */
-    abi_uint uid;                       /* Owner's user ID.  */
-    abi_uint gid;                       /* Owner's group ID.  */
-    abi_uint cuid;                      /* Creator's user ID.  */
-    abi_uint cgid;                      /* Creator's group ID.  */
-    abi_ushort mode;                    /* Read/write permission.  */
-    abi_ushort __pad1;
-    abi_ushort __seq;                   /* Sequence number.  */
-    abi_ushort __pad2;
-    abi_ulong __unused1;
-    abi_ulong __unused2;
-};
-
-struct target_shmid_ds {
-    struct target_ipc_perm shm_perm;    /* operation permission struct */
-    abi_long shm_segsz;                 /* size of segment in bytes */
-    abi_ulong shm_atime;                /* time of last shmat() */
-#if TARGET_ABI_BITS == 32
-    abi_ulong __unused1;
-#endif
-    abi_ulong shm_dtime;                /* time of last shmdt() */
-#if TARGET_ABI_BITS == 32
-    abi_ulong __unused2;
-#endif
-    abi_ulong shm_ctime;                /* time of last change by shmctl() */
-#if TARGET_ABI_BITS == 32
-    abi_ulong __unused3;
-#endif
-    abi_int shm_cpid;                   /* pid of creator */
-    abi_int shm_lpid;                   /* pid of last shmop */
-    abi_ulong shm_nattch;               /* number of current attaches */
-    abi_ulong __unused4;
-    abi_ulong __unused5;
-};
-
-#endif
+#include "../generic/target_structs.h"
diff --git a/linux-user/nios2/target_structs.h b/linux-user/nios2/target_structs.h
index daa2886f98..3a06f373c3 100644
--- a/linux-user/nios2/target_structs.h
+++ b/linux-user/nios2/target_structs.h
@@ -1,58 +1 @@
-/*
- * Nios2 specific structures for linux-user
- *
- * Copyright (c) 2016 Marek Vasut <marex@denx.de>
- *
- * This 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.
- *
- * This 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 this library; if not, see <http://www.gnu.org/licenses/>.
- */
-#ifndef NIOS2_TARGET_STRUCTS_H
-#define NIOS2_TARGET_STRUCTS_H
-
-struct target_ipc_perm {
-    abi_int __key;                      /* Key.  */
-    abi_uint uid;                       /* Owner's user ID.  */
-    abi_uint gid;                       /* Owner's group ID.  */
-    abi_uint cuid;                      /* Creator's user ID.  */
-    abi_uint cgid;                      /* Creator's group ID.  */
-    abi_ushort mode;                    /* Read/write permission.  */
-    abi_ushort __pad1;
-    abi_ushort __seq;                   /* Sequence number.  */
-    abi_ushort __pad2;
-    abi_ulong __unused1;
-    abi_ulong __unused2;
-};
-
-struct target_shmid_ds {
-    struct target_ipc_perm shm_perm;    /* operation permission struct */
-    abi_long shm_segsz;                 /* size of segment in bytes */
-    abi_ulong shm_atime;                /* time of last shmat() */
-#if TARGET_ABI_BITS == 32
-    abi_ulong __unused1;
-#endif
-    abi_ulong shm_dtime;                /* time of last shmdt() */
-#if TARGET_ABI_BITS == 32
-    abi_ulong __unused2;
-#endif
-    abi_ulong shm_ctime;                /* time of last change by shmctl() */
-#if TARGET_ABI_BITS == 32
-    abi_ulong __unused3;
-#endif
-    abi_int shm_cpid;                   /* pid of creator */
-    abi_int shm_lpid;                   /* pid of last shmop */
-    abi_ulong shm_nattch;               /* number of current attaches */
-    abi_ulong __unused4;
-    abi_ulong __unused5;
-};
-
-#endif
+#include "../generic/target_structs.h"
diff --git a/linux-user/openrisc/target_structs.h b/linux-user/openrisc/target_structs.h
index e98e2bc799..3a06f373c3 100644
--- a/linux-user/openrisc/target_structs.h
+++ b/linux-user/openrisc/target_structs.h
@@ -1,58 +1 @@
-/*
- * OpenRISC specific structures for linux-user
- *
- * Copyright (c) 2013 Fabrice Bellard
- *
- * This 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.
- *
- * This 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 this library; if not, see <http://www.gnu.org/licenses/>.
- */
-#ifndef OPENRISC_TARGET_STRUCTS_H
-#define OPENRISC_TARGET_STRUCTS_H
-
-struct target_ipc_perm {
-    abi_int __key;                      /* Key.  */
-    abi_uint uid;                       /* Owner's user ID.  */
-    abi_uint gid;                       /* Owner's group ID.  */
-    abi_uint cuid;                      /* Creator's user ID.  */
-    abi_uint cgid;                      /* Creator's group ID.  */
-    abi_ushort mode;                    /* Read/write permission.  */
-    abi_ushort __pad1;
-    abi_ushort __seq;                   /* Sequence number.  */
-    abi_ushort __pad2;
-    abi_ulong __unused1;
-    abi_ulong __unused2;
-};
-
-struct target_shmid_ds {
-    struct target_ipc_perm shm_perm;    /* operation permission struct */
-    abi_long shm_segsz;                 /* size of segment in bytes */
-    abi_ulong shm_atime;                /* time of last shmat() */
-#if TARGET_ABI_BITS == 32
-    abi_ulong __unused1;
-#endif
-    abi_ulong shm_dtime;                /* time of last shmdt() */
-#if TARGET_ABI_BITS == 32
-    abi_ulong __unused2;
-#endif
-    abi_ulong shm_ctime;                /* time of last change by shmctl() */
-#if TARGET_ABI_BITS == 32
-    abi_ulong __unused3;
-#endif
-    abi_int shm_cpid;                   /* pid of creator */
-    abi_int shm_lpid;                   /* pid of last shmop */
-    abi_ulong shm_nattch;               /* number of current attaches */
-    abi_ulong __unused4;
-    abi_ulong __unused5;
-};
-
-#endif
+#include "../generic/target_structs.h"
diff --git a/linux-user/riscv/target_structs.h b/linux-user/riscv/target_structs.h
index ea3e5ed17e..3a06f373c3 100644
--- a/linux-user/riscv/target_structs.h
+++ b/linux-user/riscv/target_structs.h
@@ -1,46 +1 @@
-/*
- * RISC-V specific structures for linux-user
- *
- * This is a copy of ../aarch64/target_structs.h atm.
- *
- */
-#ifndef RISCV_TARGET_STRUCTS_H
-#define RISCV_TARGET_STRUCTS_H
-
-struct target_ipc_perm {
-    abi_int __key;                      /* Key.  */
-    abi_uint uid;                       /* Owner's user ID.  */
-    abi_uint gid;                       /* Owner's group ID.  */
-    abi_uint cuid;                      /* Creator's user ID.  */
-    abi_uint cgid;                      /* Creator's group ID.  */
-    abi_ushort mode;                    /* Read/write permission.  */
-    abi_ushort __pad1;
-    abi_ushort __seq;                   /* Sequence number.  */
-    abi_ushort __pad2;
-    abi_ulong __unused1;
-    abi_ulong __unused2;
-};
-
-struct target_shmid_ds {
-    struct target_ipc_perm shm_perm;    /* operation permission struct */
-    abi_long shm_segsz;                 /* size of segment in bytes */
-    abi_ulong shm_atime;                /* time of last shmat() */
-#if TARGET_ABI_BITS == 32
-    abi_ulong __unused1;
-#endif
-    abi_ulong shm_dtime;                /* time of last shmdt() */
-#if TARGET_ABI_BITS == 32
-    abi_ulong __unused2;
-#endif
-    abi_ulong shm_ctime;                /* time of last change by shmctl() */
-#if TARGET_ABI_BITS == 32
-    abi_ulong __unused3;
-#endif
-    abi_int shm_cpid;                   /* pid of creator */
-    abi_int shm_lpid;                   /* pid of last shmop */
-    abi_ulong shm_nattch;               /* number of current attaches */
-    abi_ulong __unused4;
-    abi_ulong __unused5;
-};
-
-#endif
+#include "../generic/target_structs.h"
diff --git a/linux-user/sh4/target_structs.h b/linux-user/sh4/target_structs.h
index 00ac39478b..3a06f373c3 100644
--- a/linux-user/sh4/target_structs.h
+++ b/linux-user/sh4/target_structs.h
@@ -1,58 +1 @@
-/*
- * SH4 specific structures for linux-user
- *
- * Copyright (c) 2013 Fabrice Bellard
- *
- * This 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.
- *
- * This 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 this library; if not, see <http://www.gnu.org/licenses/>.
- */
-#ifndef SH4_TARGET_STRUCTS_H
-#define SH4_TARGET_STRUCTS_H
-
-struct target_ipc_perm {
-    abi_int __key;                      /* Key.  */
-    abi_uint uid;                       /* Owner's user ID.  */
-    abi_uint gid;                       /* Owner's group ID.  */
-    abi_uint cuid;                      /* Creator's user ID.  */
-    abi_uint cgid;                      /* Creator's group ID.  */
-    abi_ushort mode;                    /* Read/write permission.  */
-    abi_ushort __pad1;
-    abi_ushort __seq;                   /* Sequence number.  */
-    abi_ushort __pad2;
-    abi_ulong __unused1;
-    abi_ulong __unused2;
-};
-
-struct target_shmid_ds {
-    struct target_ipc_perm shm_perm;    /* operation permission struct */
-    abi_long shm_segsz;                 /* size of segment in bytes */
-    abi_ulong shm_atime;                /* time of last shmat() */
-#if TARGET_ABI_BITS == 32
-    abi_ulong __unused1;
-#endif
-    abi_ulong shm_dtime;                /* time of last shmdt() */
-#if TARGET_ABI_BITS == 32
-    abi_ulong __unused2;
-#endif
-    abi_ulong shm_ctime;                /* time of last change by shmctl() */
-#if TARGET_ABI_BITS == 32
-    abi_ulong __unused3;
-#endif
-    abi_int shm_cpid;                   /* pid of creator */
-    abi_int shm_lpid;                   /* pid of last shmop */
-    abi_ulong shm_nattch;               /* number of current attaches */
-    abi_ulong __unused4;
-    abi_ulong __unused5;
-};
-
-#endif
+#include "../generic/target_structs.h"
diff --git a/linux-user/x86_64/target_structs.h b/linux-user/x86_64/target_structs.h
index ce367b253b..f1181383c4 100644
--- a/linux-user/x86_64/target_structs.h
+++ b/linux-user/x86_64/target_structs.h
@@ -19,41 +19,7 @@
 #ifndef X86_64_TARGET_STRUCTS_H
 #define X86_64_TARGET_STRUCTS_H
 
-struct target_ipc_perm {
-    abi_int __key;                      /* Key.  */
-    abi_uint uid;                       /* Owner's user ID.  */
-    abi_uint gid;                       /* Owner's group ID.  */
-    abi_uint cuid;                      /* Creator's user ID.  */
-    abi_uint cgid;                      /* Creator's group ID.  */
-    abi_ushort mode;                    /* Read/write permission.  */
-    abi_ushort __pad1;
-    abi_ushort __seq;                   /* Sequence number.  */
-    abi_ushort __pad2;
-    abi_ulong __unused1;
-    abi_ulong __unused2;
-};
-
-struct target_shmid_ds {
-    struct target_ipc_perm shm_perm;    /* operation permission struct */
-    abi_long shm_segsz;                 /* size of segment in bytes */
-    abi_ulong shm_atime;                /* time of last shmat() */
-#if TARGET_ABI_BITS == 32
-    abi_ulong __unused1;
-#endif
-    abi_ulong shm_dtime;                /* time of last shmdt() */
-#if TARGET_ABI_BITS == 32
-    abi_ulong __unused2;
-#endif
-    abi_ulong shm_ctime;                /* time of last change by shmctl() */
-#if TARGET_ABI_BITS == 32
-    abi_ulong __unused3;
-#endif
-    abi_int shm_cpid;                   /* pid of creator */
-    abi_int shm_lpid;                   /* pid of last shmop */
-    abi_ulong shm_nattch;               /* number of current attaches */
-    abi_ulong __unused4;
-    abi_ulong __unused5;
-};
+#include "../generic/target_structs.h"
 
 /* The x86 definition differs from the generic one in that the
  * two padding fields exist whether the ABI is 32 bits or 64 bits.
-- 
2.25.1



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

* Re: [PATCH 0/2] linux-user: Move target_struct.h generic definitions to generic/
  2022-01-07  4:25 [PATCH 0/2] linux-user: Move target_struct.h generic definitions to generic/ Richard Henderson
  2022-01-07  4:25 ` [PATCH 1/2] linux-user/arm: Move target_oabi_flock64 out of target_structs.h Richard Henderson
  2022-01-07  4:26 ` [PATCH 2/2] linux-user: Move target_struct.h generic definitions to generic/ Richard Henderson
@ 2022-01-07 13:58 ` Philippe Mathieu-Daudé
  2 siblings, 0 replies; 8+ messages in thread
From: Philippe Mathieu-Daudé @ 2022-01-07 13:58 UTC (permalink / raw)
  To: Richard Henderson, qemu-devel; +Cc: gaosong, laurent

On 7/1/22 05:25, Richard Henderson wrote:
> I noticed this while reviewing loongarch64.
> 
> r~
> 
> Richard Henderson (2):
>    linux-user/arm: Move target_oabi_flock64 out of target_structs.h
>    linux-user: Move target_struct.h generic definitions to generic/

Series:
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>



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

* Re: [PATCH 1/2] linux-user/arm: Move target_oabi_flock64 out of target_structs.h
  2022-01-07  4:25 ` [PATCH 1/2] linux-user/arm: Move target_oabi_flock64 out of target_structs.h Richard Henderson
@ 2022-01-08 17:57   ` Laurent Vivier
  2022-01-08 17:58   ` Laurent Vivier
  1 sibling, 0 replies; 8+ messages in thread
From: Laurent Vivier @ 2022-01-08 17:57 UTC (permalink / raw)
  To: Richard Henderson, qemu-devel; +Cc: gaosong

Le 07/01/2022 à 05:25, Richard Henderson a écrit :
> Place it next to copy_from/to_user_oabi_flock64, the only users,
> inside the existing target-specific ifdef.  This leaves only
> generic ipc structs in target_structs.h.
> 
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>   linux-user/arm/target_structs.h | 8 --------
>   linux-user/syscall.c            | 8 ++++++++
>   2 files changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/linux-user/arm/target_structs.h b/linux-user/arm/target_structs.h
> index 339b070bf1..25bf8dd3a5 100644
> --- a/linux-user/arm/target_structs.h
> +++ b/linux-user/arm/target_structs.h
> @@ -48,12 +48,4 @@ struct target_shmid_ds {
>       abi_ulong __unused4;
>       abi_ulong __unused5;
>   };
> -
> -struct target_oabi_flock64 {
> -    abi_short l_type;
> -    abi_short l_whence;
> -    abi_llong l_start;
> -    abi_llong l_len;
> -    abi_int   l_pid;
> -} QEMU_PACKED;
>   #endif
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index ce9d64896c..ca6e0b8fb0 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -6927,6 +6927,14 @@ typedef abi_long from_flock64_fn(struct flock64 *fl, abi_ulong target_addr);
>   typedef abi_long to_flock64_fn(abi_ulong target_addr, const struct flock64 *fl);
>   
>   #if defined(TARGET_ARM) && TARGET_ABI_BITS == 32
> +struct target_oabi_flock64 {
> +    abi_short l_type;
> +    abi_short l_whence;
> +    abi_llong l_start;
> +    abi_llong l_len;
> +    abi_int   l_pid;
> +} QEMU_PACKED;
> +
>   static inline abi_long copy_from_user_oabi_flock64(struct flock64 *fl,
>                                                      abi_ulong target_flock_addr)
>   {

Applied to my linux-user-for-7.0 branch.

Thanks,
Laurent



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

* Re: [PATCH 2/2] linux-user: Move target_struct.h generic definitions to generic/
  2022-01-07  4:26 ` [PATCH 2/2] linux-user: Move target_struct.h generic definitions to generic/ Richard Henderson
@ 2022-01-08 17:58   ` Laurent Vivier
  2022-01-08 18:03   ` Laurent Vivier
  1 sibling, 0 replies; 8+ messages in thread
From: Laurent Vivier @ 2022-01-08 17:58 UTC (permalink / raw)
  To: Richard Henderson, qemu-devel; +Cc: gaosong

Le 07/01/2022 à 05:26, Richard Henderson a écrit :
> Most targets share the same generic ipc structure definitions.
> 
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>   linux-user/aarch64/target_structs.h    | 59 +-------------------------
>   linux-user/arm/target_structs.h        | 52 +----------------------
>   linux-user/cris/target_structs.h       | 59 +-------------------------
>   linux-user/generic/target_structs.h    | 58 +++++++++++++++++++++++++
>   linux-user/hexagon/target_structs.h    | 55 +-----------------------
>   linux-user/i386/target_structs.h       | 59 +-------------------------
>   linux-user/m68k/target_structs.h       | 59 +-------------------------
>   linux-user/microblaze/target_structs.h | 59 +-------------------------
>   linux-user/nios2/target_structs.h      | 59 +-------------------------
>   linux-user/openrisc/target_structs.h   | 59 +-------------------------
>   linux-user/riscv/target_structs.h      | 47 +-------------------
>   linux-user/sh4/target_structs.h        | 59 +-------------------------
>   linux-user/x86_64/target_structs.h     | 36 +---------------
>   13 files changed, 70 insertions(+), 650 deletions(-)
>   create mode 100644 linux-user/generic/target_structs.h
> 
> diff --git a/linux-user/aarch64/target_structs.h b/linux-user/aarch64/target_structs.h
> index 7c748344ca..3a06f373c3 100644
> --- a/linux-user/aarch64/target_structs.h
> +++ b/linux-user/aarch64/target_structs.h
> @@ -1,58 +1 @@
> -/*
> - * ARM AArch64 specific structures for linux-user
> - *
> - * Copyright (c) 2013 Fabrice Bellard
> - *
> - * This 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.
> - *
> - * This 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 this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef AARCH64_TARGET_STRUCTS_H
> -#define AARCH64_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> -    abi_int __key;                      /* Key.  */
> -    abi_uint uid;                       /* Owner's user ID.  */
> -    abi_uint gid;                       /* Owner's group ID.  */
> -    abi_uint cuid;                      /* Creator's user ID.  */
> -    abi_uint cgid;                      /* Creator's group ID.  */
> -    abi_ushort mode;                    /* Read/write permission.  */
> -    abi_ushort __pad1;
> -    abi_ushort __seq;                   /* Sequence number.  */
> -    abi_ushort __pad2;
> -    abi_ulong __unused1;
> -    abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> -    struct target_ipc_perm shm_perm;    /* operation permission struct */
> -    abi_long shm_segsz;                 /* size of segment in bytes */
> -    abi_ulong shm_atime;                /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused1;
> -#endif
> -    abi_ulong shm_dtime;                /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused2;
> -#endif
> -    abi_ulong shm_ctime;                /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused3;
> -#endif
> -    abi_int shm_cpid;                   /* pid of creator */
> -    abi_int shm_lpid;                   /* pid of last shmop */
> -    abi_ulong shm_nattch;               /* number of current attaches */
> -    abi_ulong __unused4;
> -    abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/arm/target_structs.h b/linux-user/arm/target_structs.h
> index 25bf8dd3a5..3a06f373c3 100644
> --- a/linux-user/arm/target_structs.h
> +++ b/linux-user/arm/target_structs.h
> @@ -1,51 +1 @@
> -/*
> - * ARM specific structures for linux-user
> - *
> - * Copyright (c) 2013 Fabrice Bellard
> - *
> - * This 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.
> - *
> - * This 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 this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef ARM_TARGET_STRUCTS_H
> -#define ARM_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> -    abi_int __key;                      /* Key.  */
> -    abi_uint uid;                       /* Owner's user ID.  */
> -    abi_uint gid;                       /* Owner's group ID.  */
> -    abi_uint cuid;                      /* Creator's user ID.  */
> -    abi_uint cgid;                      /* Creator's group ID.  */
> -    abi_ushort mode;                    /* Read/write permission.  */
> -    abi_ushort __pad1;
> -    abi_ushort __seq;                   /* Sequence number.  */
> -    abi_ushort __pad2;
> -    abi_ulong __unused1;
> -    abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> -    struct target_ipc_perm shm_perm;    /* operation permission struct */
> -    abi_long shm_segsz;                 /* size of segment in bytes */
> -    abi_ulong shm_atime;                /* time of last shmat() */
> -    abi_ulong __unused1;
> -    abi_ulong shm_dtime;                /* time of last shmdt() */
> -    abi_ulong __unused2;
> -    abi_ulong shm_ctime;                /* time of last change by shmctl() */
> -    abi_ulong __unused3;
> -    abi_int shm_cpid;                   /* pid of creator */
> -    abi_int shm_lpid;                   /* pid of last shmop */
> -    abi_ulong shm_nattch;               /* number of current attaches */
> -    abi_ulong __unused4;
> -    abi_ulong __unused5;
> -};
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/cris/target_structs.h b/linux-user/cris/target_structs.h
> index f949d2331e..3a06f373c3 100644
> --- a/linux-user/cris/target_structs.h
> +++ b/linux-user/cris/target_structs.h
> @@ -1,58 +1 @@
> -/*
> - * CRIS specific structures for linux-user
> - *
> - * Copyright (c) 2013 Fabrice Bellard
> - *
> - * This 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.
> - *
> - * This 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 this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef CRIS_TARGET_STRUCTS_H
> -#define CRIS_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> -    abi_int __key;                      /* Key.  */
> -    abi_uint uid;                       /* Owner's user ID.  */
> -    abi_uint gid;                       /* Owner's group ID.  */
> -    abi_uint cuid;                      /* Creator's user ID.  */
> -    abi_uint cgid;                      /* Creator's group ID.  */
> -    abi_ushort mode;                    /* Read/write permission.  */
> -    abi_ushort __pad1;
> -    abi_ushort __seq;                   /* Sequence number.  */
> -    abi_ushort __pad2;
> -    abi_ulong __unused1;
> -    abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> -    struct target_ipc_perm shm_perm;    /* operation permission struct */
> -    abi_long shm_segsz;                 /* size of segment in bytes */
> -    abi_ulong shm_atime;                /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused1;
> -#endif
> -    abi_ulong shm_dtime;                /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused2;
> -#endif
> -    abi_ulong shm_ctime;                /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused3;
> -#endif
> -    abi_int shm_cpid;                   /* pid of creator */
> -    abi_int shm_lpid;                   /* pid of last shmop */
> -    abi_ulong shm_nattch;               /* number of current attaches */
> -    abi_ulong __unused4;
> -    abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/generic/target_structs.h b/linux-user/generic/target_structs.h
> new file mode 100644
> index 0000000000..09ff858b6e
> --- /dev/null
> +++ b/linux-user/generic/target_structs.h
> @@ -0,0 +1,58 @@
> +/*
> + * Generic structures for linux-user
> + *
> + * Copyright (c) 2013 Fabrice Bellard
> + *
> + * This 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.
> + *
> + * This 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 this library; if not, see <http://www.gnu.org/licenses/>.
> + */
> +#ifndef GENERIC_TARGET_STRUCTS_H
> +#define GENERIC_TARGET_STRUCTS_H
> +
> +struct target_ipc_perm {
> +    abi_int __key;                      /* Key.  */
> +    abi_uint uid;                       /* Owner's user ID.  */
> +    abi_uint gid;                       /* Owner's group ID.  */
> +    abi_uint cuid;                      /* Creator's user ID.  */
> +    abi_uint cgid;                      /* Creator's group ID.  */
> +    abi_ushort mode;                    /* Read/write permission.  */
> +    abi_ushort __pad1;
> +    abi_ushort __seq;                   /* Sequence number.  */
> +    abi_ushort __pad2;
> +    abi_ulong __unused1;
> +    abi_ulong __unused2;
> +};
> +
> +struct target_shmid_ds {
> +    struct target_ipc_perm shm_perm;    /* operation permission struct */
> +    abi_long shm_segsz;                 /* size of segment in bytes */
> +    abi_ulong shm_atime;                /* time of last shmat() */
> +#if TARGET_ABI_BITS == 32
> +    abi_ulong __unused1;
> +#endif
> +    abi_ulong shm_dtime;                /* time of last shmdt() */
> +#if TARGET_ABI_BITS == 32
> +    abi_ulong __unused2;
> +#endif
> +    abi_ulong shm_ctime;                /* time of last change by shmctl() */
> +#if TARGET_ABI_BITS == 32
> +    abi_ulong __unused3;
> +#endif
> +    abi_int shm_cpid;                   /* pid of creator */
> +    abi_int shm_lpid;                   /* pid of last shmop */
> +    abi_ulong shm_nattch;               /* number of current attaches */
> +    abi_ulong __unused4;
> +    abi_ulong __unused5;
> +};
> +
> +#endif
> diff --git a/linux-user/hexagon/target_structs.h b/linux-user/hexagon/target_structs.h
> index c217d9442a..3a06f373c3 100644
> --- a/linux-user/hexagon/target_structs.h
> +++ b/linux-user/hexagon/target_structs.h
> @@ -1,54 +1 @@
> -/*
> - *  Copyright(c) 2019-2021 Qualcomm Innovation Center, Inc. All Rights Reserved.
> - *
> - *  This program is free software; you can redistribute it and/or modify
> - *  it under the terms of the GNU General Public License as published by
> - *  the Free Software Foundation; either version 2 of the License, or
> - *  (at your option) any later version.
> - *
> - *  This program 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 General Public License for more details.
> - *
> - *  You should have received a copy of the GNU General Public License
> - *  along with this program; if not, see <http://www.gnu.org/licenses/>.
> - */
> -
> -/*
> - * Hexagon specific structures for linux-user
> - */
> -#ifndef HEXAGON_TARGET_STRUCTS_H
> -#define HEXAGON_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> -    abi_int __key;                      /* Key.  */
> -    abi_uint uid;                       /* Owner's user ID.  */
> -    abi_uint gid;                       /* Owner's group ID.  */
> -    abi_uint cuid;                      /* Creator's user ID.  */
> -    abi_uint cgid;                      /* Creator's group ID.  */
> -    abi_ushort mode;                    /* Read/write permission.  */
> -    abi_ushort __pad1;
> -    abi_ushort __seq;                   /* Sequence number.  */
> -    abi_ushort __pad2;
> -    abi_ulong __unused1;
> -    abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> -    struct target_ipc_perm shm_perm;    /* operation permission struct */
> -    abi_long shm_segsz;                 /* size of segment in bytes */
> -    abi_ulong shm_atime;                /* time of last shmat() */
> -    abi_ulong __unused1;
> -    abi_ulong shm_dtime;                /* time of last shmdt() */
> -    abi_ulong __unused2;
> -    abi_ulong shm_ctime;                /* time of last change by shmctl() */
> -    abi_ulong __unused3;
> -    abi_int shm_cpid;                   /* pid of creator */
> -    abi_int shm_lpid;                   /* pid of last shmop */
> -    abi_ulong shm_nattch;               /* number of current attaches */
> -    abi_ulong __unused4;
> -    abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/i386/target_structs.h b/linux-user/i386/target_structs.h
> index e22847fd20..3a06f373c3 100644
> --- a/linux-user/i386/target_structs.h
> +++ b/linux-user/i386/target_structs.h
> @@ -1,58 +1 @@
> -/*
> - * i386 specific structures for linux-user
> - *
> - * Copyright (c) 2013 Fabrice Bellard
> - *
> - * This 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.
> - *
> - * This 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 this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef I386_TARGET_STRUCTS_H
> -#define I386_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> -    abi_int __key;                      /* Key.  */
> -    abi_uint uid;                       /* Owner's user ID.  */
> -    abi_uint gid;                       /* Owner's group ID.  */
> -    abi_uint cuid;                      /* Creator's user ID.  */
> -    abi_uint cgid;                      /* Creator's group ID.  */
> -    abi_ushort mode;                    /* Read/write permission.  */
> -    abi_ushort __pad1;
> -    abi_ushort __seq;                   /* Sequence number.  */
> -    abi_ushort __pad2;
> -    abi_ulong __unused1;
> -    abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> -    struct target_ipc_perm shm_perm;    /* operation permission struct */
> -    abi_long shm_segsz;                 /* size of segment in bytes */
> -    abi_ulong shm_atime;                /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused1;
> -#endif
> -    abi_ulong shm_dtime;                /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused2;
> -#endif
> -    abi_ulong shm_ctime;                /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused3;
> -#endif
> -    abi_int shm_cpid;                   /* pid of creator */
> -    abi_int shm_lpid;                   /* pid of last shmop */
> -    abi_ulong shm_nattch;               /* number of current attaches */
> -    abi_ulong __unused4;
> -    abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/m68k/target_structs.h b/linux-user/m68k/target_structs.h
> index e373d481e1..3a06f373c3 100644
> --- a/linux-user/m68k/target_structs.h
> +++ b/linux-user/m68k/target_structs.h
> @@ -1,58 +1 @@
> -/*
> - * m68k specific structures for linux-user
> - *
> - * Copyright (c) 2013 Fabrice Bellard
> - *
> - * This 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.
> - *
> - * This 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 this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef M68K_TARGET_STRUCTS_H
> -#define M68K_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> -    abi_int __key;                      /* Key.  */
> -    abi_uint uid;                       /* Owner's user ID.  */
> -    abi_uint gid;                       /* Owner's group ID.  */
> -    abi_uint cuid;                      /* Creator's user ID.  */
> -    abi_uint cgid;                      /* Creator's group ID.  */
> -    abi_ushort mode;                    /* Read/write permission.  */
> -    abi_ushort __pad1;
> -    abi_ushort __seq;                   /* Sequence number.  */
> -    abi_ushort __pad2;
> -    abi_ulong __unused1;
> -    abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> -    struct target_ipc_perm shm_perm;    /* operation permission struct */
> -    abi_long shm_segsz;                 /* size of segment in bytes */
> -    abi_ulong shm_atime;                /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused1;
> -#endif
> -    abi_ulong shm_dtime;                /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused2;
> -#endif
> -    abi_ulong shm_ctime;                /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused3;
> -#endif
> -    abi_int shm_cpid;                   /* pid of creator */
> -    abi_int shm_lpid;                   /* pid of last shmop */
> -    abi_ulong shm_nattch;               /* number of current attaches */
> -    abi_ulong __unused4;
> -    abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/microblaze/target_structs.h b/linux-user/microblaze/target_structs.h
> index d08f6a53a8..3a06f373c3 100644
> --- a/linux-user/microblaze/target_structs.h
> +++ b/linux-user/microblaze/target_structs.h
> @@ -1,58 +1 @@
> -/*
> - * MicroBlaze specific structures for linux-user
> - *
> - * Copyright (c) 2013 Fabrice Bellard
> - *
> - * This 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.
> - *
> - * This 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 this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef MICROBLAZE_TARGET_STRUCTS_H
> -#define MICROBLAZE_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> -    abi_int __key;                      /* Key.  */
> -    abi_uint uid;                       /* Owner's user ID.  */
> -    abi_uint gid;                       /* Owner's group ID.  */
> -    abi_uint cuid;                      /* Creator's user ID.  */
> -    abi_uint cgid;                      /* Creator's group ID.  */
> -    abi_ushort mode;                    /* Read/write permission.  */
> -    abi_ushort __pad1;
> -    abi_ushort __seq;                   /* Sequence number.  */
> -    abi_ushort __pad2;
> -    abi_ulong __unused1;
> -    abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> -    struct target_ipc_perm shm_perm;    /* operation permission struct */
> -    abi_long shm_segsz;                 /* size of segment in bytes */
> -    abi_ulong shm_atime;                /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused1;
> -#endif
> -    abi_ulong shm_dtime;                /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused2;
> -#endif
> -    abi_ulong shm_ctime;                /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused3;
> -#endif
> -    abi_int shm_cpid;                   /* pid of creator */
> -    abi_int shm_lpid;                   /* pid of last shmop */
> -    abi_ulong shm_nattch;               /* number of current attaches */
> -    abi_ulong __unused4;
> -    abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/nios2/target_structs.h b/linux-user/nios2/target_structs.h
> index daa2886f98..3a06f373c3 100644
> --- a/linux-user/nios2/target_structs.h
> +++ b/linux-user/nios2/target_structs.h
> @@ -1,58 +1 @@
> -/*
> - * Nios2 specific structures for linux-user
> - *
> - * Copyright (c) 2016 Marek Vasut <marex@denx.de>
> - *
> - * This 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.
> - *
> - * This 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 this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef NIOS2_TARGET_STRUCTS_H
> -#define NIOS2_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> -    abi_int __key;                      /* Key.  */
> -    abi_uint uid;                       /* Owner's user ID.  */
> -    abi_uint gid;                       /* Owner's group ID.  */
> -    abi_uint cuid;                      /* Creator's user ID.  */
> -    abi_uint cgid;                      /* Creator's group ID.  */
> -    abi_ushort mode;                    /* Read/write permission.  */
> -    abi_ushort __pad1;
> -    abi_ushort __seq;                   /* Sequence number.  */
> -    abi_ushort __pad2;
> -    abi_ulong __unused1;
> -    abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> -    struct target_ipc_perm shm_perm;    /* operation permission struct */
> -    abi_long shm_segsz;                 /* size of segment in bytes */
> -    abi_ulong shm_atime;                /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused1;
> -#endif
> -    abi_ulong shm_dtime;                /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused2;
> -#endif
> -    abi_ulong shm_ctime;                /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused3;
> -#endif
> -    abi_int shm_cpid;                   /* pid of creator */
> -    abi_int shm_lpid;                   /* pid of last shmop */
> -    abi_ulong shm_nattch;               /* number of current attaches */
> -    abi_ulong __unused4;
> -    abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/openrisc/target_structs.h b/linux-user/openrisc/target_structs.h
> index e98e2bc799..3a06f373c3 100644
> --- a/linux-user/openrisc/target_structs.h
> +++ b/linux-user/openrisc/target_structs.h
> @@ -1,58 +1 @@
> -/*
> - * OpenRISC specific structures for linux-user
> - *
> - * Copyright (c) 2013 Fabrice Bellard
> - *
> - * This 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.
> - *
> - * This 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 this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef OPENRISC_TARGET_STRUCTS_H
> -#define OPENRISC_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> -    abi_int __key;                      /* Key.  */
> -    abi_uint uid;                       /* Owner's user ID.  */
> -    abi_uint gid;                       /* Owner's group ID.  */
> -    abi_uint cuid;                      /* Creator's user ID.  */
> -    abi_uint cgid;                      /* Creator's group ID.  */
> -    abi_ushort mode;                    /* Read/write permission.  */
> -    abi_ushort __pad1;
> -    abi_ushort __seq;                   /* Sequence number.  */
> -    abi_ushort __pad2;
> -    abi_ulong __unused1;
> -    abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> -    struct target_ipc_perm shm_perm;    /* operation permission struct */
> -    abi_long shm_segsz;                 /* size of segment in bytes */
> -    abi_ulong shm_atime;                /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused1;
> -#endif
> -    abi_ulong shm_dtime;                /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused2;
> -#endif
> -    abi_ulong shm_ctime;                /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused3;
> -#endif
> -    abi_int shm_cpid;                   /* pid of creator */
> -    abi_int shm_lpid;                   /* pid of last shmop */
> -    abi_ulong shm_nattch;               /* number of current attaches */
> -    abi_ulong __unused4;
> -    abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/riscv/target_structs.h b/linux-user/riscv/target_structs.h
> index ea3e5ed17e..3a06f373c3 100644
> --- a/linux-user/riscv/target_structs.h
> +++ b/linux-user/riscv/target_structs.h
> @@ -1,46 +1 @@
> -/*
> - * RISC-V specific structures for linux-user
> - *
> - * This is a copy of ../aarch64/target_structs.h atm.
> - *
> - */
> -#ifndef RISCV_TARGET_STRUCTS_H
> -#define RISCV_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> -    abi_int __key;                      /* Key.  */
> -    abi_uint uid;                       /* Owner's user ID.  */
> -    abi_uint gid;                       /* Owner's group ID.  */
> -    abi_uint cuid;                      /* Creator's user ID.  */
> -    abi_uint cgid;                      /* Creator's group ID.  */
> -    abi_ushort mode;                    /* Read/write permission.  */
> -    abi_ushort __pad1;
> -    abi_ushort __seq;                   /* Sequence number.  */
> -    abi_ushort __pad2;
> -    abi_ulong __unused1;
> -    abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> -    struct target_ipc_perm shm_perm;    /* operation permission struct */
> -    abi_long shm_segsz;                 /* size of segment in bytes */
> -    abi_ulong shm_atime;                /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused1;
> -#endif
> -    abi_ulong shm_dtime;                /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused2;
> -#endif
> -    abi_ulong shm_ctime;                /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused3;
> -#endif
> -    abi_int shm_cpid;                   /* pid of creator */
> -    abi_int shm_lpid;                   /* pid of last shmop */
> -    abi_ulong shm_nattch;               /* number of current attaches */
> -    abi_ulong __unused4;
> -    abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/sh4/target_structs.h b/linux-user/sh4/target_structs.h
> index 00ac39478b..3a06f373c3 100644
> --- a/linux-user/sh4/target_structs.h
> +++ b/linux-user/sh4/target_structs.h
> @@ -1,58 +1 @@
> -/*
> - * SH4 specific structures for linux-user
> - *
> - * Copyright (c) 2013 Fabrice Bellard
> - *
> - * This 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.
> - *
> - * This 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 this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef SH4_TARGET_STRUCTS_H
> -#define SH4_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> -    abi_int __key;                      /* Key.  */
> -    abi_uint uid;                       /* Owner's user ID.  */
> -    abi_uint gid;                       /* Owner's group ID.  */
> -    abi_uint cuid;                      /* Creator's user ID.  */
> -    abi_uint cgid;                      /* Creator's group ID.  */
> -    abi_ushort mode;                    /* Read/write permission.  */
> -    abi_ushort __pad1;
> -    abi_ushort __seq;                   /* Sequence number.  */
> -    abi_ushort __pad2;
> -    abi_ulong __unused1;
> -    abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> -    struct target_ipc_perm shm_perm;    /* operation permission struct */
> -    abi_long shm_segsz;                 /* size of segment in bytes */
> -    abi_ulong shm_atime;                /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused1;
> -#endif
> -    abi_ulong shm_dtime;                /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused2;
> -#endif
> -    abi_ulong shm_ctime;                /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused3;
> -#endif
> -    abi_int shm_cpid;                   /* pid of creator */
> -    abi_int shm_lpid;                   /* pid of last shmop */
> -    abi_ulong shm_nattch;               /* number of current attaches */
> -    abi_ulong __unused4;
> -    abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/x86_64/target_structs.h b/linux-user/x86_64/target_structs.h
> index ce367b253b..f1181383c4 100644
> --- a/linux-user/x86_64/target_structs.h
> +++ b/linux-user/x86_64/target_structs.h
> @@ -19,41 +19,7 @@
>   #ifndef X86_64_TARGET_STRUCTS_H
>   #define X86_64_TARGET_STRUCTS_H
>   
> -struct target_ipc_perm {
> -    abi_int __key;                      /* Key.  */
> -    abi_uint uid;                       /* Owner's user ID.  */
> -    abi_uint gid;                       /* Owner's group ID.  */
> -    abi_uint cuid;                      /* Creator's user ID.  */
> -    abi_uint cgid;                      /* Creator's group ID.  */
> -    abi_ushort mode;                    /* Read/write permission.  */
> -    abi_ushort __pad1;
> -    abi_ushort __seq;                   /* Sequence number.  */
> -    abi_ushort __pad2;
> -    abi_ulong __unused1;
> -    abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> -    struct target_ipc_perm shm_perm;    /* operation permission struct */
> -    abi_long shm_segsz;                 /* size of segment in bytes */
> -    abi_ulong shm_atime;                /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused1;
> -#endif
> -    abi_ulong shm_dtime;                /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused2;
> -#endif
> -    abi_ulong shm_ctime;                /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused3;
> -#endif
> -    abi_int shm_cpid;                   /* pid of creator */
> -    abi_int shm_lpid;                   /* pid of last shmop */
> -    abi_ulong shm_nattch;               /* number of current attaches */
> -    abi_ulong __unused4;
> -    abi_ulong __unused5;
> -};
> +#include "../generic/target_structs.h"
>   
>   /* The x86 definition differs from the generic one in that the
>    * two padding fields exist whether the ABI is 32 bits or 64 bits.

Reviewed-by: Laurent Vivier <laurent@vivier.eu>



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

* Re: [PATCH 1/2] linux-user/arm: Move target_oabi_flock64 out of target_structs.h
  2022-01-07  4:25 ` [PATCH 1/2] linux-user/arm: Move target_oabi_flock64 out of target_structs.h Richard Henderson
  2022-01-08 17:57   ` Laurent Vivier
@ 2022-01-08 17:58   ` Laurent Vivier
  1 sibling, 0 replies; 8+ messages in thread
From: Laurent Vivier @ 2022-01-08 17:58 UTC (permalink / raw)
  To: Richard Henderson, qemu-devel; +Cc: gaosong

Le 07/01/2022 à 05:25, Richard Henderson a écrit :
> Place it next to copy_from/to_user_oabi_flock64, the only users,
> inside the existing target-specific ifdef.  This leaves only
> generic ipc structs in target_structs.h.
> 
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>   linux-user/arm/target_structs.h | 8 --------
>   linux-user/syscall.c            | 8 ++++++++
>   2 files changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/linux-user/arm/target_structs.h b/linux-user/arm/target_structs.h
> index 339b070bf1..25bf8dd3a5 100644
> --- a/linux-user/arm/target_structs.h
> +++ b/linux-user/arm/target_structs.h
> @@ -48,12 +48,4 @@ struct target_shmid_ds {
>       abi_ulong __unused4;
>       abi_ulong __unused5;
>   };
> -
> -struct target_oabi_flock64 {
> -    abi_short l_type;
> -    abi_short l_whence;
> -    abi_llong l_start;
> -    abi_llong l_len;
> -    abi_int   l_pid;
> -} QEMU_PACKED;
>   #endif
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index ce9d64896c..ca6e0b8fb0 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -6927,6 +6927,14 @@ typedef abi_long from_flock64_fn(struct flock64 *fl, abi_ulong target_addr);
>   typedef abi_long to_flock64_fn(abi_ulong target_addr, const struct flock64 *fl);
>   
>   #if defined(TARGET_ARM) && TARGET_ABI_BITS == 32
> +struct target_oabi_flock64 {
> +    abi_short l_type;
> +    abi_short l_whence;
> +    abi_llong l_start;
> +    abi_llong l_len;
> +    abi_int   l_pid;
> +} QEMU_PACKED;
> +
>   static inline abi_long copy_from_user_oabi_flock64(struct flock64 *fl,
>                                                      abi_ulong target_flock_addr)
>   {

Reviewed-by: Laurent Vivier <laurent@vivier.eu>


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

* Re: [PATCH 2/2] linux-user: Move target_struct.h generic definitions to generic/
  2022-01-07  4:26 ` [PATCH 2/2] linux-user: Move target_struct.h generic definitions to generic/ Richard Henderson
  2022-01-08 17:58   ` Laurent Vivier
@ 2022-01-08 18:03   ` Laurent Vivier
  1 sibling, 0 replies; 8+ messages in thread
From: Laurent Vivier @ 2022-01-08 18:03 UTC (permalink / raw)
  To: Richard Henderson, qemu-devel; +Cc: gaosong

Le 07/01/2022 à 05:26, Richard Henderson a écrit :
> Most targets share the same generic ipc structure definitions.
> 
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>   linux-user/aarch64/target_structs.h    | 59 +-------------------------
>   linux-user/arm/target_structs.h        | 52 +----------------------
>   linux-user/cris/target_structs.h       | 59 +-------------------------
>   linux-user/generic/target_structs.h    | 58 +++++++++++++++++++++++++
>   linux-user/hexagon/target_structs.h    | 55 +-----------------------
>   linux-user/i386/target_structs.h       | 59 +-------------------------
>   linux-user/m68k/target_structs.h       | 59 +-------------------------
>   linux-user/microblaze/target_structs.h | 59 +-------------------------
>   linux-user/nios2/target_structs.h      | 59 +-------------------------
>   linux-user/openrisc/target_structs.h   | 59 +-------------------------
>   linux-user/riscv/target_structs.h      | 47 +-------------------
>   linux-user/sh4/target_structs.h        | 59 +-------------------------
>   linux-user/x86_64/target_structs.h     | 36 +---------------
>   13 files changed, 70 insertions(+), 650 deletions(-)
>   create mode 100644 linux-user/generic/target_structs.h
> 
> diff --git a/linux-user/aarch64/target_structs.h b/linux-user/aarch64/target_structs.h
> index 7c748344ca..3a06f373c3 100644
> --- a/linux-user/aarch64/target_structs.h
> +++ b/linux-user/aarch64/target_structs.h
> @@ -1,58 +1 @@
> -/*
> - * ARM AArch64 specific structures for linux-user
> - *
> - * Copyright (c) 2013 Fabrice Bellard
> - *
> - * This 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.
> - *
> - * This 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 this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef AARCH64_TARGET_STRUCTS_H
> -#define AARCH64_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> -    abi_int __key;                      /* Key.  */
> -    abi_uint uid;                       /* Owner's user ID.  */
> -    abi_uint gid;                       /* Owner's group ID.  */
> -    abi_uint cuid;                      /* Creator's user ID.  */
> -    abi_uint cgid;                      /* Creator's group ID.  */
> -    abi_ushort mode;                    /* Read/write permission.  */
> -    abi_ushort __pad1;
> -    abi_ushort __seq;                   /* Sequence number.  */
> -    abi_ushort __pad2;
> -    abi_ulong __unused1;
> -    abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> -    struct target_ipc_perm shm_perm;    /* operation permission struct */
> -    abi_long shm_segsz;                 /* size of segment in bytes */
> -    abi_ulong shm_atime;                /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused1;
> -#endif
> -    abi_ulong shm_dtime;                /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused2;
> -#endif
> -    abi_ulong shm_ctime;                /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused3;
> -#endif
> -    abi_int shm_cpid;                   /* pid of creator */
> -    abi_int shm_lpid;                   /* pid of last shmop */
> -    abi_ulong shm_nattch;               /* number of current attaches */
> -    abi_ulong __unused4;
> -    abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/arm/target_structs.h b/linux-user/arm/target_structs.h
> index 25bf8dd3a5..3a06f373c3 100644
> --- a/linux-user/arm/target_structs.h
> +++ b/linux-user/arm/target_structs.h
> @@ -1,51 +1 @@
> -/*
> - * ARM specific structures for linux-user
> - *
> - * Copyright (c) 2013 Fabrice Bellard
> - *
> - * This 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.
> - *
> - * This 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 this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef ARM_TARGET_STRUCTS_H
> -#define ARM_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> -    abi_int __key;                      /* Key.  */
> -    abi_uint uid;                       /* Owner's user ID.  */
> -    abi_uint gid;                       /* Owner's group ID.  */
> -    abi_uint cuid;                      /* Creator's user ID.  */
> -    abi_uint cgid;                      /* Creator's group ID.  */
> -    abi_ushort mode;                    /* Read/write permission.  */
> -    abi_ushort __pad1;
> -    abi_ushort __seq;                   /* Sequence number.  */
> -    abi_ushort __pad2;
> -    abi_ulong __unused1;
> -    abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> -    struct target_ipc_perm shm_perm;    /* operation permission struct */
> -    abi_long shm_segsz;                 /* size of segment in bytes */
> -    abi_ulong shm_atime;                /* time of last shmat() */
> -    abi_ulong __unused1;
> -    abi_ulong shm_dtime;                /* time of last shmdt() */
> -    abi_ulong __unused2;
> -    abi_ulong shm_ctime;                /* time of last change by shmctl() */
> -    abi_ulong __unused3;
> -    abi_int shm_cpid;                   /* pid of creator */
> -    abi_int shm_lpid;                   /* pid of last shmop */
> -    abi_ulong shm_nattch;               /* number of current attaches */
> -    abi_ulong __unused4;
> -    abi_ulong __unused5;
> -};
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/cris/target_structs.h b/linux-user/cris/target_structs.h
> index f949d2331e..3a06f373c3 100644
> --- a/linux-user/cris/target_structs.h
> +++ b/linux-user/cris/target_structs.h
> @@ -1,58 +1 @@
> -/*
> - * CRIS specific structures for linux-user
> - *
> - * Copyright (c) 2013 Fabrice Bellard
> - *
> - * This 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.
> - *
> - * This 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 this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef CRIS_TARGET_STRUCTS_H
> -#define CRIS_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> -    abi_int __key;                      /* Key.  */
> -    abi_uint uid;                       /* Owner's user ID.  */
> -    abi_uint gid;                       /* Owner's group ID.  */
> -    abi_uint cuid;                      /* Creator's user ID.  */
> -    abi_uint cgid;                      /* Creator's group ID.  */
> -    abi_ushort mode;                    /* Read/write permission.  */
> -    abi_ushort __pad1;
> -    abi_ushort __seq;                   /* Sequence number.  */
> -    abi_ushort __pad2;
> -    abi_ulong __unused1;
> -    abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> -    struct target_ipc_perm shm_perm;    /* operation permission struct */
> -    abi_long shm_segsz;                 /* size of segment in bytes */
> -    abi_ulong shm_atime;                /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused1;
> -#endif
> -    abi_ulong shm_dtime;                /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused2;
> -#endif
> -    abi_ulong shm_ctime;                /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused3;
> -#endif
> -    abi_int shm_cpid;                   /* pid of creator */
> -    abi_int shm_lpid;                   /* pid of last shmop */
> -    abi_ulong shm_nattch;               /* number of current attaches */
> -    abi_ulong __unused4;
> -    abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/generic/target_structs.h b/linux-user/generic/target_structs.h
> new file mode 100644
> index 0000000000..09ff858b6e
> --- /dev/null
> +++ b/linux-user/generic/target_structs.h
> @@ -0,0 +1,58 @@
> +/*
> + * Generic structures for linux-user
> + *
> + * Copyright (c) 2013 Fabrice Bellard
> + *
> + * This 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.
> + *
> + * This 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 this library; if not, see <http://www.gnu.org/licenses/>.
> + */
> +#ifndef GENERIC_TARGET_STRUCTS_H
> +#define GENERIC_TARGET_STRUCTS_H
> +
> +struct target_ipc_perm {
> +    abi_int __key;                      /* Key.  */
> +    abi_uint uid;                       /* Owner's user ID.  */
> +    abi_uint gid;                       /* Owner's group ID.  */
> +    abi_uint cuid;                      /* Creator's user ID.  */
> +    abi_uint cgid;                      /* Creator's group ID.  */
> +    abi_ushort mode;                    /* Read/write permission.  */
> +    abi_ushort __pad1;
> +    abi_ushort __seq;                   /* Sequence number.  */
> +    abi_ushort __pad2;
> +    abi_ulong __unused1;
> +    abi_ulong __unused2;
> +};
> +
> +struct target_shmid_ds {
> +    struct target_ipc_perm shm_perm;    /* operation permission struct */
> +    abi_long shm_segsz;                 /* size of segment in bytes */
> +    abi_ulong shm_atime;                /* time of last shmat() */
> +#if TARGET_ABI_BITS == 32
> +    abi_ulong __unused1;
> +#endif
> +    abi_ulong shm_dtime;                /* time of last shmdt() */
> +#if TARGET_ABI_BITS == 32
> +    abi_ulong __unused2;
> +#endif
> +    abi_ulong shm_ctime;                /* time of last change by shmctl() */
> +#if TARGET_ABI_BITS == 32
> +    abi_ulong __unused3;
> +#endif
> +    abi_int shm_cpid;                   /* pid of creator */
> +    abi_int shm_lpid;                   /* pid of last shmop */
> +    abi_ulong shm_nattch;               /* number of current attaches */
> +    abi_ulong __unused4;
> +    abi_ulong __unused5;
> +};
> +
> +#endif
> diff --git a/linux-user/hexagon/target_structs.h b/linux-user/hexagon/target_structs.h
> index c217d9442a..3a06f373c3 100644
> --- a/linux-user/hexagon/target_structs.h
> +++ b/linux-user/hexagon/target_structs.h
> @@ -1,54 +1 @@
> -/*
> - *  Copyright(c) 2019-2021 Qualcomm Innovation Center, Inc. All Rights Reserved.
> - *
> - *  This program is free software; you can redistribute it and/or modify
> - *  it under the terms of the GNU General Public License as published by
> - *  the Free Software Foundation; either version 2 of the License, or
> - *  (at your option) any later version.
> - *
> - *  This program 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 General Public License for more details.
> - *
> - *  You should have received a copy of the GNU General Public License
> - *  along with this program; if not, see <http://www.gnu.org/licenses/>.
> - */
> -
> -/*
> - * Hexagon specific structures for linux-user
> - */
> -#ifndef HEXAGON_TARGET_STRUCTS_H
> -#define HEXAGON_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> -    abi_int __key;                      /* Key.  */
> -    abi_uint uid;                       /* Owner's user ID.  */
> -    abi_uint gid;                       /* Owner's group ID.  */
> -    abi_uint cuid;                      /* Creator's user ID.  */
> -    abi_uint cgid;                      /* Creator's group ID.  */
> -    abi_ushort mode;                    /* Read/write permission.  */
> -    abi_ushort __pad1;
> -    abi_ushort __seq;                   /* Sequence number.  */
> -    abi_ushort __pad2;
> -    abi_ulong __unused1;
> -    abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> -    struct target_ipc_perm shm_perm;    /* operation permission struct */
> -    abi_long shm_segsz;                 /* size of segment in bytes */
> -    abi_ulong shm_atime;                /* time of last shmat() */
> -    abi_ulong __unused1;
> -    abi_ulong shm_dtime;                /* time of last shmdt() */
> -    abi_ulong __unused2;
> -    abi_ulong shm_ctime;                /* time of last change by shmctl() */
> -    abi_ulong __unused3;
> -    abi_int shm_cpid;                   /* pid of creator */
> -    abi_int shm_lpid;                   /* pid of last shmop */
> -    abi_ulong shm_nattch;               /* number of current attaches */
> -    abi_ulong __unused4;
> -    abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/i386/target_structs.h b/linux-user/i386/target_structs.h
> index e22847fd20..3a06f373c3 100644
> --- a/linux-user/i386/target_structs.h
> +++ b/linux-user/i386/target_structs.h
> @@ -1,58 +1 @@
> -/*
> - * i386 specific structures for linux-user
> - *
> - * Copyright (c) 2013 Fabrice Bellard
> - *
> - * This 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.
> - *
> - * This 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 this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef I386_TARGET_STRUCTS_H
> -#define I386_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> -    abi_int __key;                      /* Key.  */
> -    abi_uint uid;                       /* Owner's user ID.  */
> -    abi_uint gid;                       /* Owner's group ID.  */
> -    abi_uint cuid;                      /* Creator's user ID.  */
> -    abi_uint cgid;                      /* Creator's group ID.  */
> -    abi_ushort mode;                    /* Read/write permission.  */
> -    abi_ushort __pad1;
> -    abi_ushort __seq;                   /* Sequence number.  */
> -    abi_ushort __pad2;
> -    abi_ulong __unused1;
> -    abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> -    struct target_ipc_perm shm_perm;    /* operation permission struct */
> -    abi_long shm_segsz;                 /* size of segment in bytes */
> -    abi_ulong shm_atime;                /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused1;
> -#endif
> -    abi_ulong shm_dtime;                /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused2;
> -#endif
> -    abi_ulong shm_ctime;                /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused3;
> -#endif
> -    abi_int shm_cpid;                   /* pid of creator */
> -    abi_int shm_lpid;                   /* pid of last shmop */
> -    abi_ulong shm_nattch;               /* number of current attaches */
> -    abi_ulong __unused4;
> -    abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/m68k/target_structs.h b/linux-user/m68k/target_structs.h
> index e373d481e1..3a06f373c3 100644
> --- a/linux-user/m68k/target_structs.h
> +++ b/linux-user/m68k/target_structs.h
> @@ -1,58 +1 @@
> -/*
> - * m68k specific structures for linux-user
> - *
> - * Copyright (c) 2013 Fabrice Bellard
> - *
> - * This 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.
> - *
> - * This 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 this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef M68K_TARGET_STRUCTS_H
> -#define M68K_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> -    abi_int __key;                      /* Key.  */
> -    abi_uint uid;                       /* Owner's user ID.  */
> -    abi_uint gid;                       /* Owner's group ID.  */
> -    abi_uint cuid;                      /* Creator's user ID.  */
> -    abi_uint cgid;                      /* Creator's group ID.  */
> -    abi_ushort mode;                    /* Read/write permission.  */
> -    abi_ushort __pad1;
> -    abi_ushort __seq;                   /* Sequence number.  */
> -    abi_ushort __pad2;
> -    abi_ulong __unused1;
> -    abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> -    struct target_ipc_perm shm_perm;    /* operation permission struct */
> -    abi_long shm_segsz;                 /* size of segment in bytes */
> -    abi_ulong shm_atime;                /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused1;
> -#endif
> -    abi_ulong shm_dtime;                /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused2;
> -#endif
> -    abi_ulong shm_ctime;                /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused3;
> -#endif
> -    abi_int shm_cpid;                   /* pid of creator */
> -    abi_int shm_lpid;                   /* pid of last shmop */
> -    abi_ulong shm_nattch;               /* number of current attaches */
> -    abi_ulong __unused4;
> -    abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/microblaze/target_structs.h b/linux-user/microblaze/target_structs.h
> index d08f6a53a8..3a06f373c3 100644
> --- a/linux-user/microblaze/target_structs.h
> +++ b/linux-user/microblaze/target_structs.h
> @@ -1,58 +1 @@
> -/*
> - * MicroBlaze specific structures for linux-user
> - *
> - * Copyright (c) 2013 Fabrice Bellard
> - *
> - * This 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.
> - *
> - * This 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 this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef MICROBLAZE_TARGET_STRUCTS_H
> -#define MICROBLAZE_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> -    abi_int __key;                      /* Key.  */
> -    abi_uint uid;                       /* Owner's user ID.  */
> -    abi_uint gid;                       /* Owner's group ID.  */
> -    abi_uint cuid;                      /* Creator's user ID.  */
> -    abi_uint cgid;                      /* Creator's group ID.  */
> -    abi_ushort mode;                    /* Read/write permission.  */
> -    abi_ushort __pad1;
> -    abi_ushort __seq;                   /* Sequence number.  */
> -    abi_ushort __pad2;
> -    abi_ulong __unused1;
> -    abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> -    struct target_ipc_perm shm_perm;    /* operation permission struct */
> -    abi_long shm_segsz;                 /* size of segment in bytes */
> -    abi_ulong shm_atime;                /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused1;
> -#endif
> -    abi_ulong shm_dtime;                /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused2;
> -#endif
> -    abi_ulong shm_ctime;                /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused3;
> -#endif
> -    abi_int shm_cpid;                   /* pid of creator */
> -    abi_int shm_lpid;                   /* pid of last shmop */
> -    abi_ulong shm_nattch;               /* number of current attaches */
> -    abi_ulong __unused4;
> -    abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/nios2/target_structs.h b/linux-user/nios2/target_structs.h
> index daa2886f98..3a06f373c3 100644
> --- a/linux-user/nios2/target_structs.h
> +++ b/linux-user/nios2/target_structs.h
> @@ -1,58 +1 @@
> -/*
> - * Nios2 specific structures for linux-user
> - *
> - * Copyright (c) 2016 Marek Vasut <marex@denx.de>
> - *
> - * This 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.
> - *
> - * This 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 this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef NIOS2_TARGET_STRUCTS_H
> -#define NIOS2_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> -    abi_int __key;                      /* Key.  */
> -    abi_uint uid;                       /* Owner's user ID.  */
> -    abi_uint gid;                       /* Owner's group ID.  */
> -    abi_uint cuid;                      /* Creator's user ID.  */
> -    abi_uint cgid;                      /* Creator's group ID.  */
> -    abi_ushort mode;                    /* Read/write permission.  */
> -    abi_ushort __pad1;
> -    abi_ushort __seq;                   /* Sequence number.  */
> -    abi_ushort __pad2;
> -    abi_ulong __unused1;
> -    abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> -    struct target_ipc_perm shm_perm;    /* operation permission struct */
> -    abi_long shm_segsz;                 /* size of segment in bytes */
> -    abi_ulong shm_atime;                /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused1;
> -#endif
> -    abi_ulong shm_dtime;                /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused2;
> -#endif
> -    abi_ulong shm_ctime;                /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused3;
> -#endif
> -    abi_int shm_cpid;                   /* pid of creator */
> -    abi_int shm_lpid;                   /* pid of last shmop */
> -    abi_ulong shm_nattch;               /* number of current attaches */
> -    abi_ulong __unused4;
> -    abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/openrisc/target_structs.h b/linux-user/openrisc/target_structs.h
> index e98e2bc799..3a06f373c3 100644
> --- a/linux-user/openrisc/target_structs.h
> +++ b/linux-user/openrisc/target_structs.h
> @@ -1,58 +1 @@
> -/*
> - * OpenRISC specific structures for linux-user
> - *
> - * Copyright (c) 2013 Fabrice Bellard
> - *
> - * This 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.
> - *
> - * This 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 this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef OPENRISC_TARGET_STRUCTS_H
> -#define OPENRISC_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> -    abi_int __key;                      /* Key.  */
> -    abi_uint uid;                       /* Owner's user ID.  */
> -    abi_uint gid;                       /* Owner's group ID.  */
> -    abi_uint cuid;                      /* Creator's user ID.  */
> -    abi_uint cgid;                      /* Creator's group ID.  */
> -    abi_ushort mode;                    /* Read/write permission.  */
> -    abi_ushort __pad1;
> -    abi_ushort __seq;                   /* Sequence number.  */
> -    abi_ushort __pad2;
> -    abi_ulong __unused1;
> -    abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> -    struct target_ipc_perm shm_perm;    /* operation permission struct */
> -    abi_long shm_segsz;                 /* size of segment in bytes */
> -    abi_ulong shm_atime;                /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused1;
> -#endif
> -    abi_ulong shm_dtime;                /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused2;
> -#endif
> -    abi_ulong shm_ctime;                /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused3;
> -#endif
> -    abi_int shm_cpid;                   /* pid of creator */
> -    abi_int shm_lpid;                   /* pid of last shmop */
> -    abi_ulong shm_nattch;               /* number of current attaches */
> -    abi_ulong __unused4;
> -    abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/riscv/target_structs.h b/linux-user/riscv/target_structs.h
> index ea3e5ed17e..3a06f373c3 100644
> --- a/linux-user/riscv/target_structs.h
> +++ b/linux-user/riscv/target_structs.h
> @@ -1,46 +1 @@
> -/*
> - * RISC-V specific structures for linux-user
> - *
> - * This is a copy of ../aarch64/target_structs.h atm.
> - *
> - */
> -#ifndef RISCV_TARGET_STRUCTS_H
> -#define RISCV_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> -    abi_int __key;                      /* Key.  */
> -    abi_uint uid;                       /* Owner's user ID.  */
> -    abi_uint gid;                       /* Owner's group ID.  */
> -    abi_uint cuid;                      /* Creator's user ID.  */
> -    abi_uint cgid;                      /* Creator's group ID.  */
> -    abi_ushort mode;                    /* Read/write permission.  */
> -    abi_ushort __pad1;
> -    abi_ushort __seq;                   /* Sequence number.  */
> -    abi_ushort __pad2;
> -    abi_ulong __unused1;
> -    abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> -    struct target_ipc_perm shm_perm;    /* operation permission struct */
> -    abi_long shm_segsz;                 /* size of segment in bytes */
> -    abi_ulong shm_atime;                /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused1;
> -#endif
> -    abi_ulong shm_dtime;                /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused2;
> -#endif
> -    abi_ulong shm_ctime;                /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused3;
> -#endif
> -    abi_int shm_cpid;                   /* pid of creator */
> -    abi_int shm_lpid;                   /* pid of last shmop */
> -    abi_ulong shm_nattch;               /* number of current attaches */
> -    abi_ulong __unused4;
> -    abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/sh4/target_structs.h b/linux-user/sh4/target_structs.h
> index 00ac39478b..3a06f373c3 100644
> --- a/linux-user/sh4/target_structs.h
> +++ b/linux-user/sh4/target_structs.h
> @@ -1,58 +1 @@
> -/*
> - * SH4 specific structures for linux-user
> - *
> - * Copyright (c) 2013 Fabrice Bellard
> - *
> - * This 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.
> - *
> - * This 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 this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef SH4_TARGET_STRUCTS_H
> -#define SH4_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> -    abi_int __key;                      /* Key.  */
> -    abi_uint uid;                       /* Owner's user ID.  */
> -    abi_uint gid;                       /* Owner's group ID.  */
> -    abi_uint cuid;                      /* Creator's user ID.  */
> -    abi_uint cgid;                      /* Creator's group ID.  */
> -    abi_ushort mode;                    /* Read/write permission.  */
> -    abi_ushort __pad1;
> -    abi_ushort __seq;                   /* Sequence number.  */
> -    abi_ushort __pad2;
> -    abi_ulong __unused1;
> -    abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> -    struct target_ipc_perm shm_perm;    /* operation permission struct */
> -    abi_long shm_segsz;                 /* size of segment in bytes */
> -    abi_ulong shm_atime;                /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused1;
> -#endif
> -    abi_ulong shm_dtime;                /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused2;
> -#endif
> -    abi_ulong shm_ctime;                /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused3;
> -#endif
> -    abi_int shm_cpid;                   /* pid of creator */
> -    abi_int shm_lpid;                   /* pid of last shmop */
> -    abi_ulong shm_nattch;               /* number of current attaches */
> -    abi_ulong __unused4;
> -    abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/x86_64/target_structs.h b/linux-user/x86_64/target_structs.h
> index ce367b253b..f1181383c4 100644
> --- a/linux-user/x86_64/target_structs.h
> +++ b/linux-user/x86_64/target_structs.h
> @@ -19,41 +19,7 @@
>   #ifndef X86_64_TARGET_STRUCTS_H
>   #define X86_64_TARGET_STRUCTS_H
>   
> -struct target_ipc_perm {
> -    abi_int __key;                      /* Key.  */
> -    abi_uint uid;                       /* Owner's user ID.  */
> -    abi_uint gid;                       /* Owner's group ID.  */
> -    abi_uint cuid;                      /* Creator's user ID.  */
> -    abi_uint cgid;                      /* Creator's group ID.  */
> -    abi_ushort mode;                    /* Read/write permission.  */
> -    abi_ushort __pad1;
> -    abi_ushort __seq;                   /* Sequence number.  */
> -    abi_ushort __pad2;
> -    abi_ulong __unused1;
> -    abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> -    struct target_ipc_perm shm_perm;    /* operation permission struct */
> -    abi_long shm_segsz;                 /* size of segment in bytes */
> -    abi_ulong shm_atime;                /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused1;
> -#endif
> -    abi_ulong shm_dtime;                /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused2;
> -#endif
> -    abi_ulong shm_ctime;                /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> -    abi_ulong __unused3;
> -#endif
> -    abi_int shm_cpid;                   /* pid of creator */
> -    abi_int shm_lpid;                   /* pid of last shmop */
> -    abi_ulong shm_nattch;               /* number of current attaches */
> -    abi_ulong __unused4;
> -    abi_ulong __unused5;
> -};
> +#include "../generic/target_structs.h"
>   
>   /* The x86 definition differs from the generic one in that the
>    * two padding fields exist whether the ABI is 32 bits or 64 bits.

Applied to my linux-user-for-7.0 branch.

Thanks,
Laurent



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

end of thread, other threads:[~2022-01-08 18:06 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-07  4:25 [PATCH 0/2] linux-user: Move target_struct.h generic definitions to generic/ Richard Henderson
2022-01-07  4:25 ` [PATCH 1/2] linux-user/arm: Move target_oabi_flock64 out of target_structs.h Richard Henderson
2022-01-08 17:57   ` Laurent Vivier
2022-01-08 17:58   ` Laurent Vivier
2022-01-07  4:26 ` [PATCH 2/2] linux-user: Move target_struct.h generic definitions to generic/ Richard Henderson
2022-01-08 17:58   ` Laurent Vivier
2022-01-08 18:03   ` Laurent Vivier
2022-01-07 13:58 ` [PATCH 0/2] " Philippe Mathieu-Daudé

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.