Commit 70680858 authored by Peter Maydell's avatar Peter Maydell
Browse files

Merge remote-tracking branch 'remotes/pmaydell/tags/pull-bsd-user-20140611' into staging



bsd-user queue:
 * build fixes
 * improvements to strace

# gpg: Signature made Wed 11 Jun 2014 15:23:40 BST using RSA key ID 14360CDE
# gpg: Good signature from "Peter Maydell <peter.maydell@linaro.org>"

* remotes/pmaydell/tags/pull-bsd-user-20140611:
  bsd-user: Fix syscall format, add strace support for more syscalls
  bsd-user: Implement strace support for thr_* syscalls
  bsd-user: Implement strace support for extattr_* syscalls
  bsd-user: Implement strace support for __acl_* syscalls
  bsd-user: Implement strace support for print_ioctl syscall
  bsd-user: Implement strace support for print_sysctl syscall
  bsd-user: GPL v2 attribution update and style
  bsd-user: add HOST_VARIANT_DIR for various *BSD dependent code
  exec: replace ffsl with ctzl
  vhost: replace ffsl with ctzl
  xen: replace ffsl with ctzl
  util/qemu-openpty: fix build with musl libc by include termios.h as fallback
  bsd-user/mmap.c: Don't try to override g_malloc/g_free
  util/hbitmap.c: Use ctpopl rather than reimplementing a local equivalent
  bsd-user: refresh freebsd system call numbers

Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
parents c5cb1afc c4af6d4b
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -102,7 +102,8 @@ endif #CONFIG_LINUX_USER

ifdef CONFIG_BSD_USER

QEMU_CFLAGS+=-I$(SRC_PATH)/bsd-user -I$(SRC_PATH)/bsd-user/$(TARGET_ABI_DIR)
QEMU_CFLAGS+=-I$(SRC_PATH)/bsd-user -I$(SRC_PATH)/bsd-user/$(TARGET_ABI_DIR) \
			 -I$(SRC_PATH)/bsd-user/$(HOST_VARIANT_DIR)

obj-y += bsd-user/
obj-y += gdbstub.o user-exec.o
+68 −8
Original line number Diff line number Diff line
{ TARGET_FREEBSD_NR___getcwd, "__getcwd", NULL, NULL, NULL },
/*
 *  FreeBSD strace list
 *
 *
 *  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/>.
 */

