This patch series adds a significant number of system calls and mips/arm support for bsd-user. In its current state it can emulate most FreeBSD mips/mips64 and arm target binaries on a x86 host in a simple chroot environment. (see https://wiki.freebsd.org/QemuUserModeHowTo for the details.)
Besides adding a lot of shims and other support code this change restructures the code significantly to reduce the amount of C preprocessor conditionals for the various target and host arch/OS's. In general, the target cpu depedent code has been moved into into the various arch directories and the host OS dependent code (ie. FreeBSD, NetBSD, OpenBSD) has been moved into the OS directories as much as possible. I would like to recognize Olivier Houchard for a lot of the arm dependent code and Juergen Lock, the maintainer of the FreeBSD Qemu port, for their contributions. Best Regards, Stacey D. Son --- Stacey Son (18): bsd-user: refresh freebsd system call numbers bsd-user: add HOST_ABI_DIR for the various *BSD dependent code. bsd-user: move OS/arch dependent code for strace into separate directories bsd-user: move target arch and host OS dependent code out of main.c bsd-user: move target arch and host OS dependent code out of syscall.c bsd-user: add support for freebsd time related system calls bsd-user: add support for freebsd signal related system calls bsd-user: move target arch and host OS dependent code out of elfload.c bsd-user: add support for freebsd process related system calls bsd-user: add support for file system related system calls bsd-user: add support for stat, directory, and file control related system calls bsd-user: add support for memory management related system calls bsd-user: add support for socket related system calls bsd-user: add support for thread related system calls bsd-user: add support for the ioctl system call bsd-user: add support for extended attribute and ACL related syscalls bsd-user: add support for miscellaneous system calls bsd-user: add arm, mips and mips64 options to configure target-list Makefile.target | 5 +- bsd-user/Makefile.objs | 6 +- bsd-user/arm/syscall.h | 36 + bsd-user/arm/target_arch.h | 10 + bsd-user/arm/target_arch_cpu.c | 27 + bsd-user/arm/target_arch_cpu.h | 435 +++++++ bsd-user/arm/target_arch_elf.h | 54 + bsd-user/arm/target_arch_signal.h | 257 +++++ bsd-user/arm/target_arch_sigtramp.h | 33 + bsd-user/arm/target_arch_sysarch.h | 81 ++ bsd-user/arm/target_arch_thread.h | 62 + bsd-user/arm/target_arch_vmparam.h | 49 + bsd-user/bsd-file.h | 1111 ++++++++++++++++++ bsd-user/bsd-ioctl.c | 448 ++++++++ bsd-user/bsd-ioctl.h | 27 + bsd-user/bsd-mem.c | 122 ++ bsd-user/bsd-mem.h | 393 +++++++ bsd-user/bsd-misc.c | 209 ++++ bsd-user/bsd-misc.h | 339 ++++++ bsd-user/bsd-proc.c | 160 +++ bsd-user/bsd-proc.h | 434 +++++++ bsd-user/bsd-signal.h | 232 ++++ bsd-user/bsd-socket.c | 108 ++ bsd-user/bsd-socket.h | 266 +++++ bsd-user/bsdload.c | 147 ++- bsd-user/elfload.c | 947 +++------------- bsd-user/errno_defs.h | 13 +- bsd-user/freebsd/host_os.h | 46 + bsd-user/freebsd/os-extattr.c | 119 ++ bsd-user/freebsd/os-extattr.h | 644 +++++++++++ bsd-user/freebsd/os-ioctl-cmds.h | 47 + bsd-user/freebsd/os-ioctl-filio.h | 45 + bsd-user/freebsd/os-ioctl-ioccom.h | 54 + bsd-user/freebsd/os-ioctl-ttycom.h | 257 +++++ bsd-user/freebsd/os-ioctl-types.h | 7 + bsd-user/freebsd/os-misc.h | 442 ++++++++ bsd-user/freebsd/os-proc.c | 234 ++++ bsd-user/freebsd/os-proc.h | 428 +++++++ bsd-user/freebsd/os-signal.h | 43 + bsd-user/freebsd/os-socket.c | 149 +++ bsd-user/freebsd/os-socket.h | 548 +++++++++ bsd-user/freebsd/os-stat.c | 234 ++++ bsd-user/freebsd/os-stat.h | 437 +++++++ bsd-user/freebsd/os-strace.h | 29 + bsd-user/freebsd/os-sys.c | 268 +++++ bsd-user/freebsd/os-thread.c | 936 +++++++++++++++ bsd-user/freebsd/os-thread.h | 510 +++++++++ bsd-user/freebsd/os-time.c | 205 ++++ bsd-user/freebsd/os-time.h | 643 +++++++++++ bsd-user/freebsd/qemu-os.h | 79 ++ bsd-user/freebsd/strace.list | 76 ++- bsd-user/freebsd/syscall_nr.h | 813 ++++++++------ bsd-user/freebsd/target_os_elf.h | 145 +++ bsd-user/freebsd/target_os_siginfo.h | 100 ++ bsd-user/freebsd/target_os_signal.h | 79 ++ bsd-user/freebsd/target_os_stack.h | 157 +++ bsd-user/freebsd/target_os_thread.h | 6 + bsd-user/freebsd/target_os_vmparam.h | 23 + bsd-user/i386/syscall.h | 23 + bsd-user/i386/target_arch.h | 13 + bsd-user/i386/target_arch_cpu.c | 79 ++ bsd-user/i386/target_arch_cpu.h | 302 +++++ bsd-user/i386/target_arch_elf.h | 62 + bsd-user/i386/target_arch_signal.h | 94 ++ bsd-user/i386/target_arch_sigtramp.h | 11 + bsd-user/i386/target_arch_sysarch.h | 78 ++ bsd-user/i386/target_arch_thread.h | 45 + bsd-user/i386/target_arch_vmparam.h | 26 + bsd-user/i386/target_signal.h | 6 - bsd-user/main.c | 881 +++------------ bsd-user/mips/syscall.h | 52 + bsd-user/mips/target_arch.h | 10 + bsd-user/mips/target_arch_cpu.c | 27 + bsd-user/mips/target_arch_cpu.h | 243 ++++ bsd-user/mips/target_arch_elf.h | 36 + bsd-user/mips/target_arch_signal.h | 237 ++++ bsd-user/mips/target_arch_sigtramp.h | 23 + bsd-user/mips/target_arch_sysarch.h | 69 ++ bsd-user/mips/target_arch_thread.h | 54 + bsd-user/mips/target_arch_vmparam.h | 47 + bsd-user/mips64/syscall.h | 53 + bsd-user/mips64/target_arch.h | 10 + bsd-user/mips64/target_arch_cpu.c | 27 + bsd-user/mips64/target_arch_cpu.h | 243 ++++ bsd-user/mips64/target_arch_elf.h | 36 + bsd-user/mips64/target_arch_signal.h | 236 ++++ bsd-user/mips64/target_arch_sigtramp.h | 23 + bsd-user/mips64/target_arch_sysarch.h | 69 ++ bsd-user/mips64/target_arch_thread.h | 54 + bsd-user/mips64/target_arch_vmparam.h | 47 + bsd-user/mmap.c | 140 +-- bsd-user/netbsd/host_os.h | 31 + bsd-user/netbsd/os-extattr.h | 247 ++++ bsd-user/netbsd/os-ioctl-cmds.h | 48 + bsd-user/netbsd/os-ioctl-filio.h | 29 + bsd-user/netbsd/os-ioctl-ioccom.h | 38 + bsd-user/netbsd/os-ioctl-ttycom.h | 240 ++++ bsd-user/netbsd/os-ioctl-types.h | 7 + bsd-user/netbsd/os-misc.h | 375 ++++++ bsd-user/netbsd/os-proc.c | 11 + bsd-user/netbsd/os-proc.h | 243 ++++ bsd-user/netbsd/os-socket.c | 1 + bsd-user/netbsd/os-socket.h | 98 ++ bsd-user/netbsd/os-stat.c | 1 + bsd-user/netbsd/os-stat.h | 1 + bsd-user/netbsd/os-strace.h | 1 + bsd-user/netbsd/os-sys.c | 46 + bsd-user/netbsd/os-thread.c | 1 + bsd-user/netbsd/os-thread.h | 133 +++ bsd-user/netbsd/os-time.c | 1 + bsd-user/netbsd/os-time.h | 179 +++ bsd-user/netbsd/qemu-os.h | 1 + bsd-user/netbsd/target_os_elf.h | 226 ++++ bsd-user/netbsd/target_os_siginfo.h | 82 ++ bsd-user/netbsd/target_os_signal.h | 70 ++ bsd-user/netbsd/target_os_stack.h | 33 + bsd-user/netbsd/target_os_thread.h | 6 + bsd-user/openbsd/host_os.h | 31 + bsd-user/openbsd/os-extattr.h | 247 ++++ bsd-user/openbsd/os-ioctl-cmds.h | 48 + bsd-user/openbsd/os-ioctl-filio.h | 29 + bsd-user/openbsd/os-ioctl-ioccom.h | 38 + bsd-user/openbsd/os-ioctl-ttycom.h | 240 ++++ bsd-user/openbsd/os-ioctl-types.h | 7 + bsd-user/openbsd/os-misc.h | 375 ++++++ bsd-user/openbsd/os-proc.c | 11 + bsd-user/openbsd/os-proc.h | 243 ++++ bsd-user/openbsd/os-socket.c | 1 + bsd-user/openbsd/os-socket.h | 98 ++ bsd-user/openbsd/os-stat.c | 1 + bsd-user/openbsd/os-stat.h | 176 +++ bsd-user/openbsd/os-strace.h | 1 + bsd-user/openbsd/os-sys.c | 46 + bsd-user/openbsd/os-thread.c | 1 + bsd-user/openbsd/os-thread.h | 133 +++ bsd-user/openbsd/os-time.c | 1 + bsd-user/openbsd/os-time.h | 179 +++ bsd-user/openbsd/qemu-os.h | 1 + bsd-user/openbsd/target_os_elf.h | 226 ++++ bsd-user/openbsd/target_os_siginfo.h | 82 ++ bsd-user/openbsd/target_os_signal.h | 70 ++ bsd-user/openbsd/target_os_stack.h | 33 + bsd-user/openbsd/target_os_thread.h | 6 + bsd-user/qemu-bsd.h | 79 ++ bsd-user/qemu.h | 202 +++- bsd-user/signal.c | 907 +++++++++++++++- bsd-user/sparc/syscall.h | 29 +- bsd-user/sparc/target_arch.h | 11 + bsd-user/sparc/target_arch_cpu.c | 113 ++ bsd-user/sparc/target_arch_cpu.h | 158 +++ bsd-user/sparc/target_arch_elf.h | 30 + bsd-user/sparc/target_arch_signal.h | 77 ++ bsd-user/sparc/target_arch_sigtramp.h | 11 + bsd-user/sparc/target_arch_sysarch.h | 52 + bsd-user/sparc/target_arch_thread.h | 39 + bsd-user/sparc/target_arch_vmparam.h | 35 + bsd-user/sparc/target_signal.h | 5 - bsd-user/sparc64/syscall.h | 28 +- bsd-user/sparc64/target_arch.h | 11 + bsd-user/sparc64/target_arch_cpu.c | 118 ++ bsd-user/sparc64/target_arch_cpu.h | 191 ++++ bsd-user/sparc64/target_arch_elf.h | 34 + bsd-user/sparc64/target_arch_signal.h | 94 ++ bsd-user/sparc64/target_arch_sigtramp.h | 11 + bsd-user/sparc64/target_arch_sysarch.h | 52 + bsd-user/sparc64/target_arch_thread.h | 55 + bsd-user/sparc64/target_arch_vmparam.h | 37 + bsd-user/sparc64/target_signal.h | 5 - bsd-user/strace.c | 175 ++- bsd-user/syscall.c | 1884 ++++++++++++++++++++++++------- bsd-user/syscall_defs.h | 860 +++++++++++++-- bsd-user/x86_64/syscall.h | 26 +- bsd-user/x86_64/target_arch.h | 13 + bsd-user/x86_64/target_arch_cpu.c | 79 ++ bsd-user/x86_64/target_arch_cpu.h | 324 ++++++ bsd-user/x86_64/target_arch_elf.h | 55 + bsd-user/x86_64/target_arch_signal.h | 94 ++ bsd-user/x86_64/target_arch_sigtramp.h | 11 + bsd-user/x86_64/target_arch_sysarch.h | 76 ++ bsd-user/x86_64/target_arch_thread.h | 40 + bsd-user/x86_64/target_arch_vmparam.h | 28 + bsd-user/x86_64/target_signal.h | 5 - configure | 11 + default-configs/arm-bsd-user.mak | 3 + default-configs/mips-bsd-user.mak | 1 + default-configs/mips64-bsd-user.mak | 1 + default-configs/mips64el-bsd-user.mak | 1 + default-configs/mipsel-bsd-user.mak | 1 + 188 files changed, 25101 insertions(+), 2614 deletions(-) create mode 100644 bsd-user/arm/syscall.h create mode 100644 bsd-user/arm/target_arch.h create mode 100644 bsd-user/arm/target_arch_cpu.c create mode 100644 bsd-user/arm/target_arch_cpu.h create mode 100644 bsd-user/arm/target_arch_elf.h create mode 100644 bsd-user/arm/target_arch_signal.h create mode 100644 bsd-user/arm/target_arch_sigtramp.h create mode 100644 bsd-user/arm/target_arch_sysarch.h create mode 100644 bsd-user/arm/target_arch_thread.h create mode 100644 bsd-user/arm/target_arch_vmparam.h create mode 100644 bsd-user/bsd-file.h create mode 100644 bsd-user/bsd-ioctl.c create mode 100644 bsd-user/bsd-ioctl.h create mode 100644 bsd-user/bsd-mem.c create mode 100644 bsd-user/bsd-mem.h create mode 100644 bsd-user/bsd-misc.c create mode 100644 bsd-user/bsd-misc.h create mode 100644 bsd-user/bsd-proc.c create mode 100644 bsd-user/bsd-proc.h create mode 100644 bsd-user/bsd-signal.h create mode 100644 bsd-user/bsd-socket.c create mode 100644 bsd-user/bsd-socket.h create mode 100644 bsd-user/freebsd/host_os.h create mode 100644 bsd-user/freebsd/os-extattr.c create mode 100644 bsd-user/freebsd/os-extattr.h create mode 100644 bsd-user/freebsd/os-ioctl-cmds.h create mode 100644 bsd-user/freebsd/os-ioctl-filio.h create mode 100644 bsd-user/freebsd/os-ioctl-ioccom.h create mode 100644 bsd-user/freebsd/os-ioctl-ttycom.h create mode 100644 bsd-user/freebsd/os-ioctl-types.h create mode 100644 bsd-user/freebsd/os-misc.h create mode 100644 bsd-user/freebsd/os-proc.c create mode 100644 bsd-user/freebsd/os-proc.h create mode 100644 bsd-user/freebsd/os-signal.h create mode 100644 bsd-user/freebsd/os-socket.c create mode 100644 bsd-user/freebsd/os-socket.h create mode 100644 bsd-user/freebsd/os-stat.c create mode 100644 bsd-user/freebsd/os-stat.h create mode 100644 bsd-user/freebsd/os-strace.h create mode 100644 bsd-user/freebsd/os-sys.c create mode 100644 bsd-user/freebsd/os-thread.c create mode 100644 bsd-user/freebsd/os-thread.h create mode 100644 bsd-user/freebsd/os-time.c create mode 100644 bsd-user/freebsd/os-time.h create mode 100644 bsd-user/freebsd/qemu-os.h create mode 100644 bsd-user/freebsd/target_os_elf.h create mode 100644 bsd-user/freebsd/target_os_siginfo.h create mode 100644 bsd-user/freebsd/target_os_signal.h create mode 100644 bsd-user/freebsd/target_os_stack.h create mode 100644 bsd-user/freebsd/target_os_thread.h create mode 100644 bsd-user/freebsd/target_os_vmparam.h create mode 100644 bsd-user/i386/target_arch.h create mode 100644 bsd-user/i386/target_arch_cpu.c create mode 100644 bsd-user/i386/target_arch_cpu.h create mode 100644 bsd-user/i386/target_arch_elf.h create mode 100644 bsd-user/i386/target_arch_signal.h create mode 100644 bsd-user/i386/target_arch_sigtramp.h create mode 100644 bsd-user/i386/target_arch_sysarch.h create mode 100644 bsd-user/i386/target_arch_thread.h create mode 100644 bsd-user/i386/target_arch_vmparam.h create mode 100644 bsd-user/mips/syscall.h create mode 100644 bsd-user/mips/target_arch.h create mode 100644 bsd-user/mips/target_arch_cpu.c create mode 100644 bsd-user/mips/target_arch_cpu.h create mode 100644 bsd-user/mips/target_arch_elf.h create mode 100644 bsd-user/mips/target_arch_signal.h create mode 100644 bsd-user/mips/target_arch_sigtramp.h create mode 100644 bsd-user/mips/target_arch_sysarch.h create mode 100644 bsd-user/mips/target_arch_thread.h create mode 100644 bsd-user/mips/target_arch_vmparam.h create mode 100644 bsd-user/mips64/syscall.h create mode 100644 bsd-user/mips64/target_arch.h create mode 100644 bsd-user/mips64/target_arch_cpu.c create mode 100644 bsd-user/mips64/target_arch_cpu.h create mode 100644 bsd-user/mips64/target_arch_elf.h create mode 100644 bsd-user/mips64/target_arch_signal.h create mode 100644 bsd-user/mips64/target_arch_sigtramp.h create mode 100644 bsd-user/mips64/target_arch_sysarch.h create mode 100644 bsd-user/mips64/target_arch_thread.h create mode 100644 bsd-user/mips64/target_arch_vmparam.h create mode 100644 bsd-user/netbsd/host_os.h create mode 100644 bsd-user/netbsd/os-extattr.h create mode 100644 bsd-user/netbsd/os-ioctl-cmds.h create mode 100644 bsd-user/netbsd/os-ioctl-filio.h create mode 100644 bsd-user/netbsd/os-ioctl-ioccom.h create mode 100644 bsd-user/netbsd/os-ioctl-ttycom.h create mode 100644 bsd-user/netbsd/os-ioctl-types.h create mode 100644 bsd-user/netbsd/os-misc.h create mode 100644 bsd-user/netbsd/os-proc.c create mode 100644 bsd-user/netbsd/os-proc.h create mode 100644 bsd-user/netbsd/os-socket.c create mode 100644 bsd-user/netbsd/os-socket.h create mode 100644 bsd-user/netbsd/os-stat.c create mode 100644 bsd-user/netbsd/os-stat.h create mode 100644 bsd-user/netbsd/os-strace.h create mode 100644 bsd-user/netbsd/os-sys.c create mode 100644 bsd-user/netbsd/os-thread.c create mode 100644 bsd-user/netbsd/os-thread.h create mode 100644 bsd-user/netbsd/os-time.c create mode 100644 bsd-user/netbsd/os-time.h create mode 100644 bsd-user/netbsd/qemu-os.h create mode 100644 bsd-user/netbsd/target_os_elf.h create mode 100644 bsd-user/netbsd/target_os_siginfo.h create mode 100644 bsd-user/netbsd/target_os_signal.h create mode 100644 bsd-user/netbsd/target_os_stack.h create mode 100644 bsd-user/netbsd/target_os_thread.h create mode 100644 bsd-user/openbsd/host_os.h create mode 100644 bsd-user/openbsd/os-extattr.h create mode 100644 bsd-user/openbsd/os-ioctl-cmds.h create mode 100644 bsd-user/openbsd/os-ioctl-filio.h create mode 100644 bsd-user/openbsd/os-ioctl-ioccom.h create mode 100644 bsd-user/openbsd/os-ioctl-ttycom.h create mode 100644 bsd-user/openbsd/os-ioctl-types.h create mode 100644 bsd-user/openbsd/os-misc.h create mode 100644 bsd-user/openbsd/os-proc.c create mode 100644 bsd-user/openbsd/os-proc.h create mode 100644 bsd-user/openbsd/os-socket.c create mode 100644 bsd-user/openbsd/os-socket.h create mode 100644 bsd-user/openbsd/os-stat.c create mode 100644 bsd-user/openbsd/os-stat.h create mode 100644 bsd-user/openbsd/os-strace.h create mode 100644 bsd-user/openbsd/os-sys.c create mode 100644 bsd-user/openbsd/os-thread.c create mode 100644 bsd-user/openbsd/os-thread.h create mode 100644 bsd-user/openbsd/os-time.c create mode 100644 bsd-user/openbsd/os-time.h create mode 100644 bsd-user/openbsd/qemu-os.h create mode 100644 bsd-user/openbsd/target_os_elf.h create mode 100644 bsd-user/openbsd/target_os_siginfo.h create mode 100644 bsd-user/openbsd/target_os_signal.h create mode 100644 bsd-user/openbsd/target_os_stack.h create mode 100644 bsd-user/openbsd/target_os_thread.h create mode 100644 bsd-user/qemu-bsd.h create mode 100644 bsd-user/sparc/target_arch.h create mode 100644 bsd-user/sparc/target_arch_cpu.c create mode 100644 bsd-user/sparc/target_arch_cpu.h create mode 100644 bsd-user/sparc/target_arch_elf.h create mode 100644 bsd-user/sparc/target_arch_signal.h create mode 100644 bsd-user/sparc/target_arch_sigtramp.h create mode 100644 bsd-user/sparc/target_arch_sysarch.h create mode 100644 bsd-user/sparc/target_arch_thread.h create mode 100644 bsd-user/sparc/target_arch_vmparam.h create mode 100644 bsd-user/sparc64/target_arch.h create mode 100644 bsd-user/sparc64/target_arch_cpu.c create mode 100644 bsd-user/sparc64/target_arch_cpu.h create mode 100644 bsd-user/sparc64/target_arch_elf.h create mode 100644 bsd-user/sparc64/target_arch_signal.h create mode 100644 bsd-user/sparc64/target_arch_sigtramp.h create mode 100644 bsd-user/sparc64/target_arch_sysarch.h create mode 100644 bsd-user/sparc64/target_arch_thread.h create mode 100644 bsd-user/sparc64/target_arch_vmparam.h create mode 100644 bsd-user/x86_64/target_arch.h create mode 100644 bsd-user/x86_64/target_arch_cpu.c create mode 100644 bsd-user/x86_64/target_arch_cpu.h create mode 100644 bsd-user/x86_64/target_arch_elf.h create mode 100644 bsd-user/x86_64/target_arch_signal.h create mode 100644 bsd-user/x86_64/target_arch_sigtramp.h create mode 100644 bsd-user/x86_64/target_arch_sysarch.h create mode 100644 bsd-user/x86_64/target_arch_thread.h create mode 100644 bsd-user/x86_64/target_arch_vmparam.h create mode 100644 default-configs/arm-bsd-user.mak create mode 100644 default-configs/mips-bsd-user.mak create mode 100644 default-configs/mips64-bsd-user.mak create mode 100644 default-configs/mips64el-bsd-user.mak create mode 100644 default-configs/mipsel-bsd-user.mak -- 1.7.8