| 1 | /* Target-dependent code for GNU/Linux AMD64. |
| 2 | |
| 3 | Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc. |
| 4 | |
| 5 | This file is part of GDB. |
| 6 | |
| 7 | This program is free software; you can redistribute it and/or modify |
| 8 | it under the terms of the GNU General Public License as published by |
| 9 | the Free Software Foundation; either version 3 of the License, or |
| 10 | (at your option) any later version. |
| 11 | |
| 12 | This program is distributed in the hope that it will be useful, |
| 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 15 | GNU General Public License for more details. |
| 16 | |
| 17 | You should have received a copy of the GNU General Public License |
| 18 | along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
| 19 | |
| 20 | #ifndef AMD64_LINUX_TDEP_H |
| 21 | #define AMD64_LINUX_TDEP_H |
| 22 | |
| 23 | /* Like for i386 GNU/Linux, there is an extra "register" |
| 24 | used to control syscall restarting. */ |
| 25 | |
| 26 | /* Register number for the "orig_rax" register. If this register |
| 27 | contains a value >= 0 it is interpreted as the system call number |
| 28 | that the kernel is supposed to restart. */ |
| 29 | #define AMD64_LINUX_ORIG_RAX_REGNUM (AMD64_MXCSR_REGNUM + 1) |
| 30 | |
| 31 | /* Total number of registers for GNU/Linux. */ |
| 32 | #define AMD64_LINUX_NUM_REGS (AMD64_LINUX_ORIG_RAX_REGNUM + 1) |
| 33 | |
| 34 | /* Enum that defines the syscall identifiers for amd64 linux. |
| 35 | Used for process record/replay, these will be translated into |
| 36 | a gdb-canonical set of syscall ids in linux-record.c. */ |
| 37 | |
| 38 | enum amd64_syscall { |
| 39 | amd64_sys_read = 0, |
| 40 | amd64_sys_write = 1, |
| 41 | amd64_sys_open = 2, |
| 42 | amd64_sys_close = 3, |
| 43 | amd64_sys_newstat = 4, |
| 44 | amd64_sys_newfstat = 5, |
| 45 | amd64_sys_newlstat = 6, |
| 46 | amd64_sys_poll = 7, |
| 47 | amd64_sys_lseek = 8, |
| 48 | amd64_sys_mmap = 9, |
| 49 | amd64_sys_mprotect = 10, |
| 50 | amd64_sys_munmap = 11, |
| 51 | amd64_sys_brk = 12, |
| 52 | amd64_sys_rt_sigaction = 13, |
| 53 | amd64_sys_rt_sigprocmask = 14, |
| 54 | amd64_sys_rt_sigreturn = 15, |
| 55 | amd64_sys_ioctl = 16, |
| 56 | amd64_sys_pread64 = 17, |
| 57 | amd64_sys_pwrite64 = 18, |
| 58 | amd64_sys_readv = 19, |
| 59 | amd64_sys_writev = 20, |
| 60 | amd64_sys_access = 21, |
| 61 | amd64_sys_pipe = 22, |
| 62 | amd64_sys_select = 23, |
| 63 | amd64_sys_sched_yield = 24, |
| 64 | amd64_sys_mremap = 25, |
| 65 | amd64_sys_msync = 26, |
| 66 | amd64_sys_mincore = 27, |
| 67 | amd64_sys_madvise = 28, |
| 68 | amd64_sys_shmget = 29, |
| 69 | amd64_sys_shmat = 30, |
| 70 | amd64_sys_shmctl = 31, |
| 71 | amd64_sys_dup = 32, |
| 72 | amd64_sys_dup2 = 33, |
| 73 | amd64_sys_pause = 34, |
| 74 | amd64_sys_nanosleep = 35, |
| 75 | amd64_sys_getitimer = 36, |
| 76 | amd64_sys_alarm = 37, |
| 77 | amd64_sys_setitimer = 38, |
| 78 | amd64_sys_getpid = 39, |
| 79 | amd64_sys_sendfile64 = 40, |
| 80 | amd64_sys_socket = 41, |
| 81 | amd64_sys_connect = 42, |
| 82 | amd64_sys_accept = 43, |
| 83 | amd64_sys_sendto = 44, |
| 84 | amd64_sys_recvfrom = 45, |
| 85 | amd64_sys_sendmsg = 46, |
| 86 | amd64_sys_recvmsg = 47, |
| 87 | amd64_sys_shutdown = 48, |
| 88 | amd64_sys_bind = 49, |
| 89 | amd64_sys_listen = 50, |
| 90 | amd64_sys_getsockname = 51, |
| 91 | amd64_sys_getpeername = 52, |
| 92 | amd64_sys_socketpair = 53, |
| 93 | amd64_sys_setsockopt = 54, |
| 94 | amd64_sys_getsockopt = 55, |
| 95 | amd64_sys_clone = 56, |
| 96 | amd64_sys_fork = 57, |
| 97 | amd64_sys_vfork = 58, |
| 98 | amd64_sys_execve = 59, |
| 99 | amd64_sys_exit = 60, |
| 100 | amd64_sys_wait4 = 61, |
| 101 | amd64_sys_kill = 62, |
| 102 | amd64_sys_uname = 63, |
| 103 | amd64_sys_semget = 64, |
| 104 | amd64_sys_semop = 65, |
| 105 | amd64_sys_semctl = 66, |
| 106 | amd64_sys_shmdt = 67, |
| 107 | amd64_sys_msgget = 68, |
| 108 | amd64_sys_msgsnd = 69, |
| 109 | amd64_sys_msgrcv = 70, |
| 110 | amd64_sys_msgctl = 71, |
| 111 | amd64_sys_fcntl = 72, |
| 112 | amd64_sys_flock = 73, |
| 113 | amd64_sys_fsync = 74, |
| 114 | amd64_sys_fdatasync = 75, |
| 115 | amd64_sys_truncate = 76, |
| 116 | amd64_sys_ftruncate = 77, |
| 117 | amd64_sys_getdents = 78, |
| 118 | amd64_sys_getcwd = 79, |
| 119 | amd64_sys_chdir = 80, |
| 120 | amd64_sys_fchdir = 81, |
| 121 | amd64_sys_rename = 82, |
| 122 | amd64_sys_mkdir = 83, |
| 123 | amd64_sys_rmdir = 84, |
| 124 | amd64_sys_creat = 85, |
| 125 | amd64_sys_link = 86, |
| 126 | amd64_sys_unlink = 87, |
| 127 | amd64_sys_symlink = 88, |
| 128 | amd64_sys_readlink = 89, |
| 129 | amd64_sys_chmod = 90, |
| 130 | amd64_sys_fchmod = 91, |
| 131 | amd64_sys_chown = 92, |
| 132 | amd64_sys_fchown = 93, |
| 133 | amd64_sys_lchown = 94, |
| 134 | amd64_sys_umask = 95, |
| 135 | amd64_sys_gettimeofday = 96, |
| 136 | amd64_sys_getrlimit = 97, |
| 137 | amd64_sys_getrusage = 98, |
| 138 | amd64_sys_sysinfo = 99, |
| 139 | amd64_sys_times = 100, |
| 140 | amd64_sys_ptrace = 101, |
| 141 | amd64_sys_getuid = 102, |
| 142 | amd64_sys_syslog = 103, |
| 143 | amd64_sys_getgid = 104, |
| 144 | amd64_sys_setuid = 105, |
| 145 | amd64_sys_setgid = 106, |
| 146 | amd64_sys_geteuid = 107, |
| 147 | amd64_sys_getegid = 108, |
| 148 | amd64_sys_setpgid = 109, |
| 149 | amd64_sys_getppid = 110, |
| 150 | amd64_sys_getpgrp = 111, |
| 151 | amd64_sys_setsid = 112, |
| 152 | amd64_sys_setreuid = 113, |
| 153 | amd64_sys_setregid = 114, |
| 154 | amd64_sys_getgroups = 115, |
| 155 | amd64_sys_setgroups = 116, |
| 156 | amd64_sys_setresuid = 117, |
| 157 | amd64_sys_getresuid = 118, |
| 158 | amd64_sys_setresgid = 119, |
| 159 | amd64_sys_getresgid = 120, |
| 160 | amd64_sys_getpgid = 121, |
| 161 | amd64_sys_setfsuid = 122, |
| 162 | amd64_sys_setfsgid = 123, |
| 163 | amd64_sys_getsid = 124, |
| 164 | amd64_sys_capget = 125, |
| 165 | amd64_sys_capset = 126, |
| 166 | amd64_sys_rt_sigpending = 127, |
| 167 | amd64_sys_rt_sigtimedwait = 128, |
| 168 | amd64_sys_rt_sigqueueinfo = 129, |
| 169 | amd64_sys_rt_sigsuspend = 130, |
| 170 | amd64_sys_sigaltstack = 131, |
| 171 | amd64_sys_utime = 132, |
| 172 | amd64_sys_mknod = 133, |
| 173 | amd64_sys_personality = 135, |
| 174 | amd64_sys_ustat = 136, |
| 175 | amd64_sys_statfs = 137, |
| 176 | amd64_sys_fstatfs = 138, |
| 177 | amd64_sys_sysfs = 139, |
| 178 | amd64_sys_getpriority = 140, |
| 179 | amd64_sys_setpriority = 141, |
| 180 | amd64_sys_sched_setparam = 142, |
| 181 | amd64_sys_sched_getparam = 143, |
| 182 | amd64_sys_sched_setscheduler = 144, |
| 183 | amd64_sys_sched_getscheduler = 145, |
| 184 | amd64_sys_sched_get_priority_max = 146, |
| 185 | amd64_sys_sched_get_priority_min = 147, |
| 186 | amd64_sys_sched_rr_get_interval = 148, |
| 187 | amd64_sys_mlock = 149, |
| 188 | amd64_sys_munlock = 150, |
| 189 | amd64_sys_mlockall = 151, |
| 190 | amd64_sys_munlockall = 152, |
| 191 | amd64_sys_vhangup = 153, |
| 192 | amd64_sys_modify_ldt = 154, |
| 193 | amd64_sys_pivot_root = 155, |
| 194 | amd64_sys_sysctl = 156, |
| 195 | amd64_sys_prctl = 157, |
| 196 | amd64_sys_arch_prctl = 158, |
| 197 | amd64_sys_adjtimex = 159, |
| 198 | amd64_sys_setrlimit = 160, |
| 199 | amd64_sys_chroot = 161, |
| 200 | amd64_sys_sync = 162, |
| 201 | amd64_sys_acct = 163, |
| 202 | amd64_sys_settimeofday = 164, |
| 203 | amd64_sys_mount = 165, |
| 204 | amd64_sys_umount = 166, |
| 205 | amd64_sys_swapon = 167, |
| 206 | amd64_sys_swapoff = 168, |
| 207 | amd64_sys_reboot = 169, |
| 208 | amd64_sys_sethostname = 170, |
| 209 | amd64_sys_setdomainname = 171, |
| 210 | amd64_sys_iopl = 172, |
| 211 | amd64_sys_ioperm = 173, |
| 212 | amd64_sys_init_module = 175, |
| 213 | amd64_sys_delete_module = 176, |
| 214 | amd64_sys_quotactl = 179, |
| 215 | amd64_sys_nfsservctl = 180, |
| 216 | amd64_sys_gettid = 186, |
| 217 | amd64_sys_readahead = 187, |
| 218 | amd64_sys_setxattr = 188, |
| 219 | amd64_sys_lsetxattr = 189, |
| 220 | amd64_sys_fsetxattr = 190, |
| 221 | amd64_sys_getxattr = 191, |
| 222 | amd64_sys_lgetxattr = 192, |
| 223 | amd64_sys_fgetxattr = 193, |
| 224 | amd64_sys_listxattr = 194, |
| 225 | amd64_sys_llistxattr = 195, |
| 226 | amd64_sys_flistxattr = 196, |
| 227 | amd64_sys_removexattr = 197, |
| 228 | amd64_sys_lremovexattr = 198, |
| 229 | amd64_sys_fremovexattr = 199, |
| 230 | amd64_sys_tkill = 200, |
| 231 | amd64_sys_time = 201, |
| 232 | amd64_sys_futex = 202, |
| 233 | amd64_sys_sched_setaffinity = 203, |
| 234 | amd64_sys_sched_getaffinity = 204, |
| 235 | amd64_sys_io_setup = 206, |
| 236 | amd64_sys_io_destroy = 207, |
| 237 | amd64_sys_io_getevents = 208, |
| 238 | amd64_sys_io_submit = 209, |
| 239 | amd64_sys_io_cancel = 210, |
| 240 | amd64_sys_lookup_dcookie = 212, |
| 241 | amd64_sys_epoll_create = 213, |
| 242 | amd64_sys_remap_file_pages = 216, |
| 243 | amd64_sys_getdents64 = 217, |
| 244 | amd64_sys_set_tid_address = 218, |
| 245 | amd64_sys_restart_syscall = 219, |
| 246 | amd64_sys_semtimedop = 220, |
| 247 | amd64_sys_fadvise64 = 221, |
| 248 | amd64_sys_timer_create = 222, |
| 249 | amd64_sys_timer_settime = 223, |
| 250 | amd64_sys_timer_gettime = 224, |
| 251 | amd64_sys_timer_getoverrun = 225, |
| 252 | amd64_sys_timer_delete = 226, |
| 253 | amd64_sys_clock_settime = 227, |
| 254 | amd64_sys_clock_gettime = 228, |
| 255 | amd64_sys_clock_getres = 229, |
| 256 | amd64_sys_clock_nanosleep = 230, |
| 257 | amd64_sys_exit_group = 231, |
| 258 | amd64_sys_epoll_wait = 232, |
| 259 | amd64_sys_epoll_ctl = 233, |
| 260 | amd64_sys_tgkill = 234, |
| 261 | amd64_sys_utimes = 235, |
| 262 | amd64_sys_mbind = 237, |
| 263 | amd64_sys_set_mempolicy = 238, |
| 264 | amd64_sys_get_mempolicy = 239, |
| 265 | amd64_sys_mq_open = 240, |
| 266 | amd64_sys_mq_unlink = 241, |
| 267 | amd64_sys_mq_timedsend = 242, |
| 268 | amd64_sys_mq_timedreceive = 243, |
| 269 | amd64_sys_mq_notify = 244, |
| 270 | amd64_sys_mq_getsetattr = 245, |
| 271 | amd64_sys_kexec_load = 246, |
| 272 | amd64_sys_waitid = 247, |
| 273 | amd64_sys_add_key = 248, |
| 274 | amd64_sys_request_key = 249, |
| 275 | amd64_sys_keyctl = 250, |
| 276 | amd64_sys_ioprio_set = 251, |
| 277 | amd64_sys_ioprio_get = 252, |
| 278 | amd64_sys_inotify_init = 253, |
| 279 | amd64_sys_inotify_add_watch = 254, |
| 280 | amd64_sys_inotify_rm_watch = 255, |
| 281 | amd64_sys_migrate_pages = 256, |
| 282 | amd64_sys_openat = 257, |
| 283 | amd64_sys_mkdirat = 258, |
| 284 | amd64_sys_mknodat = 259, |
| 285 | amd64_sys_fchownat = 260, |
| 286 | amd64_sys_futimesat = 261, |
| 287 | amd64_sys_newfstatat = 262, |
| 288 | amd64_sys_unlinkat = 263, |
| 289 | amd64_sys_renameat = 264, |
| 290 | amd64_sys_linkat = 265, |
| 291 | amd64_sys_symlinkat = 266, |
| 292 | amd64_sys_readlinkat = 267, |
| 293 | amd64_sys_fchmodat = 268, |
| 294 | amd64_sys_faccessat = 269, |
| 295 | amd64_sys_pselect6 = 270, |
| 296 | amd64_sys_ppoll = 271, |
| 297 | amd64_sys_unshare = 272, |
| 298 | amd64_sys_set_robust_list = 273, |
| 299 | amd64_sys_get_robust_list = 274, |
| 300 | amd64_sys_splice = 275, |
| 301 | amd64_sys_tee = 276, |
| 302 | amd64_sys_sync_file_range = 277, |
| 303 | amd64_sys_vmsplice = 278, |
| 304 | amd64_sys_move_pages = 279, |
| 305 | }; |
| 306 | |
| 307 | #endif /* amd64-linux-tdep.h */ |