binutils-gdb/gdb/syscalls/freebsd.xml

411 lines
17 KiB
XML
Raw Normal View History

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.
2016-06-13 12:24:42 +08:00
<?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>