{ TARGET_FREEBSD_NR___acl_aclcheck_fd, "__acl_aclcheck_fd", "%s(%d, %d, %#x)", NULL, NULL },
{ TARGET_FREEBSD_NR___acl_aclcheck_file, "__acl_aclcheck_file", "%s(\"%s\", %d, %#x)", NULL, NULL },
{ TARGET_FREEBSD_NR___acl_aclcheck_link, "__acl_aclcheck_link", "%s(\"%s\", %d, %#x)", NULL, NULL },
{ TARGET_FREEBSD_NR___acl_delete_fd, "__acl_delete_fd", "%s(%d, %d)", NULL, NULL },
{ TARGET_FREEBSD_NR___acl_delete_file, "__acl_delete_file", "%s(\"%s\", %d)", NULL, NULL },
{ TARGET_FREEBSD_NR___acl_delete_link, "__acl_delete_link", "%s(\"%s\", %d)", NULL, NULL },
{ TARGET_FREEBSD_NR___acl_get_fd, "__acl_get_fd", "%s(%d, %d, %#x)", NULL, NULL },
{ TARGET_FREEBSD_NR___acl_get_file, "__acl_get_file", "%s(\"%s\", %d, %#x)", NULL, NULL },
{ TARGET_FREEBSD_NR___acl_get_link, "__acl_get_link", "%s(\"%s\", %d, %#x)", NULL, NULL },
{ 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___semctl, "__semctl", NULL, NULL, NULL },
{ TARGET_FREEBSD_NR___syscall, "__syscall", NULL, NULL, NULL },
{ TARGET_FREEBSD_NR___sysctl, "__sysctl", 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 },
{ TARGET_FREEBSD_NR_accept, "accept", "%s(%d,%#x,%#x)", NULL, NULL },
{ TARGET_FREEBSD_NR_access, "access", "%s(\"%s\",%#o)", NULL, NULL },
{ TARGET_FREEBSD_NR_acct, "acct", NULL, NULL, NULL },
@@ -20,24 +50,41 @@
{ TARGET_FREEBSD_NR_connect, "connect", "%s(%d,%#x,%d)", 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 },
{ TARGET_FREEBSD_NR_execve, "execve", NULL, print_execve, NULL },
{ TARGET_FREEBSD_NR_exit, "exit", "%s(%d)\n", NULL, NULL },
{ TARGET_FREEBSD_NR_extattrctl, "extattrctl", "%s(\"%s\", %d, \"%s\", %d, \"%s\"", NULL, NULL },
{ TARGET_FREEBSD_NR_extattr_delete_fd, "extattr_delete_fd", "%s(%d, %d, \"%s\")", NULL, NULL },
{ TARGET_FREEBSD_NR_extattr_delete_file, "extattr_delete_file", "%s(\"%s\", %d, \"%s\")", NULL, NULL },
{ TARGET_FREEBSD_NR_extattr_delete_link, "extattr_delete_link", "%s(\"%s\", %d, \"%s\")", NULL, NULL },
{ TARGET_FREEBSD_NR_extattr_get_fd, "extattr_get_fd", "%s(%d, %d, \"%s\", %#x, %d)", NULL, NULL },
{ 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_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 },
{ TARGET_FREEBSD_NR_extattr_set_link, "extattr_set_link", "%s(\"%s\", %d, \"%s\", %#x, %d)", NULL, NULL },
{ TARGET_FREEBSD_NR_fchdir, "fchdir", NULL, NULL, NULL },
{ TARGET_FREEBSD_NR_fchflags, "fchflags", NULL, NULL, NULL },
{ TARGET_FREEBSD_NR_fchmod, "fchmod", "%s(%d,%#o)", NULL, NULL },
{ TARGET_FREEBSD_NR_fchown, "fchown", "%s(\"%s\",%d,%d)", NULL, NULL },
{ TARGET_FREEBSD_NR_fchown, "fchown", "%s(%d,%d,%d)", NULL, NULL },
{ TARGET_FREEBSD_NR_fcntl, "fcntl", 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_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,%p)", NULL, NULL },
{ TARGET_FREEBSD_NR_fstatfs, "fstatfs", "%s(%d,%p)", 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_fsync, "fsync", NULL, NULL, NULL },
{ TARGET_FREEBSD_NR_ftruncate, "ftruncate", NULL, 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_getegid, "getegid", "%s()", NULL, NULL },
@@ -63,7 +110,7 @@
{ TARGET_FREEBSD_NR_getsockopt, "getsockopt", NULL, NULL, NULL },
{ TARGET_FREEBSD_NR_gettimeofday, "gettimeofday", NULL, NULL, NULL },
{ TARGET_FREEBSD_NR_getuid, "getuid", "%s()", NULL, NULL },
{ TARGET_FREEBSD_NR_ioctl, "ioctl", NULL, NULL, NULL },
{ TARGET_FREEBSD_NR_ioctl, "ioctl", NULL, print_ioctl, NULL },
{ TARGET_FREEBSD_NR_issetugid, "issetugid", "%s()", NULL, NULL },
{ TARGET_FREEBSD_NR_kevent, "kevent", NULL, NULL, NULL },
{ TARGET_FREEBSD_NR_kill, "kill", NULL, NULL, NULL },
@@ -72,6 +119,7 @@
{ TARGET_FREEBSD_NR_lchown, "lchown", NULL, NULL, NULL },
{ TARGET_FREEBSD_NR_link, "link", "%s(\"%s\",\"%s\")", NULL, NULL },
{ 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_madvise, "madvise", NULL, NULL, NULL },
@@ -96,7 +144,8 @@
{ TARGET_FREEBSD_NR_nanosleep, "nanosleep", NULL, NULL, NULL },
{ TARGET_FREEBSD_NR_nfssvc, "nfssvc", NULL, NULL, NULL },
{ TARGET_FREEBSD_NR_open, "open", "%s(\"%s\",%#x,%#o)", NULL, NULL },
{ TARGET_FREEBSD_NR_pathconf, "pathconf", NULL, 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_poll, "poll", NULL, NULL, NULL },
{ TARGET_FREEBSD_NR_pread, "pread", NULL, NULL, NULL },
@@ -116,6 +165,7 @@
{ TARGET_FREEBSD_NR_revoke, "revoke", NULL, NULL, NULL },
{ TARGET_FREEBSD_NR_rfork, "rfork", NULL, NULL, NULL },
{ 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_yield, "sched_yield", NULL, NULL, NULL },
{ TARGET_FREEBSD_NR_select, "select", NULL, NULL, NULL },
@@ -123,6 +173,7 @@
{ TARGET_FREEBSD_NR_semop, "semop", NULL, NULL, NULL },
{ TARGET_FREEBSD_NR_sendmsg, "sendmsg", NULL, NULL, NULL },
{ TARGET_FREEBSD_NR_sendto, "sendto", NULL, NULL, NULL },
{ TARGET_FREEBSD_NR_setcontext, "setcontext", "%s(%#x)", NULL, NULL },
{ TARGET_FREEBSD_NR_setegid, "setegid", NULL, NULL, NULL },
{ TARGET_FREEBSD_NR_seteuid, "seteuid", NULL, NULL, NULL },
{ TARGET_FREEBSD_NR_setgid, "setgid", NULL, NULL, NULL },
@@ -151,7 +202,7 @@
{ TARGET_FREEBSD_NR_sigprocmask, "sigprocmask", NULL, NULL, NULL },
{ TARGET_FREEBSD_NR_sigreturn, "sigreturn", NULL, NULL, NULL },
{ TARGET_FREEBSD_NR_sigsuspend, "sigsuspend", NULL, NULL, NULL },
{ TARGET_FREEBSD_NR_socket, "socket", NULL, NULL, NULL },
{ 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 },
@@ -160,6 +211,15 @@
{ TARGET_FREEBSD_NR_sync, "sync", NULL, NULL, NULL },
{ TARGET_FREEBSD_NR_sysarch, "sysarch", NULL, NULL, NULL },
{ TARGET_FREEBSD_NR_syscall, "syscall", 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 },
{ TARGET_FREEBSD_NR_thr_kill2, "thr_kill2", "%s(%d, %d, %d)", NULL, NULL },
{ TARGET_FREEBSD_NR_thr_new, "thr_new", "%s(%#x, %d)", NULL, NULL },
{ TARGET_FREEBSD_NR_thr_self, "thr_self", "%s(%#x)", NULL, NULL },
{ TARGET_FREEBSD_NR_thr_set_name, "thr_set_name", "%s(%d, \"%s\")", NULL, NULL },
{ TARGET_FREEBSD_NR_thr_suspend, "thr_suspend", "%s(%d, %#x)", NULL, NULL },
{ TARGET_FREEBSD_NR_thr_wake, "thr_wake", "%s(%d)", NULL, NULL },
{ TARGET_FREEBSD_NR_truncate, "truncate", NULL, NULL, NULL },
{ TARGET_FREEBSD_NR_umask, "umask", "%s(%#o)", NULL, NULL },
{ TARGET_FREEBSD_NR_unlink, "unlink", "%s(\"%s\")", NULL, NULL },
+445 −368
Original line number Diff line number Diff line
/*
 * System call numbers.
 *
 * $FreeBSD: src/sys/sys/syscall.h,v 1.224 2008/08/24 21:23:08 rwatson Exp $
 * created from FreeBSD: head/sys/kern/syscalls.master 182123 2008-08-24 21:20:35Z rwatson
 * created from FreeBSD: releng/9.1/sys/kern/syscalls.master 229723
 * 2012-01-06 19:29:16Z jhb
 */

