diff options
author | John Baldwin <jhb@FreeBSD.org> | 2016-06-12 21:24:42 -0700 |
---|---|---|
committer | John Baldwin <jhb@FreeBSD.org> | 2016-06-24 10:46:03 -0700 |
commit | e6cdd38e8f0fead14cd3c528e9a4b666e1871752 (patch) | |
tree | 357ce93c54e5400c660476da9aac57d511aca674 /gdb/syscalls | |
parent | 82372b2f2747d347e24bb10ddc7bc7e828222a42 (diff) | |
download | gdb-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.
Diffstat (limited to 'gdb/syscalls')
-rw-r--r-- | gdb/syscalls/freebsd.xml | 410 |
1 files changed, 410 insertions, 0 deletions
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> |