aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2016-06-12 21:24:42 -0700
committerJohn Baldwin <jhb@FreeBSD.org>2016-06-24 10:46:03 -0700
commite6cdd38e8f0fead14cd3c528e9a4b666e1871752 (patch)
tree357ce93c54e5400c660476da9aac57d511aca674
parent82372b2f2747d347e24bb10ddc7bc7e828222a42 (diff)
downloadgdb-e6cdd38e8f0fead14cd3c528e9a4b666e1871752.zip
gdb-e6cdd38e8f0fead14cd3c528e9a4b666e1871752.tar.gz
gdb-e6cdd38e8f0fead14cd3c528e9a4b666e1871752.tar.bz2
Add support for catching system calls to native FreeBSD targets.
All platforms on FreeBSD use a shared system call table, so use a single XML file to describe the system calls available on each FreeBSD platform. Recent versions of FreeBSD include the identifier of the current system call when reporting a system call entry or exit event in the ptrace_lwpinfo structure obtained via PT_LWPINFO in fbsd_wait. As such, FreeBSD native targets do not use the gdbarch method to fetch the system call code. In addition, FreeBSD register sets fetched via ptrace do not include an equivalent of 'orig_rax' (on amd64 for example), so the system call code cannot be extracted from the available registers during a system call exit. However, GDB assumes that system call catch points are not supported if the gdbarch method is not present. As a workaround, FreeBSD ABIs install a dummy gdbarch method that throws an internal_error if it is ever invoked. gdb/ChangeLog: * configure.ac: Check for support for system call LWP fields on FreeBSD. * config.in, configure: Rebuild. * data-directory/Makefile.in (SYSCALLS_FILES): Add freebsd.xml. * fbsd-nat.c (fbsd_wait) [HAVE_STRUCT_PTRACE_LWPINFO_PL_SYSCALL_CODE]: Report system call events. [HAVE_STRUCT_PTRACE_LWPINFO_PL_SYSCALL_CODE] (fbsd_set_syscall_catchpoint): New function. (fbsd_nat_add_target) [HAVE_STRUCT_PTRACE_LWPINFO_PL_SYSCALL_CODE]: Set "to_set_syscall_catchpoint" to "fbsd_set_syscall_catchpoint". * fbsd-tdep.c: Include xml-syscall.h (fbsd_get_syscall_number): New function. (fbsd_init_abi): Set XML system call file name. Add "get_syscall_number" gdbarch method. * syscalls/freebsd.xml: New file.
-rw-r--r--gdb/ChangeLog18
-rw-r--r--gdb/config.in3
-rwxr-xr-xgdb/configure14
-rw-r--r--gdb/configure.ac5
-rw-r--r--gdb/data-directory/Makefile.in3
-rw-r--r--gdb/fbsd-nat.c50
-rw-r--r--gdb/fbsd-tdep.c21
-rw-r--r--gdb/syscalls/freebsd.xml410
8 files changed, 523 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 22234be..d0dea70 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,23 @@
2016-06-24 John Baldwin <jhb@FreeBSD.org>
+ * configure.ac: Check for support for system call LWP fields on
+ FreeBSD.
+ * config.in, configure: Rebuild.
+ * data-directory/Makefile.in (SYSCALLS_FILES): Add freebsd.xml.
+ * fbsd-nat.c (fbsd_wait) [HAVE_STRUCT_PTRACE_LWPINFO_PL_SYSCALL_CODE]:
+ Report system call events.
+ [HAVE_STRUCT_PTRACE_LWPINFO_PL_SYSCALL_CODE]
+ (fbsd_set_syscall_catchpoint): New function.
+ (fbsd_nat_add_target) [HAVE_STRUCT_PTRACE_LWPINFO_PL_SYSCALL_CODE]:
+ Set "to_set_syscall_catchpoint" to "fbsd_set_syscall_catchpoint".
+ * fbsd-tdep.c: Include xml-syscall.h
+ (fbsd_get_syscall_number): New function.
+ (fbsd_init_abi): Set XML system call file name.
+ Add "get_syscall_number" gdbarch method.
+ * syscalls/freebsd.xml: New file.
+
+2016-06-24 John Baldwin <jhb@FreeBSD.org>
+
* fbsd-tdep.c: Include "auxv.h".
(fbsd_print_auxv_entry): New function.
(fbsd_init_abi): Install gdbarch "print_auxv_entry" method.
diff --git a/gdb/config.in b/gdb/config.in
index 905caf0..c82a5b4 100644
--- a/gdb/config.in
+++ b/gdb/config.in
@@ -456,6 +456,9 @@
/* Define to 1 if `struct ptrace_lwpinfo' is a member of `pl_tdname'. */
#undef HAVE_STRUCT_PTRACE_LWPINFO_PL_TDNAME
+/* Define to 1 if `struct ptrace_lwpinfo' is a member of `pl_syscall_code'. */
+#undef HAVE_STRUCT_PTRACE_LWPINFO_PL_SYSCALL_CODE
+
/* Define to 1 if your system has struct reg in <machine/reg.h>. */
#undef HAVE_STRUCT_REG
diff --git a/gdb/configure b/gdb/configure
index 60ea884..ea11b50 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -12927,6 +12927,20 @@ _ACEOF
fi
+# See if <sys/ptrace.h> supports syscall fields on FreeBSD. The
+# pl_syscall_code member of `struct ptrace_lwpinfo' was added in
+# FreeBSD 10.3.
+ac_fn_c_check_member "$LINENO" "struct ptrace_lwpinfo" "pl_syscall_code" "ac_cv_member_struct_ptrace_lwpinfo_pl_syscall_code" "#include <sys/ptrace.h>
+"
+if test "x$ac_cv_member_struct_ptrace_lwpinfo_pl_syscall_code" = x""yes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PTRACE_LWPINFO_PL_SYSCALL_CODE 1
+_ACEOF
+
+
+fi
+
# Detect which type of /proc is in use, such as for Solaris.
diff --git a/gdb/configure.ac b/gdb/configure.ac
index 6a72f72..920c228 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
@@ -1526,6 +1526,11 @@ fi
AC_CHECK_MEMBERS([struct ptrace_lwpinfo.pl_tdname], [], [],
[#include <sys/ptrace.h>])
+# See if <sys/ptrace.h> supports syscall fields on FreeBSD. The
+# pl_syscall_code member of `struct ptrace_lwpinfo' was added in
+# FreeBSD 10.3.
+AC_CHECK_MEMBERS([struct ptrace_lwpinfo.pl_syscall_code], [], [],
+ [#include <sys/ptrace.h>])
# Detect which type of /proc is in use, such as for Solaris.
diff --git a/gdb/data-directory/Makefile.in b/gdb/data-directory/Makefile.in
index c05f379..0beca55 100644
--- a/gdb/data-directory/Makefile.in
+++ b/gdb/data-directory/Makefile.in
@@ -51,7 +51,8 @@ SYSCALLS_FILES = \
i386-linux.xml amd64-linux.xml \
sparc-linux.xml sparc64-linux.xml \
mips-o32-linux.xml mips-n32-linux.xml mips-n64-linux.xml \
- s390-linux.xml s390x-linux.xml
+ s390-linux.xml s390x-linux.xml \
+ freebsd.xml
PYTHON_DIR = python
PYTHON_INSTALL_DIR = $(DESTDIR)$(GDB_DATADIR)/$(PYTHON_DIR)
diff --git a/gdb/fbsd-nat.c b/gdb/fbsd-nat.c
index dc65e29..c9548e9 100644
--- a/gdb/fbsd-nat.c
+++ b/gdb/fbsd-nat.c
@@ -779,6 +779,40 @@ fbsd_wait (struct target_ops *ops,
return wptid;
}
#endif
+
+ /* Note that PL_FLAG_SCE is set for any event reported while
+ a thread is executing a system call in the kernel. In
+ particular, signals that interrupt a sleep in a system
+ call will report this flag as part of their event. Stops
+ explicitly for system call entry and exit always use
+ SIGTRAP, so only treat SIGTRAP events as system call
+ entry/exit events. */
+ if (pl.pl_flags & (PL_FLAG_SCE | PL_FLAG_SCX)
+ && ourstatus->value.sig == SIGTRAP)
+ {
+#ifdef HAVE_STRUCT_PTRACE_LWPINFO_PL_SYSCALL_CODE
+ if (catch_syscall_enabled ())
+ {
+ if (catching_syscall_number (pl.pl_syscall_code))
+ {
+ if (pl.pl_flags & PL_FLAG_SCE)
+ ourstatus->kind = TARGET_WAITKIND_SYSCALL_ENTRY;
+ else
+ ourstatus->kind = TARGET_WAITKIND_SYSCALL_RETURN;
+ ourstatus->value.syscall_number = pl.pl_syscall_code;
+ return wptid;
+ }
+ }
+#endif
+ /* If the core isn't interested in this event, just
+ continue the process explicitly and wait for another
+ event. Note that PT_SYSCALL is "sticky" on FreeBSD
+ and once system call stops are enabled on a process
+ it stops for all system call entries and exits. */
+ if (ptrace (PT_CONTINUE, pid, (caddr_t) 1, 0) == -1)
+ perror_with_name (("ptrace"));
+ continue;
+ }
}
return wptid;
}
@@ -889,6 +923,19 @@ fbsd_remove_exec_catchpoint (struct target_ops *self, int pid)
return 0;
}
#endif
+
+#ifdef HAVE_STRUCT_PTRACE_LWPINFO_PL_SYSCALL_CODE
+static int
+fbsd_set_syscall_catchpoint (struct target_ops *self, int pid, int needed,
+ int any_count, int table_size, int *table)
+{
+
+ /* Ignore the arguments. inf-ptrace.c will use PT_SYSCALL which
+ will catch all system call entries and exits. The system calls
+ are filtered by GDB rather than the kernel. */
+ return 0;
+}
+#endif
#endif
void
@@ -925,6 +972,9 @@ fbsd_nat_add_target (struct target_ops *t)
t->to_insert_exec_catchpoint = fbsd_insert_exec_catchpoint;
t->to_remove_exec_catchpoint = fbsd_remove_exec_catchpoint;
#endif
+#ifdef HAVE_STRUCT_PTRACE_LWPINFO_PL_SYSCALL_CODE
+ t->to_set_syscall_catchpoint = fbsd_set_syscall_catchpoint;
+#endif
#endif
add_target (t);
}
diff --git a/gdb/fbsd-tdep.c b/gdb/fbsd-tdep.c
index e8f8605..4329f97 100644
--- a/gdb/fbsd-tdep.c
+++ b/gdb/fbsd-tdep.c
@@ -24,6 +24,7 @@
#include "regcache.h"
#include "regset.h"
#include "gdbthread.h"
+#include "xml-syscall.h"
#include "elf-bfd.h"
#include "fbsd-tdep.h"
@@ -317,6 +318,22 @@ fbsd_print_auxv_entry (struct gdbarch *gdbarch, struct ui_file *file,
fprint_auxv_entry (file, name, description, format, type, val);
}
+/* Implement the "get_syscall_number" gdbarch method. */
+
+static LONGEST
+fbsd_get_syscall_number (struct gdbarch *gdbarch,
+ ptid_t ptid)
+{
+
+ /* FreeBSD doesn't use gdbarch_get_syscall_number since FreeBSD
+ native targets fetch the system call number from the
+ 'pl_syscall_code' member of struct ptrace_lwpinfo in fbsd_wait.
+ However, system call catching requires this function to be
+ set. */
+
+ internal_error (__FILE__, __LINE__, _("fbsd_get_sycall_number called"));
+}
+
/* To be called from GDB_OSABI_FREEBSD_ELF handlers. */
void
@@ -326,4 +343,8 @@ fbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
set_gdbarch_core_thread_name (gdbarch, fbsd_core_thread_name);
set_gdbarch_make_corefile_notes (gdbarch, fbsd_make_corefile_notes);
set_gdbarch_print_auxv_entry (gdbarch, fbsd_print_auxv_entry);
+
+ /* `catch syscall' */
+ set_xml_syscall_file_name (gdbarch, "syscalls/freebsd.xml");
+ set_gdbarch_get_syscall_number (gdbarch, fbsd_get_syscall_number);
}
diff --git a/gdb/syscalls/freebsd.xml b/gdb/syscalls/freebsd.xml
new file mode 100644
index 0000000..fb7c38b
--- /dev/null
+++ b/gdb/syscalls/freebsd.xml
@@ -0,0 +1,410 @@
+<?xml version="1.0"?>
+<!-- Copyright (C) 2009-2016 Free Software Foundation, Inc.
+
+ Copying and distribution of this file, with or without modification,
+ are permitted in any medium without royalty provided the copyright
+ notice and this notice are preserved. -->
+
+<!DOCTYPE feature SYSTEM "gdb-syscalls.dtd">
+
+<!-- This file was generated using the following file:
+
+ /usr/src/sys/sys/syscall.h
+
+ The file mentioned above belongs to the FreeBSD Kernel. -->
+
+<syscalls_info>
+ <syscall name="syscall" number="0"/>
+ <syscall name="exit" number="1"/>
+ <syscall name="fork" number="2"/>
+ <syscall name="read" number="3"/>
+ <syscall name="write" number="4"/>
+ <syscall name="open" number="5"/>
+ <syscall name="close" number="6"/>
+ <syscall name="wait4" number="7"/>
+ <syscall name="link" number="9"/>
+ <syscall name="unlink" number="10"/>
+ <syscall name="chdir" number="12"/>
+ <syscall name="fchdir" number="13"/>
+ <syscall name="mknod" number="14"/>
+ <syscall name="chmod" number="15"/>
+ <syscall name="chown" number="16"/>
+ <syscall name="break" number="17"/>
+ <syscall name="getpid" number="20"/>
+ <syscall name="mount" number="21"/>
+ <syscall name="unmount" number="22"/>
+ <syscall name="setuid" number="23"/>
+ <syscall name="getuid" number="24"/>
+ <syscall name="geteuid" number="25"/>
+ <syscall name="ptrace" number="26"/>
+ <syscall name="recvmsg" number="27"/>
+ <syscall name="sendmsg" number="28"/>
+ <syscall name="recvfrom" number="29"/>
+ <syscall name="accept" number="30"/>
+ <syscall name="getpeername" number="31"/>
+ <syscall name="getsockname" number="32"/>
+ <syscall name="access" number="33"/>
+ <syscall name="chflags" number="34"/>
+ <syscall name="fchflags" number="35"/>
+ <syscall name="sync" number="36"/>
+ <syscall name="kill" number="37"/>
+ <syscall name="getppid" number="39"/>
+ <syscall name="dup" number="41"/>
+ <syscall name="pipe" number="42"/>
+ <syscall name="getegid" number="43"/>
+ <syscall name="profil" number="44"/>
+ <syscall name="ktrace" number="45"/>
+ <syscall name="getgid" number="47"/>
+ <syscall name="getlogin" number="49"/>
+ <syscall name="setlogin" number="50"/>
+ <syscall name="acct" number="51"/>
+ <syscall name="sigaltstack" number="53"/>
+ <syscall name="ioctl" number="54"/>
+ <syscall name="reboot" number="55"/>
+ <syscall name="revoke" number="56"/>
+ <syscall name="symlink" number="57"/>
+ <syscall name="readlink" number="58"/>
+ <syscall name="execve" number="59"/>
+ <syscall name="umask" number="60"/>
+ <syscall name="chroot" number="61"/>
+ <syscall name="msync" number="65"/>
+ <syscall name="vfork" number="66"/>
+ <syscall name="sbrk" number="69"/>
+ <syscall name="sstk" number="70"/>
+ <syscall name="vadvise" number="72"/>
+ <syscall name="munmap" number="73"/>
+ <syscall name="mprotect" number="74"/>
+ <syscall name="madvise" number="75"/>
+ <syscall name="mincore" number="78"/>
+ <syscall name="getgroups" number="79"/>
+ <syscall name="setgroups" number="80"/>
+ <syscall name="getpgrp" number="81"/>
+ <syscall name="setpgid" number="82"/>
+ <syscall name="setitimer" number="83"/>
+ <syscall name="swapon" number="85"/>
+ <syscall name="getitimer" number="86"/>
+ <syscall name="getdtablesize" number="89"/>
+ <syscall name="dup2" number="90"/>
+ <syscall name="fcntl" number="92"/>
+ <syscall name="select" number="93"/>
+ <syscall name="fsync" number="95"/>
+ <syscall name="setpriority" number="96"/>
+ <syscall name="socket" number="97"/>
+ <syscall name="connect" number="98"/>
+ <syscall name="getpriority" number="100"/>
+ <syscall name="bind" number="104"/>
+ <syscall name="setsockopt" number="105"/>
+ <syscall name="listen" number="106"/>
+ <syscall name="gettimeofday" number="116"/>
+ <syscall name="getrusage" number="117"/>
+ <syscall name="getsockopt" number="118"/>
+ <syscall name="readv" number="120"/>
+ <syscall name="writev" number="121"/>
+ <syscall name="settimeofday" number="122"/>
+ <syscall name="fchown" number="123"/>
+ <syscall name="fchmod" number="124"/>
+ <syscall name="setreuid" number="126"/>
+ <syscall name="setregid" number="127"/>
+ <syscall name="rename" number="128"/>
+ <syscall name="flock" number="131"/>
+ <syscall name="mkfifo" number="132"/>
+ <syscall name="sendto" number="133"/>
+ <syscall name="shutdown" number="134"/>
+ <syscall name="socketpair" number="135"/>
+ <syscall name="mkdir" number="136"/>
+ <syscall name="rmdir" number="137"/>
+ <syscall name="utimes" number="138"/>
+ <syscall name="adjtime" number="140"/>
+ <syscall name="setsid" number="147"/>
+ <syscall name="quotactl" number="148"/>
+ <syscall name="nlm_syscall" number="154"/>
+ <syscall name="nfssvc" number="155"/>
+ <syscall name="lgetfh" number="160"/>
+ <syscall name="getfh" number="161"/>
+ <syscall name="sysarch" number="165"/>
+ <syscall name="rtprio" number="166"/>
+ <syscall name="semsys" number="169"/>
+ <syscall name="msgsys" number="170"/>
+ <syscall name="shmsys" number="171"/>
+ <syscall name="setfib" number="175"/>
+ <syscall name="ntp_adjtime" number="176"/>
+ <syscall name="setgid" number="181"/>
+ <syscall name="setegid" number="182"/>
+ <syscall name="seteuid" number="183"/>
+ <syscall name="stat" number="188"/>
+ <syscall name="fstat" number="189"/>
+ <syscall name="lstat" number="190"/>
+ <syscall name="pathconf" number="191"/>
+ <syscall name="fpathconf" number="192"/>
+ <syscall name="getrlimit" number="194"/>
+ <syscall name="setrlimit" number="195"/>
+ <syscall name="getdirentries" number="196"/>
+ <syscall name="__syscall" number="198"/>
+ <syscall name="__sysctl" number="202"/>
+ <syscall name="mlock" number="203"/>
+ <syscall name="munlock" number="204"/>
+ <syscall name="undelete" number="205"/>
+ <syscall name="futimes" number="206"/>
+ <syscall name="getpgid" number="207"/>
+ <syscall name="poll" number="209"/>
+ <syscall name="freebsd7___semctl" number="220"/>
+ <syscall name="semget" number="221"/>
+ <syscall name="semop" number="222"/>
+ <syscall name="freebsd7_msgctl" number="224"/>
+ <syscall name="msgget" number="225"/>
+ <syscall name="msgsnd" number="226"/>
+ <syscall name="msgrcv" number="227"/>
+ <syscall name="shmat" number="228"/>
+ <syscall name="freebsd7_shmctl" number="229"/>
+ <syscall name="shmdt" number="230"/>
+ <syscall name="shmget" number="231"/>
+ <syscall name="clock_gettime" number="232"/>
+ <syscall name="clock_settime" number="233"/>
+ <syscall name="clock_getres" number="234"/>
+ <syscall name="ktimer_create" number="235"/>
+ <syscall name="ktimer_delete" number="236"/>
+ <syscall name="ktimer_settime" number="237"/>
+ <syscall name="ktimer_gettime" number="238"/>
+ <syscall name="ktimer_getoverrun" number="239"/>
+ <syscall name="nanosleep" number="240"/>
+ <syscall name="ffclock_getcounter" number="241"/>
+ <syscall name="ffclock_setestimate" number="242"/>
+ <syscall name="ffclock_getestimate" number="243"/>
+ <syscall name="clock_getcpuclockid2" number="247"/>
+ <syscall name="ntp_gettime" number="248"/>
+ <syscall name="minherit" number="250"/>
+ <syscall name="rfork" number="251"/>
+ <syscall name="openbsd_poll" number="252"/>
+ <syscall name="issetugid" number="253"/>
+ <syscall name="lchown" number="254"/>
+ <syscall name="aio_read" number="255"/>
+ <syscall name="aio_write" number="256"/>
+ <syscall name="lio_listio" number="257"/>
+ <syscall name="getdents" number="272"/>
+ <syscall name="lchmod" number="274"/>
+ <syscall name="netbsd_lchown" number="275"/>
+ <syscall name="lutimes" number="276"/>
+ <syscall name="netbsd_msync" number="277"/>
+ <syscall name="nstat" number="278"/>
+ <syscall name="nfstat" number="279"/>
+ <syscall name="nlstat" number="280"/>
+ <syscall name="preadv" number="289"/>
+ <syscall name="pwritev" number="290"/>
+ <syscall name="fhopen" number="298"/>
+ <syscall name="fhstat" number="299"/>
+ <syscall name="modnext" number="300"/>
+ <syscall name="modstat" number="301"/>
+ <syscall name="modfnext" number="302"/>
+ <syscall name="modfind" number="303"/>
+ <syscall name="kldload" number="304"/>
+ <syscall name="kldunload" number="305"/>
+ <syscall name="kldfind" number="306"/>
+ <syscall name="kldnext" number="307"/>
+ <syscall name="kldstat" number="308"/>
+ <syscall name="kldfirstmod" number="309"/>
+ <syscall name="getsid" number="310"/>
+ <syscall name="setresuid" number="311"/>
+ <syscall name="setresgid" number="312"/>
+ <syscall name="aio_return" number="314"/>
+ <syscall name="aio_suspend" number="315"/>
+ <syscall name="aio_cancel" number="316"/>
+ <syscall name="aio_error" number="317"/>
+ <syscall name="yield" number="321"/>
+ <syscall name="mlockall" number="324"/>
+ <syscall name="munlockall" number="325"/>
+ <syscall name="__getcwd" number="326"/>
+ <syscall name="sched_setparam" number="327"/>
+ <syscall name="sched_getparam" number="328"/>
+ <syscall name="sched_setscheduler" number="329"/>
+ <syscall name="sched_getscheduler" number="330"/>
+ <syscall name="sched_yield" number="331"/>
+ <syscall name="sched_get_priority_max" number="332"/>
+ <syscall name="sched_get_priority_min" number="333"/>
+ <syscall name="sched_rr_get_interval" number="334"/>
+ <syscall name="utrace" number="335"/>
+ <syscall name="kldsym" number="337"/>
+ <syscall name="jail" number="338"/>
+ <syscall name="nnpfs_syscall" number="339"/>
+ <syscall name="sigprocmask" number="340"/>
+ <syscall name="sigsuspend" number="341"/>
+ <syscall name="sigpending" number="343"/>
+ <syscall name="sigtimedwait" number="345"/>
+ <syscall name="sigwaitinfo" number="346"/>
+ <syscall name="__acl_get_file" number="347"/>
+ <syscall name="__acl_set_file" number="348"/>
+ <syscall name="__acl_get_fd" number="349"/>
+ <syscall name="__acl_set_fd" number="350"/>
+ <syscall name="__acl_delete_file" number="351"/>
+ <syscall name="__acl_delete_fd" number="352"/>
+ <syscall name="__acl_aclcheck_file" number="353"/>
+ <syscall name="__acl_aclcheck_fd" number="354"/>
+ <syscall name="extattrctl" number="355"/>
+ <syscall name="extattr_set_file" number="356"/>
+ <syscall name="extattr_get_file" number="357"/>
+ <syscall name="extattr_delete_file" number="358"/>
+ <syscall name="aio_waitcomplete" number="359"/>
+ <syscall name="getresuid" number="360"/>
+ <syscall name="getresgid" number="361"/>
+ <syscall name="kqueue" number="362"/>
+ <syscall name="kevent" number="363"/>
+ <syscall name="extattr_set_fd" number="371"/>
+ <syscall name="extattr_get_fd" number="372"/>
+ <syscall name="extattr_delete_fd" number="373"/>
+ <syscall name="__setugid" number="374"/>
+ <syscall name="eaccess" number="376"/>
+ <syscall name="afs3_syscall" number="377"/>
+ <syscall name="nmount" number="378"/>
+ <syscall name="__mac_get_proc" number="384"/>
+ <syscall name="__mac_set_proc" number="385"/>
+ <syscall name="__mac_get_fd" number="386"/>
+ <syscall name="__mac_get_file" number="387"/>
+ <syscall name="__mac_set_fd" number="388"/>
+ <syscall name="__mac_set_file" number="389"/>
+ <syscall name="kenv" number="390"/>
+ <syscall name="lchflags" number="391"/>
+ <syscall name="uuidgen" number="392"/>
+ <syscall name="sendfile" number="393"/>
+ <syscall name="mac_syscall" number="394"/>
+ <syscall name="getfsstat" number="395"/>
+ <syscall name="statfs" number="396"/>
+ <syscall name="fstatfs" number="397"/>
+ <syscall name="fhstatfs" number="398"/>
+ <syscall name="ksem_close" number="400"/>
+ <syscall name="ksem_post" number="401"/>
+ <syscall name="ksem_wait" number="402"/>
+ <syscall name="ksem_trywait" number="403"/>
+ <syscall name="ksem_init" number="404"/>
+ <syscall name="ksem_open" number="405"/>
+ <syscall name="ksem_unlink" number="406"/>
+ <syscall name="ksem_getvalue" number="407"/>
+ <syscall name="ksem_destroy" number="408"/>
+ <syscall name="__mac_get_pid" number="409"/>
+ <syscall name="__mac_get_link" number="410"/>
+ <syscall name="__mac_set_link" number="411"/>
+ <syscall name="extattr_set_link" number="412"/>
+ <syscall name="extattr_get_link" number="413"/>
+ <syscall name="extattr_delete_link" number="414"/>
+ <syscall name="__mac_execve" number="415"/>
+ <syscall name="sigaction" number="416"/>
+ <syscall name="sigreturn" number="417"/>
+ <syscall name="getcontext" number="421"/>
+ <syscall name="setcontext" number="422"/>
+ <syscall name="swapcontext" number="423"/>
+ <syscall name="swapoff" number="424"/>
+ <syscall name="__acl_get_link" number="425"/>
+ <syscall name="__acl_set_link" number="426"/>
+ <syscall name="__acl_delete_link" number="427"/>
+ <syscall name="__acl_aclcheck_link" number="428"/>
+ <syscall name="sigwait" number="429"/>
+ <syscall name="thr_create" number="430"/>
+ <syscall name="thr_exit" number="431"/>
+ <syscall name="thr_self" number="432"/>
+ <syscall name="thr_kill" number="433"/>
+ <syscall name="jail_attach" number="436"/>
+ <syscall name="extattr_list_fd" number="437"/>
+ <syscall name="extattr_list_file" number="438"/>
+ <syscall name="extattr_list_link" number="439"/>
+ <syscall name="ksem_timedwait" number="441"/>
+ <syscall name="thr_suspend" number="442"/>
+ <syscall name="thr_wake" number="443"/>
+ <syscall name="kldunloadf" number="444"/>
+ <syscall name="audit" number="445"/>
+ <syscall name="auditon" number="446"/>
+ <syscall name="getauid" number="447"/>
+ <syscall name="setauid" number="448"/>
+ <syscall name="getaudit" number="449"/>
+ <syscall name="setaudit" number="450"/>
+ <syscall name="getaudit_addr" number="451"/>
+ <syscall name="setaudit_addr" number="452"/>
+ <syscall name="auditctl" number="453"/>
+ <syscall name="_umtx_op" number="454"/>
+ <syscall name="thr_new" number="455"/>
+ <syscall name="sigqueue" number="456"/>
+ <syscall name="kmq_open" number="457"/>
+ <syscall name="kmq_setattr" number="458"/>
+ <syscall name="kmq_timedreceive" number="459"/>
+ <syscall name="kmq_timedsend" number="460"/>
+ <syscall name="kmq_notify" number="461"/>
+ <syscall name="kmq_unlink" number="462"/>
+ <syscall name="abort2" number="463"/>
+ <syscall name="thr_set_name" number="464"/>
+ <syscall name="aio_fsync" number="465"/>
+ <syscall name="rtprio_thread" number="466"/>
+ <syscall name="sctp_peeloff" number="471"/>
+ <syscall name="sctp_generic_sendmsg" number="472"/>
+ <syscall name="sctp_generic_sendmsg_iov" number="473"/>
+ <syscall name="sctp_generic_recvmsg" number="474"/>
+ <syscall name="pread" number="475"/>
+ <syscall name="pwrite" number="476"/>
+ <syscall name="mmap" number="477"/>
+ <syscall name="lseek" number="478"/>
+ <syscall name="truncate" number="479"/>
+ <syscall name="ftruncate" number="480"/>
+ <syscall name="thr_kill2" number="481"/>
+ <syscall name="shm_open" number="482"/>
+ <syscall name="shm_unlink" number="483"/>
+ <syscall name="cpuset" number="484"/>
+ <syscall name="cpuset_setid" number="485"/>
+ <syscall name="cpuset_getid" number="486"/>
+ <syscall name="cpuset_getaffinity" number="487"/>
+ <syscall name="cpuset_setaffinity" number="488"/>
+ <syscall name="faccessat" number="489"/>
+ <syscall name="fchmodat" number="490"/>
+ <syscall name="fchownat" number="491"/>
+ <syscall name="fexecve" number="492"/>
+ <syscall name="fstatat" number="493"/>
+ <syscall name="futimesat" number="494"/>
+ <syscall name="linkat" number="495"/>
+ <syscall name="mkdirat" number="496"/>
+ <syscall name="mkfifoat" number="497"/>
+ <syscall name="mknodat" number="498"/>
+ <syscall name="openat" number="499"/>
+ <syscall name="readlinkat" number="500"/>
+ <syscall name="renameat" number="501"/>
+ <syscall name="symlinkat" number="502"/>
+ <syscall name="unlinkat" number="503"/>
+ <syscall name="posix_openpt" number="504"/>
+ <syscall name="gssd_syscall" number="505"/>
+ <syscall name="jail_get" number="506"/>
+ <syscall name="jail_set" number="507"/>
+ <syscall name="jail_remove" number="508"/>
+ <syscall name="closefrom" number="509"/>
+ <syscall name="__semctl" number="510"/>
+ <syscall name="msgctl" number="511"/>
+ <syscall name="shmctl" number="512"/>
+ <syscall name="lpathconf" number="513"/>
+ <syscall name="__cap_rights_get" number="515"/>
+ <syscall name="cap_enter" number="516"/>
+ <syscall name="cap_getmode" number="517"/>
+ <syscall name="pdfork" number="518"/>
+ <syscall name="pdkill" number="519"/>
+ <syscall name="pdgetpid" number="520"/>
+ <syscall name="pselect" number="522"/>
+ <syscall name="getloginclass" number="523"/>
+ <syscall name="setloginclass" number="524"/>
+ <syscall name="rctl_get_racct" number="525"/>
+ <syscall name="rctl_get_rules" number="526"/>
+ <syscall name="rctl_get_limits" number="527"/>
+ <syscall name="rctl_add_rule" number="528"/>
+ <syscall name="rctl_remove_rule" number="529"/>
+ <syscall name="posix_fallocate" number="530"/>
+ <syscall name="posix_fadvise" number="531"/>
+ <syscall name="wait6" number="532"/>
+ <syscall name="cap_rights_limit" number="533"/>
+ <syscall name="cap_ioctls_limit" number="534"/>
+ <syscall name="cap_ioctls_get" number="535"/>
+ <syscall name="cap_fcntls_limit" number="536"/>
+ <syscall name="cap_fcntls_get" number="537"/>
+ <syscall name="bindat" number="538"/>
+ <syscall name="connectat" number="539"/>
+ <syscall name="chflagsat" number="540"/>
+ <syscall name="accept4" number="541"/>
+ <syscall name="pipe2" number="542"/>
+ <syscall name="aio_mlock" number="543"/>
+ <syscall name="procctl" number="544"/>
+ <syscall name="ppoll" number="545"/>
+ <syscall name="futimens" number="546"/>
+ <syscall name="utimensat" number="547"/>
+ <syscall name="numa_getaffinity" number="548"/>
+ <syscall name="numa_setaffinity" number="549"/>
+</syscalls_info>