#define TARGET_FREEBSD_NR_syscall   0
@@ -13,8 +13,10 @@
#define TARGET_FREEBSD_NR_open  5
#define TARGET_FREEBSD_NR_close 6
#define TARGET_FREEBSD_NR_wait4 7
                /* 8 is old creat */
#define TARGET_FREEBSD_NR_link  9
#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
@@ -22,6 +24,7 @@
#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
#define TARGET_FREEBSD_NR_mount 21
#define TARGET_FREEBSD_NR_unmount   22
@@ -40,16 +43,21 @@
#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 */
#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_acct  51
                /* 52 is old sigpending */
#define TARGET_FREEBSD_NR_sigaltstack   53
#define TARGET_FREEBSD_NR_ioctl 54
#define TARGET_FREEBSD_NR_reboot    55
@@ -59,22 +67,33 @@
#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_msync 65
#define TARGET_FREEBSD_NR_vfork 66
                /* 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 */
#define TARGET_FREEBSD_NR_getdtablesize 89
#define TARGET_FREEBSD_NR_dup2  90
#define TARGET_FREEBSD_NR_fcntl 92
@@ -83,10 +102,23 @@
#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_getpriority   100
                /* 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_gettimeofday  116
#define TARGET_FREEBSD_NR_getrusage 117
#define TARGET_FREEBSD_NR_getsockopt    118
@@ -95,9 +127,12 @@
#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_flock 131
#define TARGET_FREEBSD_NR_mkfifo    132
#define TARGET_FREEBSD_NR_sendto    133
@@ -106,18 +141,29 @@
#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_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_getfh 161
#define TARGET_FREEBSD_NR_getdomainname       162
#define TARGET_FREEBSD_NR_setdomainname       163
#define TARGET_FREEBSD_NR_uname       164
#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
@@ -150,15 +196,15 @@
#define TARGET_FREEBSD_NR_futimes   206
#define TARGET_FREEBSD_NR_getpgid   207
#define TARGET_FREEBSD_NR_poll  209
#define TARGET_FREEBSD_NR___semctl    220
#define TARGET_FREEBSD_NR_freebsd7___semctl 220
#define TARGET_FREEBSD_NR_semget    221
#define TARGET_FREEBSD_NR_semop 222
#define TARGET_FREEBSD_NR_msgctl      224
#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_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_clock_gettime 232
@@ -205,6 +251,7 @@
#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
@@ -213,6 +260,8 @@
#define TARGET_FREEBSD_NR_oaio_write    319
#define TARGET_FREEBSD_NR_olio_listio   320
#define TARGET_FREEBSD_NR_yield 321
                /* 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
@@ -228,6 +277,7 @@
#define TARGET_FREEBSD_NR_freebsd4_sendfile 336
#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
@@ -256,8 +306,8 @@
#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_nfsclnt     375
#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
@@ -371,3 +421,30 @@
#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_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_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_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_add_rule 528
#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
+0 −60
Original line number Diff line number Diff line
@@ -74,66 +74,6 @@ void mmap_unlock(void)
}
#endif

static void *bsd_vmalloc(size_t size)
{
    void *p;
    mmap_lock();
    /* Use map and mark the pages as used.  */
    p = mmap(NULL, size, PROT_READ | PROT_WRITE,
             MAP_PRIVATE | MAP_ANON, -1, 0);

    if (h2g_valid(p)) {
        /* Allocated region overlaps guest address space.
           This may recurse.  */
        abi_ulong addr = h2g(p);
        page_set_flags(addr & TARGET_PAGE_MASK, TARGET_PAGE_ALIGN(addr + size),
                       PAGE_RESERVED);
    }

    mmap_unlock();
    return p;
}

