mirror of
https://github.com/qemu/qemu.git
synced 2024-12-02 16:23:35 +08:00
* Fuzzer improvements
* Add OpenSUSE leap to the gitlab-CI * Some fixes to get our CI "green" again * Some initial patches to update bsd-user -----BEGIN PGP SIGNATURE----- iQJFBAABCAAvFiEEJ7iIR+7gJQEY8+q5LtnXdP5wLbUFAl/8WecRHHRodXRoQHJl ZGhhdC5jb20ACgkQLtnXdP5wLbXOBRAApCeRyDp+dc0+ONJrS/6e4dbD1zC+0VD9 HGQe6DhXQ+z1F5qCDOAUb1HvjH3ixrCR3cnTZN8GlOxJckf/3pvP4Skjvp+hhGRe abWhJsWujI1cgybHSdgH9Qkuc6ixajhS7h386SdJKt13lP9tfrvrllfDO/Z0RdTb SbHxI3r+ZbWyOR72jwlmXmoPu1vw9hqK9J5GZL3mMXkqftG81eg6H03/N0YNDEjA cvC6EqyRiYbknwx6Ipo4oQ2ObcAiGLWhf9LYa6pIh29LcgPdpmNB+yF9u9DVGdVI l2X6i2PIg0COzckFhrEPN3E2Xxi2kKWrbSLMWTZ5C5E1SOV7SvM0pXfwnY5PNuQy wEduCU2/MlYQQI+wceiVaDtZP6erNd3/BfbX5LPXuw44PYOlWkKl4gGRr5ndbXHA Q92xi+CWEwCmC4sIiSldiiaVCk0iclHQbDB6lwECWlM5y1D/n7rxy0lAnCNMpr8s DYRa5UjW5LoiDiZGsGn/eeOZupvUvTfuL7UH5bkrwrI8k0Jsq5ixDO2w3TzY09oa y/0HZ6+7aSJEs21F8OQHDpWmqwJR/uahRDPJNBxsOoPJ6GD2Km8pT3EDzQfWqHHQ 6d95bXBxK3pk3JEDYDxqc8lWatTZHKpg9JWJ27NwwxekeZCNKLLkNIsXLN8cIDoZ ITAgAqTpw4g= =pry4 -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/huth-gitlab/tags/pull-request-2021-01-11v2' into staging * Fuzzer improvements * Add OpenSUSE leap to the gitlab-CI * Some fixes to get our CI "green" again * Some initial patches to update bsd-user # gpg: Signature made Mon 11 Jan 2021 14:00:07 GMT # gpg: using RSA key 27B88847EEE0250118F3EAB92ED9D774FE702DB5 # gpg: issuer "thuth@redhat.com" # gpg: Good signature from "Thomas Huth <th.huth@gmx.de>" [full] # gpg: aka "Thomas Huth <thuth@redhat.com>" [full] # gpg: aka "Thomas Huth <huth@tuxfamily.org>" [full] # gpg: aka "Thomas Huth <th.huth@posteo.de>" [unknown] # Primary key fingerprint: 27B8 8847 EEE0 2501 18F3 EAB9 2ED9 D774 FE70 2DB5 * remotes/huth-gitlab/tags/pull-request-2021-01-11v2: fuzz: map all BARs and enable PCI devices tests/acceptance: Fix race conditions in s390x tests & skip fedora on gitlab-CI bsd-user: Update strace.list for FreeBSD's latest syscalls bsd-user: move strace OS/arch dependent code to host/arch dirs bsd-user: regenerate FreeBSD's system call numbers fuzz: heuristic split write based on past IOs fuzz: add minimization options fuzz: set bits in operand of write/out to zero fuzz: remove IO commands iteratively fuzz: split write operand using binary approach fuzz: double the IOs to remove for every loop fuzz: accelerate non-crash detection util/oslib-win32: Fix _aligned_malloc() arguments order qtest/libqtest: fix heap-buffer-overflow in qtest_cb_for_every_machine() gitlab-ci.yml: Add openSUSE Leap 15.2 for gitlab CI/CD Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
b3f846c59d
@ -246,3 +246,8 @@ amd64-ubuntu-container:
|
||||
<<: *container_job_definition
|
||||
variables:
|
||||
NAME: ubuntu
|
||||
|
||||
amd64-opensuse-leap-container:
|
||||
<<: *container_job_definition
|
||||
variables:
|
||||
NAME: opensuse-leap
|
||||
|
@ -200,6 +200,37 @@ acceptance-system-centos:
|
||||
MAKE_CHECK_ARGS: check-acceptance
|
||||
<<: *acceptance_definition
|
||||
|
||||
build-system-opensuse:
|
||||
<<: *native_build_job_definition
|
||||
variables:
|
||||
IMAGE: opensuse-leap
|
||||
TARGETS: s390x-softmmu x86_64-softmmu aarch64-softmmu
|
||||
MAKE_CHECK_ARGS: check-build
|
||||
artifacts:
|
||||
expire_in: 2 days
|
||||
paths:
|
||||
- build
|
||||
|
||||
check-system-opensuse:
|
||||
<<: *native_test_job_definition
|
||||
needs:
|
||||
- job: build-system-opensuse
|
||||
artifacts: true
|
||||
variables:
|
||||
IMAGE: opensuse-leap
|
||||
MAKE_CHECK_ARGS: check
|
||||
|
||||
acceptance-system-opensuse:
|
||||
<<: *native_test_job_definition
|
||||
needs:
|
||||
- job: build-system-opensuse
|
||||
artifacts: true
|
||||
variables:
|
||||
IMAGE: opensuse-leap
|
||||
MAKE_CHECK_ARGS: check-acceptance
|
||||
<<: *acceptance_definition
|
||||
|
||||
|
||||
build-disabled:
|
||||
<<: *native_build_job_definition
|
||||
variables:
|
||||
|
78
bsd-user/arm/target_arch_sysarch.h
Normal file
78
bsd-user/arm/target_arch_sysarch.h
Normal file
@ -0,0 +1,78 @@
|
||||
/*
|
||||
* arm sysarch() system call emulation
|
||||
*
|
||||
* Copyright (c) 2013 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/>.
|
||||
*/
|
||||
|
||||
#ifndef BSD_USER_ARCH_SYSARCH_H_
|
||||
#define BSD_USER_ARCH_SYSARCH_H_
|
||||
|
||||
#include "target_syscall.h"
|
||||
#include "target_arch.h"
|
||||
|
||||
static inline abi_long do_freebsd_arch_sysarch(CPUARMState *env, int op,
|
||||
abi_ulong parms)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
switch (op) {
|
||||
case TARGET_FREEBSD_ARM_SYNC_ICACHE:
|
||||
case TARGET_FREEBSD_ARM_DRAIN_WRITEBUF:
|
||||
break;
|
||||
|
||||
case TARGET_FREEBSD_ARM_SET_TP:
|
||||
target_cpu_set_tls(env, parms);
|
||||
break;
|
||||
|
||||
case TARGET_FREEBSD_ARM_GET_TP:
|
||||
ret = target_cpu_get_tls(env);
|
||||
break;
|
||||
|
||||
default:
|
||||
ret = -TARGET_EINVAL;
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
static inline void do_freebsd_arch_print_sysarch(
|
||||
const struct syscallname *name, abi_long arg1, abi_long arg2,
|
||||
abi_long arg3, abi_long arg4, abi_long arg5, abi_long arg6)
|
||||
{
|
||||
|
||||
switch (arg1) {
|
||||
case TARGET_FREEBSD_ARM_SYNC_ICACHE:
|
||||
gemu_log("%s(ARM_SYNC_ICACHE, ...)", name->name);
|
||||
break;
|
||||
|
||||
case TARGET_FREEBSD_ARM_DRAIN_WRITEBUF:
|
||||
gemu_log("%s(ARM_DRAIN_WRITEBUF, ...)", name->name);
|
||||
break;
|
||||
|
||||
case TARGET_FREEBSD_ARM_SET_TP:
|
||||
gemu_log("%s(ARM_SET_TP, 0x" TARGET_ABI_FMT_lx ")", name->name, arg2);
|
||||
break;
|
||||
|
||||
case TARGET_FREEBSD_ARM_GET_TP:
|
||||
gemu_log("%s(ARM_GET_TP, 0x" TARGET_ABI_FMT_lx ")", name->name, arg2);
|
||||
break;
|
||||
|
||||
default:
|
||||
gemu_log("UNKNOWN OP: %d, " TARGET_ABI_FMT_lx ")", (int)arg1, arg2);
|
||||
}
|
||||
}
|
||||
|
||||
#endif /*!BSD_USER_ARCH_SYSARCH_H_ */
|
36
bsd-user/arm/target_syscall.h
Normal file
36
bsd-user/arm/target_syscall.h
Normal file
@ -0,0 +1,36 @@
|
||||
#ifndef BSD_USER_ARCH_SYSCALL_H_
|
||||
#define BSD_USER_ARCH_SYSCALL_H_
|
||||
|
||||
struct target_pt_regs {
|
||||
abi_long uregs[17];
|
||||
};
|
||||
|
||||
#define ARM_cpsr uregs[16]
|
||||
#define ARM_pc uregs[15]
|
||||
#define ARM_lr uregs[14]
|
||||
#define ARM_sp uregs[13]
|
||||
#define ARM_ip uregs[12]
|
||||
#define ARM_fp uregs[11]
|
||||
#define ARM_r10 uregs[10]
|
||||
#define ARM_r9 uregs[9]
|
||||
#define ARM_r8 uregs[8]
|
||||
#define ARM_r7 uregs[7]
|
||||
#define ARM_r6 uregs[6]
|
||||
#define ARM_r5 uregs[5]
|
||||
#define ARM_r4 uregs[4]
|
||||
#define ARM_r3 uregs[3]
|
||||
#define ARM_r2 uregs[2]
|
||||
#define ARM_r1 uregs[1]
|
||||
#define ARM_r0 uregs[0]
|
||||
|
||||
#define ARM_SYSCALL_BASE 0 /* XXX: FreeBSD only */
|
||||
|
||||
#define TARGET_FREEBSD_ARM_SYNC_ICACHE 0
|
||||
#define TARGET_FREEBSD_ARM_DRAIN_WRITEBUF 1
|
||||
#define TARGET_FREEBSD_ARM_SET_TP 2
|
||||
#define TARGET_FREEBSD_ARM_GET_TP 3
|
||||
|
||||
#define TARGET_HW_MACHINE "arm"
|
||||
#define TARGET_HW_MACHINE_ARCH "armv6"
|
||||
|
||||
#endif /* !BSD_USER_ARCH_SYSCALL_H_ */
|
29
bsd-user/freebsd/os-strace.h
Normal file
29
bsd-user/freebsd/os-strace.h
Normal file
@ -0,0 +1,29 @@
|
||||
/*
|
||||
* FreeBSD dependent strace print functions
|
||||
*
|
||||
* Copyright (c) 2013 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 "target_arch_sysarch.h" /* architecture dependent functions */
|
||||
|
||||
|
||||
static inline void do_os_print_sysarch(const struct syscallname *name,
|
||||
abi_long arg1, abi_long arg2, abi_long arg3, abi_long arg4,
|
||||
abi_long arg5, abi_long arg6)
|
||||
{
|
||||
/* This is arch dependent */
|
||||
do_freebsd_arch_print_sysarch(name, arg1, arg2, arg3, arg4, arg5, arg6);
|
||||
}
|
@ -28,18 +28,37 @@
|
||||
{ TARGET_FREEBSD_NR___acl_set_fd, "__acl_set_fd", "%s(%d, %d, %#x)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR___acl_set_file, "__acl_set_file", "%s(\"%s\", %d, %#x)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR___acl_set_link, "__acl_set_link", "%s(\"%s\", %d, %#x)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR___getcwd, "__getcwd", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR___semctl, "__semctl", NULL, NULL, NULL },
|
||||
{ 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 },
|
||||
{ TARGET_FREEBSD_NR_acct, "acct", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_adjtime, "adjtime", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_bind, "bind", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_bindat, "bindat", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_break, "break", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_cap_enter, "cap_enter", NULL, NULL, NULL },
|
||||
{ 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 },
|
||||
{ TARGET_FREEBSD_NR_chdir, "chdir", "%s(\"%s\")", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_chflags, "chflags", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_chflagsat, "chflagsat", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_chmod, "chmod", "%s(\"%s\",%#o)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_chown, "chown", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_chroot, "chroot", NULL, NULL, NULL },
|
||||
@ -48,6 +67,9 @@
|
||||
{ TARGET_FREEBSD_NR_clock_settime, "clock_settime", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_close, "close", "%s(%d)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_connect, "connect", "%s(%d,%#x,%d)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_connectat, "connectat", "%s(%d,%d,%#x,%d)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_cpuset_getdomain, "cpuset_getdomain", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_cpuset_setdomain, "cpuset_setdomain", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_dup, "dup", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_dup2, "dup2", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_eaccess, "eaccess", "%s(\"%s\",%#x)", NULL, NULL },
|
||||
@ -61,7 +83,7 @@
|
||||
{ TARGET_FREEBSD_NR_extattr_get_file, "extattr_get_file", "%s(\"%s\", %d, \"%s\", %#x, %d)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_extattr_get_file, "extattr_get_link", "%s(\"%s\", %d, \"%s\", %#x, %d)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_extattr_list_fd, "extattr_list_fd", "%s(%d, %d, %#x, %d)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_extattr_list_file, "extattr_list_file", "%s(\"%s\", %d, %#x, %d)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_extattr_list_file, "extattr_list_file", "%s(\"%s\", %#x, %d)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_extattr_list_link, "extattr_list_link", "%s(\"%s\", %d, %#x, %d)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_extattr_set_fd, "extattr_set_fd", "%s(%d, %d, \"%s\", %#x, %d)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_extattr_set_file, "extattr_set_file", "%s(\"%s\", %d, \"%s\", %#x, %d)", NULL, NULL },
|
||||
@ -71,26 +93,34 @@
|
||||
{ TARGET_FREEBSD_NR_fchmod, "fchmod", "%s(%d,%#o)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_fchown, "fchown", "%s(%d,%d,%d)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_fcntl, "fcntl", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_fdatasync, "fdatasync", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_fexecve, "fexecve", NULL, print_execve, NULL },
|
||||
{ TARGET_FREEBSD_NR_fhopen, "fhopen", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_fhstat, "fhstat", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_fhstatfs, "fhstatfs", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_freebsd11_fhstat, "freebsd11_fhstat", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_freebsd11_fhstatfs, "freebsd11_fhstatfs", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_flock, "flock", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_fork, "fork", "%s()", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_fpathconf, "fpathconf", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_fstat, "fstat", "%s(%d,%#x)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_fstatat, "fstatat", "%s(%d,\"%s\", %#x, %d)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_fstatfs, "fstatfs", "%s(%d,%#x)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_freebsd11_fstat, "freebsd11_fstat", "%s(%d,%#x)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_freebsd11_fstatat, "freebsd11_fstatat", "%s(%d,\"%s\", %#x, %d)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_freebsd11_fstatfs, "freebsd11_fstatfs", "%s(%d,%#x)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_fsync, "fsync", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_ftruncate, "ftruncate", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_futimens, "futimens", "%s(%d,%p)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_futimes, "futimes", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_getcontext, "getcontext", "%s(%#x)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_getdirentries, "getdirentries", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_freebsd6_mmap, "freebsd6_mmap", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_freebsd11_getdirentries, "freebsd11_getdirentries", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_getegid, "getegid", "%s()", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_geteuid, "geteuid", "%s()", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_getfh, "getfh", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_getfsstat, "getfsstat", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_freebsd11_getfsstat, "freebsd11_getfsstat", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_getgid, "getgid", "%s()", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_getgroups, "getgroups", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_getitimer, "getitimer", NULL, NULL, NULL },
|
||||
@ -101,6 +131,7 @@
|
||||
{ TARGET_FREEBSD_NR_getpid, "getpid", "%s()", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_getppid, "getppid", "%s()", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_getpriority, "getpriority", "%s(%#x,%#x)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_getrandom, "getrandom", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_getresgid, "getresgid", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_getresuid, "getresuid", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_getrlimit, "getrlimit", NULL, NULL, NULL },
|
||||
@ -112,8 +143,12 @@
|
||||
{ TARGET_FREEBSD_NR_getuid, "getuid", "%s()", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_ioctl, "ioctl", NULL, print_ioctl, NULL },
|
||||
{ TARGET_FREEBSD_NR_issetugid, "issetugid", "%s()", NULL, NULL },
|
||||
{ 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 },
|
||||
@ -121,13 +156,15 @@
|
||||
{ TARGET_FREEBSD_NR_listen, "listen", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_lpathconf, "lpathconf", "%s(\"%s\", %d)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_lseek, "lseek", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_lstat, "lstat", "%s(\"%s\",%p)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_freebsd11_lstat, "freebsd11_lstat", "%s(\"%s\",%p)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_madvise, "madvise", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_mincore, "mincore", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_minherit, "minherit", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_mkdir, "mkdir", "%s(\"%s\",%#o)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_mkfifo, "mkfifo", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_mknod, "mknod", "%s(\"%s\",%#o,%#x)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_mknodat, "mknodat", "%s(%d, \"%s\",%#o,%#x)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_freebsd11_mknod, "freebsd11_mknod", "%s(\"%s\",%#o,%#x)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_freebsd11_mknodat, "freebsd11_mknodat", "%s(%d, \"%s\",%#o,%#x)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_mlock, "mlock", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_mlockall, "mlockall", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_mmap, "mmap", NULL, NULL, print_syscall_ret_addr },
|
||||
@ -146,8 +183,10 @@
|
||||
{ TARGET_FREEBSD_NR_open, "open", "%s(\"%s\",%#x,%#o)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_openat, "openat", "%s(%d, \"%s\",%#x,%#o)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_pathconf, "pathconf", "%s(\"%s\", %d)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_pipe, "pipe", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_freebsd10_pipe, "freebsd10_pipe", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_pipe2, "pipe2", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_poll, "poll", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_posix_fallocate, "posix_fallocate", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_pread, "pread", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_preadv, "preadv", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_profil, "profil", NULL, NULL, NULL },
|
||||
@ -167,6 +206,8 @@
|
||||
{ TARGET_FREEBSD_NR_rmdir, "rmdir", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_rtprio_thread, "rtprio_thread", "%s(%d, %d, %p)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_sbrk, "sbrk", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_sched_get_priority_max, "sched_get_priority_max", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_sched_get_priority_min, "sched_get_priority_min", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_sched_yield, "sched_yield", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_select, "select", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_semget, "semget", NULL, NULL, NULL },
|
||||
@ -205,12 +246,17 @@
|
||||
{ TARGET_FREEBSD_NR_socket, "socket", "%s(%d,%d,%d)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_socketpair, "socketpair", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_sstk, "sstk", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_stat, "stat", "%s(\"%s\",%p)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_statfs, "statfs", "%s(\"%s\",%p)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_freebsd11_stat, "freebsd11_stat", "%s(\"%s\",%p)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_freebsd11_statfs, "freebsd11_statfs", "%s(\"%s\",%p)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_symlink, "symlink", "%s(\"%s\",\"%s\")", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_sync, "sync", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_sysarch, "sysarch", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_sysarch, "sysarch", NULL, print_sysarch, NULL },
|
||||
{ TARGET_FREEBSD_NR_syscall, "syscall", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_ktimer_create, "timer_create" , NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_ktimer_delete, "timer_delete" , NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_ktimer_settime, "timer_settime" , NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_ktimer_gettime, "timer_gettime" , NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_ktimer_getoverrun, "timer_getoverrun" , NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_thr_create, "thr_create", "%s(%#x, %#x, %d)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_thr_exit, "thr_exit", "%s(%#x)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_thr_kill, "thr_kill", "%s(%d, %#x)", NULL, NULL },
|
||||
@ -225,7 +271,10 @@
|
||||
{ TARGET_FREEBSD_NR_unlink, "unlink", "%s(\"%s\")", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_unmount, "unmount", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_utimes, "utimes", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_utimensat, "utimensat", "%s(%d,%s,%p,%#x)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_vfork, "vfork", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_wait4, "wait4", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_wait6, "wait6", NULL, NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_write, "write", "%s(%d,%#x,%d)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_writev, "writev", "%s(%d,%p,%#x)", NULL, NULL },
|
||||
{ TARGET_FREEBSD_NR_posix_openpt, "posix_openpt", "%s(%d)", NULL, NULL },
|
||||
|
@ -1,11 +1,11 @@
|
||||
/*
|
||||
* System call numbers.
|
||||
*
|
||||
* created from FreeBSD: releng/9.1/sys/kern/syscalls.master 229723
|
||||
* 2012-01-06 19:29:16Z jhb
|
||||
* DO NOT EDIT-- this file is automatically @generated.
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#define TARGET_FREEBSD_NR_syscall 0
|
||||
#define TARGET_FREEBSD_NR_syscall 0
|
||||
#define TARGET_FREEBSD_NR_exit 1
|
||||
#define TARGET_FREEBSD_NR_fork 2
|
||||
#define TARGET_FREEBSD_NR_read 3
|
||||
@ -13,438 +13,503 @@
|
||||
#define TARGET_FREEBSD_NR_open 5
|
||||
#define TARGET_FREEBSD_NR_close 6
|
||||
#define TARGET_FREEBSD_NR_wait4 7
|
||||
/* 8 is old creat */
|
||||
/* 8 is old creat */
|
||||
#define TARGET_FREEBSD_NR_link 9
|
||||
#define TARGET_FREEBSD_NR_unlink 10
|
||||
/* 11 is obsolete execv */
|
||||
#define TARGET_FREEBSD_NR_unlink 10
|
||||
/* 11 is obsolete execv */
|
||||
#define TARGET_FREEBSD_NR_chdir 12
|
||||
#define TARGET_FREEBSD_NR_fchdir 13
|
||||
#define TARGET_FREEBSD_NR_mknod 14
|
||||
#define TARGET_FREEBSD_NR_fchdir 13
|
||||
#define TARGET_FREEBSD_NR_freebsd11_mknod 14
|
||||
#define TARGET_FREEBSD_NR_chmod 15
|
||||
#define TARGET_FREEBSD_NR_chown 16
|
||||
#define TARGET_FREEBSD_NR_break 17
|
||||
#define TARGET_FREEBSD_NR_freebsd4_getfsstat 18
|
||||
/* 19 is old lseek */
|
||||
#define TARGET_FREEBSD_NR_getpid 20
|
||||
/* 18 is freebsd4 getfsstat */
|
||||
/* 19 is old lseek */
|
||||
#define TARGET_FREEBSD_NR_getpid 20
|
||||
#define TARGET_FREEBSD_NR_mount 21
|
||||
#define TARGET_FREEBSD_NR_unmount 22
|
||||
#define TARGET_FREEBSD_NR_setuid 23
|
||||
#define TARGET_FREEBSD_NR_getuid 24
|
||||
#define TARGET_FREEBSD_NR_geteuid 25
|
||||
#define TARGET_FREEBSD_NR_ptrace 26
|
||||
#define TARGET_FREEBSD_NR_recvmsg 27
|
||||
#define TARGET_FREEBSD_NR_sendmsg 28
|
||||
#define TARGET_FREEBSD_NR_recvfrom 29
|
||||
#define TARGET_FREEBSD_NR_accept 30
|
||||
#define TARGET_FREEBSD_NR_unmount 22
|
||||
#define TARGET_FREEBSD_NR_setuid 23
|
||||
#define TARGET_FREEBSD_NR_getuid 24
|
||||
#define TARGET_FREEBSD_NR_geteuid 25
|
||||
#define TARGET_FREEBSD_NR_ptrace 26
|
||||
#define TARGET_FREEBSD_NR_recvmsg 27
|
||||
#define TARGET_FREEBSD_NR_sendmsg 28
|
||||
#define TARGET_FREEBSD_NR_recvfrom 29
|
||||
#define TARGET_FREEBSD_NR_accept 30
|
||||
#define TARGET_FREEBSD_NR_getpeername 31
|
||||
#define TARGET_FREEBSD_NR_getsockname 32
|
||||
#define TARGET_FREEBSD_NR_access 33
|
||||
#define TARGET_FREEBSD_NR_chflags 34
|
||||
#define TARGET_FREEBSD_NR_fchflags 35
|
||||
#define TARGET_FREEBSD_NR_access 33
|
||||
#define TARGET_FREEBSD_NR_chflags 34
|
||||
#define TARGET_FREEBSD_NR_fchflags 35
|
||||
#define TARGET_FREEBSD_NR_sync 36
|
||||
#define TARGET_FREEBSD_NR_kill 37
|
||||
/* 38 is old stat */
|
||||
#define TARGET_FREEBSD_NR_getppid 39
|
||||
/* 40 is old lstat */
|
||||
/* 38 is old stat */
|
||||
#define TARGET_FREEBSD_NR_getppid 39
|
||||
/* 40 is old lstat */
|
||||
#define TARGET_FREEBSD_NR_dup 41
|
||||
#define TARGET_FREEBSD_NR_pipe 42
|
||||
#define TARGET_FREEBSD_NR_getegid 43
|
||||
#define TARGET_FREEBSD_NR_profil 44
|
||||
#define TARGET_FREEBSD_NR_ktrace 45
|
||||
/* 46 is old sigaction */
|
||||
#define TARGET_FREEBSD_NR_getgid 47
|
||||
/* 48 is old sigprocmask */
|
||||
#define TARGET_FREEBSD_NR_getlogin 49
|
||||
#define TARGET_FREEBSD_NR_setlogin 50
|
||||
#define TARGET_FREEBSD_NR_freebsd10_pipe 42
|
||||
#define TARGET_FREEBSD_NR_getegid 43
|
||||
#define TARGET_FREEBSD_NR_profil 44
|
||||
#define TARGET_FREEBSD_NR_ktrace 45
|
||||
/* 46 is old sigaction */
|
||||
#define TARGET_FREEBSD_NR_getgid 47
|
||||
/* 48 is old sigprocmask */
|
||||
#define TARGET_FREEBSD_NR_getlogin 49
|
||||
#define TARGET_FREEBSD_NR_setlogin 50
|
||||
#define TARGET_FREEBSD_NR_acct 51
|
||||
/* 52 is old sigpending */
|
||||
/* 52 is old sigpending */
|
||||
#define TARGET_FREEBSD_NR_sigaltstack 53
|
||||
#define TARGET_FREEBSD_NR_ioctl 54
|
||||
#define TARGET_FREEBSD_NR_reboot 55
|
||||
#define TARGET_FREEBSD_NR_revoke 56
|
||||
#define TARGET_FREEBSD_NR_symlink 57
|
||||
#define TARGET_FREEBSD_NR_readlink 58
|
||||
#define TARGET_FREEBSD_NR_execve 59
|
||||
#define TARGET_FREEBSD_NR_reboot 55
|
||||
#define TARGET_FREEBSD_NR_revoke 56
|
||||
#define TARGET_FREEBSD_NR_symlink 57
|
||||
#define TARGET_FREEBSD_NR_readlink 58
|
||||
#define TARGET_FREEBSD_NR_execve 59
|
||||
#define TARGET_FREEBSD_NR_umask 60
|
||||
#define TARGET_FREEBSD_NR_chroot 61
|
||||
/* 62 is old fstat */
|
||||
/* 63 is old getkerninfo */
|
||||
/* 64 is old getpagesize */
|
||||
#define TARGET_FREEBSD_NR_chroot 61
|
||||
/* 62 is old fstat */
|
||||
/* 63 is old getkerninfo */
|
||||
/* 64 is old getpagesize */
|
||||
#define TARGET_FREEBSD_NR_msync 65
|
||||
#define TARGET_FREEBSD_NR_vfork 66
|
||||
/* 67 is obsolete vread */
|
||||
/* 68 is obsolete vwrite */
|
||||
/* 67 is obsolete vread */
|
||||
/* 68 is obsolete vwrite */
|
||||
#define TARGET_FREEBSD_NR_sbrk 69
|
||||
#define TARGET_FREEBSD_NR_sstk 70
|
||||
/* 71 is old mmap */
|
||||
#define TARGET_FREEBSD_NR_vadvise 72
|
||||
#define TARGET_FREEBSD_NR_munmap 73
|
||||
#define TARGET_FREEBSD_NR_mprotect 74
|
||||
#define TARGET_FREEBSD_NR_madvise 75
|
||||
/* 76 is obsolete vhangup */
|
||||
/* 77 is obsolete vlimit */
|
||||
#define TARGET_FREEBSD_NR_mincore 78
|
||||
#define TARGET_FREEBSD_NR_getgroups 79
|
||||
#define TARGET_FREEBSD_NR_setgroups 80
|
||||
#define TARGET_FREEBSD_NR_getpgrp 81
|
||||
#define TARGET_FREEBSD_NR_setpgid 82
|
||||
#define TARGET_FREEBSD_NR_setitimer 83
|
||||
/* 84 is old wait */
|
||||
#define TARGET_FREEBSD_NR_swapon 85
|
||||
#define TARGET_FREEBSD_NR_getitimer 86
|
||||
/* 87 is old gethostname */
|
||||
/* 88 is old sethostname */
|
||||
/* 71 is old mmap */
|
||||
#define TARGET_FREEBSD_NR_freebsd11_vadvise 72
|
||||
#define TARGET_FREEBSD_NR_munmap 73
|
||||
#define TARGET_FREEBSD_NR_mprotect 74
|
||||
#define TARGET_FREEBSD_NR_madvise 75
|
||||
/* 76 is obsolete vhangup */
|
||||
/* 77 is obsolete vlimit */
|
||||
#define TARGET_FREEBSD_NR_mincore 78
|
||||
#define TARGET_FREEBSD_NR_getgroups 79
|
||||
#define TARGET_FREEBSD_NR_setgroups 80
|
||||
#define TARGET_FREEBSD_NR_getpgrp 81
|
||||
#define TARGET_FREEBSD_NR_setpgid 82
|
||||
#define TARGET_FREEBSD_NR_setitimer 83
|
||||
/* 84 is old wait */
|
||||
#define TARGET_FREEBSD_NR_swapon 85
|
||||
#define TARGET_FREEBSD_NR_getitimer 86
|
||||
/* 87 is old gethostname */
|
||||
/* 88 is old sethostname */
|
||||
#define TARGET_FREEBSD_NR_getdtablesize 89
|
||||
#define TARGET_FREEBSD_NR_dup2 90
|
||||
#define TARGET_FREEBSD_NR_fcntl 92
|
||||
#define TARGET_FREEBSD_NR_select 93
|
||||
#define TARGET_FREEBSD_NR_select 93
|
||||
#define TARGET_FREEBSD_NR_fsync 95
|
||||
#define TARGET_FREEBSD_NR_setpriority 96
|
||||
#define TARGET_FREEBSD_NR_socket 97
|
||||
#define TARGET_FREEBSD_NR_connect 98
|
||||
/* 99 is old accept */
|
||||
#define TARGET_FREEBSD_NR_socket 97
|
||||
#define TARGET_FREEBSD_NR_connect 98
|
||||
/* 99 is old accept */
|
||||
#define TARGET_FREEBSD_NR_getpriority 100
|
||||
/* 101 is old send */
|
||||
/* 102 is old recv */
|
||||
/* 103 is old sigreturn */
|
||||
/* 101 is old send */
|
||||
/* 102 is old recv */
|
||||
/* 103 is old sigreturn */
|
||||
#define TARGET_FREEBSD_NR_bind 104
|
||||
#define TARGET_FREEBSD_NR_setsockopt 105
|
||||
#define TARGET_FREEBSD_NR_listen 106
|
||||
/* 107 is obsolete vtimes */
|
||||
/* 108 is old sigvec */
|
||||
/* 109 is old sigblock */
|
||||
/* 110 is old sigsetmask */
|
||||
/* 111 is old sigsuspend */
|
||||
/* 112 is old sigstack */
|
||||
/* 113 is old recvmsg */
|
||||
/* 114 is old sendmsg */
|
||||
/* 115 is obsolete vtrace */
|
||||
#define TARGET_FREEBSD_NR_listen 106
|
||||
/* 107 is obsolete vtimes */
|
||||
/* 108 is old sigvec */
|
||||
/* 109 is old sigblock */
|
||||
/* 110 is old sigsetmask */
|
||||
/* 111 is old sigsuspend */
|
||||
/* 112 is old sigstack */
|
||||
/* 113 is old recvmsg */
|
||||
/* 114 is old sendmsg */
|
||||
/* 115 is obsolete vtrace */
|
||||
#define TARGET_FREEBSD_NR_gettimeofday 116
|
||||
#define TARGET_FREEBSD_NR_getrusage 117
|
||||
#define TARGET_FREEBSD_NR_getrusage 117
|
||||
#define TARGET_FREEBSD_NR_getsockopt 118
|
||||
#define TARGET_FREEBSD_NR_readv 120
|
||||
#define TARGET_FREEBSD_NR_writev 121
|
||||
#define TARGET_FREEBSD_NR_writev 121
|
||||
#define TARGET_FREEBSD_NR_settimeofday 122
|
||||
#define TARGET_FREEBSD_NR_fchown 123
|
||||
#define TARGET_FREEBSD_NR_fchmod 124
|
||||
/* 125 is old recvfrom */
|
||||
#define TARGET_FREEBSD_NR_setreuid 126
|
||||
#define TARGET_FREEBSD_NR_setregid 127
|
||||
#define TARGET_FREEBSD_NR_rename 128
|
||||
/* 129 is old truncate */
|
||||
/* 130 is old ftruncate */
|
||||
#define TARGET_FREEBSD_NR_fchown 123
|
||||
#define TARGET_FREEBSD_NR_fchmod 124
|
||||
/* 125 is old recvfrom */
|
||||
#define TARGET_FREEBSD_NR_setreuid 126
|
||||
#define TARGET_FREEBSD_NR_setregid 127
|
||||
#define TARGET_FREEBSD_NR_rename 128
|
||||
/* 129 is old truncate */
|
||||
/* 130 is old ftruncate */
|
||||
#define TARGET_FREEBSD_NR_flock 131
|
||||
#define TARGET_FREEBSD_NR_mkfifo 132
|
||||
#define TARGET_FREEBSD_NR_sendto 133
|
||||
#define TARGET_FREEBSD_NR_shutdown 134
|
||||
#define TARGET_FREEBSD_NR_mkfifo 132
|
||||
#define TARGET_FREEBSD_NR_sendto 133
|
||||
#define TARGET_FREEBSD_NR_shutdown 134
|
||||
#define TARGET_FREEBSD_NR_socketpair 135
|
||||
#define TARGET_FREEBSD_NR_mkdir 136
|
||||
#define TARGET_FREEBSD_NR_rmdir 137
|
||||
#define TARGET_FREEBSD_NR_utimes 138
|
||||
/* 139 is obsolete 4.2 sigreturn */
|
||||
#define TARGET_FREEBSD_NR_adjtime 140
|
||||
/* 141 is old getpeername */
|
||||
/* 142 is old gethostid */
|
||||
/* 143 is old sethostid */
|
||||
/* 144 is old getrlimit */
|
||||
/* 145 is old setrlimit */
|
||||
/* 146 is old killpg */
|
||||
#define TARGET_FREEBSD_NR_killpg 146 /* COMPAT */
|
||||
#define TARGET_FREEBSD_NR_setsid 147
|
||||
#define TARGET_FREEBSD_NR_quotactl 148
|
||||
/* 149 is old quota */
|
||||
/* 150 is old getsockname */
|
||||
#define TARGET_FREEBSD_NR_utimes 138
|
||||
/* 139 is obsolete 4.2 sigreturn */
|
||||
#define TARGET_FREEBSD_NR_adjtime 140
|
||||
/* 141 is old getpeername */
|
||||
/* 142 is old gethostid */
|
||||
/* 143 is old sethostid */
|
||||
/* 144 is old getrlimit */
|
||||
/* 145 is old setrlimit */
|
||||
/* 146 is old killpg */
|
||||
#define TARGET_FREEBSD_NR_setsid 147
|
||||
#define TARGET_FREEBSD_NR_quotactl 148
|
||||
/* 149 is old quota */
|
||||
/* 150 is old getsockname */
|
||||
#define TARGET_FREEBSD_NR_nlm_syscall 154
|
||||
#define TARGET_FREEBSD_NR_nfssvc 155
|
||||
/* 156 is old getdirentries */
|
||||
#define TARGET_FREEBSD_NR_freebsd4_statfs 157
|
||||
#define TARGET_FREEBSD_NR_freebsd4_fstatfs 158
|
||||
#define TARGET_FREEBSD_NR_lgetfh 160
|
||||
#define TARGET_FREEBSD_NR_nfssvc 155
|
||||
/* 156 is old getdirentries */
|
||||
/* 157 is freebsd4 statfs */
|
||||
/* 158 is freebsd4 fstatfs */
|
||||
#define TARGET_FREEBSD_NR_lgetfh 160
|
||||
#define TARGET_FREEBSD_NR_getfh 161
|
||||
#define TARGET_FREEBSD_NR_freebsd4_getdomainname 162
|
||||
#define TARGET_FREEBSD_NR_freebsd4_setdomainname 163
|
||||
#define TARGET_FREEBSD_NR_freebsd4_uname 164
|
||||
#define TARGET_FREEBSD_NR_sysarch 165
|
||||
#define TARGET_FREEBSD_NR_rtprio 166
|
||||
#define TARGET_FREEBSD_NR_semsys 169
|
||||
#define TARGET_FREEBSD_NR_msgsys 170
|
||||
#define TARGET_FREEBSD_NR_shmsys 171
|
||||
#define TARGET_FREEBSD_NR_freebsd6_pread 173
|
||||
#define TARGET_FREEBSD_NR_freebsd6_pwrite 174
|
||||
#define TARGET_FREEBSD_NR_setfib 175
|
||||
/* 162 is freebsd4 getdomainname */
|
||||
/* 163 is freebsd4 setdomainname */
|
||||
/* 164 is freebsd4 uname */
|
||||
#define TARGET_FREEBSD_NR_sysarch 165
|
||||
#define TARGET_FREEBSD_NR_rtprio 166
|
||||
#define TARGET_FREEBSD_NR_semsys 169
|
||||
#define TARGET_FREEBSD_NR_msgsys 170
|
||||
#define TARGET_FREEBSD_NR_shmsys 171
|
||||
/* 173 is freebsd6 pread */
|
||||
/* 174 is freebsd6 pwrite */
|
||||
#define TARGET_FREEBSD_NR_setfib 175
|
||||
#define TARGET_FREEBSD_NR_ntp_adjtime 176
|
||||
#define TARGET_FREEBSD_NR_setgid 181
|
||||
#define TARGET_FREEBSD_NR_setegid 182
|
||||
#define TARGET_FREEBSD_NR_seteuid 183
|
||||
#define TARGET_FREEBSD_NR_stat 188
|
||||
#define TARGET_FREEBSD_NR_fstat 189
|
||||
#define TARGET_FREEBSD_NR_lstat 190
|
||||
#define TARGET_FREEBSD_NR_pathconf 191
|
||||
#define TARGET_FREEBSD_NR_fpathconf 192
|
||||
#define TARGET_FREEBSD_NR_getrlimit 194
|
||||
#define TARGET_FREEBSD_NR_setrlimit 195
|
||||
#define TARGET_FREEBSD_NR_getdirentries 196
|
||||
#define TARGET_FREEBSD_NR_freebsd6_mmap 197
|
||||
#define TARGET_FREEBSD_NR___syscall 198
|
||||
#define TARGET_FREEBSD_NR_freebsd6_lseek 199
|
||||
#define TARGET_FREEBSD_NR_freebsd6_truncate 200
|
||||
#define TARGET_FREEBSD_NR_freebsd6_ftruncate 201
|
||||
#define TARGET_FREEBSD_NR___sysctl 202
|
||||
#define TARGET_FREEBSD_NR_setgid 181
|
||||
#define TARGET_FREEBSD_NR_setegid 182
|
||||
#define TARGET_FREEBSD_NR_seteuid 183
|
||||
/* 184 is obsolete lfs_bmapv */
|
||||
/* 185 is obsolete lfs_markv */
|
||||
/* 186 is obsolete lfs_segclean */
|
||||
/* 187 is obsolete lfs_segwait */
|
||||
#define TARGET_FREEBSD_NR_freebsd11_stat 188
|
||||
#define TARGET_FREEBSD_NR_freebsd11_fstat 189
|
||||
#define TARGET_FREEBSD_NR_freebsd11_lstat 190
|
||||
#define TARGET_FREEBSD_NR_pathconf 191
|
||||
#define TARGET_FREEBSD_NR_fpathconf 192
|
||||
#define TARGET_FREEBSD_NR_getrlimit 194
|
||||
#define TARGET_FREEBSD_NR_setrlimit 195
|
||||
#define TARGET_FREEBSD_NR_freebsd11_getdirentries 196
|
||||
/* 197 is freebsd6 mmap */
|
||||
#define TARGET_FREEBSD_NR___syscall 198
|
||||
/* 199 is freebsd6 lseek */
|
||||
/* 200 is freebsd6 truncate */
|
||||
/* 201 is freebsd6 ftruncate */
|
||||
#define TARGET_FREEBSD_NR___sysctl 202
|
||||
#define TARGET_FREEBSD_NR_mlock 203
|
||||
#define TARGET_FREEBSD_NR_munlock 204
|
||||
#define TARGET_FREEBSD_NR_undelete 205
|
||||
#define TARGET_FREEBSD_NR_futimes 206
|
||||
#define TARGET_FREEBSD_NR_getpgid 207
|
||||
#define TARGET_FREEBSD_NR_munlock 204
|
||||
#define TARGET_FREEBSD_NR_undelete 205
|
||||
#define TARGET_FREEBSD_NR_futimes 206
|
||||
#define TARGET_FREEBSD_NR_getpgid 207
|
||||
#define TARGET_FREEBSD_NR_poll 209
|
||||
#define TARGET_FREEBSD_NR_freebsd7___semctl 220
|
||||
#define TARGET_FREEBSD_NR_semget 221
|
||||
#define TARGET_FREEBSD_NR_freebsd7___semctl 220
|
||||
#define TARGET_FREEBSD_NR_semget 221
|
||||
#define TARGET_FREEBSD_NR_semop 222
|
||||
#define TARGET_FREEBSD_NR_freebsd7_msgctl 224
|
||||
#define TARGET_FREEBSD_NR_msgget 225
|
||||
#define TARGET_FREEBSD_NR_msgsnd 226
|
||||
#define TARGET_FREEBSD_NR_msgrcv 227
|
||||
/* 223 is obsolete semconfig */
|
||||
#define TARGET_FREEBSD_NR_freebsd7_msgctl 224
|
||||
#define TARGET_FREEBSD_NR_msgget 225
|
||||
#define TARGET_FREEBSD_NR_msgsnd 226
|
||||
#define TARGET_FREEBSD_NR_msgrcv 227
|
||||
#define TARGET_FREEBSD_NR_shmat 228
|
||||
#define TARGET_FREEBSD_NR_freebsd7_shmctl 229
|
||||
#define TARGET_FREEBSD_NR_freebsd7_shmctl 229
|
||||
#define TARGET_FREEBSD_NR_shmdt 230
|
||||
#define TARGET_FREEBSD_NR_shmget 231
|
||||
#define TARGET_FREEBSD_NR_shmget 231
|
||||
#define TARGET_FREEBSD_NR_clock_gettime 232
|
||||
#define TARGET_FREEBSD_NR_clock_settime 233
|
||||
#define TARGET_FREEBSD_NR_clock_getres 234
|
||||
#define TARGET_FREEBSD_NR_ktimer_create 235
|
||||
#define TARGET_FREEBSD_NR_ktimer_delete 236
|
||||
#define TARGET_FREEBSD_NR_ktimer_settime 237
|
||||
#define TARGET_FREEBSD_NR_ktimer_gettime 238
|
||||
#define TARGET_FREEBSD_NR_ktimer_getoverrun 239
|
||||
#define TARGET_FREEBSD_NR_nanosleep 240
|
||||
#define TARGET_FREEBSD_NR_ktimer_settime 237
|
||||
#define TARGET_FREEBSD_NR_ktimer_gettime 238
|
||||
#define TARGET_FREEBSD_NR_ktimer_getoverrun 239
|
||||
#define TARGET_FREEBSD_NR_nanosleep 240
|
||||
#define TARGET_FREEBSD_NR_ffclock_getcounter 241
|
||||
#define TARGET_FREEBSD_NR_ffclock_setestimate 242
|
||||
#define TARGET_FREEBSD_NR_ffclock_getestimate 243
|
||||
#define TARGET_FREEBSD_NR_clock_nanosleep 244
|
||||
#define TARGET_FREEBSD_NR_clock_getcpuclockid2 247
|
||||
#define TARGET_FREEBSD_NR_ntp_gettime 248
|
||||
#define TARGET_FREEBSD_NR_minherit 250
|
||||
#define TARGET_FREEBSD_NR_minherit 250
|
||||
#define TARGET_FREEBSD_NR_rfork 251
|
||||
#define TARGET_FREEBSD_NR_openbsd_poll 252
|
||||
#define TARGET_FREEBSD_NR_issetugid 253
|
||||
#define TARGET_FREEBSD_NR_lchown 254
|
||||
#define TARGET_FREEBSD_NR_aio_read 255
|
||||
#define TARGET_FREEBSD_NR_aio_write 256
|
||||
/* 252 is obsolete openbsd_poll */
|
||||
#define TARGET_FREEBSD_NR_issetugid 253
|
||||
#define TARGET_FREEBSD_NR_lchown 254
|
||||
#define TARGET_FREEBSD_NR_aio_read 255
|
||||
#define TARGET_FREEBSD_NR_aio_write 256
|
||||
#define TARGET_FREEBSD_NR_lio_listio 257
|
||||
#define TARGET_FREEBSD_NR_getdents 272
|
||||
#define TARGET_FREEBSD_NR_lchmod 274
|
||||
#define TARGET_FREEBSD_NR_netbsd_lchown 275
|
||||
#define TARGET_FREEBSD_NR_lutimes 276
|
||||
#define TARGET_FREEBSD_NR_netbsd_msync 277
|
||||
#define TARGET_FREEBSD_NR_nstat 278
|
||||
#define TARGET_FREEBSD_NR_nfstat 279
|
||||
#define TARGET_FREEBSD_NR_nlstat 280
|
||||
#define TARGET_FREEBSD_NR_preadv 289
|
||||
#define TARGET_FREEBSD_NR_pwritev 290
|
||||
#define TARGET_FREEBSD_NR_freebsd4_fhstatfs 297
|
||||
#define TARGET_FREEBSD_NR_fhopen 298
|
||||
#define TARGET_FREEBSD_NR_fhstat 299
|
||||
#define TARGET_FREEBSD_NR_modnext 300
|
||||
#define TARGET_FREEBSD_NR_modstat 301
|
||||
#define TARGET_FREEBSD_NR_modfnext 302
|
||||
#define TARGET_FREEBSD_NR_modfind 303
|
||||
#define TARGET_FREEBSD_NR_kldload 304
|
||||
#define TARGET_FREEBSD_NR_kldunload 305
|
||||
#define TARGET_FREEBSD_NR_kldfind 306
|
||||
#define TARGET_FREEBSD_NR_kldnext 307
|
||||
#define TARGET_FREEBSD_NR_kldstat 308
|
||||
#define TARGET_FREEBSD_NR_freebsd11_getdents 272
|
||||
#define TARGET_FREEBSD_NR_lchmod 274
|
||||
/* 275 is obsolete netbsd_lchown */
|
||||
#define TARGET_FREEBSD_NR_lutimes 276
|
||||
/* 277 is obsolete netbsd_msync */
|
||||
#define TARGET_FREEBSD_NR_freebsd11_nstat 278
|
||||
#define TARGET_FREEBSD_NR_freebsd11_nfstat 279
|
||||
#define TARGET_FREEBSD_NR_freebsd11_nlstat 280
|
||||
#define TARGET_FREEBSD_NR_preadv 289
|
||||
#define TARGET_FREEBSD_NR_pwritev 290
|
||||
/* 297 is freebsd4 fhstatfs */
|
||||
#define TARGET_FREEBSD_NR_fhopen 298
|
||||
#define TARGET_FREEBSD_NR_freebsd11_fhstat 299
|
||||
#define TARGET_FREEBSD_NR_modnext 300
|
||||
#define TARGET_FREEBSD_NR_modstat 301
|
||||
#define TARGET_FREEBSD_NR_modfnext 302
|
||||
#define TARGET_FREEBSD_NR_modfind 303
|
||||
#define TARGET_FREEBSD_NR_kldload 304
|
||||
#define TARGET_FREEBSD_NR_kldunload 305
|
||||
#define TARGET_FREEBSD_NR_kldfind 306
|
||||
#define TARGET_FREEBSD_NR_kldnext 307
|
||||
#define TARGET_FREEBSD_NR_kldstat 308
|
||||
#define TARGET_FREEBSD_NR_kldfirstmod 309
|
||||
#define TARGET_FREEBSD_NR_getsid 310
|
||||
#define TARGET_FREEBSD_NR_setresuid 311
|
||||
#define TARGET_FREEBSD_NR_setresgid 312
|
||||
/* 313 is obsolete signanosleep */
|
||||
#define TARGET_FREEBSD_NR_getsid 310
|
||||
#define TARGET_FREEBSD_NR_setresuid 311
|
||||
#define TARGET_FREEBSD_NR_setresgid 312
|
||||
/* 313 is obsolete signanosleep */
|
||||
#define TARGET_FREEBSD_NR_aio_return 314
|
||||
#define TARGET_FREEBSD_NR_aio_suspend 315
|
||||
#define TARGET_FREEBSD_NR_aio_cancel 316
|
||||
#define TARGET_FREEBSD_NR_aio_error 317
|
||||
#define TARGET_FREEBSD_NR_oaio_read 318
|
||||
#define TARGET_FREEBSD_NR_oaio_write 319
|
||||
#define TARGET_FREEBSD_NR_olio_listio 320
|
||||
#define TARGET_FREEBSD_NR_aio_error 317
|
||||
/* 318 is freebsd6 aio_read */
|
||||
/* 319 is freebsd6 aio_write */
|
||||
/* 320 is freebsd6 lio_listio */
|
||||
#define TARGET_FREEBSD_NR_yield 321
|
||||
/* 322 is obsolete thr_sleep */
|
||||
/* 323 is obsolete thr_wakeup */
|
||||
#define TARGET_FREEBSD_NR_mlockall 324
|
||||
/* 322 is obsolete thr_sleep */
|
||||
/* 323 is obsolete thr_wakeup */
|
||||
#define TARGET_FREEBSD_NR_mlockall 324
|
||||
#define TARGET_FREEBSD_NR_munlockall 325
|
||||
#define TARGET_FREEBSD_NR___getcwd 326
|
||||
#define TARGET_FREEBSD_NR_sched_setparam 327
|
||||
#define TARGET_FREEBSD_NR_sched_getparam 328
|
||||
#define TARGET_FREEBSD_NR___getcwd 326
|
||||
#define TARGET_FREEBSD_NR_sched_setparam 327
|
||||
#define TARGET_FREEBSD_NR_sched_getparam 328
|
||||
#define TARGET_FREEBSD_NR_sched_setscheduler 329
|
||||
#define TARGET_FREEBSD_NR_sched_getscheduler 330
|
||||
#define TARGET_FREEBSD_NR_sched_yield 331
|
||||
#define TARGET_FREEBSD_NR_sched_get_priority_max 332
|
||||
#define TARGET_FREEBSD_NR_sched_get_priority_min 333
|
||||
#define TARGET_FREEBSD_NR_sched_get_priority_max 332
|
||||
#define TARGET_FREEBSD_NR_sched_get_priority_min 333
|
||||
#define TARGET_FREEBSD_NR_sched_rr_get_interval 334
|
||||
#define TARGET_FREEBSD_NR_utrace 335
|
||||
#define TARGET_FREEBSD_NR_freebsd4_sendfile 336
|
||||
#define TARGET_FREEBSD_NR_kldsym 337
|
||||
#define TARGET_FREEBSD_NR_utrace 335
|
||||
/* 336 is freebsd4 sendfile */
|
||||
#define TARGET_FREEBSD_NR_kldsym 337
|
||||
#define TARGET_FREEBSD_NR_jail 338
|
||||
#define TARGET_FREEBSD_NR_nnpfs_syscall 339
|
||||
#define TARGET_FREEBSD_NR_sigprocmask 340
|
||||
#define TARGET_FREEBSD_NR_sigsuspend 341
|
||||
#define TARGET_FREEBSD_NR_freebsd4_sigaction 342
|
||||
/* 342 is freebsd4 sigaction */
|
||||
#define TARGET_FREEBSD_NR_sigpending 343
|
||||
#define TARGET_FREEBSD_NR_freebsd4_sigreturn 344
|
||||
/* 344 is freebsd4 sigreturn */
|
||||
#define TARGET_FREEBSD_NR_sigtimedwait 345
|
||||
#define TARGET_FREEBSD_NR_sigwaitinfo 346
|
||||
#define TARGET_FREEBSD_NR___acl_get_file 347
|
||||
#define TARGET_FREEBSD_NR___acl_set_file 348
|
||||
#define TARGET_FREEBSD_NR___acl_get_file 347
|
||||
#define TARGET_FREEBSD_NR___acl_set_file 348
|
||||
#define TARGET_FREEBSD_NR___acl_get_fd 349
|
||||
#define TARGET_FREEBSD_NR___acl_set_fd 350
|
||||
#define TARGET_FREEBSD_NR___acl_delete_file 351
|
||||
#define TARGET_FREEBSD_NR___acl_delete_fd 352
|
||||
#define TARGET_FREEBSD_NR___acl_delete_file 351
|
||||
#define TARGET_FREEBSD_NR___acl_delete_fd 352
|
||||
#define TARGET_FREEBSD_NR___acl_aclcheck_file 353
|
||||
#define TARGET_FREEBSD_NR___acl_aclcheck_fd 354
|
||||
#define TARGET_FREEBSD_NR___acl_aclcheck_fd 354
|
||||
#define TARGET_FREEBSD_NR_extattrctl 355
|
||||
#define TARGET_FREEBSD_NR_extattr_set_file 356
|
||||
#define TARGET_FREEBSD_NR_extattr_get_file 357
|
||||
#define TARGET_FREEBSD_NR_extattr_set_file 356
|
||||
#define TARGET_FREEBSD_NR_extattr_get_file 357
|
||||
#define TARGET_FREEBSD_NR_extattr_delete_file 358
|
||||
#define TARGET_FREEBSD_NR_aio_waitcomplete 359
|
||||
#define TARGET_FREEBSD_NR_getresuid 360
|
||||
#define TARGET_FREEBSD_NR_getresgid 361
|
||||
#define TARGET_FREEBSD_NR_kqueue 362
|
||||
#define TARGET_FREEBSD_NR_kevent 363
|
||||
#define TARGET_FREEBSD_NR_extattr_set_fd 371
|
||||
#define TARGET_FREEBSD_NR_extattr_get_fd 372
|
||||
#define TARGET_FREEBSD_NR_extattr_delete_fd 373
|
||||
#define TARGET_FREEBSD_NR___setugid 374
|
||||
#define TARGET_FREEBSD_NR_eaccess 376
|
||||
#define TARGET_FREEBSD_NR_aio_waitcomplete 359
|
||||
#define TARGET_FREEBSD_NR_getresuid 360
|
||||
#define TARGET_FREEBSD_NR_getresgid 361
|
||||
#define TARGET_FREEBSD_NR_kqueue 362
|
||||
#define TARGET_FREEBSD_NR_freebsd11_kevent 363
|
||||
/* 364 is obsolete __cap_get_proc */
|
||||
/* 365 is obsolete __cap_set_proc */
|
||||
/* 366 is obsolete __cap_get_fd */
|
||||
/* 367 is obsolete __cap_get_file */
|
||||
/* 368 is obsolete __cap_set_fd */
|
||||
/* 369 is obsolete __cap_set_file */
|
||||
#define TARGET_FREEBSD_NR_extattr_set_fd 371
|
||||
#define TARGET_FREEBSD_NR_extattr_get_fd 372
|
||||
#define TARGET_FREEBSD_NR_extattr_delete_fd 373
|
||||
#define TARGET_FREEBSD_NR___setugid 374
|
||||
/* 375 is obsolete nfsclnt */
|
||||
#define TARGET_FREEBSD_NR_eaccess 376
|
||||
#define TARGET_FREEBSD_NR_afs3_syscall 377
|
||||
#define TARGET_FREEBSD_NR_nmount 378
|
||||
#define TARGET_FREEBSD_NR___mac_get_proc 384
|
||||
#define TARGET_FREEBSD_NR___mac_set_proc 385
|
||||
#define TARGET_FREEBSD_NR_nmount 378
|
||||
/* 379 is obsolete kse_exit */
|
||||
/* 380 is obsolete kse_wakeup */
|
||||
/* 381 is obsolete kse_create */
|
||||
/* 382 is obsolete kse_thr_interrupt */
|
||||
/* 383 is obsolete kse_release */
|
||||
#define TARGET_FREEBSD_NR___mac_get_proc 384
|
||||
#define TARGET_FREEBSD_NR___mac_set_proc 385
|
||||
#define TARGET_FREEBSD_NR___mac_get_fd 386
|
||||
#define TARGET_FREEBSD_NR___mac_get_file 387
|
||||
#define TARGET_FREEBSD_NR___mac_get_file 387
|
||||
#define TARGET_FREEBSD_NR___mac_set_fd 388
|
||||
#define TARGET_FREEBSD_NR___mac_set_file 389
|
||||
#define TARGET_FREEBSD_NR___mac_set_file 389
|
||||
#define TARGET_FREEBSD_NR_kenv 390
|
||||
#define TARGET_FREEBSD_NR_lchflags 391
|
||||
#define TARGET_FREEBSD_NR_uuidgen 392
|
||||
#define TARGET_FREEBSD_NR_sendfile 393
|
||||
#define TARGET_FREEBSD_NR_lchflags 391
|
||||
#define TARGET_FREEBSD_NR_uuidgen 392
|
||||
#define TARGET_FREEBSD_NR_sendfile 393
|
||||
#define TARGET_FREEBSD_NR_mac_syscall 394
|
||||
#define TARGET_FREEBSD_NR_getfsstat 395
|
||||
#define TARGET_FREEBSD_NR_statfs 396
|
||||
#define TARGET_FREEBSD_NR_fstatfs 397
|
||||
#define TARGET_FREEBSD_NR_fhstatfs 398
|
||||
#define TARGET_FREEBSD_NR_freebsd11_getfsstat 395
|
||||
#define TARGET_FREEBSD_NR_freebsd11_statfs 396
|
||||
#define TARGET_FREEBSD_NR_freebsd11_fstatfs 397
|
||||
#define TARGET_FREEBSD_NR_freebsd11_fhstatfs 398
|
||||
#define TARGET_FREEBSD_NR_ksem_close 400
|
||||
#define TARGET_FREEBSD_NR_ksem_post 401
|
||||
#define TARGET_FREEBSD_NR_ksem_wait 402
|
||||
#define TARGET_FREEBSD_NR_ksem_post 401
|
||||
#define TARGET_FREEBSD_NR_ksem_wait 402
|
||||
#define TARGET_FREEBSD_NR_ksem_trywait 403
|
||||
#define TARGET_FREEBSD_NR_ksem_init 404
|
||||
#define TARGET_FREEBSD_NR_ksem_open 405
|
||||
#define TARGET_FREEBSD_NR_ksem_init 404
|
||||
#define TARGET_FREEBSD_NR_ksem_open 405
|
||||
#define TARGET_FREEBSD_NR_ksem_unlink 406
|
||||
#define TARGET_FREEBSD_NR_ksem_getvalue 407
|
||||
#define TARGET_FREEBSD_NR_ksem_destroy 408
|
||||
#define TARGET_FREEBSD_NR___mac_get_pid 409
|
||||
#define TARGET_FREEBSD_NR___mac_get_link 410
|
||||
#define TARGET_FREEBSD_NR___mac_set_link 411
|
||||
#define TARGET_FREEBSD_NR_extattr_set_link 412
|
||||
#define TARGET_FREEBSD_NR_extattr_get_link 413
|
||||
#define TARGET_FREEBSD_NR___mac_get_link 410
|
||||
#define TARGET_FREEBSD_NR___mac_set_link 411
|
||||
#define TARGET_FREEBSD_NR_extattr_set_link 412
|
||||
#define TARGET_FREEBSD_NR_extattr_get_link 413
|
||||
#define TARGET_FREEBSD_NR_extattr_delete_link 414
|
||||
#define TARGET_FREEBSD_NR___mac_execve 415
|
||||
#define TARGET_FREEBSD_NR_sigaction 416
|
||||
#define TARGET_FREEBSD_NR_sigreturn 417
|
||||
#define TARGET_FREEBSD_NR_sigaction 416
|
||||
#define TARGET_FREEBSD_NR_sigreturn 417
|
||||
#define TARGET_FREEBSD_NR_getcontext 421
|
||||
#define TARGET_FREEBSD_NR_setcontext 422
|
||||
#define TARGET_FREEBSD_NR_swapcontext 423
|
||||
#define TARGET_FREEBSD_NR_swapoff 424
|
||||
#define TARGET_FREEBSD_NR___acl_get_link 425
|
||||
#define TARGET_FREEBSD_NR___acl_set_link 426
|
||||
#define TARGET_FREEBSD_NR___acl_delete_link 427
|
||||
#define TARGET_FREEBSD_NR_swapoff 424
|
||||
#define TARGET_FREEBSD_NR___acl_get_link 425
|
||||
#define TARGET_FREEBSD_NR___acl_set_link 426
|
||||
#define TARGET_FREEBSD_NR___acl_delete_link 427
|
||||
#define TARGET_FREEBSD_NR___acl_aclcheck_link 428
|
||||
#define TARGET_FREEBSD_NR_sigwait 429
|
||||
#define TARGET_FREEBSD_NR_sigwait 429
|
||||
#define TARGET_FREEBSD_NR_thr_create 430
|
||||
#define TARGET_FREEBSD_NR_thr_exit 431
|
||||
#define TARGET_FREEBSD_NR_thr_self 432
|
||||
#define TARGET_FREEBSD_NR_thr_kill 433
|
||||
#define TARGET_FREEBSD_NR__umtx_lock 434
|
||||
#define TARGET_FREEBSD_NR__umtx_unlock 435
|
||||
#define TARGET_FREEBSD_NR_thr_exit 431
|
||||
#define TARGET_FREEBSD_NR_thr_self 432
|
||||
#define TARGET_FREEBSD_NR_thr_kill 433
|
||||
#define TARGET_FREEBSD_NR_jail_attach 436
|
||||
#define TARGET_FREEBSD_NR_extattr_list_fd 437
|
||||
#define TARGET_FREEBSD_NR_extattr_list_file 438
|
||||
#define TARGET_FREEBSD_NR_extattr_list_link 439
|
||||
#define TARGET_FREEBSD_NR_ksem_timedwait 441
|
||||
#define TARGET_FREEBSD_NR_extattr_list_fd 437
|
||||
#define TARGET_FREEBSD_NR_extattr_list_file 438
|
||||
#define TARGET_FREEBSD_NR_extattr_list_link 439
|
||||
/* 440 is obsolete kse_switchin */
|
||||
#define TARGET_FREEBSD_NR_ksem_timedwait 441
|
||||
#define TARGET_FREEBSD_NR_thr_suspend 442
|
||||
#define TARGET_FREEBSD_NR_thr_wake 443
|
||||
#define TARGET_FREEBSD_NR_thr_wake 443
|
||||
#define TARGET_FREEBSD_NR_kldunloadf 444
|
||||
#define TARGET_FREEBSD_NR_audit 445
|
||||
#define TARGET_FREEBSD_NR_auditon 446
|
||||
#define TARGET_FREEBSD_NR_getauid 447
|
||||
#define TARGET_FREEBSD_NR_setauid 448
|
||||
#define TARGET_FREEBSD_NR_getaudit 449
|
||||
#define TARGET_FREEBSD_NR_setaudit 450
|
||||
#define TARGET_FREEBSD_NR_auditon 446
|
||||
#define TARGET_FREEBSD_NR_getauid 447
|
||||
#define TARGET_FREEBSD_NR_setauid 448
|
||||
#define TARGET_FREEBSD_NR_getaudit 449
|
||||
#define TARGET_FREEBSD_NR_setaudit 450
|
||||
#define TARGET_FREEBSD_NR_getaudit_addr 451
|
||||
#define TARGET_FREEBSD_NR_setaudit_addr 452
|
||||
#define TARGET_FREEBSD_NR_auditctl 453
|
||||
#define TARGET_FREEBSD_NR__umtx_op 454
|
||||
#define TARGET_FREEBSD_NR_thr_new 455
|
||||
#define TARGET_FREEBSD_NR_sigqueue 456
|
||||
#define TARGET_FREEBSD_NR_kmq_open 457
|
||||
#define TARGET_FREEBSD_NR_auditctl 453
|
||||
#define TARGET_FREEBSD_NR__umtx_op 454
|
||||
#define TARGET_FREEBSD_NR_thr_new 455
|
||||
#define TARGET_FREEBSD_NR_sigqueue 456
|
||||
#define TARGET_FREEBSD_NR_kmq_open 457
|
||||
#define TARGET_FREEBSD_NR_kmq_setattr 458
|
||||
#define TARGET_FREEBSD_NR_kmq_timedreceive 459
|
||||
#define TARGET_FREEBSD_NR_kmq_timedreceive 459
|
||||
#define TARGET_FREEBSD_NR_kmq_timedsend 460
|
||||
#define TARGET_FREEBSD_NR_kmq_notify 461
|
||||
#define TARGET_FREEBSD_NR_kmq_unlink 462
|
||||
#define TARGET_FREEBSD_NR_abort2 463
|
||||
#define TARGET_FREEBSD_NR_abort2 463
|
||||
#define TARGET_FREEBSD_NR_thr_set_name 464
|
||||
#define TARGET_FREEBSD_NR_aio_fsync 465
|
||||
#define TARGET_FREEBSD_NR_aio_fsync 465
|
||||
#define TARGET_FREEBSD_NR_rtprio_thread 466
|
||||
#define TARGET_FREEBSD_NR_sctp_peeloff 471
|
||||
#define TARGET_FREEBSD_NR_sctp_generic_sendmsg 472
|
||||
#define TARGET_FREEBSD_NR_sctp_generic_sendmsg_iov 473
|
||||
#define TARGET_FREEBSD_NR_sctp_generic_sendmsg_iov 473
|
||||
#define TARGET_FREEBSD_NR_sctp_generic_recvmsg 474
|
||||
#define TARGET_FREEBSD_NR_pread 475
|
||||
#define TARGET_FREEBSD_NR_pwrite 476
|
||||
#define TARGET_FREEBSD_NR_pwrite 476
|
||||
#define TARGET_FREEBSD_NR_mmap 477
|
||||
#define TARGET_FREEBSD_NR_lseek 478
|
||||
#define TARGET_FREEBSD_NR_truncate 479
|
||||
#define TARGET_FREEBSD_NR_ftruncate 480
|
||||
#define TARGET_FREEBSD_NR_thr_kill2 481
|
||||
#define TARGET_FREEBSD_NR_shm_open 482
|
||||
#define TARGET_FREEBSD_NR_truncate 479
|
||||
#define TARGET_FREEBSD_NR_ftruncate 480
|
||||
#define TARGET_FREEBSD_NR_thr_kill2 481
|
||||
#define TARGET_FREEBSD_NR_freebsd12_shm_open 482
|
||||
#define TARGET_FREEBSD_NR_shm_unlink 483
|
||||
#define TARGET_FREEBSD_NR_cpuset 484
|
||||
#define TARGET_FREEBSD_NR_cpuset 484
|
||||
#define TARGET_FREEBSD_NR_cpuset_setid 485
|
||||
#define TARGET_FREEBSD_NR_cpuset_getid 486
|
||||
#define TARGET_FREEBSD_NR_cpuset_getaffinity 487
|
||||
#define TARGET_FREEBSD_NR_cpuset_setaffinity 488
|
||||
#define TARGET_FREEBSD_NR_faccessat 489
|
||||
#define TARGET_FREEBSD_NR_fchmodat 490
|
||||
#define TARGET_FREEBSD_NR_fchownat 491
|
||||
#define TARGET_FREEBSD_NR_fexecve 492
|
||||
#define TARGET_FREEBSD_NR_fstatat 493
|
||||
#define TARGET_FREEBSD_NR_futimesat 494
|
||||
#define TARGET_FREEBSD_NR_linkat 495
|
||||
#define TARGET_FREEBSD_NR_mkdirat 496
|
||||
#define TARGET_FREEBSD_NR_mkfifoat 497
|
||||
#define TARGET_FREEBSD_NR_mknodat 498
|
||||
#define TARGET_FREEBSD_NR_openat 499
|
||||
#define TARGET_FREEBSD_NR_faccessat 489
|
||||
#define TARGET_FREEBSD_NR_fchmodat 490
|
||||
#define TARGET_FREEBSD_NR_fchownat 491
|
||||
#define TARGET_FREEBSD_NR_fexecve 492
|
||||
#define TARGET_FREEBSD_NR_freebsd11_fstatat 493
|
||||
#define TARGET_FREEBSD_NR_futimesat 494
|
||||
#define TARGET_FREEBSD_NR_linkat 495
|
||||
#define TARGET_FREEBSD_NR_mkdirat 496
|
||||
#define TARGET_FREEBSD_NR_mkfifoat 497
|
||||
#define TARGET_FREEBSD_NR_freebsd11_mknodat 498
|
||||
#define TARGET_FREEBSD_NR_openat 499
|
||||
#define TARGET_FREEBSD_NR_readlinkat 500
|
||||
#define TARGET_FREEBSD_NR_renameat 501
|
||||
#define TARGET_FREEBSD_NR_symlinkat 502
|
||||
#define TARGET_FREEBSD_NR_unlinkat 503
|
||||
#define TARGET_FREEBSD_NR_renameat 501
|
||||
#define TARGET_FREEBSD_NR_symlinkat 502
|
||||
#define TARGET_FREEBSD_NR_unlinkat 503
|
||||
#define TARGET_FREEBSD_NR_posix_openpt 504
|
||||
#define TARGET_FREEBSD_NR_gssd_syscall 505
|
||||
#define TARGET_FREEBSD_NR_jail_get 506
|
||||
#define TARGET_FREEBSD_NR_jail_set 507
|
||||
#define TARGET_FREEBSD_NR_jail_get 506
|
||||
#define TARGET_FREEBSD_NR_jail_set 507
|
||||
#define TARGET_FREEBSD_NR_jail_remove 508
|
||||
#define TARGET_FREEBSD_NR_closefrom 509
|
||||
#define TARGET_FREEBSD_NR___semctl 510
|
||||
#define TARGET_FREEBSD_NR_msgctl 511
|
||||
#define TARGET_FREEBSD_NR_shmctl 512
|
||||
#define TARGET_FREEBSD_NR_lpathconf 513
|
||||
#define TARGET_FREEBSD_NR_cap_new 514
|
||||
#define TARGET_FREEBSD_NR_cap_getrights 515
|
||||
#define TARGET_FREEBSD_NR_cap_enter 516
|
||||
#define TARGET_FREEBSD_NR_freebsd12_closefrom 509
|
||||
#define TARGET_FREEBSD_NR___semctl 510
|
||||
#define TARGET_FREEBSD_NR_msgctl 511
|
||||
#define TARGET_FREEBSD_NR_shmctl 512
|
||||
#define TARGET_FREEBSD_NR_lpathconf 513
|
||||
/* 514 is obsolete cap_new */
|
||||
#define TARGET_FREEBSD_NR___cap_rights_get 515
|
||||
#define TARGET_FREEBSD_NR_cap_enter 516
|
||||
#define TARGET_FREEBSD_NR_cap_getmode 517
|
||||
#define TARGET_FREEBSD_NR_pdfork 518
|
||||
#define TARGET_FREEBSD_NR_pdkill 519
|
||||
#define TARGET_FREEBSD_NR_pdgetpid 520
|
||||
#define TARGET_FREEBSD_NR_pselect 522
|
||||
#define TARGET_FREEBSD_NR_pdfork 518
|
||||
#define TARGET_FREEBSD_NR_pdkill 519
|
||||
#define TARGET_FREEBSD_NR_pdgetpid 520
|
||||
#define TARGET_FREEBSD_NR_pselect 522
|
||||
#define TARGET_FREEBSD_NR_getloginclass 523
|
||||
#define TARGET_FREEBSD_NR_setloginclass 524
|
||||
#define TARGET_FREEBSD_NR_rctl_get_racct 525
|
||||
#define TARGET_FREEBSD_NR_rctl_get_rules 526
|
||||
#define TARGET_FREEBSD_NR_rctl_get_limits 527
|
||||
#define TARGET_FREEBSD_NR_rctl_get_racct 525
|
||||
#define TARGET_FREEBSD_NR_rctl_get_rules 526
|
||||
#define TARGET_FREEBSD_NR_rctl_get_limits 527
|
||||
#define TARGET_FREEBSD_NR_rctl_add_rule 528
|
||||
#define TARGET_FREEBSD_NR_rctl_remove_rule 529
|
||||
#define TARGET_FREEBSD_NR_posix_fallocate 530
|
||||
#define TARGET_FREEBSD_NR_rctl_remove_rule 529
|
||||
#define TARGET_FREEBSD_NR_posix_fallocate 530
|
||||
#define TARGET_FREEBSD_NR_posix_fadvise 531
|
||||
#define TARGET_FREEBSD_NR_MAXSYSCALL 532
|
||||
#define TARGET_FREEBSD_NR_wait6 532
|
||||
#define TARGET_FREEBSD_NR_cap_rights_limit 533
|
||||
#define TARGET_FREEBSD_NR_cap_ioctls_limit 534
|
||||
#define TARGET_FREEBSD_NR_cap_ioctls_get 535
|
||||
#define TARGET_FREEBSD_NR_cap_fcntls_limit 536
|
||||
#define TARGET_FREEBSD_NR_cap_fcntls_get 537
|
||||
#define TARGET_FREEBSD_NR_bindat 538
|
||||
#define TARGET_FREEBSD_NR_connectat 539
|
||||
#define TARGET_FREEBSD_NR_chflagsat 540
|
||||
#define TARGET_FREEBSD_NR_accept4 541
|
||||
#define TARGET_FREEBSD_NR_pipe2 542
|
||||
#define TARGET_FREEBSD_NR_aio_mlock 543
|
||||
#define TARGET_FREEBSD_NR_procctl 544
|
||||
#define TARGET_FREEBSD_NR_ppoll 545
|
||||
#define TARGET_FREEBSD_NR_futimens 546
|
||||
#define TARGET_FREEBSD_NR_utimensat 547
|
||||
/* 548 is obsolete numa_getaffinity */
|
||||
/* 549 is obsolete numa_setaffinity */
|
||||
#define TARGET_FREEBSD_NR_fdatasync 550
|
||||
#define TARGET_FREEBSD_NR_fstat 551
|
||||
#define TARGET_FREEBSD_NR_fstatat 552
|
||||
#define TARGET_FREEBSD_NR_fhstat 553
|
||||
#define TARGET_FREEBSD_NR_getdirentries 554
|
||||
#define TARGET_FREEBSD_NR_statfs 555
|
||||
#define TARGET_FREEBSD_NR_fstatfs 556
|
||||
#define TARGET_FREEBSD_NR_getfsstat 557
|
||||
#define TARGET_FREEBSD_NR_fhstatfs 558
|
||||
#define TARGET_FREEBSD_NR_mknodat 559
|
||||
#define TARGET_FREEBSD_NR_kevent 560
|
||||
#define TARGET_FREEBSD_NR_cpuset_getdomain 561
|
||||
#define TARGET_FREEBSD_NR_cpuset_setdomain 562
|
||||
#define TARGET_FREEBSD_NR_getrandom 563
|
||||
#define TARGET_FREEBSD_NR_getfhat 564
|
||||
#define TARGET_FREEBSD_NR_fhlink 565
|
||||
#define TARGET_FREEBSD_NR_fhlinkat 566
|
||||
#define TARGET_FREEBSD_NR_fhreadlink 567
|
||||
#define TARGET_FREEBSD_NR_funlinkat 568
|
||||
#define TARGET_FREEBSD_NR_copy_file_range 569
|
||||
#define TARGET_FREEBSD_NR___sysctlbyname 570
|
||||
#define TARGET_FREEBSD_NR_shm_open2 571
|
||||
#define TARGET_FREEBSD_NR_shm_rename 572
|
||||
#define TARGET_FREEBSD_NR_sigfastblock 573
|
||||
#define TARGET_FREEBSD_NR___realpathat 574
|
||||
#define TARGET_FREEBSD_NR_close_range 575
|
||||
#define TARGET_FREEBSD_NR_rpctls_syscall 576
|
||||
#define TARGET_FREEBSD_NR_MAXSYSCALL 577
|
||||
|
77
bsd-user/i386/target_arch_sysarch.h
Normal file
77
bsd-user/i386/target_arch_sysarch.h
Normal file
@ -0,0 +1,77 @@
|
||||
/*
|
||||
* i386 sysarch system call emulation
|
||||
*
|
||||
* Copyright (c) 2013 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/>.
|
||||
*/
|
||||
|
||||
#ifndef BSD_USER_ARCH_SYSARCH_H_
|
||||
#define BSD_USER_ARCH_SYSARCH_H_
|
||||
|
||||
#include "target_syscall.h"
|
||||
|
||||
static inline abi_long do_freebsd_arch_sysarch(CPUX86State *env, int op,
|
||||
abi_ulong parms)
|
||||
{
|
||||
abi_long ret = 0;
|
||||
abi_ulong val;
|
||||
int idx;
|
||||
|
||||
switch (op) {
|
||||
case TARGET_FREEBSD_I386_SET_GSBASE:
|
||||
case TARGET_FREEBSD_I386_SET_FSBASE:
|
||||
if (op == TARGET_FREEBSD_I386_SET_GSBASE) {
|
||||
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;
|
||||
|
||||
case TARGET_FREEBSD_I386_GET_GSBASE:
|
||||
case TARGET_FREEBSD_I386_GET_FSBASE:
|
||||
if (op == TARGET_FREEBSD_I386_GET_GSBASE) {
|
||||
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;
|
||||
}
|
||||
|
||||
static inline void do_freebsd_arch_print_sysarch(
|
||||
const struct syscallname *name, abi_long arg1, abi_long arg2,
|
||||
abi_long arg3, abi_long arg4, abi_long arg5, abi_long arg6)
|
||||
{
|
||||
|
||||
gemu_log("%s(%d, " TARGET_ABI_FMT_lx ", " TARGET_ABI_FMT_lx ", "
|
||||
TARGET_ABI_FMT_lx ")", name->name, (int)arg1, arg2, arg3, arg4);
|
||||
}
|
||||
|
||||
#endif /* !BSD_USER_ARCH_SYSARCH_H_ */
|
@ -1,3 +1,20 @@
|
||||
/*
|
||||
* i386 system call definitions
|
||||
*
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
#ifndef TARGET_SYSCALL_H
|
||||
#define TARGET_SYSCALL_H
|
||||
|
||||
@ -161,5 +178,7 @@ struct target_vm86plus_struct {
|
||||
|
||||
|
||||
#define UNAME_MACHINE "i386"
|
||||
#define TARGET_HW_MACHINE UNAME_MACHINE
|
||||
#define TARGET_HW_MACHINE_ARCH UNAME_MACHINE
|
||||
|
||||
#endif /* TARGET_SYSCALL_H */
|
||||
|
69
bsd-user/mips/target_arch_sysarch.h
Normal file
69
bsd-user/mips/target_arch_sysarch.h
Normal file
@ -0,0 +1,69 @@
|
||||
/*
|
||||
* mips sysarch() system call emulation
|
||||
*
|
||||
* Copyright (c) 2013 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/>.
|
||||
*/
|
||||
|
||||
#ifndef BSD_USER_ARCH_SYSARCH_H_
|
||||
#define BSD_USER_ARCH_SYSARCH_H_
|
||||
|
||||
#include "target_syscall.h"
|
||||
#include "target_arch.h"
|
||||
|
||||
static inline abi_long do_freebsd_arch_sysarch(CPUMIPSState *env, int op,
|
||||
abi_ulong parms)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
switch (op) {
|
||||
case TARGET_MIPS_SET_TLS:
|
||||
target_cpu_set_tls(env, parms);
|
||||
break;
|
||||
|
||||
case TARGET_MIPS_GET_TLS:
|
||||
if (put_user(target_cpu_get_tls(env), parms, abi_ulong)) {
|
||||
ret = -TARGET_EFAULT;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
ret = -TARGET_EINVAL;
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static inline void do_freebsd_arch_print_sysarch(
|
||||
const struct syscallname *name, abi_long arg1, abi_long arg2,
|
||||
abi_long arg3, abi_long arg4, abi_long arg5, abi_long arg6)
|
||||
{
|
||||
|
||||
switch (arg1) {
|
||||
case TARGET_MIPS_SET_TLS:
|
||||
gemu_log("%s(SET_TLS, 0x" TARGET_ABI_FMT_lx ")", name->name, arg2);
|
||||
break;
|
||||
|
||||
case TARGET_MIPS_GET_TLS:
|
||||
gemu_log("%s(GET_TLS, 0x" TARGET_ABI_FMT_lx ")", name->name, arg2);
|
||||
break;
|
||||
|
||||
default:
|
||||
gemu_log("UNKNOWN OP: %d, " TARGET_ABI_FMT_lx ")", (int)arg1, arg2);
|
||||
}
|
||||
}
|
||||
|
||||
#endif /*!BSD_USER_ARCH_SYSARCH_H_ */
|
52
bsd-user/mips/target_syscall.h
Normal file
52
bsd-user/mips/target_syscall.h
Normal file
@ -0,0 +1,52 @@
|
||||
/*
|
||||
* mips system call definitions
|
||||
*
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
#ifndef _MIPS_SYSCALL_H_
|
||||
#define _MIPS_SYSCALL_H_
|
||||
|
||||
/*
|
||||
* struct target_pt_regs defines the way the registers are stored on the stack
|
||||
* during a system call.
|
||||
*/
|
||||
|
||||
struct target_pt_regs {
|
||||
/* Saved main processor registers. */
|
||||
abi_ulong regs[32];
|
||||
|
||||
/* Saved special registers. */
|
||||
abi_ulong cp0_status;
|
||||
abi_ulong lo;
|
||||
abi_ulong hi;
|
||||
abi_ulong cp0_badvaddr;
|
||||
abi_ulong cp0_cause;
|
||||
abi_ulong cp0_epc;
|
||||
};
|
||||
|
||||
#if defined(TARGET_WORDS_BIGENDIAN)
|
||||
#define UNAME_MACHINE "mips"
|
||||
#else
|
||||
#define UNAME_MACHINE "mipsel"
|
||||
#endif
|
||||
|
||||
#define TARGET_HW_MACHINE "mips"
|
||||
#define TARGET_HW_MACHINE_ARCH UNAME_MACHINE
|
||||
|
||||
/* sysarch() commands */
|
||||
#define TARGET_MIPS_SET_TLS 1
|
||||
#define TARGET_MIPS_GET_TLS 2
|
||||
|
||||
#endif /* !_MIPS_SYSCALL_H_ */
|
69
bsd-user/mips64/target_arch_sysarch.h
Normal file
69
bsd-user/mips64/target_arch_sysarch.h
Normal file
@ -0,0 +1,69 @@
|
||||
/*
|
||||
* mips64 sysarch() system call emulation
|
||||
*
|
||||
* Copyright (c) 2013 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/>.
|
||||
*/
|
||||
|
||||
#ifndef BSD_USER_ARCH_SYSARCH_H_
|
||||
#define BSD_USER_ARCH_SYSARCH_H_
|
||||
|
||||
#include "target_syscall.h"
|
||||
#include "target_arch.h"
|
||||
|
||||
static inline abi_long do_freebsd_arch_sysarch(CPUMIPSState *env, int op,
|
||||
abi_ulong parms)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
switch (op) {
|
||||
case TARGET_MIPS_SET_TLS:
|
||||
target_cpu_set_tls(env, parms);
|
||||
break;
|
||||
|
||||
case TARGET_MIPS_GET_TLS:
|
||||
if (put_user(target_cpu_get_tls(env), parms, abi_ulong)) {
|
||||
ret = -TARGET_EFAULT;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
ret = -TARGET_EINVAL;
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static inline void do_freebsd_arch_print_sysarch(
|
||||
const struct syscallname *name, abi_long arg1, abi_long arg2,
|
||||
abi_long arg3, abi_long arg4, abi_long arg5, abi_long arg6)
|
||||
{
|
||||
|
||||
switch (arg1) {
|
||||
case TARGET_MIPS_SET_TLS:
|
||||
gemu_log("%s(SET_TLS, 0x" TARGET_ABI_FMT_lx ")", name->name, arg2);
|
||||
break;
|
||||
|
||||
case TARGET_MIPS_GET_TLS:
|
||||
gemu_log("%s(GET_TLS, 0x" TARGET_ABI_FMT_lx ")", name->name, arg2);
|
||||
break;
|
||||
|
||||
default:
|
||||
gemu_log("UNKNOWN OP: %d, " TARGET_ABI_FMT_lx ")", (int)arg1, arg2);
|
||||
}
|
||||
}
|
||||
|
||||
#endif /*!BSD_USER_ARCH_SYSARCH_H_ */
|
53
bsd-user/mips64/target_syscall.h
Normal file
53
bsd-user/mips64/target_syscall.h
Normal file
@ -0,0 +1,53 @@
|
||||
/*
|
||||
* mips64 system call definitions
|
||||
*
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
#ifndef _MIPS64_SYSCALL_H_
|
||||
#define _MIPS64_SYSCALL_H_
|
||||
|
||||
/*
|
||||
* struct target_pt_regs defines the way the registers are stored on the stack
|
||||
* during a system call.
|
||||
*/
|
||||
|
||||
struct target_pt_regs {
|
||||
/* Saved main processor registers. */
|
||||
abi_ulong regs[32];
|
||||
|
||||
/* Saved special registers. */
|
||||
abi_ulong cp0_status;
|
||||
abi_ulong lo;
|
||||
abi_ulong hi;
|
||||
abi_ulong cp0_badvaddr;
|
||||
abi_ulong cp0_cause;
|
||||
abi_ulong cp0_epc;
|
||||
};
|
||||
|
||||
|
||||
#if defined(TARGET_WORDS_BIGENDIAN)
|
||||
#define UNAME_MACHINE "mips64"
|
||||
#else
|
||||
#define UNAME_MACHINE "mips64el"
|
||||
#endif
|
||||
|
||||
#define TARGET_HW_MACHINE "mips"
|
||||
#define TARGET_HW_MACHINE_ARCH UNAME_MACHINE
|
||||
|
||||
/* sysarch() commands */
|
||||
#define TARGET_MIPS_SET_TLS 1
|
||||
#define TARGET_MIPS_GET_TLS 2
|
||||
|
||||
#endif /* !_MIPS64_SYSCALL_H_ */
|
1
bsd-user/netbsd/os-strace.h
Normal file
1
bsd-user/netbsd/os-strace.h
Normal file
@ -0,0 +1 @@
|
||||
/* XXX NetBSD dependent strace print functions */
|
1
bsd-user/openbsd/os-strace.h
Normal file
1
bsd-user/openbsd/os-strace.h
Normal file
@ -0,0 +1 @@
|
||||
/* XXX OpenBSD dependent strace print functions */
|
52
bsd-user/sparc/target_arch_sysarch.h
Normal file
52
bsd-user/sparc/target_arch_sysarch.h
Normal file
@ -0,0 +1,52 @@
|
||||
/*
|
||||
* SPARC sysarch() system call emulation
|
||||
*
|
||||
* Copyright (c) 2013 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/>.
|
||||
*/
|
||||
|
||||
#ifndef BSD_USER_ARCH_SYSARCH_H_
|
||||
#define BSD_USER_ARCH_SYSARCH_H_
|
||||
|
||||
#include "target_syscall.h"
|
||||
|
||||
static inline abi_long do_freebsd_arch_sysarch(void *env, int op,
|
||||
abi_ulong parms)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
switch (op) {
|
||||
case TARGET_SPARC_SIGTRAMP_INSTALL:
|
||||
/* XXX not currently handled */
|
||||
case TARGET_SPARC_UTRAP_INSTALL:
|
||||
/* XXX not currently handled */
|
||||
default:
|
||||
ret = -TARGET_EINVAL;
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static inline void do_freebsd_arch_print_sysarch(
|
||||
const struct syscallname *name, abi_long arg1, abi_long arg2,
|
||||
abi_long arg3, abi_long arg4, abi_long arg5, abi_long arg6)
|
||||
{
|
||||
|
||||
gemu_log("%s(%d, " TARGET_ABI_FMT_lx ", " TARGET_ABI_FMT_lx ", "
|
||||
TARGET_ABI_FMT_lx ")", name->name, (int)arg1, arg2, arg3, arg4);
|
||||
}
|
||||
|
||||
#endif /*!BSD_USER_ARCH_SYSARCH_H_ */
|
@ -1,3 +1,20 @@
|
||||
/*
|
||||
* sparc dependent system call definitions
|
||||
*
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
#ifndef TARGET_SYSCALL_H
|
||||
#define TARGET_SYSCALL_H
|
||||
|
||||
@ -9,6 +26,11 @@ struct target_pt_regs {
|
||||
abi_ulong u_regs[16];
|
||||
};
|
||||
|
||||
#define UNAME_MACHINE "sun4"
|
||||
#define UNAME_MACHINE "sun4"
|
||||
#define TARGET_HW_MACHINE "sparc"
|
||||
#define TARGET_HW_MACHINE_ARCH "sparc"
|
||||
|
||||
#define TARGET_SPARC_UTRAP_INSTALL 1
|
||||
#define TARGET_SPARC_SIGTRAMP_INSTALL 2
|
||||
|
||||
#endif /* TARGET_SYSCALL_H */
|
||||
|
52
bsd-user/sparc64/target_arch_sysarch.h
Normal file
52
bsd-user/sparc64/target_arch_sysarch.h
Normal file
@ -0,0 +1,52 @@
|
||||
/*
|
||||
* SPARC64 sysarch() system call emulation
|
||||
*
|
||||
* Copyright (c) 2013 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/>.
|
||||
*/
|
||||
|
||||
#ifndef BSD_USER_ARCH_SYSARCH_H_
|
||||
#define BSD_USER_ARCH_SYSARCH_H_
|
||||
|
||||
#include "target_syscall.h"
|
||||
|
||||
static inline abi_long do_freebsd_arch_sysarch(void *env, int op,
|
||||
abi_ulong parms)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
switch (op) {
|
||||
case TARGET_SPARC_SIGTRAMP_INSTALL:
|
||||
/* XXX not currently handled */
|
||||
case TARGET_SPARC_UTRAP_INSTALL:
|
||||
/* XXX not currently handled */
|
||||
default:
|
||||
ret = -TARGET_EINVAL;
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static inline void do_freebsd_arch_print_sysarch(
|
||||
const struct syscallname *name, abi_long arg1, abi_long arg2,
|
||||
abi_long arg3, abi_long arg4, abi_long arg5, abi_long arg6)
|
||||
{
|
||||
|
||||
gemu_log("%s(%d, " TARGET_ABI_FMT_lx ", " TARGET_ABI_FMT_lx ", "
|
||||
TARGET_ABI_FMT_lx ")", name->name, (int)arg1, arg2, arg3, arg4);
|
||||
}
|
||||
|
||||
#endif /*!BSD_USER_ARCH_SYSARCH_H_ */
|
@ -1,3 +1,20 @@
|
||||
/*
|
||||
* sparc64 dependent system call definitions
|
||||
*
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
#ifndef TARGET_SYSCALL_H
|
||||
#define TARGET_SYSCALL_H
|
||||
|
||||
@ -10,6 +27,11 @@ struct target_pt_regs {
|
||||
abi_ulong fprs;
|
||||
};
|
||||
|
||||
#define UNAME_MACHINE "sun4u"
|
||||
#define UNAME_MACHINE "sun4u"
|
||||
#define TARGET_HW_MACHINE "sparc"
|
||||
#define TARGET_HW_MACHINE_ARCH "sparc64"
|
||||
|
||||
#define TARGET_SPARC_UTRAP_INSTALL 1
|
||||
#define TARGET_SPARC_SIGTRAMP_INSTALL 2
|
||||
|
||||
#endif /* TARGET_SYSCALL_H */
|
||||
|
@ -20,9 +20,12 @@
|
||||
#include <sys/select.h>
|
||||
#include <sys/syscall.h>
|
||||
#include <sys/ioccom.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#include "qemu.h"
|
||||
|
||||
#include "os-strace.h" /* OS dependent strace print functions */
|
||||
|
||||
int do_strace;
|
||||
|
||||
/*
|
||||
@ -104,6 +107,14 @@ static void print_ioctl(const struct syscallname *name,
|
||||
arg3);
|
||||
}
|
||||
|
||||
static void print_sysarch(const struct syscallname *name, abi_long arg1,
|
||||
abi_long arg2, abi_long arg3, abi_long arg4, abi_long arg5,
|
||||
abi_long arg6)
|
||||
{
|
||||
/* This is os dependent. */
|
||||
do_os_print_sysarch(name, arg1, arg2, arg3, arg4, arg5, arg6);
|
||||
}
|
||||
|
||||
/*
|
||||
* Variants for the return value output function
|
||||
*/
|
||||
|
76
bsd-user/x86_64/target_arch_sysarch.h
Normal file
76
bsd-user/x86_64/target_arch_sysarch.h
Normal file
@ -0,0 +1,76 @@
|
||||
/*
|
||||
* x86_64 sysarch() syscall emulation
|
||||
*
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
#ifndef BSD_USER_ARCH_SYSARCH_H_
|
||||
#define BSD_USER_ARCH_SYSARCH_H_
|
||||
|
||||
#include "target_syscall.h"
|
||||
|
||||
static inline abi_long do_freebsd_arch_sysarch(CPUX86State *env, int op,
|
||||
abi_ulong parms)
|
||||
{
|
||||
abi_long ret = 0;
|
||||
abi_ulong val;
|
||||
int idx;
|
||||
|
||||
switch (op) {
|
||||
case TARGET_FREEBSD_AMD64_SET_GSBASE:
|
||||
case TARGET_FREEBSD_AMD64_SET_FSBASE:
|
||||
if (op == TARGET_FREEBSD_AMD64_SET_GSBASE) {
|
||||
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;
|
||||
|
||||
case TARGET_FREEBSD_AMD64_GET_GSBASE:
|
||||
case TARGET_FREEBSD_AMD64_GET_FSBASE:
|
||||
if (op == TARGET_FREEBSD_AMD64_GET_GSBASE) {
|
||||
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;
|
||||
}
|
||||
|
||||
static inline void do_freebsd_arch_print_sysarch(
|
||||
const struct syscallname *name, abi_long arg1, abi_long arg2,
|
||||
abi_long arg3, abi_long arg4, abi_long arg5, abi_long arg6)
|
||||
{
|
||||
|
||||
gemu_log("%s(%d, " TARGET_ABI_FMT_lx ", " TARGET_ABI_FMT_lx ", "
|
||||
TARGET_ABI_FMT_lx ")", name->name, (int)arg1, arg2, arg3, arg4);
|
||||
}
|
||||
|
||||
#endif /*! BSD_USER_ARCH_SYSARCH_H_ */
|
@ -1,3 +1,20 @@
|
||||
/*
|
||||
* x86_64 system call definitions
|
||||
*
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
#ifndef TARGET_SYSCALL_H
|
||||
#define TARGET_SYSCALL_H
|
||||
|
||||
@ -111,7 +128,9 @@ struct target_msqid64_ds {
|
||||
#define TARGET_FREEBSD_AMD64_SET_GSBASE 131
|
||||
|
||||
|
||||
#define UNAME_MACHINE "x86_64"
|
||||
#define UNAME_MACHINE "x86_64"
|
||||
#define TARGET_HW_MACHINE "amd64"
|
||||
#define TARGET_HW_MACHINE_ARCH "amd64"
|
||||
|
||||
#define TARGET_ARCH_SET_GS 0x1001
|
||||
#define TARGET_ARCH_SET_FS 0x1002
|
||||
|
@ -2047,6 +2047,7 @@ foreach target : target_dirs
|
||||
target_inc += include_directories('linux-user/host/' / config_host['ARCH'])
|
||||
else
|
||||
base_dir = 'bsd-user'
|
||||
target_inc += include_directories('bsd-user/freebsd')
|
||||
endif
|
||||
target_inc += include_directories(
|
||||
base_dir,
|
||||
|
@ -16,6 +16,10 @@ QEMU_PATH = None
|
||||
TIMEOUT = 5
|
||||
CRASH_TOKEN = None
|
||||
|
||||
# Minimization levels
|
||||
M1 = False # try removing IO commands iteratively
|
||||
M2 = False # try setting bits in operand of write/out to zero
|
||||
|
||||
write_suffix_lookup = {"b": (1, "B"),
|
||||
"w": (2, "H"),
|
||||
"l": (4, "L"),
|
||||
@ -23,14 +27,30 @@ write_suffix_lookup = {"b": (1, "B"),
|
||||
|
||||
def usage():
|
||||
sys.exit("""\
|
||||
Usage: QEMU_PATH="/path/to/qemu" QEMU_ARGS="args" {} input_trace output_trace
|
||||
Usage:
|
||||
|
||||
QEMU_PATH="/path/to/qemu" QEMU_ARGS="args" {} [Options] input_trace output_trace
|
||||
|
||||
By default, will try to use the second-to-last line in the output to identify
|
||||
whether the crash occred. Optionally, manually set a string that idenitifes the
|
||||
crash by setting CRASH_TOKEN=
|
||||
|
||||
Options:
|
||||
|
||||
-M1: enable a loop around the remove minimizer, which may help decrease some
|
||||
timing dependant instructions. Off by default.
|
||||
-M2: try setting bits in operand of write/out to zero. Off by default.
|
||||
|
||||
""".format((sys.argv[0])))
|
||||
|
||||
deduplication_note = """\n\
|
||||
Note: While trimming the input, sometimes the mutated trace triggers a different
|
||||
type crash but indicates the same bug. Under this situation, our minimizer is
|
||||
incapable of recognizing and stopped from removing it. In the future, we may
|
||||
use a more sophisticated crash case deduplication method.
|
||||
\n"""
|
||||
|
||||
def check_if_trace_crashes(trace, path):
|
||||
global CRASH_TOKEN
|
||||
with open(path, "w") as tracefile:
|
||||
tracefile.write("".join(trace))
|
||||
|
||||
@ -41,51 +61,99 @@ def check_if_trace_crashes(trace, path):
|
||||
trace_path=path),
|
||||
shell=True,
|
||||
stdin=subprocess.PIPE,
|
||||
stdout=subprocess.PIPE)
|
||||
stdo = rc.communicate()[0]
|
||||
output = stdo.decode('unicode_escape')
|
||||
if rc.returncode == 137: # Timed Out
|
||||
return False
|
||||
if len(output.splitlines()) < 2:
|
||||
return False
|
||||
|
||||
stdout=subprocess.PIPE,
|
||||
encoding="utf-8")
|
||||
global CRASH_TOKEN
|
||||
if CRASH_TOKEN is None:
|
||||
CRASH_TOKEN = output.splitlines()[-2]
|
||||
try:
|
||||
outs, _ = rc.communicate(timeout=5)
|
||||
CRASH_TOKEN = " ".join(outs.splitlines()[-2].split()[0:3])
|
||||
except subprocess.TimeoutExpired:
|
||||
print("subprocess.TimeoutExpired")
|
||||
return False
|
||||
print("Identifying Crashes by this string: {}".format(CRASH_TOKEN))
|
||||
global deduplication_note
|
||||
print(deduplication_note)
|
||||
return True
|
||||
|
||||
return CRASH_TOKEN in output
|
||||
for line in iter(rc.stdout.readline, ""):
|
||||
if "CLOSED" in line:
|
||||
return False
|
||||
if CRASH_TOKEN in line:
|
||||
return True
|
||||
|
||||
print("\nWarning:")
|
||||
print(" There is no 'CLOSED'or CRASH_TOKEN in the stdout of subprocess.")
|
||||
print(" Usually this indicates a different type of crash.\n")
|
||||
return False
|
||||
|
||||
|
||||
def minimize_trace(inpath, outpath):
|
||||
global TIMEOUT
|
||||
with open(inpath) as f:
|
||||
trace = f.readlines()
|
||||
start = time.time()
|
||||
if not check_if_trace_crashes(trace, outpath):
|
||||
sys.exit("The input qtest trace didn't cause a crash...")
|
||||
end = time.time()
|
||||
print("Crashed in {} seconds".format(end-start))
|
||||
TIMEOUT = (end-start)*5
|
||||
print("Setting the timeout for {} seconds".format(TIMEOUT))
|
||||
print("Identifying Crashes by this string: {}".format(CRASH_TOKEN))
|
||||
# If previous write commands write the same length of data at the same
|
||||
# interval, we view it as a hint.
|
||||
def split_write_hint(newtrace, i):
|
||||
HINT_LEN = 3 # > 2
|
||||
if i <=(HINT_LEN-1):
|
||||
return None
|
||||
|
||||
#find previous continuous write traces
|
||||
k = 0
|
||||
l = i-1
|
||||
writes = []
|
||||
while (k != HINT_LEN and l >= 0):
|
||||
if newtrace[l].startswith("write "):
|
||||
writes.append(newtrace[l])
|
||||
k += 1
|
||||
l -= 1
|
||||
elif newtrace[l] == "":
|
||||
l -= 1
|
||||
else:
|
||||
return None
|
||||
if k != HINT_LEN:
|
||||
return None
|
||||
|
||||
length = int(writes[0].split()[2], 16)
|
||||
for j in range(1, HINT_LEN):
|
||||
if length != int(writes[j].split()[2], 16):
|
||||
return None
|
||||
|
||||
step = int(writes[0].split()[1], 16) - int(writes[1].split()[1], 16)
|
||||
for j in range(1, HINT_LEN-1):
|
||||
if step != int(writes[j].split()[1], 16) - \
|
||||
int(writes[j+1].split()[1], 16):
|
||||
return None
|
||||
|
||||
return (int(writes[0].split()[1], 16)+step, length)
|
||||
|
||||
|
||||
def remove_lines(newtrace, outpath):
|
||||
remove_step = 1
|
||||
i = 0
|
||||
newtrace = trace[:]
|
||||
# For each line
|
||||
while i < len(newtrace):
|
||||
# 1.) Try to remove it completely and reproduce the crash. If it works,
|
||||
# we're done.
|
||||
prior = newtrace[i]
|
||||
print("Trying to remove {}".format(newtrace[i]))
|
||||
# Try to remove the line completely
|
||||
newtrace[i] = ""
|
||||
# 1.) Try to remove lines completely and reproduce the crash.
|
||||
# If it works, we're done.
|
||||
if (i+remove_step) >= len(newtrace):
|
||||
remove_step = 1
|
||||
prior = newtrace[i:i+remove_step]
|
||||
for j in range(i, i+remove_step):
|
||||
newtrace[j] = ""
|
||||
print("Removing {lines} ...\n".format(lines=prior))
|
||||
if check_if_trace_crashes(newtrace, outpath):
|
||||
i += 1
|
||||
i += remove_step
|
||||
# Double the number of lines to remove for next round
|
||||
remove_step *= 2
|
||||
continue
|
||||
newtrace[i] = prior
|
||||
# Failed to remove multiple IOs, fast recovery
|
||||
if remove_step > 1:
|
||||
for j in range(i, i+remove_step):
|
||||
newtrace[j] = prior[j-i]
|
||||
remove_step = 1
|
||||
continue
|
||||
newtrace[i] = prior[0] # remove_step = 1
|
||||
|
||||
# 2.) Try to replace write{bwlq} commands with a write addr, len
|
||||
# command. Since this can require swapping endianness, try both LE and
|
||||
# BE options. We do this, so we can "trim" the writes in (3)
|
||||
|
||||
if (newtrace[i].startswith("write") and not
|
||||
newtrace[i].startswith("write ")):
|
||||
suffix = newtrace[i].split()[0][-1]
|
||||
@ -103,22 +171,46 @@ def minimize_trace(inpath, outpath):
|
||||
if(check_if_trace_crashes(newtrace, outpath)):
|
||||
break
|
||||
else:
|
||||
newtrace[i] = prior
|
||||
newtrace[i] = prior[0]
|
||||
|
||||
# 3.) If it is a qtest write command: write addr len data, try to split
|
||||
# it into two separate write commands. If splitting the write down the
|
||||
# middle does not work, try to move the pivot "left" and retry, until
|
||||
# there is no space left. The idea is to prune unneccessary bytes from
|
||||
# long writes, while accommodating arbitrary MemoryRegion access sizes
|
||||
# and alignments.
|
||||
# it into two separate write commands. If splitting the data operand
|
||||
# from length/2^n bytes to the left does not work, try to move the pivot
|
||||
# to the right side, then add one to n, until length/2^n == 0. The idea
|
||||
# is to prune unneccessary bytes from long writes, while accommodating
|
||||
# arbitrary MemoryRegion access sizes and alignments.
|
||||
|
||||
# This algorithm will fail under some rare situations.
|
||||
# e.g., xxxxxxxxxuxxxxxx (u is the unnecessary byte)
|
||||
|
||||
if newtrace[i].startswith("write "):
|
||||
addr = int(newtrace[i].split()[1], 16)
|
||||
length = int(newtrace[i].split()[2], 16)
|
||||
data = newtrace[i].split()[3][2:]
|
||||
if length > 1:
|
||||
|
||||
# Can we get a hint from previous writes?
|
||||
hint = split_write_hint(newtrace, i)
|
||||
if hint is not None:
|
||||
hint_addr = hint[0]
|
||||
hint_len = hint[1]
|
||||
if hint_addr >= addr and hint_addr+hint_len <= addr+length:
|
||||
newtrace[i] = "write {addr} {size} 0x{data}\n".format(
|
||||
addr=hex(hint_addr),
|
||||
size=hex(hint_len),
|
||||
data=data[(hint_addr-addr)*2:\
|
||||
(hint_addr-addr)*2+hint_len*2])
|
||||
if check_if_trace_crashes(newtrace, outpath):
|
||||
# next round
|
||||
i += 1
|
||||
continue
|
||||
newtrace[i] = prior[0]
|
||||
|
||||
# Try splitting it using a binary approach
|
||||
leftlength = int(length/2)
|
||||
rightlength = length - leftlength
|
||||
newtrace.insert(i+1, "")
|
||||
power = 1
|
||||
while leftlength > 0:
|
||||
newtrace[i] = "write {addr} {size} 0x{data}\n".format(
|
||||
addr=hex(addr),
|
||||
@ -130,22 +222,96 @@ def minimize_trace(inpath, outpath):
|
||||
data=data[leftlength*2:])
|
||||
if check_if_trace_crashes(newtrace, outpath):
|
||||
break
|
||||
else:
|
||||
leftlength -= 1
|
||||
rightlength += 1
|
||||
# move the pivot to right side
|
||||
if leftlength < rightlength:
|
||||
rightlength, leftlength = leftlength, rightlength
|
||||
continue
|
||||
power += 1
|
||||
leftlength = int(length/pow(2, power))
|
||||
rightlength = length - leftlength
|
||||
if check_if_trace_crashes(newtrace, outpath):
|
||||
i -= 1
|
||||
else:
|
||||
newtrace[i] = prior
|
||||
newtrace[i] = prior[0]
|
||||
del newtrace[i+1]
|
||||
i += 1
|
||||
check_if_trace_crashes(newtrace, outpath)
|
||||
|
||||
|
||||
def clear_bits(newtrace, outpath):
|
||||
# try setting bits in operands of out/write to zero
|
||||
i = 0
|
||||
while i < len(newtrace):
|
||||
if (not newtrace[i].startswith("write ") and not
|
||||
newtrace[i].startswith("out")):
|
||||
i += 1
|
||||
continue
|
||||
# write ADDR SIZE DATA
|
||||
# outx ADDR VALUE
|
||||
print("\nzero setting bits: {}".format(newtrace[i]))
|
||||
|
||||
prefix = " ".join(newtrace[i].split()[:-1])
|
||||
data = newtrace[i].split()[-1]
|
||||
data_bin = bin(int(data, 16))
|
||||
data_bin_list = list(data_bin)
|
||||
|
||||
for j in range(2, len(data_bin_list)):
|
||||
prior = newtrace[i]
|
||||
if (data_bin_list[j] == '1'):
|
||||
data_bin_list[j] = '0'
|
||||
data_try = hex(int("".join(data_bin_list), 2))
|
||||
# It seems qtest only accepts padded hex-values.
|
||||
if len(data_try) % 2 == 1:
|
||||
data_try = data_try[:2] + "0" + data_try[2:-1]
|
||||
|
||||
newtrace[i] = "{prefix} {data_try}\n".format(
|
||||
prefix=prefix,
|
||||
data_try=data_try)
|
||||
|
||||
if not check_if_trace_crashes(newtrace, outpath):
|
||||
data_bin_list[j] = '1'
|
||||
newtrace[i] = prior
|
||||
i += 1
|
||||
|
||||
|
||||
def minimize_trace(inpath, outpath):
|
||||
global TIMEOUT
|
||||
with open(inpath) as f:
|
||||
trace = f.readlines()
|
||||
start = time.time()
|
||||
if not check_if_trace_crashes(trace, outpath):
|
||||
sys.exit("The input qtest trace didn't cause a crash...")
|
||||
end = time.time()
|
||||
print("Crashed in {} seconds".format(end-start))
|
||||
TIMEOUT = (end-start)*5
|
||||
print("Setting the timeout for {} seconds".format(TIMEOUT))
|
||||
|
||||
newtrace = trace[:]
|
||||
global M1, M2
|
||||
|
||||
# remove lines
|
||||
old_len = len(newtrace) + 1
|
||||
while(old_len > len(newtrace)):
|
||||
old_len = len(newtrace)
|
||||
print("trace lenth = ", old_len)
|
||||
remove_lines(newtrace, outpath)
|
||||
if not M1 and not M2:
|
||||
break
|
||||
newtrace = list(filter(lambda s: s != "", newtrace))
|
||||
assert(check_if_trace_crashes(newtrace, outpath))
|
||||
|
||||
# set bits to zero
|
||||
if M2:
|
||||
clear_bits(newtrace, outpath)
|
||||
assert(check_if_trace_crashes(newtrace, outpath))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
if len(sys.argv) < 3:
|
||||
usage()
|
||||
|
||||
if "-M1" in sys.argv:
|
||||
M1 = True
|
||||
if "-M2" in sys.argv:
|
||||
M2 = True
|
||||
QEMU_PATH = os.getenv("QEMU_PATH")
|
||||
QEMU_ARGS = os.getenv("QEMU_ARGS")
|
||||
if QEMU_PATH is None or QEMU_ARGS is None:
|
||||
@ -154,4 +320,4 @@ if __name__ == '__main__':
|
||||
# QEMU_ARGS += " -accel qtest"
|
||||
CRASH_TOKEN = os.getenv("CRASH_TOKEN")
|
||||
QEMU_ARGS += " -qtest stdio -monitor none -serial none "
|
||||
minimize_trace(sys.argv[1], sys.argv[2])
|
||||
minimize_trace(sys.argv[-2], sys.argv[-1])
|
||||
|
@ -12,6 +12,7 @@
|
||||
import os
|
||||
import tempfile
|
||||
|
||||
from avocado import skipIf
|
||||
from avocado_qemu import Test
|
||||
from avocado_qemu import exec_command_and_wait_for_pattern
|
||||
from avocado_qemu import wait_for_console_pattern
|
||||
@ -133,8 +134,10 @@ class S390CCWVirtioMachine(Test):
|
||||
self.vm.command('device_add', driver='virtio-net-ccw',
|
||||
devno='fe.0.4711', id='net_4711')
|
||||
self.wait_for_crw_reports()
|
||||
exec_command_and_wait_for_pattern(self, 'ls /sys/bus/ccw/devices/',
|
||||
'0.0.4711')
|
||||
exec_command_and_wait_for_pattern(self, 'for i in 1 2 3 4 5 6 7 ; do '
|
||||
'if [ -e /sys/bus/ccw/devices/*4711 ]; then break; fi ;'
|
||||
'sleep 1 ; done ; ls /sys/bus/ccw/devices/',
|
||||
'0.0.4711')
|
||||
# and detach it again
|
||||
self.clear_guest_dmesg()
|
||||
self.vm.command('device_del', id='net_4711')
|
||||
@ -155,6 +158,7 @@ class S390CCWVirtioMachine(Test):
|
||||
'MemTotal: 115640 kB')
|
||||
|
||||
|
||||
@skipIf(os.getenv('GITLAB_CI'), 'Running on GitLab')
|
||||
def test_s390x_fedora(self):
|
||||
|
||||
"""
|
||||
@ -199,6 +203,9 @@ class S390CCWVirtioMachine(Test):
|
||||
|
||||
# Some tests to see whether the CLI options have been considered:
|
||||
self.log.info("Test whether QEMU CLI options have been considered")
|
||||
exec_command_and_wait_for_pattern(self,
|
||||
'while ! (dmesg | grep enP7p0s0) ; do sleep 1 ; done',
|
||||
'virtio_net virtio0 enP7p0s0: renamed')
|
||||
exec_command_and_wait_for_pattern(self, 'lspci',
|
||||
'0007:00:00.0 Class 0200: Device 1af4:1000')
|
||||
exec_command_and_wait_for_pattern(self,
|
||||
@ -222,6 +229,9 @@ class S390CCWVirtioMachine(Test):
|
||||
# can simply read the written "magic bytes" back from the PPM file to
|
||||
# check whether the framebuffer is working as expected.
|
||||
self.log.info("Test screendump of virtio-gpu device")
|
||||
exec_command_and_wait_for_pattern(self,
|
||||
'while ! (dmesg | grep gpudrmfb) ; do sleep 1 ; done',
|
||||
'virtio_gpudrmfb frame buffer device')
|
||||
exec_command_and_wait_for_pattern(self,
|
||||
'echo -e "\e[?25l" > /dev/tty0', ':/#')
|
||||
exec_command_and_wait_for_pattern(self, 'for ((i=0;i<250;i++)); do '
|
||||
|
55
tests/docker/dockerfiles/opensuse-leap.docker
Normal file
55
tests/docker/dockerfiles/opensuse-leap.docker
Normal file
@ -0,0 +1,55 @@
|
||||
FROM opensuse/leap:15.2
|
||||
|
||||
# Please keep this list sorted alphabetically
|
||||
ENV PACKAGES \
|
||||
bc \
|
||||
brlapi-devel \
|
||||
bzip2 \
|
||||
cyrus-sasl-devel \
|
||||
gcc \
|
||||
gcc-c++ \
|
||||
mkisofs \
|
||||
gettext-runtime \
|
||||
git \
|
||||
glib2-devel \
|
||||
glusterfs-devel \
|
||||
libgnutls-devel \
|
||||
gtk3-devel \
|
||||
libaio-devel \
|
||||
libattr-devel \
|
||||
libcap-ng-devel \
|
||||
libepoxy-devel \
|
||||
libfdt-devel \
|
||||
libiscsi-devel \
|
||||
libjpeg8-devel \
|
||||
libpmem-devel \
|
||||
libpng16-devel \
|
||||
librbd-devel \
|
||||
libseccomp-devel \
|
||||
libssh-devel \
|
||||
lzo-devel \
|
||||
make \
|
||||
libSDL2_image-devel \
|
||||
ncurses-devel \
|
||||
ninja \
|
||||
libnuma-devel \
|
||||
perl \
|
||||
libpixman-1-0-devel \
|
||||
python3-base \
|
||||
python3-virtualenv \
|
||||
rdma-core-devel \
|
||||
libSDL2-devel \
|
||||
snappy-devel \
|
||||
libspice-server-devel \
|
||||
systemd-devel \
|
||||
systemtap-sdt-devel \
|
||||
tar \
|
||||
usbredir-devel \
|
||||
virglrenderer-devel \
|
||||
xen-devel \
|
||||
vte-devel \
|
||||
zlib-devel
|
||||
ENV QEMU_CONFIGURE_OPTS --python=/usr/bin/python3.6
|
||||
|
||||
RUN zypper update -y && zypper --non-interactive install -y $PACKAGES
|
||||
RUN rpm -q $PACKAGES | sort > /packages.txt
|
@ -16,6 +16,7 @@
|
||||
|
||||
#include "hw/core/cpu.h"
|
||||
#include "tests/qtest/libqos/libqtest.h"
|
||||
#include "tests/qtest/libqos/pci-pc.h"
|
||||
#include "fuzz.h"
|
||||
#include "fork_fuzz.h"
|
||||
#include "exec/address-spaces.h"
|
||||
@ -762,10 +763,29 @@ static int locate_fuzz_objects(Object *child, void *opaque)
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static void pci_enum(gpointer pcidev, gpointer bus)
|
||||
{
|
||||
PCIDevice *dev = pcidev;
|
||||
QPCIDevice *qdev;
|
||||
int i;
|
||||
|
||||
qdev = qpci_device_find(bus, dev->devfn);
|
||||
g_assert(qdev != NULL);
|
||||
for (i = 0; i < 6; i++) {
|
||||
if (dev->io_regions[i].size) {
|
||||
qpci_iomap(qdev, i, NULL);
|
||||
}
|
||||
}
|
||||
qpci_device_enable(qdev);
|
||||
g_free(qdev);
|
||||
}
|
||||
|
||||
static void generic_pre_fuzz(QTestState *s)
|
||||
{
|
||||
GHashTableIter iter;
|
||||
MemoryRegion *mr;
|
||||
QPCIBus *pcibus;
|
||||
char **result;
|
||||
|
||||
if (!getenv("QEMU_FUZZ_OBJECTS")) {
|
||||
@ -810,6 +830,10 @@ static void generic_pre_fuzz(QTestState *s)
|
||||
exit(1);
|
||||
}
|
||||
|
||||
pcibus = qpci_new_pc(s, NULL);
|
||||
g_ptr_array_foreach(fuzzable_pci_devices, pci_enum, pcibus);
|
||||
qpci_free_pc(pcibus);
|
||||
|
||||
counter_shm_init();
|
||||
}
|
||||
|
||||
|
@ -1279,7 +1279,7 @@ void qtest_cb_for_every_machine(void (*cb)(const char *machine),
|
||||
g_assert(qstr);
|
||||
mname = qstring_get_str(qstr);
|
||||
/* Ignore machines that cannot be used for qtests */
|
||||
if (!memcmp("xenfv", mname, 5) || g_str_equal("xenpv", mname)) {
|
||||
if (!strncmp("xenfv", mname, 5) || g_str_equal("xenpv", mname)) {
|
||||
continue;
|
||||
}
|
||||
if (!skip_old_versioned || !qtest_is_old_versioned_machine(mname)) {
|
||||
|
@ -59,7 +59,7 @@ void *qemu_try_memalign(size_t alignment, size_t size)
|
||||
|
||||
g_assert(size != 0);
|
||||
g_assert(is_power_of_2(alignment));
|
||||
ptr = _aligned_malloc(alignment, size);
|
||||
ptr = _aligned_malloc(size, alignment);
|
||||
trace_qemu_memalign(alignment, size, ptr);
|
||||
return ptr;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user