All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 00/15] bsd-user: misc cleanup for aarch64 import
@ 2021-10-08 23:14 Warner Losh
  2021-10-08 23:14 ` [PATCH v2 01/15] meson: *-user: only descend into *-user when configured Warner Losh
                   ` (14 more replies)
  0 siblings, 15 replies; 39+ messages in thread
From: Warner Losh @ 2021-10-08 23:14 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kyle Evans, richard.henderson, Laurent Vivier, Warner Losh, f4bug

Prepare for aarch64 support (the next architecture to be upstreamed). As the
aarch64 emulation is more complete, it relies on a number of different items.
In some cases, I've pulled in the full support from bsd-user fork. In other
cases I've created a simple stub (as is the case for signals, which have
independent changes pending, so I wanted to be as minimal as possible.  Since
all pre-12.2 support was purged from the bsd-user fork, go ahead and remove it
here. FreeBSD 11.x goes ouft of support at the end of the month. Remove what
little multi-version support that's in upstream.

The aarch64, armv7 and riscv64 patch sets will be published soon after some of
the dust settles.

v2: Added Phillippe's take, as endorced by Paolo, on how to filter *-user.
    Added qemu_log_mask() to stubbed out signal queueing routines

(hopefully I've done the pull into my tree correctly)

Stacey Son (1):
  bsd-user/errno_defs.h: Add internal error numbers

Warner Losh (14):
  meson: *-user: only descend into *-user when configured
  bsd-user/target_os-user.h: Remove support for FreeBSD older than 12.0
  bsd-user/strace.list: Remove support for FreeBSD versions older than
    12.0
  bsd-user: TARGET_RESET define is unused, remove it
  bsd-user: export get_errno and is_error from syscall.c
  bsd-user: move TARGET_MC_GET_CLEAR_RET to target_os_signal.h
  bsd-user/target_os_elf.h: Remove fallback ELF_HWCAP and reorder
  bsd-user/target_os_elf: If ELF_HWCAP2 is defined, publish it
  bsd-user: Remove used from TaskState
  bsd-user: Add stop_all_tasks
  bsd-user/sysarch: Move to using do_freebsd_arch_sysarch interface
  bsd-user/sysarch: Provide a per-arch framework for sysarch syscall
  bsd-user: Rename sigqueue to qemu_sigqueue
  bsd-user/signal: Create a dummy signal queueing function

 bsd-user/errno_defs.h                |  14 +++-
 bsd-user/freebsd/meson.build         |   3 +
 bsd-user/freebsd/os-sys.c            |  27 ++++++++
 bsd-user/freebsd/strace.list         |  11 ---
 bsd-user/freebsd/target_os_elf.h     |  12 ++--
 bsd-user/freebsd/target_os_signal.h  |   3 +
 bsd-user/freebsd/target_os_user.h    | 100 +--------------------------
 bsd-user/i386/target_arch_cpu.h      |   2 -
 bsd-user/i386/target_arch_signal.h   |   2 -
 bsd-user/main.c                      |  10 ++-
 bsd-user/meson.build                 |   7 ++
 bsd-user/qemu.h                      |  25 ++++---
 bsd-user/signal.c                    |  11 ++-
 bsd-user/syscall.c                   |  60 ++--------------
 bsd-user/x86_64/target_arch_cpu.h    |   2 -
 bsd-user/x86_64/target_arch_signal.h |   2 -
 linux-user/meson.build               |   4 ++
 meson.build                          |   3 +-
 18 files changed, 103 insertions(+), 195 deletions(-)
 create mode 100644 bsd-user/freebsd/meson.build
 create mode 100644 bsd-user/freebsd/os-sys.c

-- 
2.32.0



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

* [PATCH v2 01/15] meson: *-user: only descend into *-user when configured
  2021-10-08 23:14 [PATCH v2 00/15] bsd-user: misc cleanup for aarch64 import Warner Losh
@ 2021-10-08 23:14 ` Warner Losh
  2021-10-09 14:40   ` Warner Losh
                     ` (2 more replies)
  2021-10-08 23:14 ` [PATCH v2 02/15] bsd-user/target_os-user.h: Remove support for FreeBSD older than 12.0 Warner Losh
                   ` (13 subsequent siblings)
  14 siblings, 3 replies; 39+ messages in thread
From: Warner Losh @ 2021-10-08 23:14 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kyle Evans, richard.henderson, Laurent Vivier, f4bug,
	Paolo Bonzini, Warner Losh, Warner Losh

To increase flexibility, only descend into *-user when that is
configured. This allows *-user to selectively include directories based
on the host OS which may not exist on all hosts. Adopt Paolo's
suggestion of checking the configuration in the directories that know
about the configuration.

Message-Id: <20210926220103.1721355-2-f4bug@amsat.org>
Message-Id: <20210926220103.1721355-3-f4bug@amsat.org>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Warner Losh <wlosh@bsdimp.com>
Acked-by: Paolo Bonzini <pbonzinni@redhat.com>

Sponsored by:		Netflix
---
 bsd-user/meson.build   | 4 ++++
 linux-user/meson.build | 4 ++++
 meson.build            | 3 +--
 3 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/bsd-user/meson.build b/bsd-user/meson.build
index 0369549340..243fb78930 100644
--- a/bsd-user/meson.build
+++ b/bsd-user/meson.build
@@ -1,3 +1,7 @@
+if not config_target.has_key('CONFIG_BSD_USER')
+   subdir_done()
+endif
+
 bsd_user_ss.add(files(
   'bsdload.c',
   'elfload.c',
diff --git a/linux-user/meson.build b/linux-user/meson.build
index 9549f81682..602255a3d6 100644
--- a/linux-user/meson.build
+++ b/linux-user/meson.build
@@ -1,3 +1,7 @@
+if not config_target.has_key('CONFIG_LINUX_USER')
+   subdir_done()
+endif
+
 linux_user_ss.add(files(
   'elfload.c',
   'exit.c',
diff --git a/meson.build b/meson.build
index 99a0a3e689..1f2da5f7d9 100644
--- a/meson.build
+++ b/meson.build
@@ -2303,10 +2303,9 @@ subdir('ebpf')
 
 common_ss.add(libbpf)
 
-bsd_user_ss.add(files('gdbstub.c'))
 specific_ss.add_all(when: 'CONFIG_BSD_USER', if_true: bsd_user_ss)
 
-linux_user_ss.add(files('gdbstub.c', 'thunk.c'))
+linux_user_ss.add(files('thunk.c'))
 specific_ss.add_all(when: 'CONFIG_LINUX_USER', if_true: linux_user_ss)
 
 # needed for fuzzing binaries
-- 
2.32.0



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

* [PATCH v2 02/15] bsd-user/target_os-user.h: Remove support for FreeBSD older than 12.0
  2021-10-08 23:14 [PATCH v2 00/15] bsd-user: misc cleanup for aarch64 import Warner Losh
  2021-10-08 23:14 ` [PATCH v2 01/15] meson: *-user: only descend into *-user when configured Warner Losh
@ 2021-10-08 23:14 ` Warner Losh
  2021-10-14 15:14   ` Kyle Evans
  2021-10-08 23:14 ` [PATCH v2 03/15] bsd-user/strace.list: Remove support for FreeBSD versions " Warner Losh
                   ` (12 subsequent siblings)
  14 siblings, 1 reply; 39+ messages in thread
From: Warner Losh @ 2021-10-08 23:14 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kyle Evans, richard.henderson, Laurent Vivier, Warner Losh, f4bug

Signed-off-by: Warner Losh <imp@bsdimp.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
---
 bsd-user/freebsd/target_os_user.h | 100 +-----------------------------
 1 file changed, 1 insertion(+), 99 deletions(-)

diff --git a/bsd-user/freebsd/target_os_user.h b/bsd-user/freebsd/target_os_user.h
index 95b1fa9f99..19892c5071 100644
--- a/bsd-user/freebsd/target_os_user.h
+++ b/bsd-user/freebsd/target_os_user.h
@@ -61,15 +61,7 @@ struct target_sockaddr_storage {
 /*
  * from sys/user.h
  */
-#if defined(__FreeBSD_version) && __FreeBSD_version >= 1200031
 #define TARGET_KI_NSPARE_INT        2
-#elif defined(__FreeBSD_version) && __FreeBSD_version >= 1100000
-#define TARGET_KI_NSPARE_INT        4
-#elif defined(__FreeBSD_version) && __FreeBSD_version >= 1000000
-#define TARGET_KI_NSPARE_INT        7
-#else
-#define TARGET_KI_NSPARE_INT        9
-#endif /* ! __FreeBSD_version >= 1000000 */
 #define TARGET_KI_NSPARE_LONG       12
 #define TARGET_KI_NSPARE_PTR        6
 
@@ -116,11 +108,7 @@ struct target_kinfo_proc {
     int32_t     ki_tsid;            /* Terminal session ID */
     int16_t     ki_jobc;            /* job control counter */
     int16_t     ki_spare_short1;    /* unused (just here for alignment) */
-#if defined(__FreeBSD_version) && __FreeBSD_version >= 1200031
     int32_t     ki_tdev__freebsd11; /* controlling tty dev */
-#else
-    int32_t     ki_tdev;            /* controlling tty dev */
-#endif
     target_sigset_t ki_siglist;     /* Signals arrived but not delivered */
     target_sigset_t ki_sigmask;     /* Current signal mask */
     target_sigset_t ki_sigignore;   /* Signals being ignored */
@@ -164,45 +152,24 @@ struct target_kinfo_proc {
     int8_t      ki_nice;            /* Process "nice" value */
     char        ki_lock;            /* Process lock (prevent swap) count */
     char        ki_rqindex;         /* Run queue index */
-#if defined(__FreeBSD_version) && __FreeBSD_version >= 1100000
     u_char      ki_oncpu_old;       /* Which cpu we are on (legacy) */
     u_char      ki_lastcpu_old;     /* Last cpu we were on (legacy) */
-#else
-    u_char      ki_oncpu;           /* Which cpu we are on */
-    u_char      ki_lastcpu;         /* Last cpu we were on */
-#endif /* ! __FreeBSD_version >= 1100000 */
-#if defined(__FreeBSD_version) && __FreeBSD_version >= 900000
     char        ki_tdname[TARGET_TDNAMLEN + 1];  /* thread name */
-#else
-    char        ki_ocomm[TARGET_TDNAMLEN + 1];   /* thread name */
-#endif /* ! __FreeBSD_version >= 900000 */
     char        ki_wmesg[TARGET_WMESGLEN + 1];   /* wchan message */
     char        ki_login[TARGET_LOGNAMELEN + 1]; /* setlogin name */
     char        ki_lockname[TARGET_LOCKNAMELEN + 1]; /* lock name */
     char        ki_comm[TARGET_COMMLEN + 1];     /* command name */
     char        ki_emul[TARGET_KI_EMULNAMELEN + 1];  /* emulation name */
-#if defined(__FreeBSD_version) && __FreeBSD_version >= 900000
     char        ki_loginclass[TARGET_LOGINCLASSLEN + 1]; /* login class */
-#endif /* ! __FreeBSD_version >= 900000 */
 
-#if defined(__FreeBSD_version) && __FreeBSD_version >= 900000
     char        ki_sparestrings[50];    /* spare string space */
-#else
-    char        ki_sparestrings[68];    /* spare string space */
-#endif /* ! __FreeBSD_version >= 900000 */
     int32_t     ki_spareints[TARGET_KI_NSPARE_INT]; /* spare room for growth */
-#if defined(__FreeBSD_version) && __FreeBSD_version >= 1200031
- uint64_t ki_tdev;  /* controlling tty dev */
-#endif
-#if defined(__FreeBSD_version) && __FreeBSD_version >= 1100000
+    uint64_t ki_tdev;  /* controlling tty dev */
     int32_t     ki_oncpu;           /* Which cpu we are on */
     int32_t     ki_lastcpu;         /* Last cpu we were on */
     int32_t     ki_tracer;          /* Pid of tracing process */
-#endif /* __FreeBSD_version >= 1100000 */
-#if defined(__FreeBSD_version) && __FreeBSD_version >= 900000
     int32_t     ki_flag2;           /* P2_* flags */
     int32_t     ki_fibnum;          /* Default FIB number */
-#endif /* ! __FreeBSD_version >= 900000 */
     uint32_t    ki_cr_flags;        /* Credential flags */
     int32_t     ki_jid;             /* Process jail ID */
     int32_t     ki_numthreads;      /* XXXKSE number of threads in total */
@@ -234,18 +201,8 @@ struct target_kinfo_file {
     int32_t  kf_flags;  /* Flags. */
     int32_t  kf_pad0;  /* Round to 64 bit alignment. */
     int64_t  kf_offset;  /* Seek location. */
-#if defined(__FreeBSD_version) && __FreeBSD_version < 1200031
-    int32_t  kf_vnode_type;  /* Vnode type. */
-    int32_t  kf_sock_domain;  /* Socket domain. */
-    int32_t  kf_sock_type;  /* Socket type. */
-    int32_t  kf_sock_protocol; /* Socket protocol. */
-    struct target_sockaddr_storage kf_sa_local; /* Socket address. */
-    struct target_sockaddr_storage kf_sa_peer; /* Peer address. */
-#endif
-#if defined(__FreeBSD_version) && __FreeBSD_version >= 900000
     union {
         struct {
-#if defined(__FreeBSD_version) && __FreeBSD_version >= 1200031
             uint32_t kf_spareint;
             /* Socket domain. */
             int  kf_sock_domain0;
@@ -257,7 +214,6 @@ struct target_kinfo_file {
             struct sockaddr_storage kf_sa_local;
             /* Peer address. */
             struct sockaddr_storage kf_sa_peer;
-#endif
             /* Address of so_pcb. */
             uint64_t kf_sock_pcb;
             /* Address of inp_ppcb. */
@@ -272,7 +228,6 @@ struct target_kinfo_file {
             uint32_t kf_sock_pad0;
         } kf_sock;
         struct {
-#if defined(__FreeBSD_version) && __FreeBSD_version >= 1200031
             /* Vnode type. */
             int  kf_file_type;
             /* Space for future use */
@@ -290,16 +245,6 @@ struct target_kinfo_file {
             uint32_t kf_file_fsid_freebsd11;
             /* File device, FreeBSD 11 compat. */
             uint32_t kf_file_rdev_freebsd11;
-#else
-            /* Global file id. */
-            uint64_t kf_file_fileid;
-            /* File size. */
-            uint64_t kf_file_size;
-            /* Vnode filesystem id. */
-            uint32_t kf_file_fsid;
-            /* File device. */
-            uint32_t kf_file_rdev;
-#endif
             /* File mode. */
             uint16_t kf_file_mode;
             /* Round to 64 bit alignment. */
@@ -307,18 +252,14 @@ struct target_kinfo_file {
             uint32_t kf_file_pad1;
         } kf_file;
         struct {
-#if defined(__FreeBSD_version) && __FreeBSD_version >= 1200031
             uint32_t kf_spareint[4];
             uint64_t kf_spareint64[32];
-#endif
             uint32_t kf_sem_value;
             uint16_t kf_sem_mode;
         } kf_sem;
         struct {
-#if defined(__FreeBSD_version) && __FreeBSD_version >= 1200031
             uint32_t kf_spareint[4];
             uint64_t kf_spareint64[32];
-#endif
             uint64_t kf_pipe_addr;
             uint64_t kf_pipe_peer;
             uint32_t kf_pipe_buffer_cnt;
@@ -326,7 +267,6 @@ struct target_kinfo_file {
             uint32_t kf_pipe_pad0[3];
         } kf_pipe;
         struct {
-#if defined(__FreeBSD_version) && __FreeBSD_version >= 1200031
             uint32_t kf_spareint[4];
             uint64_t kf_spareint64[32];
             uint32_t kf_pts_dev_freebsd11;
@@ -334,34 +274,18 @@ struct target_kinfo_file {
             uint64_t kf_pts_dev;
             /* Round to 64 bit alignment. */
             uint32_t kf_pts_pad1[4];
-#else
-            uint32_t kf_pts_dev;
-            /* Round to 64 bit alignment. */
-            uint32_t kf_pts_pad0[7];
-#endif
         } kf_pts;
         struct {
-#if defined(__FreeBSD_version) && __FreeBSD_version >= 1200031
             uint32_t kf_spareint[4];
             uint64_t kf_spareint64[32];
-#endif
             int32_t  kf_pid;
         } kf_proc;
     } kf_un;
     uint16_t kf_status;  /* Status flags. */
     uint16_t kf_pad1;  /* Round to 32 bit alignment. */
     int32_t  _kf_ispare0;  /* Space for more stuff. */
-#if defined(__FreeBSD_version) && __FreeBSD_version >= 1000000
     target_cap_rights_t kf_cap_rights; /* Capability rights. */
     uint64_t _kf_cap_spare; /* Space for future cap_rights_t. */
-#else /* ! __FreeBSD_version >= 1000000 */
-    uint64_t        kf_cap_rights;
-    int  _kf_ispare[4];
-#endif /* ! __FreeBSD_version >= 1000000 */
-
-#else /* ! __FreeBSD_version >= 900000 */
-    int  _kf_ispare[16];
-#endif /* ! __FreeBSD_version >= 900000 */
     /* Truncated before copyout in sysctl */
     char  kf_path[PATH_MAX]; /* Path to file, if any. */
 };
@@ -372,34 +296,19 @@ struct target_kinfo_vmentry {
     uint64_t kve_start;   /* Starting address. */
     uint64_t kve_end;   /* Finishing address. */
     uint64_t kve_offset;   /* Mapping offset in object */
-#if defined(__FreeBSD_version) && __FreeBSD_version >= 900000
     uint64_t kve_vn_fileid;   /* inode number if vnode */
-#if defined(__FreeBSD_version) && __FreeBSD_version >= 1200031
     uint32_t kve_vn_fsid_freebsd11;  /* dev_t of vnode location */
-#else
-    uint32_t kve_vn_fsid;   /* dev_t of vnode location */
-#endif
-#else /* !  __FreeBSD_version >= 900000 */
-    uint64_t kve_fileid;   /* inode number if vnode */
-    uint32_t kve_fsid;   /* dev_t of vnode location */
-#endif /* !  __FreeBSD_version >= 900000 */
     int32_t  kve_flags;   /* Flags on map entry. */
     int32_t  kve_resident;   /* Number of resident pages. */
     int32_t  kve_private_resident;  /* Number of private pages. */
     int32_t  kve_protection;  /* Protection bitmask. */
     int32_t  kve_ref_count;   /* VM obj ref count. */
     int32_t  kve_shadow_count;  /* VM obj shadow count. */
-#if defined(__FreeBSD_version) && __FreeBSD_version >= 900000
     int32_t  kve_vn_type;   /* Vnode type. */
     uint64_t kve_vn_size;   /* File size. */
-#if defined(__FreeBSD_version) && __FreeBSD_version >= 1200031
     uint32_t kve_vn_rdev_freebsd11;  /* Device id if device. */
-#else
-    uint32_t kve_vn_rdev;   /* Device id if device. */
-#endif
     uint16_t kve_vn_mode;   /* File mode. */
     uint16_t kve_status;   /* Status flags. */
-#if defined(__FreeBSD_version) && __FreeBSD_version >= 1200031
 #if (__FreeBSD_version >= 1300501 && __FreeBSD_version < 1400000) ||    \
     __FreeBSD_version >= 1400009
     union {
@@ -413,13 +322,6 @@ struct target_kinfo_vmentry {
 #endif
     uint64_t kve_vn_rdev;   /* Device id if device. */
     int  _kve_ispare[8];  /* Space for more stuff. */
-#else
-    int32_t  _kve_ispare[12];  /* Space for more stuff. */
-#endif
-#else /* !  __FreeBSD_version >= 900000 */
-    int  _kve_pad0;
-    int32_t  _kve_ispare[16];  /* Space for more stuff. */
-#endif /* !  __FreeBSD_version >= 900000 */
     /* Truncated before copyout in sysctl */
     char  kve_path[PATH_MAX];  /* Path to VM obj, if any. */
 };
-- 
2.32.0



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

* [PATCH v2 03/15] bsd-user/strace.list: Remove support for FreeBSD versions older than 12.0
  2021-10-08 23:14 [PATCH v2 00/15] bsd-user: misc cleanup for aarch64 import Warner Losh
  2021-10-08 23:14 ` [PATCH v2 01/15] meson: *-user: only descend into *-user when configured Warner Losh
  2021-10-08 23:14 ` [PATCH v2 02/15] bsd-user/target_os-user.h: Remove support for FreeBSD older than 12.0 Warner Losh
@ 2021-10-08 23:14 ` Warner Losh
  2021-10-14 15:14   ` Kyle Evans
  2021-10-08 23:14 ` [PATCH v2 04/15] bsd-user: TARGET_RESET define is unused, remove it Warner Losh
                   ` (11 subsequent siblings)
  14 siblings, 1 reply; 39+ messages in thread
From: Warner Losh @ 2021-10-08 23:14 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kyle Evans, richard.henderson, Laurent Vivier, Warner Losh, f4bug

Signed-off-by: Warner Losh <imp@bsdimp.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
---
 bsd-user/freebsd/strace.list | 11 -----------
 1 file changed, 11 deletions(-)

diff --git a/bsd-user/freebsd/strace.list b/bsd-user/freebsd/strace.list
index b01b5f36e8..275d2dbe27 100644
--- a/bsd-user/freebsd/strace.list
+++ b/bsd-user/freebsd/strace.list
@@ -33,10 +33,6 @@
 { TARGET_FREEBSD_NR___syscall, "__syscall", NULL, NULL, NULL },
 { TARGET_FREEBSD_NR___sysctl, "__sysctl", NULL, print_sysctl, NULL },
 { TARGET_FREEBSD_NR__umtx_op, "_umtx_op", "%s(%#x, %d, %d, %#x, %#x)", NULL, NULL },
-#if defined(__FreeBSD_version) && __FreeBSD_version < 1000000
-{ TARGET_FREEBSD_NR__umtx_lock, "__umtx_lock", NULL, NULL, NULL },
-{ TARGET_FREEBSD_NR__umtx_unlock, "__umtx_unlock", NULL, NULL, NULL },
-#endif
 { TARGET_FREEBSD_NR_accept, "accept", "%s(%d,%#x,%#x)", NULL, NULL },
 { TARGET_FREEBSD_NR_accept4, "accept4", "%s(%d,%d,%#x,%#x)", NULL, NULL },
 { TARGET_FREEBSD_NR_access, "access", "%s(\"%s\",%#o)", NULL, NULL },
@@ -49,10 +45,6 @@
 { TARGET_FREEBSD_NR_cap_fcntls_get, "cap_fcntls_get", NULL, NULL, NULL },
 { TARGET_FREEBSD_NR_cap_fcntls_limit, "cap_fcntls_limit", NULL, NULL, NULL },
 { TARGET_FREEBSD_NR_cap_getmode, "cap_getmode", NULL, NULL, NULL },
-#if defined(__FreeBSD_version) && __FreeBSD_version < 1000000
-{ TARGET_FREEBSD_NR_cap_getrights, "cap_getrights", NULL, NULL, NULL },
-{ TARGET_FREEBSD_NR_cap_new, "cap_new", NULL, NULL, NULL },
-#endif
 { TARGET_FREEBSD_NR_cap_ioctls_get, "cap_ioctls_get", NULL, NULL, NULL },
 { TARGET_FREEBSD_NR_cap_ioctls_limit, "cap_ioctls_limit", NULL, NULL, NULL },
 { TARGET_FREEBSD_NR_cap_rights_limit, "cap_rights_limit", NULL, NULL, NULL },
@@ -146,9 +138,6 @@
 { TARGET_FREEBSD_NR_freebsd11_kevent, "freebsd11_kevent", NULL, NULL, NULL },
 { TARGET_FREEBSD_NR_kevent, "kevent", NULL, NULL, NULL },
 { TARGET_FREEBSD_NR_kill, "kill", NULL, NULL, NULL },
-#if defined(__FreeBSD_version) && __FreeBSD_version < 1000000
-{ TARGET_FREEBSD_NR_killpg, "killpg", NULL, NULL, NULL },
-#endif
 { TARGET_FREEBSD_NR_kqueue, "kqueue", NULL, NULL, NULL },
 { TARGET_FREEBSD_NR_ktrace, "ktrace", NULL, NULL, NULL },
 { TARGET_FREEBSD_NR_lchown, "lchown", NULL, NULL, NULL },
-- 
2.32.0



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

* [PATCH v2 04/15] bsd-user: TARGET_RESET define is unused, remove it
  2021-10-08 23:14 [PATCH v2 00/15] bsd-user: misc cleanup for aarch64 import Warner Losh
                   ` (2 preceding siblings ...)
  2021-10-08 23:14 ` [PATCH v2 03/15] bsd-user/strace.list: Remove support for FreeBSD versions " Warner Losh
@ 2021-10-08 23:14 ` Warner Losh
  2021-10-18  3:33   ` Kyle Evans
  2021-10-08 23:14 ` [PATCH v2 05/15] bsd-user: export get_errno and is_error from syscall.c Warner Losh
                   ` (10 subsequent siblings)
  14 siblings, 1 reply; 39+ messages in thread
From: Warner Losh @ 2021-10-08 23:14 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kyle Evans, richard.henderson, Laurent Vivier, Warner Losh, f4bug

Signed-off-by: Warner Losh <imp@bsdimp.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 bsd-user/i386/target_arch_cpu.h   | 2 --
 bsd-user/x86_64/target_arch_cpu.h | 2 --
 2 files changed, 4 deletions(-)

diff --git a/bsd-user/i386/target_arch_cpu.h b/bsd-user/i386/target_arch_cpu.h
index 978e8066af..b28602adbb 100644
--- a/bsd-user/i386/target_arch_cpu.h
+++ b/bsd-user/i386/target_arch_cpu.h
@@ -23,8 +23,6 @@
 
 #define TARGET_DEFAULT_CPU_MODEL "qemu32"
 
-#define TARGET_CPU_RESET(cpu)
-
 static inline void target_cpu_init(CPUX86State *env,
         struct target_pt_regs *regs)
 {
diff --git a/bsd-user/x86_64/target_arch_cpu.h b/bsd-user/x86_64/target_arch_cpu.h
index 5f5ee602f9..5172b230f0 100644
--- a/bsd-user/x86_64/target_arch_cpu.h
+++ b/bsd-user/x86_64/target_arch_cpu.h
@@ -23,8 +23,6 @@
 
 #define TARGET_DEFAULT_CPU_MODEL "qemu64"
 
-#define TARGET_CPU_RESET(cpu)
-
 static inline void target_cpu_init(CPUX86State *env,
         struct target_pt_regs *regs)
 {
-- 
2.32.0



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

* [PATCH v2 05/15] bsd-user: export get_errno and is_error from syscall.c
  2021-10-08 23:14 [PATCH v2 00/15] bsd-user: misc cleanup for aarch64 import Warner Losh
                   ` (3 preceding siblings ...)
  2021-10-08 23:14 ` [PATCH v2 04/15] bsd-user: TARGET_RESET define is unused, remove it Warner Losh
@ 2021-10-08 23:14 ` Warner Losh
  2021-10-18  3:33   ` Kyle Evans
  2021-10-08 23:14 ` [PATCH v2 06/15] bsd-user/errno_defs.h: Add internal error numbers Warner Losh
                   ` (9 subsequent siblings)
  14 siblings, 1 reply; 39+ messages in thread
From: Warner Losh @ 2021-10-08 23:14 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kyle Evans, richard.henderson, Laurent Vivier, Warner Losh, f4bug

Make get_errno and is_error global so files other than syscall.c can use
them.

Signed-off-by: Warner Losh <imp@bsdimp.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 bsd-user/qemu.h    |  4 ++++
 bsd-user/syscall.c | 10 +++++-----
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/bsd-user/qemu.h b/bsd-user/qemu.h
index 522d6c4031..3b8475394c 100644
--- a/bsd-user/qemu.h
+++ b/bsd-user/qemu.h
@@ -235,6 +235,10 @@ extern unsigned long target_dflssiz;
 extern unsigned long target_maxssiz;
 extern unsigned long target_sgrowsiz;
 
+/* syscall.c */
+abi_long get_errno(abi_long ret);
+bool is_error(abi_long ret);
+
 /* user access */
 
 #define VERIFY_READ  PAGE_READ
diff --git a/bsd-user/syscall.c b/bsd-user/syscall.c
index 372836d44d..2fd2ba8330 100644
--- a/bsd-user/syscall.c
+++ b/bsd-user/syscall.c
@@ -33,18 +33,18 @@
 static abi_ulong target_brk;
 static abi_ulong target_original_brk;
 
-static inline abi_long get_errno(abi_long ret)
+abi_long get_errno(abi_long ret)
 {
-    if (ret == -1)
+    if (ret == -1) {
         /* XXX need to translate host -> target errnos here */
         return -(errno);
-    else
-        return ret;
+    }
+    return ret;
 }
 
 #define target_to_host_bitmask(x, tbl) (x)
 
-static inline int is_error(abi_long ret)
+bool is_error(abi_long ret)
 {
     return (abi_ulong)ret >= (abi_ulong)(-4096);
 }
-- 
2.32.0



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

* [PATCH v2 06/15] bsd-user/errno_defs.h: Add internal error numbers
  2021-10-08 23:14 [PATCH v2 00/15] bsd-user: misc cleanup for aarch64 import Warner Losh
                   ` (4 preceding siblings ...)
  2021-10-08 23:14 ` [PATCH v2 05/15] bsd-user: export get_errno and is_error from syscall.c Warner Losh
@ 2021-10-08 23:14 ` Warner Losh
  2021-10-18  3:34   ` Kyle Evans
  2021-10-08 23:14 ` [PATCH v2 07/15] bsd-user: move TARGET_MC_GET_CLEAR_RET to target_os_signal.h Warner Losh
                   ` (8 subsequent siblings)
  14 siblings, 1 reply; 39+ messages in thread
From: Warner Losh @ 2021-10-08 23:14 UTC (permalink / raw)
  To: qemu-devel
  Cc: Stacey Son, Kyle Evans, richard.henderson, Laurent Vivier, f4bug,
	Warner Losh

From: Stacey Son <sson@FreeBSD.org>

To emulate signals and interrupted system calls, we need to have the
same mechanisms we have in the kernel, including these errno values.

Signed-off-by: Stacey Son <sson@FreeBSD.org>
Signed-off-by: Warner Losh <imp@bsdimp.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
---
 bsd-user/errno_defs.h | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/bsd-user/errno_defs.h b/bsd-user/errno_defs.h
index 1efa502a12..b538dd93da 100644
--- a/bsd-user/errno_defs.h
+++ b/bsd-user/errno_defs.h
@@ -1,6 +1,3 @@
-/*      $OpenBSD: errno.h,v 1.20 2007/09/03 14:37:52 millert Exp $      */
-/*      $NetBSD: errno.h,v 1.10 1996/01/20 01:33:53 jtc Exp $   */
-
 /*
  * Copyright (c) 1982, 1986, 1989, 1993
  *      The Regents of the University of California.  All rights reserved.
@@ -37,6 +34,9 @@
  *      @(#)errno.h     8.5 (Berkeley) 1/21/94
  */
 
+#ifndef _ERRNO_DEFS_H_
+#define _ERRNO_DEFS_H_
+
 #define TARGET_EPERM            1               /* Operation not permitted */
 #define TARGET_ENOENT           2               /* No such file or directory */
 #define TARGET_ESRCH            3               /* No such process */
@@ -147,3 +147,11 @@
 #define TARGET_EIDRM            89              /* Identifier removed */
 #define TARGET_ENOMSG           90              /* No message of desired type */
 #define TARGET_ELAST            90              /* Must be equal largest errno */
+
+/* Internal errors: */
+#define TARGET_EJUSTRETURN      254             /* Just return without
+                                                   modifing regs */
+#define TARGET_ERESTART         255             /* Restart syscall */
+#define TARGET_ERESTARTSYS      TARGET_ERESTART /* Linux compat */
+
+#endif /* !  _ERRNO_DEFS_H_ */
-- 
2.32.0



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

* [PATCH v2 07/15] bsd-user: move TARGET_MC_GET_CLEAR_RET to target_os_signal.h
  2021-10-08 23:14 [PATCH v2 00/15] bsd-user: misc cleanup for aarch64 import Warner Losh
                   ` (5 preceding siblings ...)
  2021-10-08 23:14 ` [PATCH v2 06/15] bsd-user/errno_defs.h: Add internal error numbers Warner Losh
@ 2021-10-08 23:14 ` Warner Losh
  2021-10-18  3:34   ` Kyle Evans
  2021-10-08 23:14 ` [PATCH v2 08/15] bsd-user/target_os_elf.h: Remove fallback ELF_HWCAP and reorder Warner Losh
                   ` (7 subsequent siblings)
  14 siblings, 1 reply; 39+ messages in thread
From: Warner Losh @ 2021-10-08 23:14 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kyle Evans, richard.henderson, Laurent Vivier, Warner Losh, f4bug

Move TARGET_MC_GET_CLEAR_RET to freebsd/target_os_signal.h since it's
architecture agnostic on FreeBSD.

Signed-off-by: Warner Losh <imp@bsdimp.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 bsd-user/freebsd/target_os_signal.h  | 3 +++
 bsd-user/i386/target_arch_signal.h   | 2 --
 bsd-user/x86_64/target_arch_signal.h | 2 --
 3 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/bsd-user/freebsd/target_os_signal.h b/bsd-user/freebsd/target_os_signal.h
index 3ed454e086..1a4c5faf19 100644
--- a/bsd-user/freebsd/target_os_signal.h
+++ b/bsd-user/freebsd/target_os_signal.h
@@ -1,6 +1,9 @@
 #ifndef _TARGET_OS_SIGNAL_H_
 #define _TARGET_OS_SIGNAL_H_
 
+/* FreeBSD's sys/ucontext.h defines this */
+#define TARGET_MC_GET_CLEAR_RET 0x0001
+
 #include "target_os_siginfo.h"
 #include "target_arch_signal.h"
 
diff --git a/bsd-user/i386/target_arch_signal.h b/bsd-user/i386/target_arch_signal.h
index 9812c6b034..a90750d602 100644
--- a/bsd-user/i386/target_arch_signal.h
+++ b/bsd-user/i386/target_arch_signal.h
@@ -27,8 +27,6 @@
 #define TARGET_MINSIGSTKSZ  (512 * 4)               /* min sig stack size */
 #define TARGET_SIGSTKSZ     (MINSIGSTKSZ + 32768)   /* recommended size */
 
-#define TARGET_MC_GET_CLEAR_RET 0x0001
-
 struct target_sigcontext {
     /* to be added */
 };
diff --git a/bsd-user/x86_64/target_arch_signal.h b/bsd-user/x86_64/target_arch_signal.h
index 4c1ff0e5ba..4bb753b08b 100644
--- a/bsd-user/x86_64/target_arch_signal.h
+++ b/bsd-user/x86_64/target_arch_signal.h
@@ -27,8 +27,6 @@
 #define TARGET_MINSIGSTKSZ  (512 * 4)               /* min sig stack size */
 #define TARGET_SIGSTKSZ     (MINSIGSTKSZ + 32768)   /* recommended size */
 
-#define TARGET_MC_GET_CLEAR_RET 0x0001
-
 struct target_sigcontext {
     /* to be added */
 };
-- 
2.32.0



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

* [PATCH v2 08/15] bsd-user/target_os_elf.h: Remove fallback ELF_HWCAP and reorder
  2021-10-08 23:14 [PATCH v2 00/15] bsd-user: misc cleanup for aarch64 import Warner Losh
                   ` (6 preceding siblings ...)
  2021-10-08 23:14 ` [PATCH v2 07/15] bsd-user: move TARGET_MC_GET_CLEAR_RET to target_os_signal.h Warner Losh
@ 2021-10-08 23:14 ` Warner Losh
  2021-10-18  3:35   ` Kyle Evans
  2021-10-08 23:15 ` [PATCH v2 09/15] bsd-user/target_os_elf: If ELF_HWCAP2 is defined, publish it Warner Losh
                   ` (6 subsequent siblings)
  14 siblings, 1 reply; 39+ messages in thread
From: Warner Losh @ 2021-10-08 23:14 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kyle Evans, richard.henderson, Laurent Vivier, Warner Losh, f4bug

All architectures have a ELF_HWCAP, so remove the fallback ifdef.
Place ELF_HWCAP in the same order as on native FreeBSD.

Signed-off-by: Warner Losh <imp@bsdimp.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 bsd-user/freebsd/target_os_elf.h | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/bsd-user/freebsd/target_os_elf.h b/bsd-user/freebsd/target_os_elf.h
index 2d03a883aa..adcffd1ddb 100644
--- a/bsd-user/freebsd/target_os_elf.h
+++ b/bsd-user/freebsd/target_os_elf.h
@@ -38,10 +38,6 @@
 #define ELF_PLATFORM (NULL)
 #endif
 
-#ifndef ELF_HWCAP
-#define ELF_HWCAP 0
-#endif
-
 /* XXX Look at the other conflicting AT_* values. */
 #define FREEBSD_AT_NCPUS     19
 #define FREEBSD_AT_HWCAP     25
@@ -114,12 +110,12 @@ static abi_ulong target_create_elf_tables(abi_ulong p, int argc, int envc,
         NEW_AUX_ENT(AT_FLAGS, (abi_ulong)0);
         NEW_AUX_ENT(FREEBSD_AT_NCPUS, (abi_ulong)bsd_get_ncpu());
         NEW_AUX_ENT(AT_ENTRY, load_bias + exec->e_entry);
+        features = ELF_HWCAP;
+        NEW_AUX_ENT(FREEBSD_AT_HWCAP, features);
         NEW_AUX_ENT(AT_UID, (abi_ulong)getuid());
         NEW_AUX_ENT(AT_EUID, (abi_ulong)geteuid());
         NEW_AUX_ENT(AT_GID, (abi_ulong)getgid());
         NEW_AUX_ENT(AT_EGID, (abi_ulong)getegid());
-        features = ELF_HWCAP;
-        NEW_AUX_ENT(FREEBSD_AT_HWCAP, features);
         target_auxents = sp; /* Note where the aux entries are in the target */
 #ifdef ARCH_DLINFO
         /*
-- 
2.32.0



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

* [PATCH v2 09/15] bsd-user/target_os_elf: If ELF_HWCAP2 is defined, publish it
  2021-10-08 23:14 [PATCH v2 00/15] bsd-user: misc cleanup for aarch64 import Warner Losh
                   ` (7 preceding siblings ...)
  2021-10-08 23:14 ` [PATCH v2 08/15] bsd-user/target_os_elf.h: Remove fallback ELF_HWCAP and reorder Warner Losh
@ 2021-10-08 23:15 ` Warner Losh
  2021-10-18  3:35   ` Kyle Evans
  2021-10-08 23:15 ` [PATCH v2 10/15] bsd-user: Remove used from TaskState Warner Losh
                   ` (5 subsequent siblings)
  14 siblings, 1 reply; 39+ messages in thread
From: Warner Losh @ 2021-10-08 23:15 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kyle Evans, richard.henderson, Laurent Vivier, Warner Losh, f4bug

Some architectures publish AT_HWCAP2 as well as AT_HWCAP. Those
architectures will define ELF_HWCAP2 in their target_arch_elf.h files
for the value for this process. If it is defined, then publish it.

Signed-off-by: Warner Losh <imp@bsdimp.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 bsd-user/freebsd/target_os_elf.h | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/bsd-user/freebsd/target_os_elf.h b/bsd-user/freebsd/target_os_elf.h
index adcffd1ddb..e5ac8e8e50 100644
--- a/bsd-user/freebsd/target_os_elf.h
+++ b/bsd-user/freebsd/target_os_elf.h
@@ -112,6 +112,10 @@ static abi_ulong target_create_elf_tables(abi_ulong p, int argc, int envc,
         NEW_AUX_ENT(AT_ENTRY, load_bias + exec->e_entry);
         features = ELF_HWCAP;
         NEW_AUX_ENT(FREEBSD_AT_HWCAP, features);
+#ifdef ELF_HWCAP2
+        features = ELF_HWCAP2;
+        NEW_AUX_ENT(FREEBSD_AT_HWCAP2, features);
+#endif
         NEW_AUX_ENT(AT_UID, (abi_ulong)getuid());
         NEW_AUX_ENT(AT_EUID, (abi_ulong)geteuid());
         NEW_AUX_ENT(AT_GID, (abi_ulong)getgid());
-- 
2.32.0



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

* [PATCH v2 10/15] bsd-user: Remove used from TaskState
  2021-10-08 23:14 [PATCH v2 00/15] bsd-user: misc cleanup for aarch64 import Warner Losh
                   ` (8 preceding siblings ...)
  2021-10-08 23:15 ` [PATCH v2 09/15] bsd-user/target_os_elf: If ELF_HWCAP2 is defined, publish it Warner Losh
@ 2021-10-08 23:15 ` Warner Losh
  2021-10-18  3:35   ` Kyle Evans
  2021-10-08 23:15 ` [PATCH v2 11/15] bsd-user: Add stop_all_tasks Warner Losh
                   ` (4 subsequent siblings)
  14 siblings, 1 reply; 39+ messages in thread
From: Warner Losh @ 2021-10-08 23:15 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kyle Evans, richard.henderson, Laurent Vivier, Warner Losh, f4bug

The 'used' field in TaskState is write only. Remove it from TaskState.

Signed-off-by: Warner Losh <imp@bsdimp.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 bsd-user/main.c | 1 -
 bsd-user/qemu.h | 1 -
 2 files changed, 2 deletions(-)

diff --git a/bsd-user/main.c b/bsd-user/main.c
index 48643eeabc..ee84554854 100644
--- a/bsd-user/main.c
+++ b/bsd-user/main.c
@@ -210,7 +210,6 @@ void init_task_state(TaskState *ts)
 {
     int i;
 
-    ts->used = 1;
     ts->first_free = ts->sigqueue_table;
     for (i = 0; i < MAX_SIGQUEUE_SIZE - 1; i++) {
         ts->sigqueue_table[i].next = &ts->sigqueue_table[i + 1];
diff --git a/bsd-user/qemu.h b/bsd-user/qemu.h
index 3b8475394c..c1170f14d9 100644
--- a/bsd-user/qemu.h
+++ b/bsd-user/qemu.h
@@ -92,7 +92,6 @@ typedef struct TaskState {
 
     struct TaskState *next;
     struct bsd_binprm *bprm;
-    int used; /* non zero if used */
     struct image_info *info;
 
     struct emulated_sigtable sigtab[TARGET_NSIG];
-- 
2.32.0



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

* [PATCH v2 11/15] bsd-user: Add stop_all_tasks
  2021-10-08 23:14 [PATCH v2 00/15] bsd-user: misc cleanup for aarch64 import Warner Losh
                   ` (9 preceding siblings ...)
  2021-10-08 23:15 ` [PATCH v2 10/15] bsd-user: Remove used from TaskState Warner Losh
@ 2021-10-08 23:15 ` Warner Losh
  2021-10-09 16:15   ` Richard Henderson
  2021-10-18  3:44   ` Kyle Evans
  2021-10-08 23:15 ` [PATCH v2 12/15] bsd-user/sysarch: Move to using do_freebsd_arch_sysarch interface Warner Losh
                   ` (3 subsequent siblings)
  14 siblings, 2 replies; 39+ messages in thread
From: Warner Losh @ 2021-10-08 23:15 UTC (permalink / raw)
  To: qemu-devel
  Cc: Stacey Son, Kyle Evans, richard.henderson, Laurent Vivier, f4bug,
	Warner Losh

Similar to the same function in linux-user: this stops all the current tasks.

Signed-off-by: Stacey Son <sson@FreeBSD.org>
Signed-off-by: Warner Losh <imp@bsdimp.com>
---
 bsd-user/main.c | 9 +++++++++
 bsd-user/qemu.h | 1 +
 2 files changed, 10 insertions(+)

diff --git a/bsd-user/main.c b/bsd-user/main.c
index ee84554854..cb5ea40236 100644
--- a/bsd-user/main.c
+++ b/bsd-user/main.c
@@ -195,6 +195,15 @@ static void usage(void)
 
 __thread CPUState *thread_cpu;
 
+void stop_all_tasks(void)
+{
+    /*
+     * We trust when using NPTL (pthreads) start_exclusive() handles thread
+     * stopping correctly.
+     */
+    start_exclusive();
+}
+
 bool qemu_cpu_is_self(CPUState *cpu)
 {
     return thread_cpu == cpu;
diff --git a/bsd-user/qemu.h b/bsd-user/qemu.h
index c1170f14d9..cdb85140f4 100644
--- a/bsd-user/qemu.h
+++ b/bsd-user/qemu.h
@@ -103,6 +103,7 @@ typedef struct TaskState {
 } __attribute__((aligned(16))) TaskState;
 
 void init_task_state(TaskState *ts);
+void stop_all_tasks(void);
 extern const char *qemu_uname_release;
 
 /*
-- 
2.32.0



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

* [PATCH v2 12/15] bsd-user/sysarch: Move to using do_freebsd_arch_sysarch interface
  2021-10-08 23:14 [PATCH v2 00/15] bsd-user: misc cleanup for aarch64 import Warner Losh
                   ` (10 preceding siblings ...)
  2021-10-08 23:15 ` [PATCH v2 11/15] bsd-user: Add stop_all_tasks Warner Losh
@ 2021-10-08 23:15 ` Warner Losh
  2021-10-18  3:36   ` Kyle Evans
  2021-10-08 23:15 ` [PATCH v2 13/15] bsd-user/sysarch: Provide a per-arch framework for sysarch syscall Warner Losh
                   ` (2 subsequent siblings)
  14 siblings, 1 reply; 39+ messages in thread
From: Warner Losh @ 2021-10-08 23:15 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kyle Evans, richard.henderson, Laurent Vivier, Warner Losh, f4bug

do_freebsd_arch_sysarch() exists in $ARCH/target_arch_sysarch.h for x86.
Call it from do_freebsd_sysarch() and remove the mostly duplicate
version in syscall.c. Future changes will move it to os-sys.c and
support other architectures.

Signed-off-by: Warner Losh <imp@bsdimp.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
---
 bsd-user/syscall.c | 45 +--------------------------------------------
 1 file changed, 1 insertion(+), 44 deletions(-)

diff --git a/bsd-user/syscall.c b/bsd-user/syscall.c
index 2fd2ba8330..d3b9f431e2 100644
--- a/bsd-user/syscall.c
+++ b/bsd-user/syscall.c
@@ -91,50 +91,7 @@ static abi_long do_obreak(abi_ulong new_brk)
 #if defined(TARGET_I386)
 static abi_long do_freebsd_sysarch(CPUX86State *env, int op, abi_ulong parms)
 {
-    abi_long ret = 0;
-    abi_ulong val;
-    int idx;
-
-    switch (op) {
-#ifdef TARGET_ABI32
-    case TARGET_FREEBSD_I386_SET_GSBASE:
-    case TARGET_FREEBSD_I386_SET_FSBASE:
-        if (op == TARGET_FREEBSD_I386_SET_GSBASE)
-#else
-    case TARGET_FREEBSD_AMD64_SET_GSBASE:
-    case TARGET_FREEBSD_AMD64_SET_FSBASE:
-        if (op == TARGET_FREEBSD_AMD64_SET_GSBASE)
-#endif
-            idx = R_GS;
-        else
-            idx = R_FS;
-        if (get_user(val, parms, abi_ulong))
-            return -TARGET_EFAULT;
-        cpu_x86_load_seg(env, idx, 0);
-        env->segs[idx].base = val;
-        break;
-#ifdef TARGET_ABI32
-    case TARGET_FREEBSD_I386_GET_GSBASE:
-    case TARGET_FREEBSD_I386_GET_FSBASE:
-        if (op == TARGET_FREEBSD_I386_GET_GSBASE)
-#else
-    case TARGET_FREEBSD_AMD64_GET_GSBASE:
-    case TARGET_FREEBSD_AMD64_GET_FSBASE:
-        if (op == TARGET_FREEBSD_AMD64_GET_GSBASE)
-#endif
-            idx = R_GS;
-        else
-            idx = R_FS;
-        val = env->segs[idx].base;
-        if (put_user(val, parms, abi_ulong))
-            return -TARGET_EFAULT;
-        break;
-    /* XXX handle the others... */
-    default:
-        ret = -TARGET_EINVAL;
-        break;
-    }
-    return ret;
+    do_freebsd_arch_sysarch(env, op, parms);
 }
 #endif
 
-- 
2.32.0



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

* [PATCH v2 13/15] bsd-user/sysarch: Provide a per-arch framework for sysarch syscall
  2021-10-08 23:14 [PATCH v2 00/15] bsd-user: misc cleanup for aarch64 import Warner Losh
                   ` (11 preceding siblings ...)
  2021-10-08 23:15 ` [PATCH v2 12/15] bsd-user/sysarch: Move to using do_freebsd_arch_sysarch interface Warner Losh
@ 2021-10-08 23:15 ` Warner Losh
  2021-10-18  3:37   ` Kyle Evans
  2021-10-08 23:15 ` [PATCH v2 14/15] bsd-user: Rename sigqueue to qemu_sigqueue Warner Losh
  2021-10-08 23:15 ` [PATCH v2 15/15] bsd-user/signal: Create a dummy signal queueing function Warner Losh
  14 siblings, 1 reply; 39+ messages in thread
From: Warner Losh @ 2021-10-08 23:15 UTC (permalink / raw)
  To: qemu-devel
  Cc: Stacey Son, Kyle Evans, richard.henderson, Laurent Vivier, f4bug,
	Warner Losh

Add the missing glue to pull in do_freebsd_sysarch to call
do_freebsd_arch_sysarch. Put it in os-sys.c, which will be used for
sysctl and sysarch system calls because they are mostly arch specific.

Signed-off-by: Stacey Son <sson@FreeBSD.org>
Signed-off-by: Warner Losh <imp@bsdimp.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
---
 bsd-user/freebsd/meson.build |  3 +++
 bsd-user/freebsd/os-sys.c    | 27 +++++++++++++++++++++++++++
 bsd-user/meson.build         |  3 +++
 bsd-user/qemu.h              |  3 +++
 bsd-user/syscall.c           |  7 -------
 5 files changed, 36 insertions(+), 7 deletions(-)
 create mode 100644 bsd-user/freebsd/meson.build
 create mode 100644 bsd-user/freebsd/os-sys.c

diff --git a/bsd-user/freebsd/meson.build b/bsd-user/freebsd/meson.build
new file mode 100644
index 0000000000..4b69cca7b9
--- /dev/null
+++ b/bsd-user/freebsd/meson.build
@@ -0,0 +1,3 @@
+bsd_user_ss.add(files(
+  'os-sys.c',
+))
diff --git a/bsd-user/freebsd/os-sys.c b/bsd-user/freebsd/os-sys.c
new file mode 100644
index 0000000000..309e27b9d6
--- /dev/null
+++ b/bsd-user/freebsd/os-sys.c
@@ -0,0 +1,27 @@
+/*
+ *  FreeBSD sysctl() and sysarch() system call emulation
+ *
+ *  Copyright (c) 2013-15 Stacey D. Son
+ *
+ *  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/>.
+ */
+
+#include "qemu.h"
+#include "target_arch_sysarch.h"
+
+/* sysarch() is architecture dependent. */
+abi_long do_freebsd_sysarch(void *cpu_env, abi_long arg1, abi_long arg2)
+{
+    return do_freebsd_arch_sysarch(cpu_env, arg1, arg2);
+}
diff --git a/bsd-user/meson.build b/bsd-user/meson.build
index 243fb78930..a4163c91ff 100644
--- a/bsd-user/meson.build
+++ b/bsd-user/meson.build
@@ -12,3 +12,6 @@ bsd_user_ss.add(files(
   'syscall.c',
   'uaccess.c',
 ))
+
+# Pull in the OS-specific build glue, if any
+subdir(targetos)
diff --git a/bsd-user/qemu.h b/bsd-user/qemu.h
index cdb85140f4..e65e41d53d 100644
--- a/bsd-user/qemu.h
+++ b/bsd-user/qemu.h
@@ -239,6 +239,9 @@ extern unsigned long target_sgrowsiz;
 abi_long get_errno(abi_long ret);
 bool is_error(abi_long ret);
 
+/* os-sys.c */
+abi_long do_freebsd_sysarch(void *cpu_env, abi_long arg1, abi_long arg2);
+
 /* user access */
 
 #define VERIFY_READ  PAGE_READ
diff --git a/bsd-user/syscall.c b/bsd-user/syscall.c
index d3b9f431e2..d3322760f4 100644
--- a/bsd-user/syscall.c
+++ b/bsd-user/syscall.c
@@ -88,13 +88,6 @@ static abi_long do_obreak(abi_ulong new_brk)
     return 0;
 }
 
-#if defined(TARGET_I386)
-static abi_long do_freebsd_sysarch(CPUX86State *env, int op, abi_ulong parms)
-{
-    do_freebsd_arch_sysarch(env, op, parms);
-}
-#endif
-
 #ifdef __FreeBSD__
 /*
  * XXX this uses the undocumented oidfmt interface to find the kind of
-- 
2.32.0



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

* [PATCH v2 14/15] bsd-user: Rename sigqueue to qemu_sigqueue
  2021-10-08 23:14 [PATCH v2 00/15] bsd-user: misc cleanup for aarch64 import Warner Losh
                   ` (12 preceding siblings ...)
  2021-10-08 23:15 ` [PATCH v2 13/15] bsd-user/sysarch: Provide a per-arch framework for sysarch syscall Warner Losh
@ 2021-10-08 23:15 ` Warner Losh
  2021-10-18  3:36   ` Kyle Evans
  2021-10-08 23:15 ` [PATCH v2 15/15] bsd-user/signal: Create a dummy signal queueing function Warner Losh
  14 siblings, 1 reply; 39+ messages in thread
From: Warner Losh @ 2021-10-08 23:15 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kyle Evans, richard.henderson, Laurent Vivier, Warner Losh, f4bug

To avoid a name clash with FreeBSD's sigqueue data structure in
signalvar.h, rename sigqueue to qemu_sigqueue. This sturcture
is currently defined, but unused.

Signed-off-by: Warner Losh <imp@bsdimp.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 bsd-user/qemu.h | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/bsd-user/qemu.h b/bsd-user/qemu.h
index e65e41d53d..5b815c3a23 100644
--- a/bsd-user/qemu.h
+++ b/bsd-user/qemu.h
@@ -73,15 +73,15 @@ struct image_info {
 
 #define MAX_SIGQUEUE_SIZE 1024
 
-struct sigqueue {
-    struct sigqueue *next;
+struct qemu_sigqueue {
+    struct qemu_sigqueue *next;
+    target_siginfo_t info;
 };
 
 struct emulated_sigtable {
     int pending; /* true if signal is pending */
-    struct sigqueue *first;
-    /* in order to always have memory for the first signal, we put it here */
-    struct sigqueue info;
+    struct qemu_sigqueue *first;
+    struct qemu_sigqueue info;	/* Put first signal info here */
 };
 
 /*
@@ -95,8 +95,8 @@ typedef struct TaskState {
     struct image_info *info;
 
     struct emulated_sigtable sigtab[TARGET_NSIG];
-    struct sigqueue sigqueue_table[MAX_SIGQUEUE_SIZE]; /* siginfo queue */
-    struct sigqueue *first_free; /* first free siginfo queue entry */
+    struct qemu_sigqueue sigqueue_table[MAX_SIGQUEUE_SIZE]; /* siginfo queue */
+    struct qemu_sigqueue *first_free; /* first free siginfo queue entry */
     int signal_pending; /* non zero if a signal may be pending */
 
     uint8_t stack[];
-- 
2.32.0



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

* [PATCH v2 15/15] bsd-user/signal: Create a dummy signal queueing function
  2021-10-08 23:14 [PATCH v2 00/15] bsd-user: misc cleanup for aarch64 import Warner Losh
                   ` (13 preceding siblings ...)
  2021-10-08 23:15 ` [PATCH v2 14/15] bsd-user: Rename sigqueue to qemu_sigqueue Warner Losh
@ 2021-10-08 23:15 ` Warner Losh
  2021-10-09 16:15   ` Richard Henderson
  2021-10-18  3:44   ` Kyle Evans
  14 siblings, 2 replies; 39+ messages in thread
From: Warner Losh @ 2021-10-08 23:15 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kyle Evans, richard.henderson, Laurent Vivier, Warner Losh, f4bug

Create dummy signal queueing function so we can start to integrate other
architectures (at the cost of signals remaining broken) to tame the
dependency graph a bit and to bring in signals in a more controlled
fashion. Log unimplemented events to it in the mean time.

Signed-off-by: Warner Losh <imp@bsdimp.com>
---
 bsd-user/qemu.h   |  2 +-
 bsd-user/signal.c | 11 ++++++++++-
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/bsd-user/qemu.h b/bsd-user/qemu.h
index 5b815c3a23..62095eb975 100644
--- a/bsd-user/qemu.h
+++ b/bsd-user/qemu.h
@@ -17,7 +17,6 @@
 #ifndef QEMU_H
 #define QEMU_H
 
-
 #include "qemu/osdep.h"
 #include "cpu.h"
 #include "qemu/units.h"
@@ -209,6 +208,7 @@ void process_pending_signals(CPUArchState *cpu_env);
 void signal_init(void);
 long do_sigreturn(CPUArchState *env);
 long do_rt_sigreturn(CPUArchState *env);
+void queue_signal(CPUArchState *env, int sig, target_siginfo_t *info);
 abi_long do_sigaltstack(abi_ulong uss_addr, abi_ulong uoss_addr, abi_ulong sp);
 
 /* mmap.c */
diff --git a/bsd-user/signal.c b/bsd-user/signal.c
index ad6d935569..0c1093deb1 100644
--- a/bsd-user/signal.c
+++ b/bsd-user/signal.c
@@ -16,10 +16,19 @@
  *  You should have received a copy of the GNU General Public License
  *  along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
-#include "qemu/osdep.h"
 
+#include "qemu/osdep.h"
 #include "qemu.h"
 
+/*
+ * Queue a signal so that it will be send to the virtual CPU as soon as
+ * possible.
+ */
+void queue_signal(CPUArchState *env, int sig, target_siginfo_t *info)
+{
+    qemu_log_mask(LOG_UNIMP, "No signal queueing, dropping signal %d\n", sig);
+}
+
 void signal_init(void)
 {
 }
-- 
2.32.0



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

* Re: [PATCH v2 01/15] meson: *-user: only descend into *-user when configured
  2021-10-08 23:14 ` [PATCH v2 01/15] meson: *-user: only descend into *-user when configured Warner Losh
@ 2021-10-09 14:40   ` Warner Losh
  2021-10-18  3:42   ` Kyle Evans
  2021-10-18 10:17   ` Philippe Mathieu-Daudé
  2 siblings, 0 replies; 39+ messages in thread
From: Warner Losh @ 2021-10-09 14:40 UTC (permalink / raw)
  To: QEMU Developers
  Cc: Kyle Evans, Paolo Bonzini, Richard Henderson, Laurent Vivier,
	Philippe Mathieu-Daudé

[-- Attachment #1: Type: text/plain, Size: 2143 bytes --]

(looks like Paolo's email bounced, so try again with cut and paste)

On Fri, Oct 8, 2021 at 5:15 PM Warner Losh <imp@bsdimp.com> wrote:

> To increase flexibility, only descend into *-user when that is
> configured. This allows *-user to selectively include directories based
> on the host OS which may not exist on all hosts. Adopt Paolo's
> suggestion of checking the configuration in the directories that know
> about the configuration.
>
> Message-Id: <20210926220103.1721355-2-f4bug@amsat.org>
> Message-Id: <20210926220103.1721355-3-f4bug@amsat.org>
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> Signed-off-by: Warner Losh <wlosh@bsdimp.com>
> Acked-by: Paolo Bonzini <pbonzinni@redhat.com>
>
> Sponsored by:           Netflix
> ---
>  bsd-user/meson.build   | 4 ++++
>  linux-user/meson.build | 4 ++++
>  meson.build            | 3 +--
>  3 files changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/bsd-user/meson.build b/bsd-user/meson.build
> index 0369549340..243fb78930 100644
> --- a/bsd-user/meson.build
> +++ b/bsd-user/meson.build
> @@ -1,3 +1,7 @@
> +if not config_target.has_key('CONFIG_BSD_USER')
> +   subdir_done()
> +endif
> +
>  bsd_user_ss.add(files(
>    'bsdload.c',
>    'elfload.c',
> diff --git a/linux-user/meson.build b/linux-user/meson.build
> index 9549f81682..602255a3d6 100644
> --- a/linux-user/meson.build
> +++ b/linux-user/meson.build
> @@ -1,3 +1,7 @@
> +if not config_target.has_key('CONFIG_LINUX_USER')
> +   subdir_done()
> +endif
> +
>  linux_user_ss.add(files(
>    'elfload.c',
>    'exit.c',
> diff --git a/meson.build b/meson.build
> index 99a0a3e689..1f2da5f7d9 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -2303,10 +2303,9 @@ subdir('ebpf')
>
>  common_ss.add(libbpf)
>
> -bsd_user_ss.add(files('gdbstub.c'))
>  specific_ss.add_all(when: 'CONFIG_BSD_USER', if_true: bsd_user_ss)
>
> -linux_user_ss.add(files('gdbstub.c', 'thunk.c'))
> +linux_user_ss.add(files('thunk.c'))
>  specific_ss.add_all(when: 'CONFIG_LINUX_USER', if_true: linux_user_ss)
>
>  # needed for fuzzing binaries
> --
> 2.32.0
>
>

[-- Attachment #2: Type: text/html, Size: 3042 bytes --]

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

* Re: [PATCH v2 15/15] bsd-user/signal: Create a dummy signal queueing function
  2021-10-08 23:15 ` [PATCH v2 15/15] bsd-user/signal: Create a dummy signal queueing function Warner Losh
@ 2021-10-09 16:15   ` Richard Henderson
  2021-10-18  3:44   ` Kyle Evans
  1 sibling, 0 replies; 39+ messages in thread
From: Richard Henderson @ 2021-10-09 16:15 UTC (permalink / raw)
  To: Warner Losh, qemu-devel; +Cc: Kyle Evans, Laurent Vivier, f4bug

On 10/8/21 4:15 PM, Warner Losh wrote:
> Create dummy signal queueing function so we can start to integrate other
> architectures (at the cost of signals remaining broken) to tame the
> dependency graph a bit and to bring in signals in a more controlled
> fashion. Log unimplemented events to it in the mean time.
> 
> Signed-off-by: Warner Losh<imp@bsdimp.com>
> ---
>   bsd-user/qemu.h   |  2 +-
>   bsd-user/signal.c | 11 ++++++++++-
>   2 files changed, 11 insertions(+), 2 deletions(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~


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

* Re: [PATCH v2 11/15] bsd-user: Add stop_all_tasks
  2021-10-08 23:15 ` [PATCH v2 11/15] bsd-user: Add stop_all_tasks Warner Losh
@ 2021-10-09 16:15   ` Richard Henderson
  2021-10-18  3:44   ` Kyle Evans
  1 sibling, 0 replies; 39+ messages in thread
From: Richard Henderson @ 2021-10-09 16:15 UTC (permalink / raw)
  To: Warner Losh, qemu-devel; +Cc: Kyle Evans, Stacey Son, Laurent Vivier, f4bug

On 10/8/21 4:15 PM, Warner Losh wrote:
> Similar to the same function in linux-user: this stops all the current tasks.
> 
> Signed-off-by: Stacey Son<sson@FreeBSD.org>
> Signed-off-by: Warner Losh<imp@bsdimp.com>
> ---
>   bsd-user/main.c | 9 +++++++++
>   bsd-user/qemu.h | 1 +
>   2 files changed, 10 insertions(+)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~


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

* Re: [PATCH v2 02/15] bsd-user/target_os-user.h: Remove support for FreeBSD older than 12.0
  2021-10-08 23:14 ` [PATCH v2 02/15] bsd-user/target_os-user.h: Remove support for FreeBSD older than 12.0 Warner Losh
@ 2021-10-14 15:14   ` Kyle Evans
  0 siblings, 0 replies; 39+ messages in thread
From: Kyle Evans @ 2021-10-14 15:14 UTC (permalink / raw)
  To: Warner Losh
  Cc: Kyle Evans, Philippe Mathieu-Daudé,
	Richard Henderson, QEMU Developers, Laurent Vivier

On Fri, Oct 8, 2021 at 6:15 PM Warner Losh <imp@bsdimp.com> wrote:
>
> Signed-off-by: Warner Losh <imp@bsdimp.com>
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>  bsd-user/freebsd/target_os_user.h | 100 +-----------------------------
>  1 file changed, 1 insertion(+), 99 deletions(-)
>
> diff --git a/bsd-user/freebsd/target_os_user.h b/bsd-user/freebsd/target_os_user.h
> index 95b1fa9f99..19892c5071 100644
> --- a/bsd-user/freebsd/target_os_user.h
> +++ b/bsd-user/freebsd/target_os_user.h
> @@ -61,15 +61,7 @@ struct target_sockaddr_storage {
>  /*
>   * from sys/user.h
>   */
> -#if defined(__FreeBSD_version) && __FreeBSD_version >= 1200031
>  #define TARGET_KI_NSPARE_INT        2
> -#elif defined(__FreeBSD_version) && __FreeBSD_version >= 1100000
> -#define TARGET_KI_NSPARE_INT        4
> -#elif defined(__FreeBSD_version) && __FreeBSD_version >= 1000000
> -#define TARGET_KI_NSPARE_INT        7
> -#else
> -#define TARGET_KI_NSPARE_INT        9
> -#endif /* ! __FreeBSD_version >= 1000000 */
>  #define TARGET_KI_NSPARE_LONG       12
>  #define TARGET_KI_NSPARE_PTR        6
>
> @@ -116,11 +108,7 @@ struct target_kinfo_proc {
>      int32_t     ki_tsid;            /* Terminal session ID */
>      int16_t     ki_jobc;            /* job control counter */
>      int16_t     ki_spare_short1;    /* unused (just here for alignment) */
> -#if defined(__FreeBSD_version) && __FreeBSD_version >= 1200031
>      int32_t     ki_tdev__freebsd11; /* controlling tty dev */
> -#else
> -    int32_t     ki_tdev;            /* controlling tty dev */
> -#endif
>      target_sigset_t ki_siglist;     /* Signals arrived but not delivered */
>      target_sigset_t ki_sigmask;     /* Current signal mask */
>      target_sigset_t ki_sigignore;   /* Signals being ignored */
> @@ -164,45 +152,24 @@ struct target_kinfo_proc {
>      int8_t      ki_nice;            /* Process "nice" value */
>      char        ki_lock;            /* Process lock (prevent swap) count */
>      char        ki_rqindex;         /* Run queue index */
> -#if defined(__FreeBSD_version) && __FreeBSD_version >= 1100000
>      u_char      ki_oncpu_old;       /* Which cpu we are on (legacy) */
>      u_char      ki_lastcpu_old;     /* Last cpu we were on (legacy) */
> -#else
> -    u_char      ki_oncpu;           /* Which cpu we are on */
> -    u_char      ki_lastcpu;         /* Last cpu we were on */
> -#endif /* ! __FreeBSD_version >= 1100000 */
> -#if defined(__FreeBSD_version) && __FreeBSD_version >= 900000
>      char        ki_tdname[TARGET_TDNAMLEN + 1];  /* thread name */
> -#else
> -    char        ki_ocomm[TARGET_TDNAMLEN + 1];   /* thread name */
> -#endif /* ! __FreeBSD_version >= 900000 */
>      char        ki_wmesg[TARGET_WMESGLEN + 1];   /* wchan message */
>      char        ki_login[TARGET_LOGNAMELEN + 1]; /* setlogin name */
>      char        ki_lockname[TARGET_LOCKNAMELEN + 1]; /* lock name */
>      char        ki_comm[TARGET_COMMLEN + 1];     /* command name */
>      char        ki_emul[TARGET_KI_EMULNAMELEN + 1];  /* emulation name */
> -#if defined(__FreeBSD_version) && __FreeBSD_version >= 900000
>      char        ki_loginclass[TARGET_LOGINCLASSLEN + 1]; /* login class */
> -#endif /* ! __FreeBSD_version >= 900000 */
>
> -#if defined(__FreeBSD_version) && __FreeBSD_version >= 900000
>      char        ki_sparestrings[50];    /* spare string space */
> -#else
> -    char        ki_sparestrings[68];    /* spare string space */
> -#endif /* ! __FreeBSD_version >= 900000 */
>      int32_t     ki_spareints[TARGET_KI_NSPARE_INT]; /* spare room for growth */
> -#if defined(__FreeBSD_version) && __FreeBSD_version >= 1200031
> - uint64_t ki_tdev;  /* controlling tty dev */
> -#endif
> -#if defined(__FreeBSD_version) && __FreeBSD_version >= 1100000
> +    uint64_t ki_tdev;  /* controlling tty dev */
>      int32_t     ki_oncpu;           /* Which cpu we are on */
>      int32_t     ki_lastcpu;         /* Last cpu we were on */
>      int32_t     ki_tracer;          /* Pid of tracing process */
> -#endif /* __FreeBSD_version >= 1100000 */
> -#if defined(__FreeBSD_version) && __FreeBSD_version >= 900000
>      int32_t     ki_flag2;           /* P2_* flags */
>      int32_t     ki_fibnum;          /* Default FIB number */
> -#endif /* ! __FreeBSD_version >= 900000 */
>      uint32_t    ki_cr_flags;        /* Credential flags */
>      int32_t     ki_jid;             /* Process jail ID */
>      int32_t     ki_numthreads;      /* XXXKSE number of threads in total */
> @@ -234,18 +201,8 @@ struct target_kinfo_file {
>      int32_t  kf_flags;  /* Flags. */
>      int32_t  kf_pad0;  /* Round to 64 bit alignment. */
>      int64_t  kf_offset;  /* Seek location. */
> -#if defined(__FreeBSD_version) && __FreeBSD_version < 1200031
> -    int32_t  kf_vnode_type;  /* Vnode type. */
> -    int32_t  kf_sock_domain;  /* Socket domain. */
> -    int32_t  kf_sock_type;  /* Socket type. */
> -    int32_t  kf_sock_protocol; /* Socket protocol. */
> -    struct target_sockaddr_storage kf_sa_local; /* Socket address. */
> -    struct target_sockaddr_storage kf_sa_peer; /* Peer address. */
> -#endif
> -#if defined(__FreeBSD_version) && __FreeBSD_version >= 900000
>      union {
>          struct {
> -#if defined(__FreeBSD_version) && __FreeBSD_version >= 1200031
>              uint32_t kf_spareint;
>              /* Socket domain. */
>              int  kf_sock_domain0;
> @@ -257,7 +214,6 @@ struct target_kinfo_file {
>              struct sockaddr_storage kf_sa_local;
>              /* Peer address. */
>              struct sockaddr_storage kf_sa_peer;
> -#endif
>              /* Address of so_pcb. */
>              uint64_t kf_sock_pcb;
>              /* Address of inp_ppcb. */
> @@ -272,7 +228,6 @@ struct target_kinfo_file {
>              uint32_t kf_sock_pad0;
>          } kf_sock;
>          struct {
> -#if defined(__FreeBSD_version) && __FreeBSD_version >= 1200031
>              /* Vnode type. */
>              int  kf_file_type;
>              /* Space for future use */
> @@ -290,16 +245,6 @@ struct target_kinfo_file {
>              uint32_t kf_file_fsid_freebsd11;
>              /* File device, FreeBSD 11 compat. */
>              uint32_t kf_file_rdev_freebsd11;
> -#else
> -            /* Global file id. */
> -            uint64_t kf_file_fileid;
> -            /* File size. */
> -            uint64_t kf_file_size;
> -            /* Vnode filesystem id. */
> -            uint32_t kf_file_fsid;
> -            /* File device. */
> -            uint32_t kf_file_rdev;
> -#endif
>              /* File mode. */
>              uint16_t kf_file_mode;
>              /* Round to 64 bit alignment. */
> @@ -307,18 +252,14 @@ struct target_kinfo_file {
>              uint32_t kf_file_pad1;
>          } kf_file;
>          struct {
> -#if defined(__FreeBSD_version) && __FreeBSD_version >= 1200031
>              uint32_t kf_spareint[4];
>              uint64_t kf_spareint64[32];
> -#endif
>              uint32_t kf_sem_value;
>              uint16_t kf_sem_mode;
>          } kf_sem;
>          struct {
> -#if defined(__FreeBSD_version) && __FreeBSD_version >= 1200031
>              uint32_t kf_spareint[4];
>              uint64_t kf_spareint64[32];
> -#endif
>              uint64_t kf_pipe_addr;
>              uint64_t kf_pipe_peer;
>              uint32_t kf_pipe_buffer_cnt;
> @@ -326,7 +267,6 @@ struct target_kinfo_file {
>              uint32_t kf_pipe_pad0[3];
>          } kf_pipe;
>          struct {
> -#if defined(__FreeBSD_version) && __FreeBSD_version >= 1200031
>              uint32_t kf_spareint[4];
>              uint64_t kf_spareint64[32];
>              uint32_t kf_pts_dev_freebsd11;
> @@ -334,34 +274,18 @@ struct target_kinfo_file {
>              uint64_t kf_pts_dev;
>              /* Round to 64 bit alignment. */
>              uint32_t kf_pts_pad1[4];
> -#else
> -            uint32_t kf_pts_dev;
> -            /* Round to 64 bit alignment. */
> -            uint32_t kf_pts_pad0[7];
> -#endif
>          } kf_pts;
>          struct {
> -#if defined(__FreeBSD_version) && __FreeBSD_version >= 1200031
>              uint32_t kf_spareint[4];
>              uint64_t kf_spareint64[32];
> -#endif
>              int32_t  kf_pid;
>          } kf_proc;
>      } kf_un;
>      uint16_t kf_status;  /* Status flags. */
>      uint16_t kf_pad1;  /* Round to 32 bit alignment. */
>      int32_t  _kf_ispare0;  /* Space for more stuff. */
> -#if defined(__FreeBSD_version) && __FreeBSD_version >= 1000000
>      target_cap_rights_t kf_cap_rights; /* Capability rights. */
>      uint64_t _kf_cap_spare; /* Space for future cap_rights_t. */
> -#else /* ! __FreeBSD_version >= 1000000 */
> -    uint64_t        kf_cap_rights;
> -    int  _kf_ispare[4];
> -#endif /* ! __FreeBSD_version >= 1000000 */
> -
> -#else /* ! __FreeBSD_version >= 900000 */
> -    int  _kf_ispare[16];
> -#endif /* ! __FreeBSD_version >= 900000 */
>      /* Truncated before copyout in sysctl */
>      char  kf_path[PATH_MAX]; /* Path to file, if any. */
>  };
> @@ -372,34 +296,19 @@ struct target_kinfo_vmentry {
>      uint64_t kve_start;   /* Starting address. */
>      uint64_t kve_end;   /* Finishing address. */
>      uint64_t kve_offset;   /* Mapping offset in object */
> -#if defined(__FreeBSD_version) && __FreeBSD_version >= 900000
>      uint64_t kve_vn_fileid;   /* inode number if vnode */
> -#if defined(__FreeBSD_version) && __FreeBSD_version >= 1200031
>      uint32_t kve_vn_fsid_freebsd11;  /* dev_t of vnode location */
> -#else
> -    uint32_t kve_vn_fsid;   /* dev_t of vnode location */
> -#endif
> -#else /* !  __FreeBSD_version >= 900000 */
> -    uint64_t kve_fileid;   /* inode number if vnode */
> -    uint32_t kve_fsid;   /* dev_t of vnode location */
> -#endif /* !  __FreeBSD_version >= 900000 */
>      int32_t  kve_flags;   /* Flags on map entry. */
>      int32_t  kve_resident;   /* Number of resident pages. */
>      int32_t  kve_private_resident;  /* Number of private pages. */
>      int32_t  kve_protection;  /* Protection bitmask. */
>      int32_t  kve_ref_count;   /* VM obj ref count. */
>      int32_t  kve_shadow_count;  /* VM obj shadow count. */
> -#if defined(__FreeBSD_version) && __FreeBSD_version >= 900000
>      int32_t  kve_vn_type;   /* Vnode type. */
>      uint64_t kve_vn_size;   /* File size. */
> -#if defined(__FreeBSD_version) && __FreeBSD_version >= 1200031
>      uint32_t kve_vn_rdev_freebsd11;  /* Device id if device. */
> -#else
> -    uint32_t kve_vn_rdev;   /* Device id if device. */
> -#endif
>      uint16_t kve_vn_mode;   /* File mode. */
>      uint16_t kve_status;   /* Status flags. */
> -#if defined(__FreeBSD_version) && __FreeBSD_version >= 1200031
>  #if (__FreeBSD_version >= 1300501 && __FreeBSD_version < 1400000) ||    \
>      __FreeBSD_version >= 1400009
>      union {
> @@ -413,13 +322,6 @@ struct target_kinfo_vmentry {
>  #endif
>      uint64_t kve_vn_rdev;   /* Device id if device. */
>      int  _kve_ispare[8];  /* Space for more stuff. */
> -#else
> -    int32_t  _kve_ispare[12];  /* Space for more stuff. */
> -#endif
> -#else /* !  __FreeBSD_version >= 900000 */
> -    int  _kve_pad0;
> -    int32_t  _kve_ispare[16];  /* Space for more stuff. */
> -#endif /* !  __FreeBSD_version >= 900000 */
>      /* Truncated before copyout in sysctl */
>      char  kve_path[PATH_MAX];  /* Path to VM obj, if any. */
>  };
> --
> 2.32.0
>

Reviewed-by: Kyle Evans <kevans@FreeBSD.org>


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

* Re: [PATCH v2 03/15] bsd-user/strace.list: Remove support for FreeBSD versions older than 12.0
  2021-10-08 23:14 ` [PATCH v2 03/15] bsd-user/strace.list: Remove support for FreeBSD versions " Warner Losh
@ 2021-10-14 15:14   ` Kyle Evans
  0 siblings, 0 replies; 39+ messages in thread
From: Kyle Evans @ 2021-10-14 15:14 UTC (permalink / raw)
  To: Warner Losh
  Cc: Kyle Evans, Philippe Mathieu-Daudé,
	Richard Henderson, QEMU Developers, Laurent Vivier

On Fri, Oct 8, 2021 at 6:15 PM Warner Losh <imp@bsdimp.com> wrote:
>
> Signed-off-by: Warner Losh <imp@bsdimp.com>
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>  bsd-user/freebsd/strace.list | 11 -----------
>  1 file changed, 11 deletions(-)
>
> diff --git a/bsd-user/freebsd/strace.list b/bsd-user/freebsd/strace.list
> index b01b5f36e8..275d2dbe27 100644
> --- a/bsd-user/freebsd/strace.list
> +++ b/bsd-user/freebsd/strace.list
> @@ -33,10 +33,6 @@
>  { TARGET_FREEBSD_NR___syscall, "__syscall", NULL, NULL, NULL },
>  { TARGET_FREEBSD_NR___sysctl, "__sysctl", NULL, print_sysctl, NULL },
>  { TARGET_FREEBSD_NR__umtx_op, "_umtx_op", "%s(%#x, %d, %d, %#x, %#x)", NULL, NULL },
> -#if defined(__FreeBSD_version) && __FreeBSD_version < 1000000
> -{ TARGET_FREEBSD_NR__umtx_lock, "__umtx_lock", NULL, NULL, NULL },
> -{ TARGET_FREEBSD_NR__umtx_unlock, "__umtx_unlock", NULL, NULL, NULL },
> -#endif
>  { TARGET_FREEBSD_NR_accept, "accept", "%s(%d,%#x,%#x)", NULL, NULL },
>  { TARGET_FREEBSD_NR_accept4, "accept4", "%s(%d,%d,%#x,%#x)", NULL, NULL },
>  { TARGET_FREEBSD_NR_access, "access", "%s(\"%s\",%#o)", NULL, NULL },
> @@ -49,10 +45,6 @@
>  { TARGET_FREEBSD_NR_cap_fcntls_get, "cap_fcntls_get", NULL, NULL, NULL },
>  { TARGET_FREEBSD_NR_cap_fcntls_limit, "cap_fcntls_limit", NULL, NULL, NULL },
>  { TARGET_FREEBSD_NR_cap_getmode, "cap_getmode", NULL, NULL, NULL },
> -#if defined(__FreeBSD_version) && __FreeBSD_version < 1000000
> -{ TARGET_FREEBSD_NR_cap_getrights, "cap_getrights", NULL, NULL, NULL },
> -{ TARGET_FREEBSD_NR_cap_new, "cap_new", NULL, NULL, NULL },
> -#endif
>  { TARGET_FREEBSD_NR_cap_ioctls_get, "cap_ioctls_get", NULL, NULL, NULL },
>  { TARGET_FREEBSD_NR_cap_ioctls_limit, "cap_ioctls_limit", NULL, NULL, NULL },
>  { TARGET_FREEBSD_NR_cap_rights_limit, "cap_rights_limit", NULL, NULL, NULL },
> @@ -146,9 +138,6 @@
>  { TARGET_FREEBSD_NR_freebsd11_kevent, "freebsd11_kevent", NULL, NULL, NULL },
>  { TARGET_FREEBSD_NR_kevent, "kevent", NULL, NULL, NULL },
>  { TARGET_FREEBSD_NR_kill, "kill", NULL, NULL, NULL },
> -#if defined(__FreeBSD_version) && __FreeBSD_version < 1000000
> -{ TARGET_FREEBSD_NR_killpg, "killpg", NULL, NULL, NULL },
> -#endif
>  { TARGET_FREEBSD_NR_kqueue, "kqueue", NULL, NULL, NULL },
>  { TARGET_FREEBSD_NR_ktrace, "ktrace", NULL, NULL, NULL },
>  { TARGET_FREEBSD_NR_lchown, "lchown", NULL, NULL, NULL },
> --
> 2.32.0
>

Reviewed-by: Kyle Evans <kevans@FreeBSD.org>


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

* Re: [PATCH v2 04/15] bsd-user: TARGET_RESET define is unused, remove it
  2021-10-08 23:14 ` [PATCH v2 04/15] bsd-user: TARGET_RESET define is unused, remove it Warner Losh
@ 2021-10-18  3:33   ` Kyle Evans
  0 siblings, 0 replies; 39+ messages in thread
From: Kyle Evans @ 2021-10-18  3:33 UTC (permalink / raw)
  To: Warner Losh
  Cc: Kyle Evans, Philippe Mathieu-Daudé,
	Richard Henderson, QEMU Developers, Laurent Vivier

On Fri, Oct 8, 2021 at 6:15 PM Warner Losh <imp@bsdimp.com> wrote:
>
> Signed-off-by: Warner Losh <imp@bsdimp.com>
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  bsd-user/i386/target_arch_cpu.h   | 2 --
>  bsd-user/x86_64/target_arch_cpu.h | 2 --
>  2 files changed, 4 deletions(-)
>
> diff --git a/bsd-user/i386/target_arch_cpu.h b/bsd-user/i386/target_arch_cpu.h
> index 978e8066af..b28602adbb 100644
> --- a/bsd-user/i386/target_arch_cpu.h
> +++ b/bsd-user/i386/target_arch_cpu.h
> @@ -23,8 +23,6 @@
>
>  #define TARGET_DEFAULT_CPU_MODEL "qemu32"
>
> -#define TARGET_CPU_RESET(cpu)
> -
>  static inline void target_cpu_init(CPUX86State *env,
>          struct target_pt_regs *regs)
>  {
> diff --git a/bsd-user/x86_64/target_arch_cpu.h b/bsd-user/x86_64/target_arch_cpu.h
> index 5f5ee602f9..5172b230f0 100644
> --- a/bsd-user/x86_64/target_arch_cpu.h
> +++ b/bsd-user/x86_64/target_arch_cpu.h
> @@ -23,8 +23,6 @@
>
>  #define TARGET_DEFAULT_CPU_MODEL "qemu64"
>
> -#define TARGET_CPU_RESET(cpu)
> -
>  static inline void target_cpu_init(CPUX86State *env,
>          struct target_pt_regs *regs)
>  {
> --
> 2.32.0
>

Reviewed-by: Kyle Evans <kevans@FreeBSD.org>


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

* Re: [PATCH v2 05/15] bsd-user: export get_errno and is_error from syscall.c
  2021-10-08 23:14 ` [PATCH v2 05/15] bsd-user: export get_errno and is_error from syscall.c Warner Losh
@ 2021-10-18  3:33   ` Kyle Evans
  0 siblings, 0 replies; 39+ messages in thread
From: Kyle Evans @ 2021-10-18  3:33 UTC (permalink / raw)
  To: Warner Losh
  Cc: Kyle Evans, Philippe Mathieu-Daudé,
	Richard Henderson, QEMU Developers, Laurent Vivier

On Fri, Oct 8, 2021 at 6:15 PM Warner Losh <imp@bsdimp.com> wrote:
>
> Make get_errno and is_error global so files other than syscall.c can use
> them.
>
> Signed-off-by: Warner Losh <imp@bsdimp.com>
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  bsd-user/qemu.h    |  4 ++++
>  bsd-user/syscall.c | 10 +++++-----
>  2 files changed, 9 insertions(+), 5 deletions(-)
>
> diff --git a/bsd-user/qemu.h b/bsd-user/qemu.h
> index 522d6c4031..3b8475394c 100644
> --- a/bsd-user/qemu.h
> +++ b/bsd-user/qemu.h
> @@ -235,6 +235,10 @@ extern unsigned long target_dflssiz;
>  extern unsigned long target_maxssiz;
>  extern unsigned long target_sgrowsiz;
>
> +/* syscall.c */
> +abi_long get_errno(abi_long ret);
> +bool is_error(abi_long ret);
> +
>  /* user access */
>
>  #define VERIFY_READ  PAGE_READ
> diff --git a/bsd-user/syscall.c b/bsd-user/syscall.c
> index 372836d44d..2fd2ba8330 100644
> --- a/bsd-user/syscall.c
> +++ b/bsd-user/syscall.c
> @@ -33,18 +33,18 @@
>  static abi_ulong target_brk;
>  static abi_ulong target_original_brk;
>
> -static inline abi_long get_errno(abi_long ret)
> +abi_long get_errno(abi_long ret)
>  {
> -    if (ret == -1)
> +    if (ret == -1) {
>          /* XXX need to translate host -> target errnos here */
>          return -(errno);
> -    else
> -        return ret;
> +    }
> +    return ret;
>  }
>
>  #define target_to_host_bitmask(x, tbl) (x)
>
> -static inline int is_error(abi_long ret)
> +bool is_error(abi_long ret)
>  {
>      return (abi_ulong)ret >= (abi_ulong)(-4096);
>  }
> --
> 2.32.0
>


Reviewed-by: Kyle Evans <kevans@FreeBSD.org>


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

* Re: [PATCH v2 06/15] bsd-user/errno_defs.h: Add internal error numbers
  2021-10-08 23:14 ` [PATCH v2 06/15] bsd-user/errno_defs.h: Add internal error numbers Warner Losh
@ 2021-10-18  3:34   ` Kyle Evans
  0 siblings, 0 replies; 39+ messages in thread
From: Kyle Evans @ 2021-10-18  3:34 UTC (permalink / raw)
  To: Warner Losh
  Cc: Stacey Son, Kyle Evans, Richard Henderson,
	Philippe Mathieu-Daudé,
	QEMU Developers, Laurent Vivier

On Fri, Oct 8, 2021 at 6:15 PM Warner Losh <imp@bsdimp.com> wrote:
>
> From: Stacey Son <sson@FreeBSD.org>
>
> To emulate signals and interrupted system calls, we need to have the
> same mechanisms we have in the kernel, including these errno values.
>
> Signed-off-by: Stacey Son <sson@FreeBSD.org>
> Signed-off-by: Warner Losh <imp@bsdimp.com>
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>  bsd-user/errno_defs.h | 14 +++++++++++---
>  1 file changed, 11 insertions(+), 3 deletions(-)
>
> diff --git a/bsd-user/errno_defs.h b/bsd-user/errno_defs.h
> index 1efa502a12..b538dd93da 100644
> --- a/bsd-user/errno_defs.h
> +++ b/bsd-user/errno_defs.h
> @@ -1,6 +1,3 @@
> -/*      $OpenBSD: errno.h,v 1.20 2007/09/03 14:37:52 millert Exp $      */
> -/*      $NetBSD: errno.h,v 1.10 1996/01/20 01:33:53 jtc Exp $   */
> -
>  /*
>   * Copyright (c) 1982, 1986, 1989, 1993
>   *      The Regents of the University of California.  All rights reserved.
> @@ -37,6 +34,9 @@
>   *      @(#)errno.h     8.5 (Berkeley) 1/21/94
>   */
>
> +#ifndef _ERRNO_DEFS_H_
> +#define _ERRNO_DEFS_H_
> +
>  #define TARGET_EPERM            1               /* Operation not permitted */
>  #define TARGET_ENOENT           2               /* No such file or directory */
>  #define TARGET_ESRCH            3               /* No such process */
> @@ -147,3 +147,11 @@
>  #define TARGET_EIDRM            89              /* Identifier removed */
>  #define TARGET_ENOMSG           90              /* No message of desired type */
>  #define TARGET_ELAST            90              /* Must be equal largest errno */
> +
> +/* Internal errors: */
> +#define TARGET_EJUSTRETURN      254             /* Just return without
> +                                                   modifing regs */
> +#define TARGET_ERESTART         255             /* Restart syscall */
> +#define TARGET_ERESTARTSYS      TARGET_ERESTART /* Linux compat */
> +
> +#endif /* !  _ERRNO_DEFS_H_ */
> --
> 2.32.0
>

Reviewed-by: Kyle Evans <kevans@FreeBSD.org>


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

* Re: [PATCH v2 07/15] bsd-user: move TARGET_MC_GET_CLEAR_RET to target_os_signal.h
  2021-10-08 23:14 ` [PATCH v2 07/15] bsd-user: move TARGET_MC_GET_CLEAR_RET to target_os_signal.h Warner Losh
@ 2021-10-18  3:34   ` Kyle Evans
  0 siblings, 0 replies; 39+ messages in thread
From: Kyle Evans @ 2021-10-18  3:34 UTC (permalink / raw)
  To: Warner Losh
  Cc: Kyle Evans, Philippe Mathieu-Daudé,
	Richard Henderson, QEMU Developers, Laurent Vivier

On Fri, Oct 8, 2021 at 6:15 PM Warner Losh <imp@bsdimp.com> wrote:
>
> Move TARGET_MC_GET_CLEAR_RET to freebsd/target_os_signal.h since it's
> architecture agnostic on FreeBSD.
>
> Signed-off-by: Warner Losh <imp@bsdimp.com>
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  bsd-user/freebsd/target_os_signal.h  | 3 +++
>  bsd-user/i386/target_arch_signal.h   | 2 --
>  bsd-user/x86_64/target_arch_signal.h | 2 --
>  3 files changed, 3 insertions(+), 4 deletions(-)
>
> diff --git a/bsd-user/freebsd/target_os_signal.h b/bsd-user/freebsd/target_os_signal.h
> index 3ed454e086..1a4c5faf19 100644
> --- a/bsd-user/freebsd/target_os_signal.h
> +++ b/bsd-user/freebsd/target_os_signal.h
> @@ -1,6 +1,9 @@
>  #ifndef _TARGET_OS_SIGNAL_H_
>  #define _TARGET_OS_SIGNAL_H_
>
> +/* FreeBSD's sys/ucontext.h defines this */
> +#define TARGET_MC_GET_CLEAR_RET 0x0001
> +
>  #include "target_os_siginfo.h"
>  #include "target_arch_signal.h"
>
> diff --git a/bsd-user/i386/target_arch_signal.h b/bsd-user/i386/target_arch_signal.h
> index 9812c6b034..a90750d602 100644
> --- a/bsd-user/i386/target_arch_signal.h
> +++ b/bsd-user/i386/target_arch_signal.h
> @@ -27,8 +27,6 @@
>  #define TARGET_MINSIGSTKSZ  (512 * 4)               /* min sig stack size */
>  #define TARGET_SIGSTKSZ     (MINSIGSTKSZ + 32768)   /* recommended size */
>
> -#define TARGET_MC_GET_CLEAR_RET 0x0001
> -
>  struct target_sigcontext {
>      /* to be added */
>  };
> diff --git a/bsd-user/x86_64/target_arch_signal.h b/bsd-user/x86_64/target_arch_signal.h
> index 4c1ff0e5ba..4bb753b08b 100644
> --- a/bsd-user/x86_64/target_arch_signal.h
> +++ b/bsd-user/x86_64/target_arch_signal.h
> @@ -27,8 +27,6 @@
>  #define TARGET_MINSIGSTKSZ  (512 * 4)               /* min sig stack size */
>  #define TARGET_SIGSTKSZ     (MINSIGSTKSZ + 32768)   /* recommended size */
>
> -#define TARGET_MC_GET_CLEAR_RET 0x0001
> -
>  struct target_sigcontext {
>      /* to be added */
>  };
> --
> 2.32.0
>

Reviewed-by: Kyle Evans <kevans@FreeBSD.org>


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

* Re: [PATCH v2 08/15] bsd-user/target_os_elf.h: Remove fallback ELF_HWCAP and reorder
  2021-10-08 23:14 ` [PATCH v2 08/15] bsd-user/target_os_elf.h: Remove fallback ELF_HWCAP and reorder Warner Losh
@ 2021-10-18  3:35   ` Kyle Evans
  0 siblings, 0 replies; 39+ messages in thread
From: Kyle Evans @ 2021-10-18  3:35 UTC (permalink / raw)
  To: Warner Losh
  Cc: Kyle Evans, Philippe Mathieu-Daudé,
	Richard Henderson, QEMU Developers, Laurent Vivier

On Fri, Oct 8, 2021 at 6:15 PM Warner Losh <imp@bsdimp.com> wrote:
>
> All architectures have a ELF_HWCAP, so remove the fallback ifdef.
> Place ELF_HWCAP in the same order as on native FreeBSD.
>
> Signed-off-by: Warner Losh <imp@bsdimp.com>
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  bsd-user/freebsd/target_os_elf.h | 8 ++------
>  1 file changed, 2 insertions(+), 6 deletions(-)
>
> diff --git a/bsd-user/freebsd/target_os_elf.h b/bsd-user/freebsd/target_os_elf.h
> index 2d03a883aa..adcffd1ddb 100644
> --- a/bsd-user/freebsd/target_os_elf.h
> +++ b/bsd-user/freebsd/target_os_elf.h
> @@ -38,10 +38,6 @@
>  #define ELF_PLATFORM (NULL)
>  #endif
>
> -#ifndef ELF_HWCAP
> -#define ELF_HWCAP 0
> -#endif
> -
>  /* XXX Look at the other conflicting AT_* values. */
>  #define FREEBSD_AT_NCPUS     19
>  #define FREEBSD_AT_HWCAP     25
> @@ -114,12 +110,12 @@ static abi_ulong target_create_elf_tables(abi_ulong p, int argc, int envc,
>          NEW_AUX_ENT(AT_FLAGS, (abi_ulong)0);
>          NEW_AUX_ENT(FREEBSD_AT_NCPUS, (abi_ulong)bsd_get_ncpu());
>          NEW_AUX_ENT(AT_ENTRY, load_bias + exec->e_entry);
> +        features = ELF_HWCAP;
> +        NEW_AUX_ENT(FREEBSD_AT_HWCAP, features);
>          NEW_AUX_ENT(AT_UID, (abi_ulong)getuid());
>          NEW_AUX_ENT(AT_EUID, (abi_ulong)geteuid());
>          NEW_AUX_ENT(AT_GID, (abi_ulong)getgid());
>          NEW_AUX_ENT(AT_EGID, (abi_ulong)getegid());
> -        features = ELF_HWCAP;
> -        NEW_AUX_ENT(FREEBSD_AT_HWCAP, features);
>          target_auxents = sp; /* Note where the aux entries are in the target */
>  #ifdef ARCH_DLINFO
>          /*
> --
> 2.32.0
>

Reviewed-by: Kyle Evans <kevans@FreeBSD.org>


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

* Re: [PATCH v2 09/15] bsd-user/target_os_elf: If ELF_HWCAP2 is defined, publish it
  2021-10-08 23:15 ` [PATCH v2 09/15] bsd-user/target_os_elf: If ELF_HWCAP2 is defined, publish it Warner Losh
@ 2021-10-18  3:35   ` Kyle Evans
  0 siblings, 0 replies; 39+ messages in thread
From: Kyle Evans @ 2021-10-18  3:35 UTC (permalink / raw)
  To: Warner Losh
  Cc: Kyle Evans, Philippe Mathieu-Daudé,
	Richard Henderson, QEMU Developers, Laurent Vivier

On Fri, Oct 8, 2021 at 6:15 PM Warner Losh <imp@bsdimp.com> wrote:
>
> Some architectures publish AT_HWCAP2 as well as AT_HWCAP. Those
> architectures will define ELF_HWCAP2 in their target_arch_elf.h files
> for the value for this process. If it is defined, then publish it.
>
> Signed-off-by: Warner Losh <imp@bsdimp.com>
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  bsd-user/freebsd/target_os_elf.h | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/bsd-user/freebsd/target_os_elf.h b/bsd-user/freebsd/target_os_elf.h
> index adcffd1ddb..e5ac8e8e50 100644
> --- a/bsd-user/freebsd/target_os_elf.h
> +++ b/bsd-user/freebsd/target_os_elf.h
> @@ -112,6 +112,10 @@ static abi_ulong target_create_elf_tables(abi_ulong p, int argc, int envc,
>          NEW_AUX_ENT(AT_ENTRY, load_bias + exec->e_entry);
>          features = ELF_HWCAP;
>          NEW_AUX_ENT(FREEBSD_AT_HWCAP, features);
> +#ifdef ELF_HWCAP2
> +        features = ELF_HWCAP2;
> +        NEW_AUX_ENT(FREEBSD_AT_HWCAP2, features);
> +#endif
>          NEW_AUX_ENT(AT_UID, (abi_ulong)getuid());
>          NEW_AUX_ENT(AT_EUID, (abi_ulong)geteuid());
>          NEW_AUX_ENT(AT_GID, (abi_ulong)getgid());
> --
> 2.32.0
>

Reviewed-by: Kyle Evans <kevans@FreeBSD.org>


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

* Re: [PATCH v2 10/15] bsd-user: Remove used from TaskState
  2021-10-08 23:15 ` [PATCH v2 10/15] bsd-user: Remove used from TaskState Warner Losh
@ 2021-10-18  3:35   ` Kyle Evans
  0 siblings, 0 replies; 39+ messages in thread
From: Kyle Evans @ 2021-10-18  3:35 UTC (permalink / raw)
  To: Warner Losh
  Cc: Kyle Evans, Philippe Mathieu-Daudé,
	Richard Henderson, QEMU Developers, Laurent Vivier

On Fri, Oct 8, 2021 at 6:15 PM Warner Losh <imp@bsdimp.com> wrote:
>
> The 'used' field in TaskState is write only. Remove it from TaskState.
>
> Signed-off-by: Warner Losh <imp@bsdimp.com>
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  bsd-user/main.c | 1 -
>  bsd-user/qemu.h | 1 -
>  2 files changed, 2 deletions(-)
>
> diff --git a/bsd-user/main.c b/bsd-user/main.c
> index 48643eeabc..ee84554854 100644
> --- a/bsd-user/main.c
> +++ b/bsd-user/main.c
> @@ -210,7 +210,6 @@ void init_task_state(TaskState *ts)
>  {
>      int i;
>
> -    ts->used = 1;
>      ts->first_free = ts->sigqueue_table;
>      for (i = 0; i < MAX_SIGQUEUE_SIZE - 1; i++) {
>          ts->sigqueue_table[i].next = &ts->sigqueue_table[i + 1];
> diff --git a/bsd-user/qemu.h b/bsd-user/qemu.h
> index 3b8475394c..c1170f14d9 100644
> --- a/bsd-user/qemu.h
> +++ b/bsd-user/qemu.h
> @@ -92,7 +92,6 @@ typedef struct TaskState {
>
>      struct TaskState *next;
>      struct bsd_binprm *bprm;
> -    int used; /* non zero if used */
>      struct image_info *info;
>
>      struct emulated_sigtable sigtab[TARGET_NSIG];
> --
> 2.32.0
>

Reviewed-by: Kyle Evans <kevans@FreeBSD.org>


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

* Re: [PATCH v2 12/15] bsd-user/sysarch: Move to using do_freebsd_arch_sysarch interface
  2021-10-08 23:15 ` [PATCH v2 12/15] bsd-user/sysarch: Move to using do_freebsd_arch_sysarch interface Warner Losh
@ 2021-10-18  3:36   ` Kyle Evans
  0 siblings, 0 replies; 39+ messages in thread
From: Kyle Evans @ 2021-10-18  3:36 UTC (permalink / raw)
  To: Warner Losh
  Cc: Kyle Evans, Philippe Mathieu-Daudé,
	Richard Henderson, QEMU Developers, Laurent Vivier

On Fri, Oct 8, 2021 at 6:15 PM Warner Losh <imp@bsdimp.com> wrote:
>
> do_freebsd_arch_sysarch() exists in $ARCH/target_arch_sysarch.h for x86.
> Call it from do_freebsd_sysarch() and remove the mostly duplicate
> version in syscall.c. Future changes will move it to os-sys.c and
> support other architectures.
>
> Signed-off-by: Warner Losh <imp@bsdimp.com>
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>  bsd-user/syscall.c | 45 +--------------------------------------------
>  1 file changed, 1 insertion(+), 44 deletions(-)
>
> diff --git a/bsd-user/syscall.c b/bsd-user/syscall.c
> index 2fd2ba8330..d3b9f431e2 100644
> --- a/bsd-user/syscall.c
> +++ b/bsd-user/syscall.c
> @@ -91,50 +91,7 @@ static abi_long do_obreak(abi_ulong new_brk)
>  #if defined(TARGET_I386)
>  static abi_long do_freebsd_sysarch(CPUX86State *env, int op, abi_ulong parms)
>  {
> -    abi_long ret = 0;
> -    abi_ulong val;
> -    int idx;
> -
> -    switch (op) {
> -#ifdef TARGET_ABI32
> -    case TARGET_FREEBSD_I386_SET_GSBASE:
> -    case TARGET_FREEBSD_I386_SET_FSBASE:
> -        if (op == TARGET_FREEBSD_I386_SET_GSBASE)
> -#else
> -    case TARGET_FREEBSD_AMD64_SET_GSBASE:
> -    case TARGET_FREEBSD_AMD64_SET_FSBASE:
> -        if (op == TARGET_FREEBSD_AMD64_SET_GSBASE)
> -#endif
> -            idx = R_GS;
> -        else
> -            idx = R_FS;
> -        if (get_user(val, parms, abi_ulong))
> -            return -TARGET_EFAULT;
> -        cpu_x86_load_seg(env, idx, 0);
> -        env->segs[idx].base = val;
> -        break;
> -#ifdef TARGET_ABI32
> -    case TARGET_FREEBSD_I386_GET_GSBASE:
> -    case TARGET_FREEBSD_I386_GET_FSBASE:
> -        if (op == TARGET_FREEBSD_I386_GET_GSBASE)
> -#else
> -    case TARGET_FREEBSD_AMD64_GET_GSBASE:
> -    case TARGET_FREEBSD_AMD64_GET_FSBASE:
> -        if (op == TARGET_FREEBSD_AMD64_GET_GSBASE)
> -#endif
> -            idx = R_GS;
> -        else
> -            idx = R_FS;
> -        val = env->segs[idx].base;
> -        if (put_user(val, parms, abi_ulong))
> -            return -TARGET_EFAULT;
> -        break;
> -    /* XXX handle the others... */
> -    default:
> -        ret = -TARGET_EINVAL;
> -        break;
> -    }
> -    return ret;
> +    do_freebsd_arch_sysarch(env, op, parms);
>  }
>  #endif
>
> --
> 2.32.0
>

Reviewed-by: Kyle Evans <kevans@FreeBSD.org>


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

* Re: [PATCH v2 14/15] bsd-user: Rename sigqueue to qemu_sigqueue
  2021-10-08 23:15 ` [PATCH v2 14/15] bsd-user: Rename sigqueue to qemu_sigqueue Warner Losh
@ 2021-10-18  3:36   ` Kyle Evans
  0 siblings, 0 replies; 39+ messages in thread
From: Kyle Evans @ 2021-10-18  3:36 UTC (permalink / raw)
  To: Warner Losh
  Cc: Kyle Evans, Philippe Mathieu-Daudé,
	Richard Henderson, QEMU Developers, Laurent Vivier

On Fri, Oct 8, 2021 at 6:15 PM Warner Losh <imp@bsdimp.com> wrote:
>
> To avoid a name clash with FreeBSD's sigqueue data structure in
> signalvar.h, rename sigqueue to qemu_sigqueue. This sturcture

s/sturcture/structure/

> is currently defined, but unused.
>
> Signed-off-by: Warner Losh <imp@bsdimp.com>
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  bsd-user/qemu.h | 14 +++++++-------
>  1 file changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/bsd-user/qemu.h b/bsd-user/qemu.h
> index e65e41d53d..5b815c3a23 100644
> --- a/bsd-user/qemu.h
> +++ b/bsd-user/qemu.h
> @@ -73,15 +73,15 @@ struct image_info {
>
>  #define MAX_SIGQUEUE_SIZE 1024
>
> -struct sigqueue {
> -    struct sigqueue *next;
> +struct qemu_sigqueue {
> +    struct qemu_sigqueue *next;
> +    target_siginfo_t info;
>  };
>
>  struct emulated_sigtable {
>      int pending; /* true if signal is pending */
> -    struct sigqueue *first;
> -    /* in order to always have memory for the first signal, we put it here */
> -    struct sigqueue info;
> +    struct qemu_sigqueue *first;
> +    struct qemu_sigqueue info; /* Put first signal info here */
>  };
>
>  /*
> @@ -95,8 +95,8 @@ typedef struct TaskState {
>      struct image_info *info;
>
>      struct emulated_sigtable sigtab[TARGET_NSIG];
> -    struct sigqueue sigqueue_table[MAX_SIGQUEUE_SIZE]; /* siginfo queue */
> -    struct sigqueue *first_free; /* first free siginfo queue entry */
> +    struct qemu_sigqueue sigqueue_table[MAX_SIGQUEUE_SIZE]; /* siginfo queue */
> +    struct qemu_sigqueue *first_free; /* first free siginfo queue entry */
>      int signal_pending; /* non zero if a signal may be pending */
>
>      uint8_t stack[];
> --
> 2.32.0
>

Typo noted above in the commit message; otherwise:

Reviewed-by: Kyle Evans <kevans@FreeBSD.org>


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

* Re: [PATCH v2 13/15] bsd-user/sysarch: Provide a per-arch framework for sysarch syscall
  2021-10-08 23:15 ` [PATCH v2 13/15] bsd-user/sysarch: Provide a per-arch framework for sysarch syscall Warner Losh
@ 2021-10-18  3:37   ` Kyle Evans
  0 siblings, 0 replies; 39+ messages in thread
From: Kyle Evans @ 2021-10-18  3:37 UTC (permalink / raw)
  To: Warner Losh
  Cc: Stacey Son, Kyle Evans, Richard Henderson,
	Philippe Mathieu-Daudé,
	QEMU Developers, Laurent Vivier

On Fri, Oct 8, 2021 at 6:15 PM Warner Losh <imp@bsdimp.com> wrote:
>
> Add the missing glue to pull in do_freebsd_sysarch to call
> do_freebsd_arch_sysarch. Put it in os-sys.c, which will be used for
> sysctl and sysarch system calls because they are mostly arch specific.
>
> Signed-off-by: Stacey Son <sson@FreeBSD.org>
> Signed-off-by: Warner Losh <imp@bsdimp.com>
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>  bsd-user/freebsd/meson.build |  3 +++
>  bsd-user/freebsd/os-sys.c    | 27 +++++++++++++++++++++++++++
>  bsd-user/meson.build         |  3 +++
>  bsd-user/qemu.h              |  3 +++
>  bsd-user/syscall.c           |  7 -------
>  5 files changed, 36 insertions(+), 7 deletions(-)
>  create mode 100644 bsd-user/freebsd/meson.build
>  create mode 100644 bsd-user/freebsd/os-sys.c
>
> diff --git a/bsd-user/freebsd/meson.build b/bsd-user/freebsd/meson.build
> new file mode 100644
> index 0000000000..4b69cca7b9
> --- /dev/null
> +++ b/bsd-user/freebsd/meson.build
> @@ -0,0 +1,3 @@
> +bsd_user_ss.add(files(
> +  'os-sys.c',
> +))
> diff --git a/bsd-user/freebsd/os-sys.c b/bsd-user/freebsd/os-sys.c
> new file mode 100644
> index 0000000000..309e27b9d6
> --- /dev/null
> +++ b/bsd-user/freebsd/os-sys.c
> @@ -0,0 +1,27 @@
> +/*
> + *  FreeBSD sysctl() and sysarch() system call emulation
> + *
> + *  Copyright (c) 2013-15 Stacey D. Son
> + *
> + *  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/>.
> + */
> +
> +#include "qemu.h"
> +#include "target_arch_sysarch.h"
> +
> +/* sysarch() is architecture dependent. */
> +abi_long do_freebsd_sysarch(void *cpu_env, abi_long arg1, abi_long arg2)
> +{
> +    return do_freebsd_arch_sysarch(cpu_env, arg1, arg2);
> +}
> diff --git a/bsd-user/meson.build b/bsd-user/meson.build
> index 243fb78930..a4163c91ff 100644
> --- a/bsd-user/meson.build
> +++ b/bsd-user/meson.build
> @@ -12,3 +12,6 @@ bsd_user_ss.add(files(
>    'syscall.c',
>    'uaccess.c',
>  ))
> +
> +# Pull in the OS-specific build glue, if any
> +subdir(targetos)
> diff --git a/bsd-user/qemu.h b/bsd-user/qemu.h
> index cdb85140f4..e65e41d53d 100644
> --- a/bsd-user/qemu.h
> +++ b/bsd-user/qemu.h
> @@ -239,6 +239,9 @@ extern unsigned long target_sgrowsiz;
>  abi_long get_errno(abi_long ret);
>  bool is_error(abi_long ret);
>
> +/* os-sys.c */
> +abi_long do_freebsd_sysarch(void *cpu_env, abi_long arg1, abi_long arg2);
> +
>  /* user access */
>
>  #define VERIFY_READ  PAGE_READ
> diff --git a/bsd-user/syscall.c b/bsd-user/syscall.c
> index d3b9f431e2..d3322760f4 100644
> --- a/bsd-user/syscall.c
> +++ b/bsd-user/syscall.c
> @@ -88,13 +88,6 @@ static abi_long do_obreak(abi_ulong new_brk)
>      return 0;
>  }
>
> -#if defined(TARGET_I386)
> -static abi_long do_freebsd_sysarch(CPUX86State *env, int op, abi_ulong parms)
> -{
> -    do_freebsd_arch_sysarch(env, op, parms);
> -}
> -#endif
> -
>  #ifdef __FreeBSD__
>  /*
>   * XXX this uses the undocumented oidfmt interface to find the kind of
> --
> 2.32.0
>

Reviewed-by: Kyle Evans <kevans@FreeBSD.org>


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

* Re: [PATCH v2 01/15] meson: *-user: only descend into *-user when configured
  2021-10-08 23:14 ` [PATCH v2 01/15] meson: *-user: only descend into *-user when configured Warner Losh
  2021-10-09 14:40   ` Warner Losh
@ 2021-10-18  3:42   ` Kyle Evans
  2021-10-18  4:29     ` Warner Losh
  2021-10-18 10:17   ` Philippe Mathieu-Daudé
  2 siblings, 1 reply; 39+ messages in thread
From: Kyle Evans @ 2021-10-18  3:42 UTC (permalink / raw)
  To: Warner Losh
  Cc: Kyle Evans, Richard Henderson, Philippe Mathieu-Daudé,
	QEMU Developers, Warner Losh, Paolo Bonzini, Laurent Vivier

On Fri, Oct 8, 2021 at 6:15 PM Warner Losh <imp@bsdimp.com> wrote:
>
> To increase flexibility, only descend into *-user when that is
> configured. This allows *-user to selectively include directories based
> on the host OS which may not exist on all hosts. Adopt Paolo's
> suggestion of checking the configuration in the directories that know
> about the configuration.
>
> Message-Id: <20210926220103.1721355-2-f4bug@amsat.org>
> Message-Id: <20210926220103.1721355-3-f4bug@amsat.org>
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> Signed-off-by: Warner Losh <wlosh@bsdimp.com>
> Acked-by: Paolo Bonzini <pbonzinni@redhat.com>
>
> Sponsored by:           Netflix
> ---
>  bsd-user/meson.build   | 4 ++++
>  linux-user/meson.build | 4 ++++
>  meson.build            | 3 +--
>  3 files changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/bsd-user/meson.build b/bsd-user/meson.build
> index 0369549340..243fb78930 100644
> --- a/bsd-user/meson.build
> +++ b/bsd-user/meson.build
> @@ -1,3 +1,7 @@
> +if not config_target.has_key('CONFIG_BSD_USER')
> +   subdir_done()
> +endif
> +
>  bsd_user_ss.add(files(
>    'bsdload.c',
>    'elfload.c',
> diff --git a/linux-user/meson.build b/linux-user/meson.build
> index 9549f81682..602255a3d6 100644
> --- a/linux-user/meson.build
> +++ b/linux-user/meson.build
> @@ -1,3 +1,7 @@
> +if not config_target.has_key('CONFIG_LINUX_USER')
> +   subdir_done()
> +endif
> +
>  linux_user_ss.add(files(
>    'elfload.c',
>    'exit.c',
> diff --git a/meson.build b/meson.build
> index 99a0a3e689..1f2da5f7d9 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -2303,10 +2303,9 @@ subdir('ebpf')
>
>  common_ss.add(libbpf)
>
> -bsd_user_ss.add(files('gdbstub.c'))
>  specific_ss.add_all(when: 'CONFIG_BSD_USER', if_true: bsd_user_ss)
>
> -linux_user_ss.add(files('gdbstub.c', 'thunk.c'))
> +linux_user_ss.add(files('thunk.c'))
>  specific_ss.add_all(when: 'CONFIG_LINUX_USER', if_true: linux_user_ss)
>
>  # needed for fuzzing binaries
> --
> 2.32.0
>

I don't understand the gdbstub.c removal  here; don't we still want to
be compiling it in, just only if the appropriate
CONFIG_{BSD,LINUX}_USER knob is set? I note that it doesn't appear to
be added in individual *-user/meson.build, I assume it's uncommon to
add in ../foo.c in meson-land...

Thanks,

Kyle Evans


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

* Re: [PATCH v2 15/15] bsd-user/signal: Create a dummy signal queueing function
  2021-10-08 23:15 ` [PATCH v2 15/15] bsd-user/signal: Create a dummy signal queueing function Warner Losh
  2021-10-09 16:15   ` Richard Henderson
@ 2021-10-18  3:44   ` Kyle Evans
  1 sibling, 0 replies; 39+ messages in thread
From: Kyle Evans @ 2021-10-18  3:44 UTC (permalink / raw)
  To: Warner Losh
  Cc: Kyle Evans, Philippe Mathieu-Daudé,
	Richard Henderson, QEMU Developers, Laurent Vivier

On Fri, Oct 8, 2021 at 6:15 PM Warner Losh <imp@bsdimp.com> wrote:
>
> Create dummy signal queueing function so we can start to integrate other
> architectures (at the cost of signals remaining broken) to tame the
> dependency graph a bit and to bring in signals in a more controlled
> fashion. Log unimplemented events to it in the mean time.
>
> Signed-off-by: Warner Losh <imp@bsdimp.com>
> ---
>  bsd-user/qemu.h   |  2 +-
>  bsd-user/signal.c | 11 ++++++++++-
>  2 files changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/bsd-user/qemu.h b/bsd-user/qemu.h
> index 5b815c3a23..62095eb975 100644
> --- a/bsd-user/qemu.h
> +++ b/bsd-user/qemu.h
> @@ -17,7 +17,6 @@
>  #ifndef QEMU_H
>  #define QEMU_H
>
> -
>  #include "qemu/osdep.h"
>  #include "cpu.h"
>  #include "qemu/units.h"
> @@ -209,6 +208,7 @@ void process_pending_signals(CPUArchState *cpu_env);
>  void signal_init(void);
>  long do_sigreturn(CPUArchState *env);
>  long do_rt_sigreturn(CPUArchState *env);
> +void queue_signal(CPUArchState *env, int sig, target_siginfo_t *info);
>  abi_long do_sigaltstack(abi_ulong uss_addr, abi_ulong uoss_addr, abi_ulong sp);
>
>  /* mmap.c */
> diff --git a/bsd-user/signal.c b/bsd-user/signal.c
> index ad6d935569..0c1093deb1 100644
> --- a/bsd-user/signal.c
> +++ b/bsd-user/signal.c
> @@ -16,10 +16,19 @@
>   *  You should have received a copy of the GNU General Public License
>   *  along with this program; if not, see <http://www.gnu.org/licenses/>.
>   */
> -#include "qemu/osdep.h"
>
> +#include "qemu/osdep.h"
>  #include "qemu.h"
>
> +/*
> + * Queue a signal so that it will be send to the virtual CPU as soon as
> + * possible.
> + */
> +void queue_signal(CPUArchState *env, int sig, target_siginfo_t *info)
> +{
> +    qemu_log_mask(LOG_UNIMP, "No signal queueing, dropping signal %d\n", sig);
> +}
> +
>  void signal_init(void)
>  {
>  }
> --
> 2.32.0
>

Reviewed-by: Kyle Evans <kevans@FreeBSD.org>


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

* Re: [PATCH v2 11/15] bsd-user: Add stop_all_tasks
  2021-10-08 23:15 ` [PATCH v2 11/15] bsd-user: Add stop_all_tasks Warner Losh
  2021-10-09 16:15   ` Richard Henderson
@ 2021-10-18  3:44   ` Kyle Evans
  1 sibling, 0 replies; 39+ messages in thread
From: Kyle Evans @ 2021-10-18  3:44 UTC (permalink / raw)
  To: Warner Losh
  Cc: Stacey Son, Kyle Evans, Richard Henderson,
	Philippe Mathieu-Daudé,
	QEMU Developers, Laurent Vivier

On Fri, Oct 8, 2021 at 6:15 PM Warner Losh <imp@bsdimp.com> wrote:
>
> Similar to the same function in linux-user: this stops all the current tasks.
>
> Signed-off-by: Stacey Son <sson@FreeBSD.org>
> Signed-off-by: Warner Losh <imp@bsdimp.com>
> ---
>  bsd-user/main.c | 9 +++++++++
>  bsd-user/qemu.h | 1 +
>  2 files changed, 10 insertions(+)
>
> diff --git a/bsd-user/main.c b/bsd-user/main.c
> index ee84554854..cb5ea40236 100644
> --- a/bsd-user/main.c
> +++ b/bsd-user/main.c
> @@ -195,6 +195,15 @@ static void usage(void)
>
>  __thread CPUState *thread_cpu;
>
> +void stop_all_tasks(void)
> +{
> +    /*
> +     * We trust when using NPTL (pthreads) start_exclusive() handles thread
> +     * stopping correctly.
> +     */
> +    start_exclusive();
> +}
> +
>  bool qemu_cpu_is_self(CPUState *cpu)
>  {
>      return thread_cpu == cpu;
> diff --git a/bsd-user/qemu.h b/bsd-user/qemu.h
> index c1170f14d9..cdb85140f4 100644
> --- a/bsd-user/qemu.h
> +++ b/bsd-user/qemu.h
> @@ -103,6 +103,7 @@ typedef struct TaskState {
>  } __attribute__((aligned(16))) TaskState;
>
>  void init_task_state(TaskState *ts);
> +void stop_all_tasks(void);
>  extern const char *qemu_uname_release;
>
>  /*
> --
> 2.32.0
>

Reviewed-by: Kyle Evans <kevans@FreeBSD.org>


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

* Re: [PATCH v2 01/15] meson: *-user: only descend into *-user when configured
  2021-10-18  3:42   ` Kyle Evans
@ 2021-10-18  4:29     ` Warner Losh
  2021-10-18  5:02       ` Warner Losh
  0 siblings, 1 reply; 39+ messages in thread
From: Warner Losh @ 2021-10-18  4:29 UTC (permalink / raw)
  To: Kyle Evans
  Cc: Paolo Bonzini, Philippe Mathieu-Daudé,
	Richard Henderson, QEMU Developers, Laurent Vivier

[-- Attachment #1: Type: text/plain, Size: 2746 bytes --]

On Sun, Oct 17, 2021 at 9:43 PM Kyle Evans <kevans@freebsd.org> wrote:

> On Fri, Oct 8, 2021 at 6:15 PM Warner Losh <imp@bsdimp.com> wrote:
> >
> > To increase flexibility, only descend into *-user when that is
> > configured. This allows *-user to selectively include directories based
> > on the host OS which may not exist on all hosts. Adopt Paolo's
> > suggestion of checking the configuration in the directories that know
> > about the configuration.
> >
> > Message-Id: <20210926220103.1721355-2-f4bug@amsat.org>
> > Message-Id: <20210926220103.1721355-3-f4bug@amsat.org>
> > Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> > Signed-off-by: Warner Losh <wlosh@bsdimp.com>
> > Acked-by: Paolo Bonzini <pbonzinni@redhat.com>
> >
> > Sponsored by:           Netflix
> > ---
> >  bsd-user/meson.build   | 4 ++++
> >  linux-user/meson.build | 4 ++++
> >  meson.build            | 3 +--
> >  3 files changed, 9 insertions(+), 2 deletions(-)
> >
> > diff --git a/bsd-user/meson.build b/bsd-user/meson.build
> > index 0369549340..243fb78930 100644
> > --- a/bsd-user/meson.build
> > +++ b/bsd-user/meson.build
> > @@ -1,3 +1,7 @@
> > +if not config_target.has_key('CONFIG_BSD_USER')
> > +   subdir_done()
> > +endif
> > +
> >  bsd_user_ss.add(files(
> >    'bsdload.c',
> >    'elfload.c',
> > diff --git a/linux-user/meson.build b/linux-user/meson.build
> > index 9549f81682..602255a3d6 100644
> > --- a/linux-user/meson.build
> > +++ b/linux-user/meson.build
> > @@ -1,3 +1,7 @@
> > +if not config_target.has_key('CONFIG_LINUX_USER')
> > +   subdir_done()
> > +endif
> > +
> >  linux_user_ss.add(files(
> >    'elfload.c',
> >    'exit.c',
> > diff --git a/meson.build b/meson.build
> > index 99a0a3e689..1f2da5f7d9 100644
> > --- a/meson.build
> > +++ b/meson.build
> > @@ -2303,10 +2303,9 @@ subdir('ebpf')
> >
> >  common_ss.add(libbpf)
> >
> > -bsd_user_ss.add(files('gdbstub.c'))
> >  specific_ss.add_all(when: 'CONFIG_BSD_USER', if_true: bsd_user_ss)
> >
> > -linux_user_ss.add(files('gdbstub.c', 'thunk.c'))
> > +linux_user_ss.add(files('thunk.c'))
> >  specific_ss.add_all(when: 'CONFIG_LINUX_USER', if_true: linux_user_ss)
> >
> >  # needed for fuzzing binaries
> > --
> > 2.32.0
> >
>
> I don't understand the gdbstub.c removal  here; don't we still want to
> be compiling it in, just only if the appropriate
> CONFIG_{BSD,LINUX}_USER knob is set? I note that it doesn't appear to
> be added in individual *-user/meson.build, I assume it's uncommon to
> add in ../foo.c in meson-land...
>

It's added to specific_ss at line 2536
specific_ss.add(files('cpu.c', 'disas.c', 'gdbstub.c'), capstone)

so we don't need to add it again here.

Warner

[-- Attachment #2: Type: text/html, Size: 4059 bytes --]

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

* Re: [PATCH v2 01/15] meson: *-user: only descend into *-user when configured
  2021-10-18  4:29     ` Warner Losh
@ 2021-10-18  5:02       ` Warner Losh
  2021-10-18  5:26         ` Kyle Evans
  0 siblings, 1 reply; 39+ messages in thread
From: Warner Losh @ 2021-10-18  5:02 UTC (permalink / raw)
  To: Kyle Evans
  Cc: Paolo Bonzini, Philippe Mathieu-Daudé,
	Richard Henderson, QEMU Developers, Laurent Vivier

[-- Attachment #1: Type: text/plain, Size: 3146 bytes --]

On Sun, Oct 17, 2021 at 10:29 PM Warner Losh <imp@bsdimp.com> wrote:

>
>
> On Sun, Oct 17, 2021 at 9:43 PM Kyle Evans <kevans@freebsd.org> wrote:
>
>> On Fri, Oct 8, 2021 at 6:15 PM Warner Losh <imp@bsdimp.com> wrote:
>> >
>> > To increase flexibility, only descend into *-user when that is
>> > configured. This allows *-user to selectively include directories based
>> > on the host OS which may not exist on all hosts. Adopt Paolo's
>> > suggestion of checking the configuration in the directories that know
>> > about the configuration.
>> >
>> > Message-Id: <20210926220103.1721355-2-f4bug@amsat.org>
>> > Message-Id: <20210926220103.1721355-3-f4bug@amsat.org>
>> > Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>> > Signed-off-by: Warner Losh <wlosh@bsdimp.com>
>> > Acked-by: Paolo Bonzini <pbonzinni@redhat.com>
>> >
>> > Sponsored by:           Netflix
>> > ---
>> >  bsd-user/meson.build   | 4 ++++
>> >  linux-user/meson.build | 4 ++++
>> >  meson.build            | 3 +--
>> >  3 files changed, 9 insertions(+), 2 deletions(-)
>> >
>> > diff --git a/bsd-user/meson.build b/bsd-user/meson.build
>> > index 0369549340..243fb78930 100644
>> > --- a/bsd-user/meson.build
>> > +++ b/bsd-user/meson.build
>> > @@ -1,3 +1,7 @@
>> > +if not config_target.has_key('CONFIG_BSD_USER')
>> > +   subdir_done()
>> > +endif
>> > +
>> >  bsd_user_ss.add(files(
>> >    'bsdload.c',
>> >    'elfload.c',
>> > diff --git a/linux-user/meson.build b/linux-user/meson.build
>> > index 9549f81682..602255a3d6 100644
>> > --- a/linux-user/meson.build
>> > +++ b/linux-user/meson.build
>> > @@ -1,3 +1,7 @@
>> > +if not config_target.has_key('CONFIG_LINUX_USER')
>> > +   subdir_done()
>> > +endif
>> > +
>> >  linux_user_ss.add(files(
>> >    'elfload.c',
>> >    'exit.c',
>> > diff --git a/meson.build b/meson.build
>> > index 99a0a3e689..1f2da5f7d9 100644
>> > --- a/meson.build
>> > +++ b/meson.build
>> > @@ -2303,10 +2303,9 @@ subdir('ebpf')
>> >
>> >  common_ss.add(libbpf)
>> >
>> > -bsd_user_ss.add(files('gdbstub.c'))
>> >  specific_ss.add_all(when: 'CONFIG_BSD_USER', if_true: bsd_user_ss)
>> >
>> > -linux_user_ss.add(files('gdbstub.c', 'thunk.c'))
>> > +linux_user_ss.add(files('thunk.c'))
>> >  specific_ss.add_all(when: 'CONFIG_LINUX_USER', if_true: linux_user_ss)
>> >
>> >  # needed for fuzzing binaries
>> > --
>> > 2.32.0
>> >
>>
>> I don't understand the gdbstub.c removal  here; don't we still want to
>> be compiling it in, just only if the appropriate
>> CONFIG_{BSD,LINUX}_USER knob is set? I note that it doesn't appear to
>> be added in individual *-user/meson.build, I assume it's uncommon to
>> add in ../foo.c in meson-land...
>>
>
> It's added to specific_ss at line 2536
> specific_ss.add(files('cpu.c', 'disas.c', 'gdbstub.c'), capstone)
>
> so we don't need to add it again here.
>

I've also confirmed that it's built as both
libqemu-i386-bsd-user.fa.p/gdbstub.c.o
and libqemu-x86_64-bsd-user.fa.p/gdbstub.c.o, which is what I'd expect given
the current upstream supported architectures are only i386 and x86_64.

Warner

[-- Attachment #2: Type: text/html, Size: 4728 bytes --]

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

* Re: [PATCH v2 01/15] meson: *-user: only descend into *-user when configured
  2021-10-18  5:02       ` Warner Losh
@ 2021-10-18  5:26         ` Kyle Evans
  2021-10-18 14:09           ` Warner Losh
  0 siblings, 1 reply; 39+ messages in thread
From: Kyle Evans @ 2021-10-18  5:26 UTC (permalink / raw)
  To: Warner Losh
  Cc: Paolo Bonzini, Philippe Mathieu-Daudé,
	Richard Henderson, QEMU Developers, Laurent Vivier

On Mon, Oct 18, 2021 at 12:02 AM Warner Losh <imp@bsdimp.com> wrote:
>
>
>
> On Sun, Oct 17, 2021 at 10:29 PM Warner Losh <imp@bsdimp.com> wrote:
>>
>>
>>
>> On Sun, Oct 17, 2021 at 9:43 PM Kyle Evans <kevans@freebsd.org> wrote:
>>>
>>> On Fri, Oct 8, 2021 at 6:15 PM Warner Losh <imp@bsdimp.com> wrote:
>>> >
>>> > To increase flexibility, only descend into *-user when that is
>>> > configured. This allows *-user to selectively include directories based
>>> > on the host OS which may not exist on all hosts. Adopt Paolo's
>>> > suggestion of checking the configuration in the directories that know
>>> > about the configuration.
>>> >
>>> > Message-Id: <20210926220103.1721355-2-f4bug@amsat.org>
>>> > Message-Id: <20210926220103.1721355-3-f4bug@amsat.org>
>>> > Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>>> > Signed-off-by: Warner Losh <wlosh@bsdimp.com>
>>> > Acked-by: Paolo Bonzini <pbonzinni@redhat.com>
>>> >
>>> > Sponsored by:           Netflix
>>> > ---
>>> >  bsd-user/meson.build   | 4 ++++
>>> >  linux-user/meson.build | 4 ++++
>>> >  meson.build            | 3 +--
>>> >  3 files changed, 9 insertions(+), 2 deletions(-)
>>> >
>>> > diff --git a/bsd-user/meson.build b/bsd-user/meson.build
>>> > index 0369549340..243fb78930 100644
>>> > --- a/bsd-user/meson.build
>>> > +++ b/bsd-user/meson.build
>>> > @@ -1,3 +1,7 @@
>>> > +if not config_target.has_key('CONFIG_BSD_USER')
>>> > +   subdir_done()
>>> > +endif
>>> > +
>>> >  bsd_user_ss.add(files(
>>> >    'bsdload.c',
>>> >    'elfload.c',
>>> > diff --git a/linux-user/meson.build b/linux-user/meson.build
>>> > index 9549f81682..602255a3d6 100644
>>> > --- a/linux-user/meson.build
>>> > +++ b/linux-user/meson.build
>>> > @@ -1,3 +1,7 @@
>>> > +if not config_target.has_key('CONFIG_LINUX_USER')
>>> > +   subdir_done()
>>> > +endif
>>> > +
>>> >  linux_user_ss.add(files(
>>> >    'elfload.c',
>>> >    'exit.c',
>>> > diff --git a/meson.build b/meson.build
>>> > index 99a0a3e689..1f2da5f7d9 100644
>>> > --- a/meson.build
>>> > +++ b/meson.build
>>> > @@ -2303,10 +2303,9 @@ subdir('ebpf')
>>> >
>>> >  common_ss.add(libbpf)
>>> >
>>> > -bsd_user_ss.add(files('gdbstub.c'))
>>> >  specific_ss.add_all(when: 'CONFIG_BSD_USER', if_true: bsd_user_ss)
>>> >
>>> > -linux_user_ss.add(files('gdbstub.c', 'thunk.c'))
>>> > +linux_user_ss.add(files('thunk.c'))
>>> >  specific_ss.add_all(when: 'CONFIG_LINUX_USER', if_true: linux_user_ss)
>>> >
>>> >  # needed for fuzzing binaries
>>> > --
>>> > 2.32.0
>>> >
>>>
>>> I don't understand the gdbstub.c removal  here; don't we still want to
>>> be compiling it in, just only if the appropriate
>>> CONFIG_{BSD,LINUX}_USER knob is set? I note that it doesn't appear to
>>> be added in individual *-user/meson.build, I assume it's uncommon to
>>> add in ../foo.c in meson-land...
>>
>>
>> It's added to specific_ss at line 2536
>> specific_ss.add(files('cpu.c', 'disas.c', 'gdbstub.c'), capstone)
>>
>> so we don't need to add it again here.
>
>
> I've also confirmed that it's built as both libqemu-i386-bsd-user.fa.p/gdbstub.c.o
> and libqemu-x86_64-bsd-user.fa.p/gdbstub.c.o, which is what I'd expect given
> the current upstream supported architectures are only i386 and x86_64.
>
> Warner

Ah, ok, thanks! So that looks like a kind-of tangential cleanup, but
related enough that it makes sense.

Reviewed-by: Kyle Evans <kevans@FreeBSD.org>


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

* Re: [PATCH v2 01/15] meson: *-user: only descend into *-user when configured
  2021-10-08 23:14 ` [PATCH v2 01/15] meson: *-user: only descend into *-user when configured Warner Losh
  2021-10-09 14:40   ` Warner Losh
  2021-10-18  3:42   ` Kyle Evans
@ 2021-10-18 10:17   ` Philippe Mathieu-Daudé
  2 siblings, 0 replies; 39+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-10-18 10:17 UTC (permalink / raw)
  To: Warner Losh, qemu-devel
  Cc: Kyle Evans, richard.henderson, Laurent Vivier, Paolo Bonzini,
	Warner Losh

On 10/9/21 01:14, Warner Losh wrote:
> To increase flexibility, only descend into *-user when that is
> configured. This allows *-user to selectively include directories based
> on the host OS which may not exist on all hosts. Adopt Paolo's
> suggestion of checking the configuration in the directories that know
> about the configuration.
> 
> Message-Id: <20210926220103.1721355-2-f4bug@amsat.org>
> Message-Id: <20210926220103.1721355-3-f4bug@amsat.org>
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> Signed-off-by: Warner Losh <wlosh@bsdimp.com>
> Acked-by: Paolo Bonzini <pbonzinni@redhat.com>
> 
> Sponsored by:		Netflix
> ---
>  bsd-user/meson.build   | 4 ++++
>  linux-user/meson.build | 4 ++++
>  meson.build            | 3 +--
>  3 files changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/bsd-user/meson.build b/bsd-user/meson.build
> index 0369549340..243fb78930 100644
> --- a/bsd-user/meson.build
> +++ b/bsd-user/meson.build
> @@ -1,3 +1,7 @@
> +if not config_target.has_key('CONFIG_BSD_USER')
> +   subdir_done()
> +endif
> +
>  bsd_user_ss.add(files(
>    'bsdload.c',
>    'elfload.c',
> diff --git a/linux-user/meson.build b/linux-user/meson.build
> index 9549f81682..602255a3d6 100644
> --- a/linux-user/meson.build
> +++ b/linux-user/meson.build
> @@ -1,3 +1,7 @@
> +if not config_target.has_key('CONFIG_LINUX_USER')
> +   subdir_done()
> +endif
> +
>  linux_user_ss.add(files(
>    'elfload.c',
>    'exit.c',
> diff --git a/meson.build b/meson.build
> index 99a0a3e689..1f2da5f7d9 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -2303,10 +2303,9 @@ subdir('ebpf')
>  
>  common_ss.add(libbpf)
>  
> -bsd_user_ss.add(files('gdbstub.c'))
>  specific_ss.add_all(when: 'CONFIG_BSD_USER', if_true: bsd_user_ss)
>  
> -linux_user_ss.add(files('gdbstub.c', 'thunk.c'))
> +linux_user_ss.add(files('thunk.c'))
>  specific_ss.add_all(when: 'CONFIG_LINUX_USER', if_true: linux_user_ss)
>  
>  # needed for fuzzing binaries
> 

Thanks Warner for respining this! LGTM :)


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

* Re: [PATCH v2 01/15] meson: *-user: only descend into *-user when configured
  2021-10-18  5:26         ` Kyle Evans
@ 2021-10-18 14:09           ` Warner Losh
  0 siblings, 0 replies; 39+ messages in thread
From: Warner Losh @ 2021-10-18 14:09 UTC (permalink / raw)
  To: Kyle Evans
  Cc: Paolo Bonzini, Philippe Mathieu-Daudé,
	Richard Henderson, QEMU Developers, Laurent Vivier

[-- Attachment #1: Type: text/plain, Size: 4189 bytes --]

On Sun, Oct 17, 2021 at 11:26 PM Kyle Evans <kevans@freebsd.org> wrote:

> On Mon, Oct 18, 2021 at 12:02 AM Warner Losh <imp@bsdimp.com> wrote:
> >
> >
> >
> > On Sun, Oct 17, 2021 at 10:29 PM Warner Losh <imp@bsdimp.com> wrote:
> >>
> >>
> >>
> >> On Sun, Oct 17, 2021 at 9:43 PM Kyle Evans <kevans@freebsd.org> wrote:
> >>>
> >>> On Fri, Oct 8, 2021 at 6:15 PM Warner Losh <imp@bsdimp.com> wrote:
> >>> >
> >>> > To increase flexibility, only descend into *-user when that is
> >>> > configured. This allows *-user to selectively include directories
> based
> >>> > on the host OS which may not exist on all hosts. Adopt Paolo's
> >>> > suggestion of checking the configuration in the directories that know
> >>> > about the configuration.
> >>> >
> >>> > Message-Id: <20210926220103.1721355-2-f4bug@amsat.org>
> >>> > Message-Id: <20210926220103.1721355-3-f4bug@amsat.org>
> >>> > Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> >>> > Signed-off-by: Warner Losh <wlosh@bsdimp.com>
> >>> > Acked-by: Paolo Bonzini <pbonzinni@redhat.com>
> >>> >
> >>> > Sponsored by:           Netflix
> >>> > ---
> >>> >  bsd-user/meson.build   | 4 ++++
> >>> >  linux-user/meson.build | 4 ++++
> >>> >  meson.build            | 3 +--
> >>> >  3 files changed, 9 insertions(+), 2 deletions(-)
> >>> >
> >>> > diff --git a/bsd-user/meson.build b/bsd-user/meson.build
> >>> > index 0369549340..243fb78930 100644
> >>> > --- a/bsd-user/meson.build
> >>> > +++ b/bsd-user/meson.build
> >>> > @@ -1,3 +1,7 @@
> >>> > +if not config_target.has_key('CONFIG_BSD_USER')
> >>> > +   subdir_done()
> >>> > +endif
> >>> > +
> >>> >  bsd_user_ss.add(files(
> >>> >    'bsdload.c',
> >>> >    'elfload.c',
> >>> > diff --git a/linux-user/meson.build b/linux-user/meson.build
> >>> > index 9549f81682..602255a3d6 100644
> >>> > --- a/linux-user/meson.build
> >>> > +++ b/linux-user/meson.build
> >>> > @@ -1,3 +1,7 @@
> >>> > +if not config_target.has_key('CONFIG_LINUX_USER')
> >>> > +   subdir_done()
> >>> > +endif
> >>> > +
> >>> >  linux_user_ss.add(files(
> >>> >    'elfload.c',
> >>> >    'exit.c',
> >>> > diff --git a/meson.build b/meson.build
> >>> > index 99a0a3e689..1f2da5f7d9 100644
> >>> > --- a/meson.build
> >>> > +++ b/meson.build
> >>> > @@ -2303,10 +2303,9 @@ subdir('ebpf')
> >>> >
> >>> >  common_ss.add(libbpf)
> >>> >
> >>> > -bsd_user_ss.add(files('gdbstub.c'))
> >>> >  specific_ss.add_all(when: 'CONFIG_BSD_USER', if_true: bsd_user_ss)
> >>> >
> >>> > -linux_user_ss.add(files('gdbstub.c', 'thunk.c'))
> >>> > +linux_user_ss.add(files('thunk.c'))
> >>> >  specific_ss.add_all(when: 'CONFIG_LINUX_USER', if_true:
> linux_user_ss)
> >>> >
> >>> >  # needed for fuzzing binaries
> >>> > --
> >>> > 2.32.0
> >>> >
> >>>
> >>> I don't understand the gdbstub.c removal  here; don't we still want to
> >>> be compiling it in, just only if the appropriate
> >>> CONFIG_{BSD,LINUX}_USER knob is set? I note that it doesn't appear to
> >>> be added in individual *-user/meson.build, I assume it's uncommon to
> >>> add in ../foo.c in meson-land...
> >>
> >>
> >> It's added to specific_ss at line 2536
> >> specific_ss.add(files('cpu.c', 'disas.c', 'gdbstub.c'), capstone)
> >>
> >> so we don't need to add it again here.
> >
> >
> > I've also confirmed that it's built as both
> libqemu-i386-bsd-user.fa.p/gdbstub.c.o
> > and libqemu-x86_64-bsd-user.fa.p/gdbstub.c.o, which is what I'd expect
> given
> > the current upstream supported architectures are only i386 and x86_64.
> >
> > Warner
>
> Ah, ok, thanks! So that looks like a kind-of tangential cleanup, but
> related enough that it makes sense.
>

Yes. Paolo suggested it to further clean things up. Plus it had to be done
at the top level of meson.build rather than the subdirectories because
that's where gdbstub.c lived. I had to also introduce the have_bsd_user
and have_linux_user variables because we had to note that in one context
and use it in another context where the info was otherwise hard to get
at from Philippe's original patch.


> Reviewed-by: Kyle Evans <kevans@FreeBSD.org>
>

Thanks!

Warner

[-- Attachment #2: Type: text/html, Size: 6650 bytes --]

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

end of thread, other threads:[~2021-10-18 14:11 UTC | newest]

Thread overview: 39+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-08 23:14 [PATCH v2 00/15] bsd-user: misc cleanup for aarch64 import Warner Losh
2021-10-08 23:14 ` [PATCH v2 01/15] meson: *-user: only descend into *-user when configured Warner Losh
2021-10-09 14:40   ` Warner Losh
2021-10-18  3:42   ` Kyle Evans
2021-10-18  4:29     ` Warner Losh
2021-10-18  5:02       ` Warner Losh
2021-10-18  5:26         ` Kyle Evans
2021-10-18 14:09           ` Warner Losh
2021-10-18 10:17   ` Philippe Mathieu-Daudé
2021-10-08 23:14 ` [PATCH v2 02/15] bsd-user/target_os-user.h: Remove support for FreeBSD older than 12.0 Warner Losh
2021-10-14 15:14   ` Kyle Evans
2021-10-08 23:14 ` [PATCH v2 03/15] bsd-user/strace.list: Remove support for FreeBSD versions " Warner Losh
2021-10-14 15:14   ` Kyle Evans
2021-10-08 23:14 ` [PATCH v2 04/15] bsd-user: TARGET_RESET define is unused, remove it Warner Losh
2021-10-18  3:33   ` Kyle Evans
2021-10-08 23:14 ` [PATCH v2 05/15] bsd-user: export get_errno and is_error from syscall.c Warner Losh
2021-10-18  3:33   ` Kyle Evans
2021-10-08 23:14 ` [PATCH v2 06/15] bsd-user/errno_defs.h: Add internal error numbers Warner Losh
2021-10-18  3:34   ` Kyle Evans
2021-10-08 23:14 ` [PATCH v2 07/15] bsd-user: move TARGET_MC_GET_CLEAR_RET to target_os_signal.h Warner Losh
2021-10-18  3:34   ` Kyle Evans
2021-10-08 23:14 ` [PATCH v2 08/15] bsd-user/target_os_elf.h: Remove fallback ELF_HWCAP and reorder Warner Losh
2021-10-18  3:35   ` Kyle Evans
2021-10-08 23:15 ` [PATCH v2 09/15] bsd-user/target_os_elf: If ELF_HWCAP2 is defined, publish it Warner Losh
2021-10-18  3:35   ` Kyle Evans
2021-10-08 23:15 ` [PATCH v2 10/15] bsd-user: Remove used from TaskState Warner Losh
2021-10-18  3:35   ` Kyle Evans
2021-10-08 23:15 ` [PATCH v2 11/15] bsd-user: Add stop_all_tasks Warner Losh
2021-10-09 16:15   ` Richard Henderson
2021-10-18  3:44   ` Kyle Evans
2021-10-08 23:15 ` [PATCH v2 12/15] bsd-user/sysarch: Move to using do_freebsd_arch_sysarch interface Warner Losh
2021-10-18  3:36   ` Kyle Evans
2021-10-08 23:15 ` [PATCH v2 13/15] bsd-user/sysarch: Provide a per-arch framework for sysarch syscall Warner Losh
2021-10-18  3:37   ` Kyle Evans
2021-10-08 23:15 ` [PATCH v2 14/15] bsd-user: Rename sigqueue to qemu_sigqueue Warner Losh
2021-10-18  3:36   ` Kyle Evans
2021-10-08 23:15 ` [PATCH v2 15/15] bsd-user/signal: Create a dummy signal queueing function Warner Losh
2021-10-09 16:15   ` Richard Henderson
2021-10-18  3:44   ` Kyle Evans

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.