void *g_malloc(size_t size)
{
    char * p;
    size += 16;
    p = bsd_vmalloc(size);
    *(size_t *)p = size;
    return p + 16;
}

/* We use map, which is always zero initialized.  */
void * g_malloc0(size_t size)
{
    return g_malloc(size);
}

void g_free(void *ptr)
{
    /* FIXME: We should unmark the reserved pages here.  However this gets
       complicated when one target page spans multiple host pages, so we
       don't bother.  */
    size_t *p;
    p = (size_t *)((char *)ptr - 16);
    munmap(p, *p);
}

void *g_realloc(void *ptr, size_t size)
{
    size_t old_size, copy;
    void *new_ptr;

    if (!ptr)
        return g_malloc(size);
    old_size = *(size_t *)((char *)ptr - 16);
    copy = old_size < size ? old_size : size;
    new_ptr = g_malloc(size);
    memcpy(new_ptr, ptr, copy);
    g_free(ptr);
    return new_ptr;
}

/* NOTE: all the constants are the HOST ones, but addresses are target. */
int target_mprotect(abi_ulong start, abi_ulong len, int prot)
{
+26 −0
Original line number Diff line number Diff line
/*
 *  qemu bsd user mode definition
 *
 *  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 QEMU_H
#define QEMU_H

@@ -150,6 +166,16 @@ void fork_end(int child);
#include "qemu/log.h"

/* strace.c */
struct syscallname {
    int nr;
    const char *name;
    const char *format;
    void (*call)(const struct syscallname *,
                 abi_long, abi_long, abi_long,
                 abi_long, abi_long, abi_long);
    void (*result)(const struct syscallname *, abi_long);
};

void
print_freebsd_syscall(int num,
                      abi_long arg1, abi_long arg2, abi_long arg3,
Loading