xref: /netbsd-src/external/gpl3/gdb.old/dist/gdb/amd64-linux-tdep.c (revision bdc22b2e01993381dcefeff2bc9b56ca75a4235c)
1 /* Target-dependent code for GNU/Linux x86-64.
2 
3    Copyright (C) 2001-2016 Free Software Foundation, Inc.
4    Contributed by Jiri Smid, SuSE Labs.
5 
6    This file is part of GDB.
7 
8    This program is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation; either version 3 of the License, or
11    (at your option) any later version.
12 
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17 
18    You should have received a copy of the GNU General Public License
19    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
20 
21 #include "defs.h"
22 #include "arch-utils.h"
23 #include "frame.h"
24 #include "gdbcore.h"
25 #include "regcache.h"
26 #include "osabi.h"
27 #include "symtab.h"
28 #include "gdbtypes.h"
29 #include "reggroups.h"
30 #include "regset.h"
31 #include "parser-defs.h"
32 #include "user-regs.h"
33 #include "amd64-linux-tdep.h"
34 #include "i386-linux-tdep.h"
35 #include "linux-tdep.h"
36 #include "x86-xstate.h"
37 
38 #include "amd64-tdep.h"
39 #include "solib-svr4.h"
40 #include "xml-syscall.h"
41 #include "glibc-tdep.h"
42 
43 #include "features/i386/amd64-linux.c"
44 #include "features/i386/amd64-avx-linux.c"
45 #include "features/i386/amd64-mpx-linux.c"
46 #include "features/i386/amd64-avx-mpx-linux.c"
47 #include "features/i386/amd64-avx512-linux.c"
48 
49 #include "features/i386/x32-linux.c"
50 #include "features/i386/x32-avx-linux.c"
51 #include "features/i386/x32-avx512-linux.c"
52 
53 /* The syscall's XML filename for i386.  */
54 #define XML_SYSCALL_FILENAME_AMD64 "syscalls/amd64-linux.xml"
55 
56 #include "record-full.h"
57 #include "linux-record.h"
58 
59 /* Mapping between the general-purpose registers in `struct user'
60    format and GDB's register cache layout.  */
61 
62 /* From <sys/reg.h>.  */
63 int amd64_linux_gregset_reg_offset[] =
64 {
65   10 * 8,			/* %rax */
66   5 * 8,			/* %rbx */
67   11 * 8,			/* %rcx */
68   12 * 8,			/* %rdx */
69   13 * 8,			/* %rsi */
70   14 * 8,			/* %rdi */
71   4 * 8,			/* %rbp */
72   19 * 8,			/* %rsp */
73   9 * 8,			/* %r8 ...  */
74   8 * 8,
75   7 * 8,
76   6 * 8,
77   3 * 8,
78   2 * 8,
79   1 * 8,
80   0 * 8,			/* ... %r15 */
81   16 * 8,			/* %rip */
82   18 * 8,			/* %eflags */
83   17 * 8,			/* %cs */
84   20 * 8,			/* %ss */
85   23 * 8,			/* %ds */
86   24 * 8,			/* %es */
87   25 * 8,			/* %fs */
88   26 * 8,			/* %gs */
89   -1, -1, -1, -1, -1, -1, -1, -1,
90   -1, -1, -1, -1, -1, -1, -1, -1,
91   -1, -1, -1, -1, -1, -1, -1, -1,
92   -1, -1, -1, -1, -1, -1, -1, -1, -1,
93   -1, -1, -1, -1, -1, -1, -1, -1,
94   -1, -1, -1, -1, -1, -1, -1, -1,
95   -1, -1, -1, -1,		/* MPX registers BND0 ... BND3.  */
96   -1, -1,			/* MPX registers BNDCFGU and BNDSTATUS.  */
97   -1, -1, -1, -1, -1, -1, -1, -1,     /* xmm16 ... xmm31 (AVX512)  */
98   -1, -1, -1, -1, -1, -1, -1, -1,
99   -1, -1, -1, -1, -1, -1, -1, -1,     /* ymm16 ... ymm31 (AVX512)  */
100   -1, -1, -1, -1, -1, -1, -1, -1,
101   -1, -1, -1, -1, -1, -1, -1, -1,     /* k0 ... k7 (AVX512)  */
102   -1, -1, -1, -1, -1, -1, -1, -1,     /* zmm0 ... zmm31 (AVX512)  */
103   -1, -1, -1, -1, -1, -1, -1, -1,
104   -1, -1, -1, -1, -1, -1, -1, -1,
105   -1, -1, -1, -1, -1, -1, -1, -1,
106   15 * 8			      /* "orig_rax" */
107 };
108 
109 
110 /* Support for signal handlers.  */
111 
112 #define LINUX_SIGTRAMP_INSN0	0x48	/* mov $NNNNNNNN, %rax */
113 #define LINUX_SIGTRAMP_OFFSET0	0
114 #define LINUX_SIGTRAMP_INSN1	0x0f	/* syscall */
115 #define LINUX_SIGTRAMP_OFFSET1	7
116 
117 static const gdb_byte amd64_linux_sigtramp_code[] =
118 {
119   /* mov $__NR_rt_sigreturn, %rax */
120   LINUX_SIGTRAMP_INSN0, 0xc7, 0xc0, 0x0f, 0x00, 0x00, 0x00,
121   /* syscall */
122   LINUX_SIGTRAMP_INSN1, 0x05
123 };
124 
125 static const gdb_byte amd64_x32_linux_sigtramp_code[] =
126 {
127   /* mov $__NR_rt_sigreturn, %rax.  */
128   LINUX_SIGTRAMP_INSN0, 0xc7, 0xc0, 0x01, 0x02, 0x00, 0x40,
129   /* syscall */
130   LINUX_SIGTRAMP_INSN1, 0x05
131 };
132 
133 #define LINUX_SIGTRAMP_LEN (sizeof amd64_linux_sigtramp_code)
134 
135 /* If PC is in a sigtramp routine, return the address of the start of
136    the routine.  Otherwise, return 0.  */
137 
138 static CORE_ADDR
139 amd64_linux_sigtramp_start (struct frame_info *this_frame)
140 {
141   struct gdbarch *gdbarch;
142   const gdb_byte *sigtramp_code;
143   CORE_ADDR pc = get_frame_pc (this_frame);
144   gdb_byte buf[LINUX_SIGTRAMP_LEN];
145 
146   /* We only recognize a signal trampoline if PC is at the start of
147      one of the two instructions.  We optimize for finding the PC at
148      the start, as will be the case when the trampoline is not the
149      first frame on the stack.  We assume that in the case where the
150      PC is not at the start of the instruction sequence, there will be
151      a few trailing readable bytes on the stack.  */
152 
153   if (!safe_frame_unwind_memory (this_frame, pc, buf, sizeof buf))
154     return 0;
155 
156   if (buf[0] != LINUX_SIGTRAMP_INSN0)
157     {
158       if (buf[0] != LINUX_SIGTRAMP_INSN1)
159 	return 0;
160 
161       pc -= LINUX_SIGTRAMP_OFFSET1;
162       if (!safe_frame_unwind_memory (this_frame, pc, buf, sizeof buf))
163 	return 0;
164     }
165 
166   gdbarch = get_frame_arch (this_frame);
167   if (gdbarch_ptr_bit (gdbarch) == 32)
168     sigtramp_code = amd64_x32_linux_sigtramp_code;
169   else
170     sigtramp_code = amd64_linux_sigtramp_code;
171   if (memcmp (buf, sigtramp_code, LINUX_SIGTRAMP_LEN) != 0)
172     return 0;
173 
174   return pc;
175 }
176 
177 /* Return whether THIS_FRAME corresponds to a GNU/Linux sigtramp
178    routine.  */
179 
180 static int
181 amd64_linux_sigtramp_p (struct frame_info *this_frame)
182 {
183   CORE_ADDR pc = get_frame_pc (this_frame);
184   const char *name;
185 
186   find_pc_partial_function (pc, &name, NULL, NULL);
187 
188   /* If we have NAME, we can optimize the search.  The trampoline is
189      named __restore_rt.  However, it isn't dynamically exported from
190      the shared C library, so the trampoline may appear to be part of
191      the preceding function.  This should always be sigaction,
192      __sigaction, or __libc_sigaction (all aliases to the same
193      function).  */
194   if (name == NULL || strstr (name, "sigaction") != NULL)
195     return (amd64_linux_sigtramp_start (this_frame) != 0);
196 
197   return (strcmp ("__restore_rt", name) == 0);
198 }
199 
200 /* Offset to struct sigcontext in ucontext, from <asm/ucontext.h>.  */
201 #define AMD64_LINUX_UCONTEXT_SIGCONTEXT_OFFSET 40
202 
203 /* Assuming THIS_FRAME is a GNU/Linux sigtramp routine, return the
204    address of the associated sigcontext structure.  */
205 
206 static CORE_ADDR
207 amd64_linux_sigcontext_addr (struct frame_info *this_frame)
208 {
209   struct gdbarch *gdbarch = get_frame_arch (this_frame);
210   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
211   CORE_ADDR sp;
212   gdb_byte buf[8];
213 
214   get_frame_register (this_frame, AMD64_RSP_REGNUM, buf);
215   sp = extract_unsigned_integer (buf, 8, byte_order);
216 
217   /* The sigcontext structure is part of the user context.  A pointer
218      to the user context is passed as the third argument to the signal
219      handler, i.e. in %rdx.  Unfortunately %rdx isn't preserved across
220      function calls so we can't use it.  Fortunately the user context
221      is part of the signal frame and the unwound %rsp directly points
222      at it.  */
223   return sp + AMD64_LINUX_UCONTEXT_SIGCONTEXT_OFFSET;
224 }
225 
226 
227 static LONGEST
228 amd64_linux_get_syscall_number (struct gdbarch *gdbarch,
229                                 ptid_t ptid)
230 {
231   struct regcache *regcache = get_thread_regcache (ptid);
232   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
233   /* The content of a register.  */
234   gdb_byte buf[8];
235   /* The result.  */
236   LONGEST ret;
237 
238   /* Getting the system call number from the register.
239      When dealing with x86_64 architecture, this information
240      is stored at %rax register.  */
241   regcache_cooked_read (regcache, AMD64_LINUX_ORIG_RAX_REGNUM, buf);
242 
243   ret = extract_signed_integer (buf, 8, byte_order);
244 
245   return ret;
246 }
247 
248 
249 /* From <asm/sigcontext.h>.  */
250 static int amd64_linux_sc_reg_offset[] =
251 {
252   13 * 8,			/* %rax */
253   11 * 8,			/* %rbx */
254   14 * 8,			/* %rcx */
255   12 * 8,			/* %rdx */
256   9 * 8,			/* %rsi */
257   8 * 8,			/* %rdi */
258   10 * 8,			/* %rbp */
259   15 * 8,			/* %rsp */
260   0 * 8,			/* %r8 */
261   1 * 8,			/* %r9 */
262   2 * 8,			/* %r10 */
263   3 * 8,			/* %r11 */
264   4 * 8,			/* %r12 */
265   5 * 8,			/* %r13 */
266   6 * 8,			/* %r14 */
267   7 * 8,			/* %r15 */
268   16 * 8,			/* %rip */
269   17 * 8,			/* %eflags */
270 
271   /* FIXME: kettenis/2002030531: The registers %cs, %fs and %gs are
272      available in `struct sigcontext'.  However, they only occupy two
273      bytes instead of four, which makes using them here rather
274      difficult.  Leave them out for now.  */
275   -1,				/* %cs */
276   -1,				/* %ss */
277   -1,				/* %ds */
278   -1,				/* %es */
279   -1,				/* %fs */
280   -1				/* %gs */
281 };
282 
283 static int
284 amd64_linux_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
285 				 struct reggroup *group)
286 {
287   if (regnum == AMD64_LINUX_ORIG_RAX_REGNUM)
288     return (group == system_reggroup
289             || group == save_reggroup
290             || group == restore_reggroup);
291   return i386_register_reggroup_p (gdbarch, regnum, group);
292 }
293 
294 /* Set the program counter for process PTID to PC.  */
295 
296 static void
297 amd64_linux_write_pc (struct regcache *regcache, CORE_ADDR pc)
298 {
299   regcache_cooked_write_unsigned (regcache, AMD64_RIP_REGNUM, pc);
300 
301   /* We must be careful with modifying the program counter.  If we
302      just interrupted a system call, the kernel might try to restart
303      it when we resume the inferior.  On restarting the system call,
304      the kernel will try backing up the program counter even though it
305      no longer points at the system call.  This typically results in a
306      SIGSEGV or SIGILL.  We can prevent this by writing `-1' in the
307      "orig_rax" pseudo-register.
308 
309      Note that "orig_rax" is saved when setting up a dummy call frame.
310      This means that it is properly restored when that frame is
311      popped, and that the interrupted system call will be restarted
312      when we resume the inferior on return from a function call from
313      within GDB.  In all other cases the system call will not be
314      restarted.  */
315   regcache_cooked_write_unsigned (regcache, AMD64_LINUX_ORIG_RAX_REGNUM, -1);
316 }
317 
318 /* Record all registers but IP register for process-record.  */
319 
320 static int
321 amd64_all_but_ip_registers_record (struct regcache *regcache)
322 {
323   if (record_full_arch_list_add_reg (regcache, AMD64_RAX_REGNUM))
324     return -1;
325   if (record_full_arch_list_add_reg (regcache, AMD64_RCX_REGNUM))
326     return -1;
327   if (record_full_arch_list_add_reg (regcache, AMD64_RDX_REGNUM))
328     return -1;
329   if (record_full_arch_list_add_reg (regcache, AMD64_RBX_REGNUM))
330     return -1;
331   if (record_full_arch_list_add_reg (regcache, AMD64_RSP_REGNUM))
332     return -1;
333   if (record_full_arch_list_add_reg (regcache, AMD64_RBP_REGNUM))
334     return -1;
335   if (record_full_arch_list_add_reg (regcache, AMD64_RSI_REGNUM))
336     return -1;
337   if (record_full_arch_list_add_reg (regcache, AMD64_RDI_REGNUM))
338     return -1;
339   if (record_full_arch_list_add_reg (regcache, AMD64_R8_REGNUM))
340     return -1;
341   if (record_full_arch_list_add_reg (regcache, AMD64_R9_REGNUM))
342     return -1;
343   if (record_full_arch_list_add_reg (regcache, AMD64_R10_REGNUM))
344     return -1;
345   if (record_full_arch_list_add_reg (regcache, AMD64_R11_REGNUM))
346     return -1;
347   if (record_full_arch_list_add_reg (regcache, AMD64_R12_REGNUM))
348     return -1;
349   if (record_full_arch_list_add_reg (regcache, AMD64_R13_REGNUM))
350     return -1;
351   if (record_full_arch_list_add_reg (regcache, AMD64_R14_REGNUM))
352     return -1;
353   if (record_full_arch_list_add_reg (regcache, AMD64_R15_REGNUM))
354     return -1;
355   if (record_full_arch_list_add_reg (regcache, AMD64_EFLAGS_REGNUM))
356     return -1;
357 
358   return 0;
359 }
360 
361 /* amd64_canonicalize_syscall maps from the native amd64 Linux set
362    of syscall ids into a canonical set of syscall ids used by
363    process record.  */
364 
365 static enum gdb_syscall
366 amd64_canonicalize_syscall (enum amd64_syscall syscall_number)
367 {
368   switch (syscall_number) {
369   case amd64_sys_read:
370   case amd64_x32_sys_read:
371     return gdb_sys_read;
372 
373   case amd64_sys_write:
374   case amd64_x32_sys_write:
375     return gdb_sys_write;
376 
377   case amd64_sys_open:
378   case amd64_x32_sys_open:
379     return gdb_sys_open;
380 
381   case amd64_sys_close:
382   case amd64_x32_sys_close:
383     return gdb_sys_close;
384 
385   case amd64_sys_newstat:
386   case amd64_x32_sys_newstat:
387     return gdb_sys_newstat;
388 
389   case amd64_sys_newfstat:
390   case amd64_x32_sys_newfstat:
391     return gdb_sys_newfstat;
392 
393   case amd64_sys_newlstat:
394   case amd64_x32_sys_newlstat:
395     return gdb_sys_newlstat;
396 
397   case amd64_sys_poll:
398   case amd64_x32_sys_poll:
399     return gdb_sys_poll;
400 
401   case amd64_sys_lseek:
402   case amd64_x32_sys_lseek:
403     return gdb_sys_lseek;
404 
405   case amd64_sys_mmap:
406   case amd64_x32_sys_mmap:
407     return gdb_sys_mmap2;
408 
409   case amd64_sys_mprotect:
410   case amd64_x32_sys_mprotect:
411     return gdb_sys_mprotect;
412 
413   case amd64_sys_munmap:
414   case amd64_x32_sys_munmap:
415     return gdb_sys_munmap;
416 
417   case amd64_sys_brk:
418   case amd64_x32_sys_brk:
419     return gdb_sys_brk;
420 
421   case amd64_sys_rt_sigaction:
422   case amd64_x32_sys_rt_sigaction:
423     return gdb_sys_rt_sigaction;
424 
425   case amd64_sys_rt_sigprocmask:
426   case amd64_x32_sys_rt_sigprocmask:
427     return gdb_sys_rt_sigprocmask;
428 
429   case amd64_sys_rt_sigreturn:
430   case amd64_x32_sys_rt_sigreturn:
431     return gdb_sys_rt_sigreturn;
432 
433   case amd64_sys_ioctl:
434   case amd64_x32_sys_ioctl:
435     return gdb_sys_ioctl;
436 
437   case amd64_sys_pread64:
438   case amd64_x32_sys_pread64:
439     return gdb_sys_pread64;
440 
441   case amd64_sys_pwrite64:
442   case amd64_x32_sys_pwrite64:
443     return gdb_sys_pwrite64;
444 
445   case amd64_sys_readv:
446   case amd64_x32_sys_readv:
447     return gdb_sys_readv;
448 
449   case amd64_sys_writev:
450   case amd64_x32_sys_writev:
451     return gdb_sys_writev;
452 
453   case amd64_sys_access:
454   case amd64_x32_sys_access:
455     return gdb_sys_access;
456 
457   case amd64_sys_pipe:
458   case amd64_x32_sys_pipe:
459     return gdb_sys_pipe;
460 
461   case amd64_sys_select:
462   case amd64_x32_sys_select:
463     return gdb_sys_select;
464 
465   case amd64_sys_sched_yield:
466   case amd64_x32_sys_sched_yield:
467     return gdb_sys_sched_yield;
468 
469   case amd64_sys_mremap:
470   case amd64_x32_sys_mremap:
471     return gdb_sys_mremap;
472 
473   case amd64_sys_msync:
474   case amd64_x32_sys_msync:
475     return gdb_sys_msync;
476 
477   case amd64_sys_mincore:
478   case amd64_x32_sys_mincore:
479     return gdb_sys_mincore;
480 
481   case amd64_sys_madvise:
482   case amd64_x32_sys_madvise:
483     return gdb_sys_madvise;
484 
485   case amd64_sys_shmget:
486   case amd64_x32_sys_shmget:
487     return gdb_sys_shmget;
488 
489   case amd64_sys_shmat:
490   case amd64_x32_sys_shmat:
491     return gdb_sys_shmat;
492 
493   case amd64_sys_shmctl:
494   case amd64_x32_sys_shmctl:
495     return gdb_sys_shmctl;
496 
497   case amd64_sys_dup:
498   case amd64_x32_sys_dup:
499     return gdb_sys_dup;
500 
501   case amd64_sys_dup2:
502   case amd64_x32_sys_dup2:
503     return gdb_sys_dup2;
504 
505   case amd64_sys_pause:
506   case amd64_x32_sys_pause:
507     return gdb_sys_pause;
508 
509   case amd64_sys_nanosleep:
510   case amd64_x32_sys_nanosleep:
511     return gdb_sys_nanosleep;
512 
513   case amd64_sys_getitimer:
514   case amd64_x32_sys_getitimer:
515     return gdb_sys_getitimer;
516 
517   case amd64_sys_alarm:
518   case amd64_x32_sys_alarm:
519     return gdb_sys_alarm;
520 
521   case amd64_sys_setitimer:
522   case amd64_x32_sys_setitimer:
523     return gdb_sys_setitimer;
524 
525   case amd64_sys_getpid:
526   case amd64_x32_sys_getpid:
527     return gdb_sys_getpid;
528 
529   case amd64_sys_sendfile64:
530   case amd64_x32_sys_sendfile64:
531     return gdb_sys_sendfile64;
532 
533   case amd64_sys_socket:
534   case amd64_x32_sys_socket:
535     return gdb_sys_socket;
536 
537   case amd64_sys_connect:
538   case amd64_x32_sys_connect:
539     return gdb_sys_connect;
540 
541   case amd64_sys_accept:
542   case amd64_x32_sys_accept:
543     return gdb_sys_accept;
544 
545   case amd64_sys_sendto:
546   case amd64_x32_sys_sendto:
547     return gdb_sys_sendto;
548 
549   case amd64_sys_recvfrom:
550   case amd64_x32_sys_recvfrom:
551     return gdb_sys_recvfrom;
552 
553   case amd64_sys_sendmsg:
554   case amd64_x32_sys_sendmsg:
555     return gdb_sys_sendmsg;
556 
557   case amd64_sys_recvmsg:
558   case amd64_x32_sys_recvmsg:
559     return gdb_sys_recvmsg;
560 
561   case amd64_sys_shutdown:
562   case amd64_x32_sys_shutdown:
563     return gdb_sys_shutdown;
564 
565   case amd64_sys_bind:
566   case amd64_x32_sys_bind:
567     return gdb_sys_bind;
568 
569   case amd64_sys_listen:
570   case amd64_x32_sys_listen:
571     return gdb_sys_listen;
572 
573   case amd64_sys_getsockname:
574   case amd64_x32_sys_getsockname:
575     return gdb_sys_getsockname;
576 
577   case amd64_sys_getpeername:
578   case amd64_x32_sys_getpeername:
579     return gdb_sys_getpeername;
580 
581   case amd64_sys_socketpair:
582   case amd64_x32_sys_socketpair:
583     return gdb_sys_socketpair;
584 
585   case amd64_sys_setsockopt:
586   case amd64_x32_sys_setsockopt:
587     return gdb_sys_setsockopt;
588 
589   case amd64_sys_getsockopt:
590   case amd64_x32_sys_getsockopt:
591     return gdb_sys_getsockopt;
592 
593   case amd64_sys_clone:
594   case amd64_x32_sys_clone:
595     return gdb_sys_clone;
596 
597   case amd64_sys_fork:
598   case amd64_x32_sys_fork:
599     return gdb_sys_fork;
600 
601   case amd64_sys_vfork:
602   case amd64_x32_sys_vfork:
603     return gdb_sys_vfork;
604 
605   case amd64_sys_execve:
606   case amd64_x32_sys_execve:
607     return gdb_sys_execve;
608 
609   case amd64_sys_exit:
610   case amd64_x32_sys_exit:
611     return gdb_sys_exit;
612 
613   case amd64_sys_wait4:
614   case amd64_x32_sys_wait4:
615     return gdb_sys_wait4;
616 
617   case amd64_sys_kill:
618   case amd64_x32_sys_kill:
619     return gdb_sys_kill;
620 
621   case amd64_sys_uname:
622   case amd64_x32_sys_uname:
623     return gdb_sys_uname;
624 
625   case amd64_sys_semget:
626   case amd64_x32_sys_semget:
627     return gdb_sys_semget;
628 
629   case amd64_sys_semop:
630   case amd64_x32_sys_semop:
631     return gdb_sys_semop;
632 
633   case amd64_sys_semctl:
634   case amd64_x32_sys_semctl:
635     return gdb_sys_semctl;
636 
637   case amd64_sys_shmdt:
638   case amd64_x32_sys_shmdt:
639     return gdb_sys_shmdt;
640 
641   case amd64_sys_msgget:
642   case amd64_x32_sys_msgget:
643     return gdb_sys_msgget;
644 
645   case amd64_sys_msgsnd:
646   case amd64_x32_sys_msgsnd:
647     return gdb_sys_msgsnd;
648 
649   case amd64_sys_msgrcv:
650   case amd64_x32_sys_msgrcv:
651     return gdb_sys_msgrcv;
652 
653   case amd64_sys_msgctl:
654   case amd64_x32_sys_msgctl:
655     return gdb_sys_msgctl;
656 
657   case amd64_sys_fcntl:
658   case amd64_x32_sys_fcntl:
659     return gdb_sys_fcntl;
660 
661   case amd64_sys_flock:
662   case amd64_x32_sys_flock:
663     return gdb_sys_flock;
664 
665   case amd64_sys_fsync:
666   case amd64_x32_sys_fsync:
667     return gdb_sys_fsync;
668 
669   case amd64_sys_fdatasync:
670   case amd64_x32_sys_fdatasync:
671     return gdb_sys_fdatasync;
672 
673   case amd64_sys_truncate:
674   case amd64_x32_sys_truncate:
675     return gdb_sys_truncate;
676 
677   case amd64_sys_ftruncate:
678   case amd64_x32_sys_ftruncate:
679     return gdb_sys_ftruncate;
680 
681   case amd64_sys_getdents:
682   case amd64_x32_sys_getdents:
683     return gdb_sys_getdents;
684 
685   case amd64_sys_getcwd:
686   case amd64_x32_sys_getcwd:
687     return gdb_sys_getcwd;
688 
689   case amd64_sys_chdir:
690   case amd64_x32_sys_chdir:
691     return gdb_sys_chdir;
692 
693   case amd64_sys_fchdir:
694   case amd64_x32_sys_fchdir:
695     return gdb_sys_fchdir;
696 
697   case amd64_sys_rename:
698   case amd64_x32_sys_rename:
699     return gdb_sys_rename;
700 
701   case amd64_sys_mkdir:
702   case amd64_x32_sys_mkdir:
703     return gdb_sys_mkdir;
704 
705   case amd64_sys_rmdir:
706   case amd64_x32_sys_rmdir:
707     return gdb_sys_rmdir;
708 
709   case amd64_sys_creat:
710   case amd64_x32_sys_creat:
711     return gdb_sys_creat;
712 
713   case amd64_sys_link:
714   case amd64_x32_sys_link:
715     return gdb_sys_link;
716 
717   case amd64_sys_unlink:
718   case amd64_x32_sys_unlink:
719     return gdb_sys_unlink;
720 
721   case amd64_sys_symlink:
722   case amd64_x32_sys_symlink:
723     return gdb_sys_symlink;
724 
725   case amd64_sys_readlink:
726   case amd64_x32_sys_readlink:
727     return gdb_sys_readlink;
728 
729   case amd64_sys_chmod:
730   case amd64_x32_sys_chmod:
731     return gdb_sys_chmod;
732 
733   case amd64_sys_fchmod:
734   case amd64_x32_sys_fchmod:
735     return gdb_sys_fchmod;
736 
737   case amd64_sys_chown:
738   case amd64_x32_sys_chown:
739     return gdb_sys_chown;
740 
741   case amd64_sys_fchown:
742   case amd64_x32_sys_fchown:
743     return gdb_sys_fchown;
744 
745   case amd64_sys_lchown:
746   case amd64_x32_sys_lchown:
747     return gdb_sys_lchown;
748 
749   case amd64_sys_umask:
750   case amd64_x32_sys_umask:
751     return gdb_sys_umask;
752 
753   case amd64_sys_gettimeofday:
754   case amd64_x32_sys_gettimeofday:
755     return gdb_sys_gettimeofday;
756 
757   case amd64_sys_getrlimit:
758   case amd64_x32_sys_getrlimit:
759     return gdb_sys_getrlimit;
760 
761   case amd64_sys_getrusage:
762   case amd64_x32_sys_getrusage:
763     return gdb_sys_getrusage;
764 
765   case amd64_sys_sysinfo:
766   case amd64_x32_sys_sysinfo:
767     return gdb_sys_sysinfo;
768 
769   case amd64_sys_times:
770   case amd64_x32_sys_times:
771     return gdb_sys_times;
772 
773   case amd64_sys_ptrace:
774   case amd64_x32_sys_ptrace:
775     return gdb_sys_ptrace;
776 
777   case amd64_sys_getuid:
778   case amd64_x32_sys_getuid:
779     return gdb_sys_getuid;
780 
781   case amd64_sys_syslog:
782   case amd64_x32_sys_syslog:
783     return gdb_sys_syslog;
784 
785   case amd64_sys_getgid:
786   case amd64_x32_sys_getgid:
787     return gdb_sys_getgid;
788 
789   case amd64_sys_setuid:
790   case amd64_x32_sys_setuid:
791     return gdb_sys_setuid;
792 
793   case amd64_sys_setgid:
794   case amd64_x32_sys_setgid:
795     return gdb_sys_setgid;
796 
797   case amd64_sys_geteuid:
798   case amd64_x32_sys_geteuid:
799     return gdb_sys_geteuid;
800 
801   case amd64_sys_getegid:
802   case amd64_x32_sys_getegid:
803     return gdb_sys_getegid;
804 
805   case amd64_sys_setpgid:
806   case amd64_x32_sys_setpgid:
807     return gdb_sys_setpgid;
808 
809   case amd64_sys_getppid:
810   case amd64_x32_sys_getppid:
811     return gdb_sys_getppid;
812 
813   case amd64_sys_getpgrp:
814   case amd64_x32_sys_getpgrp:
815     return gdb_sys_getpgrp;
816 
817   case amd64_sys_setsid:
818   case amd64_x32_sys_setsid:
819     return gdb_sys_setsid;
820 
821   case amd64_sys_setreuid:
822   case amd64_x32_sys_setreuid:
823     return gdb_sys_setreuid;
824 
825   case amd64_sys_setregid:
826   case amd64_x32_sys_setregid:
827     return gdb_sys_setregid;
828 
829   case amd64_sys_getgroups:
830   case amd64_x32_sys_getgroups:
831     return gdb_sys_getgroups;
832 
833   case amd64_sys_setgroups:
834   case amd64_x32_sys_setgroups:
835     return gdb_sys_setgroups;
836 
837   case amd64_sys_setresuid:
838   case amd64_x32_sys_setresuid:
839     return gdb_sys_setresuid;
840 
841   case amd64_sys_getresuid:
842   case amd64_x32_sys_getresuid:
843     return gdb_sys_getresuid;
844 
845   case amd64_sys_setresgid:
846   case amd64_x32_sys_setresgid:
847     return gdb_sys_setresgid;
848 
849   case amd64_sys_getresgid:
850   case amd64_x32_sys_getresgid:
851     return gdb_sys_getresgid;
852 
853   case amd64_sys_getpgid:
854   case amd64_x32_sys_getpgid:
855     return gdb_sys_getpgid;
856 
857   case amd64_sys_setfsuid:
858   case amd64_x32_sys_setfsuid:
859     return gdb_sys_setfsuid;
860 
861   case amd64_sys_setfsgid:
862   case amd64_x32_sys_setfsgid:
863     return gdb_sys_setfsgid;
864 
865   case amd64_sys_getsid:
866   case amd64_x32_sys_getsid:
867     return gdb_sys_getsid;
868 
869   case amd64_sys_capget:
870   case amd64_x32_sys_capget:
871     return gdb_sys_capget;
872 
873   case amd64_sys_capset:
874   case amd64_x32_sys_capset:
875     return gdb_sys_capset;
876 
877   case amd64_sys_rt_sigpending:
878   case amd64_x32_sys_rt_sigpending:
879     return gdb_sys_rt_sigpending;
880 
881   case amd64_sys_rt_sigtimedwait:
882   case amd64_x32_sys_rt_sigtimedwait:
883     return gdb_sys_rt_sigtimedwait;
884 
885   case amd64_sys_rt_sigqueueinfo:
886   case amd64_x32_sys_rt_sigqueueinfo:
887     return gdb_sys_rt_sigqueueinfo;
888 
889   case amd64_sys_rt_sigsuspend:
890   case amd64_x32_sys_rt_sigsuspend:
891     return gdb_sys_rt_sigsuspend;
892 
893   case amd64_sys_sigaltstack:
894   case amd64_x32_sys_sigaltstack:
895     return gdb_sys_sigaltstack;
896 
897   case amd64_sys_utime:
898   case amd64_x32_sys_utime:
899     return gdb_sys_utime;
900 
901   case amd64_sys_mknod:
902   case amd64_x32_sys_mknod:
903     return gdb_sys_mknod;
904 
905   case amd64_sys_personality:
906   case amd64_x32_sys_personality:
907     return gdb_sys_personality;
908 
909   case amd64_sys_ustat:
910   case amd64_x32_sys_ustat:
911     return gdb_sys_ustat;
912 
913   case amd64_sys_statfs:
914   case amd64_x32_sys_statfs:
915     return gdb_sys_statfs;
916 
917   case amd64_sys_fstatfs:
918   case amd64_x32_sys_fstatfs:
919     return gdb_sys_fstatfs;
920 
921   case amd64_sys_sysfs:
922   case amd64_x32_sys_sysfs:
923     return gdb_sys_sysfs;
924 
925   case amd64_sys_getpriority:
926   case amd64_x32_sys_getpriority:
927     return gdb_sys_getpriority;
928 
929   case amd64_sys_setpriority:
930   case amd64_x32_sys_setpriority:
931     return gdb_sys_setpriority;
932 
933   case amd64_sys_sched_setparam:
934   case amd64_x32_sys_sched_setparam:
935     return gdb_sys_sched_setparam;
936 
937   case amd64_sys_sched_getparam:
938   case amd64_x32_sys_sched_getparam:
939     return gdb_sys_sched_getparam;
940 
941   case amd64_sys_sched_setscheduler:
942   case amd64_x32_sys_sched_setscheduler:
943     return gdb_sys_sched_setscheduler;
944 
945   case amd64_sys_sched_getscheduler:
946   case amd64_x32_sys_sched_getscheduler:
947     return gdb_sys_sched_getscheduler;
948 
949   case amd64_sys_sched_get_priority_max:
950   case amd64_x32_sys_sched_get_priority_max:
951     return gdb_sys_sched_get_priority_max;
952 
953   case amd64_sys_sched_get_priority_min:
954   case amd64_x32_sys_sched_get_priority_min:
955     return gdb_sys_sched_get_priority_min;
956 
957   case amd64_sys_sched_rr_get_interval:
958   case amd64_x32_sys_sched_rr_get_interval:
959     return gdb_sys_sched_rr_get_interval;
960 
961   case amd64_sys_mlock:
962   case amd64_x32_sys_mlock:
963     return gdb_sys_mlock;
964 
965   case amd64_sys_munlock:
966   case amd64_x32_sys_munlock:
967     return gdb_sys_munlock;
968 
969   case amd64_sys_mlockall:
970   case amd64_x32_sys_mlockall:
971     return gdb_sys_mlockall;
972 
973   case amd64_sys_munlockall:
974   case amd64_x32_sys_munlockall:
975     return gdb_sys_munlockall;
976 
977   case amd64_sys_vhangup:
978   case amd64_x32_sys_vhangup:
979     return gdb_sys_vhangup;
980 
981   case amd64_sys_modify_ldt:
982   case amd64_x32_sys_modify_ldt:
983     return gdb_sys_modify_ldt;
984 
985   case amd64_sys_pivot_root:
986   case amd64_x32_sys_pivot_root:
987     return gdb_sys_pivot_root;
988 
989   case amd64_sys_sysctl:
990   case amd64_x32_sys_sysctl:
991     return gdb_sys_sysctl;
992 
993   case amd64_sys_prctl:
994   case amd64_x32_sys_prctl:
995     return gdb_sys_prctl;
996 
997   case amd64_sys_arch_prctl:
998   case amd64_x32_sys_arch_prctl:
999     return gdb_sys_no_syscall;	/* Note */
1000 
1001   case amd64_sys_adjtimex:
1002   case amd64_x32_sys_adjtimex:
1003     return gdb_sys_adjtimex;
1004 
1005   case amd64_sys_setrlimit:
1006   case amd64_x32_sys_setrlimit:
1007     return gdb_sys_setrlimit;
1008 
1009   case amd64_sys_chroot:
1010   case amd64_x32_sys_chroot:
1011     return gdb_sys_chroot;
1012 
1013   case amd64_sys_sync:
1014   case amd64_x32_sys_sync:
1015     return gdb_sys_sync;
1016 
1017   case amd64_sys_acct:
1018   case amd64_x32_sys_acct:
1019     return gdb_sys_acct;
1020 
1021   case amd64_sys_settimeofday:
1022   case amd64_x32_sys_settimeofday:
1023     return gdb_sys_settimeofday;
1024 
1025   case amd64_sys_mount:
1026   case amd64_x32_sys_mount:
1027     return gdb_sys_mount;
1028 
1029   case amd64_sys_umount:
1030   case amd64_x32_sys_umount:
1031     return gdb_sys_umount;
1032 
1033   case amd64_sys_swapon:
1034   case amd64_x32_sys_swapon:
1035     return gdb_sys_swapon;
1036 
1037   case amd64_sys_swapoff:
1038   case amd64_x32_sys_swapoff:
1039     return gdb_sys_swapoff;
1040 
1041   case amd64_sys_reboot:
1042   case amd64_x32_sys_reboot:
1043     return gdb_sys_reboot;
1044 
1045   case amd64_sys_sethostname:
1046   case amd64_x32_sys_sethostname:
1047     return gdb_sys_sethostname;
1048 
1049   case amd64_sys_setdomainname:
1050   case amd64_x32_sys_setdomainname:
1051     return gdb_sys_setdomainname;
1052 
1053   case amd64_sys_iopl:
1054   case amd64_x32_sys_iopl:
1055     return gdb_sys_iopl;
1056 
1057   case amd64_sys_ioperm:
1058   case amd64_x32_sys_ioperm:
1059     return gdb_sys_ioperm;
1060 
1061   case amd64_sys_init_module:
1062   case amd64_x32_sys_init_module:
1063     return gdb_sys_init_module;
1064 
1065   case amd64_sys_delete_module:
1066   case amd64_x32_sys_delete_module:
1067     return gdb_sys_delete_module;
1068 
1069   case amd64_sys_quotactl:
1070   case amd64_x32_sys_quotactl:
1071     return gdb_sys_quotactl;
1072 
1073   case amd64_sys_nfsservctl:
1074     return gdb_sys_nfsservctl;
1075 
1076   case amd64_sys_gettid:
1077   case amd64_x32_sys_gettid:
1078     return gdb_sys_gettid;
1079 
1080   case amd64_sys_readahead:
1081   case amd64_x32_sys_readahead:
1082     return gdb_sys_readahead;
1083 
1084   case amd64_sys_setxattr:
1085   case amd64_x32_sys_setxattr:
1086     return gdb_sys_setxattr;
1087 
1088   case amd64_sys_lsetxattr:
1089   case amd64_x32_sys_lsetxattr:
1090     return gdb_sys_lsetxattr;
1091 
1092   case amd64_sys_fsetxattr:
1093   case amd64_x32_sys_fsetxattr:
1094     return gdb_sys_fsetxattr;
1095 
1096   case amd64_sys_getxattr:
1097   case amd64_x32_sys_getxattr:
1098     return gdb_sys_getxattr;
1099 
1100   case amd64_sys_lgetxattr:
1101   case amd64_x32_sys_lgetxattr:
1102     return gdb_sys_lgetxattr;
1103 
1104   case amd64_sys_fgetxattr:
1105   case amd64_x32_sys_fgetxattr:
1106     return gdb_sys_fgetxattr;
1107 
1108   case amd64_sys_listxattr:
1109   case amd64_x32_sys_listxattr:
1110     return gdb_sys_listxattr;
1111 
1112   case amd64_sys_llistxattr:
1113   case amd64_x32_sys_llistxattr:
1114     return gdb_sys_llistxattr;
1115 
1116   case amd64_sys_flistxattr:
1117   case amd64_x32_sys_flistxattr:
1118     return gdb_sys_flistxattr;
1119 
1120   case amd64_sys_removexattr:
1121   case amd64_x32_sys_removexattr:
1122     return gdb_sys_removexattr;
1123 
1124   case amd64_sys_lremovexattr:
1125   case amd64_x32_sys_lremovexattr:
1126     return gdb_sys_lremovexattr;
1127 
1128   case amd64_sys_fremovexattr:
1129   case amd64_x32_sys_fremovexattr:
1130     return gdb_sys_fremovexattr;
1131 
1132   case amd64_sys_tkill:
1133   case amd64_x32_sys_tkill:
1134     return gdb_sys_tkill;
1135 
1136   case amd64_sys_time:
1137   case amd64_x32_sys_time:
1138     return gdb_sys_time;
1139 
1140   case amd64_sys_futex:
1141   case amd64_x32_sys_futex:
1142     return gdb_sys_futex;
1143 
1144   case amd64_sys_sched_setaffinity:
1145   case amd64_x32_sys_sched_setaffinity:
1146     return gdb_sys_sched_setaffinity;
1147 
1148   case amd64_sys_sched_getaffinity:
1149   case amd64_x32_sys_sched_getaffinity:
1150     return gdb_sys_sched_getaffinity;
1151 
1152   case amd64_sys_io_setup:
1153   case amd64_x32_sys_io_setup:
1154     return gdb_sys_io_setup;
1155 
1156   case amd64_sys_io_destroy:
1157   case amd64_x32_sys_io_destroy:
1158     return gdb_sys_io_destroy;
1159 
1160   case amd64_sys_io_getevents:
1161   case amd64_x32_sys_io_getevents:
1162     return gdb_sys_io_getevents;
1163 
1164   case amd64_sys_io_submit:
1165   case amd64_x32_sys_io_submit:
1166     return gdb_sys_io_submit;
1167 
1168   case amd64_sys_io_cancel:
1169   case amd64_x32_sys_io_cancel:
1170     return gdb_sys_io_cancel;
1171 
1172   case amd64_sys_lookup_dcookie:
1173   case amd64_x32_sys_lookup_dcookie:
1174     return gdb_sys_lookup_dcookie;
1175 
1176   case amd64_sys_epoll_create:
1177   case amd64_x32_sys_epoll_create:
1178     return gdb_sys_epoll_create;
1179 
1180   case amd64_sys_remap_file_pages:
1181   case amd64_x32_sys_remap_file_pages:
1182     return gdb_sys_remap_file_pages;
1183 
1184   case amd64_sys_getdents64:
1185   case amd64_x32_sys_getdents64:
1186     return gdb_sys_getdents64;
1187 
1188   case amd64_sys_set_tid_address:
1189   case amd64_x32_sys_set_tid_address:
1190     return gdb_sys_set_tid_address;
1191 
1192   case amd64_sys_restart_syscall:
1193   case amd64_x32_sys_restart_syscall:
1194     return gdb_sys_restart_syscall;
1195 
1196   case amd64_sys_semtimedop:
1197   case amd64_x32_sys_semtimedop:
1198     return gdb_sys_semtimedop;
1199 
1200   case amd64_sys_fadvise64:
1201   case amd64_x32_sys_fadvise64:
1202     return gdb_sys_fadvise64;
1203 
1204   case amd64_sys_timer_create:
1205   case amd64_x32_sys_timer_create:
1206     return gdb_sys_timer_create;
1207 
1208   case amd64_sys_timer_settime:
1209   case amd64_x32_sys_timer_settime:
1210     return gdb_sys_timer_settime;
1211 
1212   case amd64_sys_timer_gettime:
1213   case amd64_x32_sys_timer_gettime:
1214     return gdb_sys_timer_gettime;
1215 
1216   case amd64_sys_timer_getoverrun:
1217   case amd64_x32_sys_timer_getoverrun:
1218     return gdb_sys_timer_getoverrun;
1219 
1220   case amd64_sys_timer_delete:
1221   case amd64_x32_sys_timer_delete:
1222     return gdb_sys_timer_delete;
1223 
1224   case amd64_sys_clock_settime:
1225   case amd64_x32_sys_clock_settime:
1226     return gdb_sys_clock_settime;
1227 
1228   case amd64_sys_clock_gettime:
1229   case amd64_x32_sys_clock_gettime:
1230     return gdb_sys_clock_gettime;
1231 
1232   case amd64_sys_clock_getres:
1233   case amd64_x32_sys_clock_getres:
1234     return gdb_sys_clock_getres;
1235 
1236   case amd64_sys_clock_nanosleep:
1237   case amd64_x32_sys_clock_nanosleep:
1238     return gdb_sys_clock_nanosleep;
1239 
1240   case amd64_sys_exit_group:
1241   case amd64_x32_sys_exit_group:
1242     return gdb_sys_exit_group;
1243 
1244   case amd64_sys_epoll_wait:
1245   case amd64_x32_sys_epoll_wait:
1246     return gdb_sys_epoll_wait;
1247 
1248   case amd64_sys_epoll_ctl:
1249   case amd64_x32_sys_epoll_ctl:
1250     return gdb_sys_epoll_ctl;
1251 
1252   case amd64_sys_tgkill:
1253   case amd64_x32_sys_tgkill:
1254     return gdb_sys_tgkill;
1255 
1256   case amd64_sys_utimes:
1257   case amd64_x32_sys_utimes:
1258     return gdb_sys_utimes;
1259 
1260   case amd64_sys_mbind:
1261   case amd64_x32_sys_mbind:
1262     return gdb_sys_mbind;
1263 
1264   case amd64_sys_set_mempolicy:
1265   case amd64_x32_sys_set_mempolicy:
1266     return gdb_sys_set_mempolicy;
1267 
1268   case amd64_sys_get_mempolicy:
1269   case amd64_x32_sys_get_mempolicy:
1270     return gdb_sys_get_mempolicy;
1271 
1272   case amd64_sys_mq_open:
1273   case amd64_x32_sys_mq_open:
1274     return gdb_sys_mq_open;
1275 
1276   case amd64_sys_mq_unlink:
1277   case amd64_x32_sys_mq_unlink:
1278     return gdb_sys_mq_unlink;
1279 
1280   case amd64_sys_mq_timedsend:
1281   case amd64_x32_sys_mq_timedsend:
1282     return gdb_sys_mq_timedsend;
1283 
1284   case amd64_sys_mq_timedreceive:
1285   case amd64_x32_sys_mq_timedreceive:
1286     return gdb_sys_mq_timedreceive;
1287 
1288   case amd64_sys_mq_notify:
1289   case amd64_x32_sys_mq_notify:
1290     return gdb_sys_mq_notify;
1291 
1292   case amd64_sys_mq_getsetattr:
1293   case amd64_x32_sys_mq_getsetattr:
1294     return gdb_sys_mq_getsetattr;
1295 
1296   case amd64_sys_kexec_load:
1297   case amd64_x32_sys_kexec_load:
1298     return gdb_sys_kexec_load;
1299 
1300   case amd64_sys_waitid:
1301   case amd64_x32_sys_waitid:
1302     return gdb_sys_waitid;
1303 
1304   case amd64_sys_add_key:
1305   case amd64_x32_sys_add_key:
1306     return gdb_sys_add_key;
1307 
1308   case amd64_sys_request_key:
1309   case amd64_x32_sys_request_key:
1310     return gdb_sys_request_key;
1311 
1312   case amd64_sys_keyctl:
1313   case amd64_x32_sys_keyctl:
1314     return gdb_sys_keyctl;
1315 
1316   case amd64_sys_ioprio_set:
1317   case amd64_x32_sys_ioprio_set:
1318     return gdb_sys_ioprio_set;
1319 
1320   case amd64_sys_ioprio_get:
1321   case amd64_x32_sys_ioprio_get:
1322     return gdb_sys_ioprio_get;
1323 
1324   case amd64_sys_inotify_init:
1325   case amd64_x32_sys_inotify_init:
1326     return gdb_sys_inotify_init;
1327 
1328   case amd64_sys_inotify_add_watch:
1329   case amd64_x32_sys_inotify_add_watch:
1330     return gdb_sys_inotify_add_watch;
1331 
1332   case amd64_sys_inotify_rm_watch:
1333   case amd64_x32_sys_inotify_rm_watch:
1334     return gdb_sys_inotify_rm_watch;
1335 
1336   case amd64_sys_migrate_pages:
1337   case amd64_x32_sys_migrate_pages:
1338     return gdb_sys_migrate_pages;
1339 
1340   case amd64_sys_openat:
1341   case amd64_x32_sys_openat:
1342     return gdb_sys_openat;
1343 
1344   case amd64_sys_mkdirat:
1345   case amd64_x32_sys_mkdirat:
1346     return gdb_sys_mkdirat;
1347 
1348   case amd64_sys_mknodat:
1349   case amd64_x32_sys_mknodat:
1350     return gdb_sys_mknodat;
1351 
1352   case amd64_sys_fchownat:
1353   case amd64_x32_sys_fchownat:
1354     return gdb_sys_fchownat;
1355 
1356   case amd64_sys_futimesat:
1357   case amd64_x32_sys_futimesat:
1358     return gdb_sys_futimesat;
1359 
1360   case amd64_sys_newfstatat:
1361   case amd64_x32_sys_newfstatat:
1362     return gdb_sys_newfstatat;
1363 
1364   case amd64_sys_unlinkat:
1365   case amd64_x32_sys_unlinkat:
1366     return gdb_sys_unlinkat;
1367 
1368   case amd64_sys_renameat:
1369   case amd64_x32_sys_renameat:
1370     return gdb_sys_renameat;
1371 
1372   case amd64_sys_linkat:
1373   case amd64_x32_sys_linkat:
1374     return gdb_sys_linkat;
1375 
1376   case amd64_sys_symlinkat:
1377   case amd64_x32_sys_symlinkat:
1378     return gdb_sys_symlinkat;
1379 
1380   case amd64_sys_readlinkat:
1381   case amd64_x32_sys_readlinkat:
1382     return gdb_sys_readlinkat;
1383 
1384   case amd64_sys_fchmodat:
1385   case amd64_x32_sys_fchmodat:
1386     return gdb_sys_fchmodat;
1387 
1388   case amd64_sys_faccessat:
1389   case amd64_x32_sys_faccessat:
1390     return gdb_sys_faccessat;
1391 
1392   case amd64_sys_pselect6:
1393   case amd64_x32_sys_pselect6:
1394     return gdb_sys_pselect6;
1395 
1396   case amd64_sys_ppoll:
1397   case amd64_x32_sys_ppoll:
1398     return gdb_sys_ppoll;
1399 
1400   case amd64_sys_unshare:
1401   case amd64_x32_sys_unshare:
1402     return gdb_sys_unshare;
1403 
1404   case amd64_sys_set_robust_list:
1405   case amd64_x32_sys_set_robust_list:
1406     return gdb_sys_set_robust_list;
1407 
1408   case amd64_sys_get_robust_list:
1409   case amd64_x32_sys_get_robust_list:
1410     return gdb_sys_get_robust_list;
1411 
1412   case amd64_sys_splice:
1413   case amd64_x32_sys_splice:
1414     return gdb_sys_splice;
1415 
1416   case amd64_sys_tee:
1417   case amd64_x32_sys_tee:
1418     return gdb_sys_tee;
1419 
1420   case amd64_sys_sync_file_range:
1421   case amd64_x32_sys_sync_file_range:
1422     return gdb_sys_sync_file_range;
1423 
1424   case amd64_sys_vmsplice:
1425   case amd64_x32_sys_vmsplice:
1426     return gdb_sys_vmsplice;
1427 
1428   case amd64_sys_move_pages:
1429   case amd64_x32_sys_move_pages:
1430     return gdb_sys_move_pages;
1431 
1432   default:
1433     return gdb_sys_no_syscall;
1434   }
1435 }
1436 
1437 /* Parse the arguments of current system call instruction and record
1438    the values of the registers and memory that will be changed into
1439    "record_full_arch_list".  This instruction is "syscall".
1440 
1441    Return -1 if something wrong.  */
1442 
1443 static struct linux_record_tdep amd64_linux_record_tdep;
1444 static struct linux_record_tdep amd64_x32_linux_record_tdep;
1445 
1446 #define RECORD_ARCH_GET_FS	0x1003
1447 #define RECORD_ARCH_GET_GS	0x1004
1448 
1449 static int
1450 amd64_linux_syscall_record_common (struct regcache *regcache,
1451 				   struct linux_record_tdep *linux_record_tdep_p)
1452 {
1453   int ret;
1454   ULONGEST syscall_native;
1455   enum gdb_syscall syscall_gdb = gdb_sys_no_syscall;
1456 
1457   regcache_raw_read_unsigned (regcache, AMD64_RAX_REGNUM, &syscall_native);
1458 
1459   switch (syscall_native)
1460     {
1461     case amd64_sys_rt_sigreturn:
1462     case amd64_x32_sys_rt_sigreturn:
1463       if (amd64_all_but_ip_registers_record (regcache))
1464         return -1;
1465       return 0;
1466       break;
1467 
1468     case amd64_sys_arch_prctl:
1469     case amd64_x32_sys_arch_prctl:
1470       {
1471 	ULONGEST arg3;
1472 	regcache_raw_read_unsigned (regcache, linux_record_tdep_p->arg3,
1473 				    &arg3);
1474 	if (arg3 == RECORD_ARCH_GET_FS || arg3 == RECORD_ARCH_GET_GS)
1475 	  {
1476 	    CORE_ADDR addr;
1477 
1478 	    regcache_raw_read_unsigned (regcache,
1479 					linux_record_tdep_p->arg2,
1480 					&addr);
1481 	    if (record_full_arch_list_add_mem
1482 		(addr, linux_record_tdep_p->size_ulong))
1483 	      return -1;
1484 	  }
1485 	goto record_regs;
1486       }
1487       break;
1488     }
1489 
1490   syscall_gdb
1491     = amd64_canonicalize_syscall ((enum amd64_syscall) syscall_native);
1492 
1493   if (syscall_gdb == gdb_sys_no_syscall)
1494     {
1495       printf_unfiltered (_("Process record and replay target doesn't "
1496                            "support syscall number %s\n"),
1497 			 pulongest (syscall_native));
1498       return -1;
1499     }
1500   else
1501     {
1502       ret = record_linux_system_call (syscall_gdb, regcache,
1503                                       linux_record_tdep_p);
1504       if (ret)
1505         return ret;
1506     }
1507 
1508  record_regs:
1509   /* Record the return value of the system call.  */
1510   if (record_full_arch_list_add_reg (regcache, AMD64_RCX_REGNUM))
1511     return -1;
1512   if (record_full_arch_list_add_reg (regcache, AMD64_R11_REGNUM))
1513     return -1;
1514 
1515   return 0;
1516 }
1517 
1518 static int
1519 amd64_linux_syscall_record (struct regcache *regcache)
1520 {
1521   return amd64_linux_syscall_record_common (regcache,
1522 					    &amd64_linux_record_tdep);
1523 }
1524 
1525 static int
1526 amd64_x32_linux_syscall_record (struct regcache *regcache)
1527 {
1528   return amd64_linux_syscall_record_common (regcache,
1529 					    &amd64_x32_linux_record_tdep);
1530 }
1531 
1532 #define AMD64_LINUX_redzone    128
1533 #define AMD64_LINUX_xstate     512
1534 #define AMD64_LINUX_frame_size 560
1535 
1536 static int
1537 amd64_linux_record_signal (struct gdbarch *gdbarch,
1538                            struct regcache *regcache,
1539                            enum gdb_signal signal)
1540 {
1541   ULONGEST rsp;
1542 
1543   if (amd64_all_but_ip_registers_record (regcache))
1544     return -1;
1545 
1546   if (record_full_arch_list_add_reg (regcache, AMD64_RIP_REGNUM))
1547     return -1;
1548 
1549   /* Record the change in the stack.  */
1550   regcache_raw_read_unsigned (regcache, AMD64_RSP_REGNUM, &rsp);
1551   /* redzone
1552      sp -= 128; */
1553   rsp -= AMD64_LINUX_redzone;
1554   /* This is for xstate.
1555      sp -= sizeof (struct _fpstate);  */
1556   rsp -= AMD64_LINUX_xstate;
1557   /* This is for frame_size.
1558      sp -= sizeof (struct rt_sigframe);  */
1559   rsp -= AMD64_LINUX_frame_size;
1560   if (record_full_arch_list_add_mem (rsp, AMD64_LINUX_redzone
1561                                      + AMD64_LINUX_xstate
1562                                      + AMD64_LINUX_frame_size))
1563     return -1;
1564 
1565   if (record_full_arch_list_add_end ())
1566     return -1;
1567 
1568   return 0;
1569 }
1570 
1571 /* Get Linux/x86 target description from core dump.  */
1572 
1573 static const struct target_desc *
1574 amd64_linux_core_read_description (struct gdbarch *gdbarch,
1575 				  struct target_ops *target,
1576 				  bfd *abfd)
1577 {
1578   /* Linux/x86-64.  */
1579   uint64_t xcr0 = i386_linux_core_read_xcr0 (abfd);
1580 
1581   switch (xcr0 & X86_XSTATE_ALL_MASK)
1582     {
1583     case X86_XSTATE_MPX_AVX512_MASK:
1584     case X86_XSTATE_AVX512_MASK:
1585       if (gdbarch_ptr_bit (gdbarch) == 32)
1586 	return tdesc_x32_avx512_linux;
1587       else
1588 	return tdesc_amd64_avx512_linux;
1589     case X86_XSTATE_MPX_MASK:
1590       if (gdbarch_ptr_bit (gdbarch) == 32)
1591 	return tdesc_x32_avx_linux;  /* No x32 MPX falling back to AVX.  */
1592       else
1593 	return tdesc_amd64_mpx_linux;
1594     case X86_XSTATE_AVX_MPX_MASK:
1595       if (gdbarch_ptr_bit (gdbarch) == 32)
1596 	return tdesc_x32_avx_linux;  /* No x32 MPX falling back to AVX.  */
1597       else
1598 	return tdesc_amd64_avx_mpx_linux;
1599     case X86_XSTATE_AVX_MASK:
1600       if (gdbarch_ptr_bit (gdbarch) == 32)
1601 	return tdesc_x32_avx_linux;
1602       else
1603 	return tdesc_amd64_avx_linux;
1604     default:
1605       if (gdbarch_ptr_bit (gdbarch) == 32)
1606 	return tdesc_x32_linux;
1607       else
1608 	return tdesc_amd64_linux;
1609     }
1610 }
1611 
1612 /* Similar to amd64_supply_fpregset, but use XSAVE extended state.  */
1613 
1614 static void
1615 amd64_linux_supply_xstateregset (const struct regset *regset,
1616 				 struct regcache *regcache, int regnum,
1617 				 const void *xstateregs, size_t len)
1618 {
1619   amd64_supply_xsave (regcache, regnum, xstateregs);
1620 }
1621 
1622 /* Similar to amd64_collect_fpregset, but use XSAVE extended state.  */
1623 
1624 static void
1625 amd64_linux_collect_xstateregset (const struct regset *regset,
1626 				  const struct regcache *regcache,
1627 				  int regnum, void *xstateregs, size_t len)
1628 {
1629   amd64_collect_xsave (regcache, regnum, xstateregs, 1);
1630 }
1631 
1632 static const struct regset amd64_linux_xstateregset =
1633   {
1634     NULL,
1635     amd64_linux_supply_xstateregset,
1636     amd64_linux_collect_xstateregset
1637   };
1638 
1639 /* Iterate over core file register note sections.  */
1640 
1641 static void
1642 amd64_linux_iterate_over_regset_sections (struct gdbarch *gdbarch,
1643 					  iterate_over_regset_sections_cb *cb,
1644 					  void *cb_data,
1645 					  const struct regcache *regcache)
1646 {
1647   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
1648 
1649   cb (".reg", 27 * 8, &i386_gregset, NULL, cb_data);
1650   cb (".reg2", 512, &amd64_fpregset, NULL, cb_data);
1651   cb (".reg-xstate",  X86_XSTATE_SIZE (tdep->xcr0),
1652       &amd64_linux_xstateregset, "XSAVE extended state", cb_data);
1653 }
1654 
1655 /* The instruction sequences used in x86_64 machines for a
1656    disabled is-enabled probe.  */
1657 
1658 const gdb_byte amd64_dtrace_disabled_probe_sequence_1[] = {
1659   /* xor %rax, %rax */  0x48, 0x33, 0xc0,
1660   /* nop            */  0x90,
1661   /* nop            */  0x90
1662 };
1663 
1664 const gdb_byte amd64_dtrace_disabled_probe_sequence_2[] = {
1665   /* xor %rax, %rax */  0x48, 0x33, 0xc0,
1666   /* ret            */  0xc3,
1667   /* nop            */  0x90
1668 };
1669 
1670 /* The instruction sequence used in x86_64 machines for enabling a
1671    DTrace is-enabled probe.  */
1672 
1673 const gdb_byte amd64_dtrace_enable_probe_sequence[] = {
1674   /* mov $0x1, %eax */ 0xb8, 0x01, 0x00, 0x00, 0x00
1675 };
1676 
1677 /* The instruction sequence used in x86_64 machines for disabling a
1678    DTrace is-enabled probe.  */
1679 
1680 const gdb_byte amd64_dtrace_disable_probe_sequence[] = {
1681   /* xor %rax, %rax; nop; nop */ 0x48, 0x33, 0xC0, 0x90, 0x90
1682 };
1683 
1684 /* Implementation of `gdbarch_dtrace_probe_is_enabled', as defined in
1685    gdbarch.h.  */
1686 
1687 static int
1688 amd64_dtrace_probe_is_enabled (struct gdbarch *gdbarch, CORE_ADDR addr)
1689 {
1690   gdb_byte buf[5];
1691 
1692   /* This function returns 1 if the instructions at ADDR do _not_
1693      follow any of the amd64_dtrace_disabled_probe_sequence_*
1694      patterns.
1695 
1696      Note that ADDR is offset 3 bytes from the beginning of these
1697      sequences.  */
1698 
1699   read_code (addr - 3, buf, 5);
1700   return (memcmp (buf, amd64_dtrace_disabled_probe_sequence_1, 5) != 0
1701 	  && memcmp (buf, amd64_dtrace_disabled_probe_sequence_2, 5) != 0);
1702 }
1703 
1704 /* Implementation of `gdbarch_dtrace_enable_probe', as defined in
1705    gdbarch.h.  */
1706 
1707 static void
1708 amd64_dtrace_enable_probe (struct gdbarch *gdbarch, CORE_ADDR addr)
1709 {
1710   /* Note also that ADDR is offset 3 bytes from the beginning of
1711      amd64_dtrace_enable_probe_sequence.  */
1712 
1713   write_memory (addr - 3, amd64_dtrace_enable_probe_sequence, 5);
1714 }
1715 
1716 /* Implementation of `gdbarch_dtrace_disable_probe', as defined in
1717    gdbarch.h.  */
1718 
1719 static void
1720 amd64_dtrace_disable_probe (struct gdbarch *gdbarch, CORE_ADDR addr)
1721 {
1722   /* Note also that ADDR is offset 3 bytes from the beginning of
1723      amd64_dtrace_disable_probe_sequence.  */
1724 
1725   write_memory (addr - 3, amd64_dtrace_disable_probe_sequence, 5);
1726 }
1727 
1728 /* Implementation of `gdbarch_dtrace_parse_probe_argument', as defined
1729    in gdbarch.h.  */
1730 
1731 static void
1732 amd64_dtrace_parse_probe_argument (struct gdbarch *gdbarch,
1733 				   struct parser_state *pstate,
1734 				   int narg)
1735 {
1736   struct stoken str;
1737 
1738   /* DTrace probe arguments can be found on the ABI-defined places for
1739      regular arguments at the current PC.  The probe abstraction
1740      currently supports up to 12 arguments for probes.  */
1741 
1742   if (narg < 6)
1743     {
1744       static const int arg_reg_map[6] =
1745 	{
1746 	  AMD64_RDI_REGNUM,  /* Arg 1.  */
1747 	  AMD64_RSI_REGNUM,  /* Arg 2.  */
1748 	  AMD64_RDX_REGNUM,  /* Arg 3.  */
1749 	  AMD64_RCX_REGNUM,  /* Arg 4.  */
1750 	  AMD64_R8_REGNUM,   /* Arg 5.  */
1751 	  AMD64_R9_REGNUM    /* Arg 6.  */
1752 	};
1753       int regno = arg_reg_map[narg];
1754       const char *regname = user_reg_map_regnum_to_name (gdbarch, regno);
1755 
1756       write_exp_elt_opcode (pstate, OP_REGISTER);
1757       str.ptr = regname;
1758       str.length = strlen (regname);
1759       write_exp_string (pstate, str);
1760       write_exp_elt_opcode (pstate, OP_REGISTER);
1761     }
1762   else
1763     {
1764       /* Additional arguments are passed on the stack.  */
1765       const char *regname = user_reg_map_regnum_to_name (gdbarch, AMD64_RSP_REGNUM);
1766 
1767       /* Displacement.  */
1768       write_exp_elt_opcode (pstate, OP_LONG);
1769       write_exp_elt_type (pstate, builtin_type (gdbarch)->builtin_long);
1770       write_exp_elt_longcst (pstate, narg - 6);
1771       write_exp_elt_opcode (pstate, OP_LONG);
1772 
1773       /* Register: SP.  */
1774       write_exp_elt_opcode (pstate, OP_REGISTER);
1775       str.ptr = regname;
1776       str.length = strlen (regname);
1777       write_exp_string (pstate, str);
1778       write_exp_elt_opcode (pstate, OP_REGISTER);
1779 
1780       write_exp_elt_opcode (pstate, BINOP_ADD);
1781 
1782       /* Cast to long. */
1783       write_exp_elt_opcode (pstate, UNOP_CAST);
1784       write_exp_elt_type (pstate,
1785 			  lookup_pointer_type (builtin_type (gdbarch)->builtin_long));
1786       write_exp_elt_opcode (pstate, UNOP_CAST);
1787 
1788       write_exp_elt_opcode (pstate, UNOP_IND);
1789     }
1790 }
1791 
1792 static void
1793 amd64_linux_init_abi_common(struct gdbarch_info info, struct gdbarch *gdbarch)
1794 {
1795   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
1796 
1797   linux_init_abi (info, gdbarch);
1798 
1799   tdep->sigtramp_p = amd64_linux_sigtramp_p;
1800   tdep->sigcontext_addr = amd64_linux_sigcontext_addr;
1801   tdep->sc_reg_offset = amd64_linux_sc_reg_offset;
1802   tdep->sc_num_regs = ARRAY_SIZE (amd64_linux_sc_reg_offset);
1803 
1804   tdep->xsave_xcr0_offset = I386_LINUX_XSAVE_XCR0_OFFSET;
1805 
1806   /* Add the %orig_rax register used for syscall restarting.  */
1807   set_gdbarch_write_pc (gdbarch, amd64_linux_write_pc);
1808 
1809   tdep->register_reggroup_p = amd64_linux_register_reggroup_p;
1810 
1811   /* Functions for 'catch syscall'.  */
1812   set_xml_syscall_file_name (gdbarch, XML_SYSCALL_FILENAME_AMD64);
1813   set_gdbarch_get_syscall_number (gdbarch,
1814                                   amd64_linux_get_syscall_number);
1815 
1816   /* Enable TLS support.  */
1817   set_gdbarch_fetch_tls_load_module_address (gdbarch,
1818                                              svr4_fetch_objfile_link_map);
1819 
1820   /* GNU/Linux uses SVR4-style shared libraries.  */
1821   set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target);
1822 
1823   /* GNU/Linux uses the dynamic linker included in the GNU C Library.  */
1824   set_gdbarch_skip_solib_resolver (gdbarch, glibc_skip_solib_resolver);
1825 
1826   /* Iterate over core file register note sections.  */
1827   set_gdbarch_iterate_over_regset_sections
1828     (gdbarch, amd64_linux_iterate_over_regset_sections);
1829 
1830   set_gdbarch_core_read_description (gdbarch,
1831 				     amd64_linux_core_read_description);
1832 
1833   /* Displaced stepping.  */
1834   set_gdbarch_displaced_step_copy_insn (gdbarch,
1835                                         amd64_displaced_step_copy_insn);
1836   set_gdbarch_displaced_step_fixup (gdbarch, amd64_displaced_step_fixup);
1837   set_gdbarch_displaced_step_free_closure (gdbarch,
1838                                            simple_displaced_step_free_closure);
1839   set_gdbarch_displaced_step_location (gdbarch,
1840                                        linux_displaced_step_location);
1841 
1842   set_gdbarch_process_record (gdbarch, i386_process_record);
1843   set_gdbarch_process_record_signal (gdbarch, amd64_linux_record_signal);
1844 
1845   set_gdbarch_get_siginfo_type (gdbarch, x86_linux_get_siginfo_type);
1846   set_gdbarch_handle_segmentation_fault (gdbarch,
1847 					 i386_linux_handle_segmentation_fault);
1848 }
1849 
1850 static void
1851 amd64_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
1852 {
1853   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
1854   const struct target_desc *tdesc = info.target_desc;
1855   struct tdesc_arch_data *tdesc_data
1856     = (struct tdesc_arch_data *) info.tdep_info;
1857   const struct tdesc_feature *feature;
1858   int valid_p;
1859 
1860   gdb_assert (tdesc_data);
1861 
1862   tdep->gregset_reg_offset = amd64_linux_gregset_reg_offset;
1863   tdep->gregset_num_regs = ARRAY_SIZE (amd64_linux_gregset_reg_offset);
1864   tdep->sizeof_gregset = 27 * 8;
1865 
1866   amd64_init_abi (info, gdbarch);
1867 
1868   /* Reserve a number for orig_rax.  */
1869   set_gdbarch_num_regs (gdbarch, AMD64_LINUX_NUM_REGS);
1870 
1871   if (! tdesc_has_registers (tdesc))
1872     tdesc = tdesc_amd64_linux;
1873   tdep->tdesc = tdesc;
1874 
1875   feature = tdesc_find_feature (tdesc, "org.gnu.gdb.i386.linux");
1876   if (feature == NULL)
1877     return;
1878 
1879   valid_p = tdesc_numbered_register (feature, tdesc_data,
1880 				     AMD64_LINUX_ORIG_RAX_REGNUM,
1881 				     "orig_rax");
1882   if (!valid_p)
1883     return;
1884 
1885   amd64_linux_init_abi_common (info, gdbarch);
1886 
1887   /* Initialize the amd64_linux_record_tdep.  */
1888   /* These values are the size of the type that will be used in a system
1889      call.  They are obtained from Linux Kernel source.  */
1890   amd64_linux_record_tdep.size_pointer
1891     = gdbarch_ptr_bit (gdbarch) / TARGET_CHAR_BIT;
1892   amd64_linux_record_tdep.size__old_kernel_stat = 32;
1893   amd64_linux_record_tdep.size_tms = 32;
1894   amd64_linux_record_tdep.size_loff_t = 8;
1895   amd64_linux_record_tdep.size_flock = 32;
1896   amd64_linux_record_tdep.size_oldold_utsname = 45;
1897   amd64_linux_record_tdep.size_ustat = 32;
1898   /* ADM64 doesn't need this size because it doesn't have sys_sigaction
1899      but sys_rt_sigaction.  */
1900   amd64_linux_record_tdep.size_old_sigaction = 32;
1901   /* ADM64 doesn't need this size because it doesn't have sys_sigpending
1902      but sys_rt_sigpending.  */
1903   amd64_linux_record_tdep.size_old_sigset_t = 8;
1904   amd64_linux_record_tdep.size_rlimit = 16;
1905   amd64_linux_record_tdep.size_rusage = 144;
1906   amd64_linux_record_tdep.size_timeval = 16;
1907   amd64_linux_record_tdep.size_timezone = 8;
1908   /* ADM64 doesn't need this size because it doesn't have sys_getgroups16
1909      but sys_getgroups.  */
1910   amd64_linux_record_tdep.size_old_gid_t = 2;
1911   /* ADM64 doesn't need this size because it doesn't have sys_getresuid16
1912      but sys_getresuid.  */
1913   amd64_linux_record_tdep.size_old_uid_t = 2;
1914   amd64_linux_record_tdep.size_fd_set = 128;
1915   /* ADM64 doesn't need this size because it doesn't have sys_readdir. */
1916   amd64_linux_record_tdep.size_old_dirent = 280;
1917   amd64_linux_record_tdep.size_statfs = 120;
1918   amd64_linux_record_tdep.size_statfs64 = 120;
1919   amd64_linux_record_tdep.size_sockaddr = 16;
1920   amd64_linux_record_tdep.size_int
1921     = gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT;
1922   amd64_linux_record_tdep.size_long
1923     = gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT;
1924   amd64_linux_record_tdep.size_ulong
1925     = gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT;
1926   amd64_linux_record_tdep.size_msghdr = 56;
1927   amd64_linux_record_tdep.size_itimerval = 32;
1928   amd64_linux_record_tdep.size_stat = 144;
1929   amd64_linux_record_tdep.size_old_utsname = 325;
1930   amd64_linux_record_tdep.size_sysinfo = 112;
1931   amd64_linux_record_tdep.size_msqid_ds = 120;
1932   amd64_linux_record_tdep.size_shmid_ds = 112;
1933   amd64_linux_record_tdep.size_new_utsname = 390;
1934   amd64_linux_record_tdep.size_timex = 208;
1935   amd64_linux_record_tdep.size_mem_dqinfo = 24;
1936   amd64_linux_record_tdep.size_if_dqblk = 72;
1937   amd64_linux_record_tdep.size_fs_quota_stat = 80;
1938   amd64_linux_record_tdep.size_timespec = 16;
1939   amd64_linux_record_tdep.size_pollfd = 8;
1940   amd64_linux_record_tdep.size_NFS_FHSIZE = 32;
1941   amd64_linux_record_tdep.size_knfsd_fh = 132;
1942   amd64_linux_record_tdep.size_TASK_COMM_LEN = 16;
1943   amd64_linux_record_tdep.size_sigaction = 32;
1944   amd64_linux_record_tdep.size_sigset_t = 8;
1945   amd64_linux_record_tdep.size_siginfo_t = 128;
1946   amd64_linux_record_tdep.size_cap_user_data_t = 8;
1947   amd64_linux_record_tdep.size_stack_t = 24;
1948   amd64_linux_record_tdep.size_off_t = 8;
1949   amd64_linux_record_tdep.size_stat64 = 144;
1950   amd64_linux_record_tdep.size_gid_t = 4;
1951   amd64_linux_record_tdep.size_uid_t = 4;
1952   amd64_linux_record_tdep.size_PAGE_SIZE = 4096;
1953   amd64_linux_record_tdep.size_flock64 = 32;
1954   amd64_linux_record_tdep.size_user_desc = 16;
1955   amd64_linux_record_tdep.size_io_event = 32;
1956   amd64_linux_record_tdep.size_iocb = 64;
1957   amd64_linux_record_tdep.size_epoll_event = 12;
1958   amd64_linux_record_tdep.size_itimerspec = 32;
1959   amd64_linux_record_tdep.size_mq_attr = 64;
1960   amd64_linux_record_tdep.size_termios = 36;
1961   amd64_linux_record_tdep.size_termios2 = 44;
1962   amd64_linux_record_tdep.size_pid_t = 4;
1963   amd64_linux_record_tdep.size_winsize = 8;
1964   amd64_linux_record_tdep.size_serial_struct = 72;
1965   amd64_linux_record_tdep.size_serial_icounter_struct = 80;
1966   amd64_linux_record_tdep.size_hayes_esp_config = 12;
1967   amd64_linux_record_tdep.size_size_t = 8;
1968   amd64_linux_record_tdep.size_iovec = 16;
1969   amd64_linux_record_tdep.size_time_t = 8;
1970 
1971   /* These values are the second argument of system call "sys_fcntl"
1972      and "sys_fcntl64".  They are obtained from Linux Kernel source.  */
1973   amd64_linux_record_tdep.fcntl_F_GETLK = 5;
1974   amd64_linux_record_tdep.fcntl_F_GETLK64 = 12;
1975   amd64_linux_record_tdep.fcntl_F_SETLK64 = 13;
1976   amd64_linux_record_tdep.fcntl_F_SETLKW64 = 14;
1977 
1978   amd64_linux_record_tdep.arg1 = AMD64_RDI_REGNUM;
1979   amd64_linux_record_tdep.arg2 = AMD64_RSI_REGNUM;
1980   amd64_linux_record_tdep.arg3 = AMD64_RDX_REGNUM;
1981   amd64_linux_record_tdep.arg4 = AMD64_R10_REGNUM;
1982   amd64_linux_record_tdep.arg5 = AMD64_R8_REGNUM;
1983   amd64_linux_record_tdep.arg6 = AMD64_R9_REGNUM;
1984 
1985   /* These values are the second argument of system call "sys_ioctl".
1986      They are obtained from Linux Kernel source.  */
1987   amd64_linux_record_tdep.ioctl_TCGETS = 0x5401;
1988   amd64_linux_record_tdep.ioctl_TCSETS = 0x5402;
1989   amd64_linux_record_tdep.ioctl_TCSETSW = 0x5403;
1990   amd64_linux_record_tdep.ioctl_TCSETSF = 0x5404;
1991   amd64_linux_record_tdep.ioctl_TCGETA = 0x5405;
1992   amd64_linux_record_tdep.ioctl_TCSETA = 0x5406;
1993   amd64_linux_record_tdep.ioctl_TCSETAW = 0x5407;
1994   amd64_linux_record_tdep.ioctl_TCSETAF = 0x5408;
1995   amd64_linux_record_tdep.ioctl_TCSBRK = 0x5409;
1996   amd64_linux_record_tdep.ioctl_TCXONC = 0x540A;
1997   amd64_linux_record_tdep.ioctl_TCFLSH = 0x540B;
1998   amd64_linux_record_tdep.ioctl_TIOCEXCL = 0x540C;
1999   amd64_linux_record_tdep.ioctl_TIOCNXCL = 0x540D;
2000   amd64_linux_record_tdep.ioctl_TIOCSCTTY = 0x540E;
2001   amd64_linux_record_tdep.ioctl_TIOCGPGRP = 0x540F;
2002   amd64_linux_record_tdep.ioctl_TIOCSPGRP = 0x5410;
2003   amd64_linux_record_tdep.ioctl_TIOCOUTQ = 0x5411;
2004   amd64_linux_record_tdep.ioctl_TIOCSTI = 0x5412;
2005   amd64_linux_record_tdep.ioctl_TIOCGWINSZ = 0x5413;
2006   amd64_linux_record_tdep.ioctl_TIOCSWINSZ = 0x5414;
2007   amd64_linux_record_tdep.ioctl_TIOCMGET = 0x5415;
2008   amd64_linux_record_tdep.ioctl_TIOCMBIS = 0x5416;
2009   amd64_linux_record_tdep.ioctl_TIOCMBIC = 0x5417;
2010   amd64_linux_record_tdep.ioctl_TIOCMSET = 0x5418;
2011   amd64_linux_record_tdep.ioctl_TIOCGSOFTCAR = 0x5419;
2012   amd64_linux_record_tdep.ioctl_TIOCSSOFTCAR = 0x541A;
2013   amd64_linux_record_tdep.ioctl_FIONREAD = 0x541B;
2014   amd64_linux_record_tdep.ioctl_TIOCINQ
2015     = amd64_linux_record_tdep.ioctl_FIONREAD;
2016   amd64_linux_record_tdep.ioctl_TIOCLINUX = 0x541C;
2017   amd64_linux_record_tdep.ioctl_TIOCCONS = 0x541D;
2018   amd64_linux_record_tdep.ioctl_TIOCGSERIAL = 0x541E;
2019   amd64_linux_record_tdep.ioctl_TIOCSSERIAL = 0x541F;
2020   amd64_linux_record_tdep.ioctl_TIOCPKT = 0x5420;
2021   amd64_linux_record_tdep.ioctl_FIONBIO = 0x5421;
2022   amd64_linux_record_tdep.ioctl_TIOCNOTTY = 0x5422;
2023   amd64_linux_record_tdep.ioctl_TIOCSETD = 0x5423;
2024   amd64_linux_record_tdep.ioctl_TIOCGETD = 0x5424;
2025   amd64_linux_record_tdep.ioctl_TCSBRKP = 0x5425;
2026   amd64_linux_record_tdep.ioctl_TIOCTTYGSTRUCT = 0x5426;
2027   amd64_linux_record_tdep.ioctl_TIOCSBRK = 0x5427;
2028   amd64_linux_record_tdep.ioctl_TIOCCBRK = 0x5428;
2029   amd64_linux_record_tdep.ioctl_TIOCGSID = 0x5429;
2030   amd64_linux_record_tdep.ioctl_TCGETS2 = 0x802c542a;
2031   amd64_linux_record_tdep.ioctl_TCSETS2 = 0x402c542b;
2032   amd64_linux_record_tdep.ioctl_TCSETSW2 = 0x402c542c;
2033   amd64_linux_record_tdep.ioctl_TCSETSF2 = 0x402c542d;
2034   amd64_linux_record_tdep.ioctl_TIOCGPTN = 0x80045430;
2035   amd64_linux_record_tdep.ioctl_TIOCSPTLCK = 0x40045431;
2036   amd64_linux_record_tdep.ioctl_FIONCLEX = 0x5450;
2037   amd64_linux_record_tdep.ioctl_FIOCLEX = 0x5451;
2038   amd64_linux_record_tdep.ioctl_FIOASYNC = 0x5452;
2039   amd64_linux_record_tdep.ioctl_TIOCSERCONFIG = 0x5453;
2040   amd64_linux_record_tdep.ioctl_TIOCSERGWILD = 0x5454;
2041   amd64_linux_record_tdep.ioctl_TIOCSERSWILD = 0x5455;
2042   amd64_linux_record_tdep.ioctl_TIOCGLCKTRMIOS = 0x5456;
2043   amd64_linux_record_tdep.ioctl_TIOCSLCKTRMIOS = 0x5457;
2044   amd64_linux_record_tdep.ioctl_TIOCSERGSTRUCT = 0x5458;
2045   amd64_linux_record_tdep.ioctl_TIOCSERGETLSR = 0x5459;
2046   amd64_linux_record_tdep.ioctl_TIOCSERGETMULTI = 0x545A;
2047   amd64_linux_record_tdep.ioctl_TIOCSERSETMULTI = 0x545B;
2048   amd64_linux_record_tdep.ioctl_TIOCMIWAIT = 0x545C;
2049   amd64_linux_record_tdep.ioctl_TIOCGICOUNT = 0x545D;
2050   amd64_linux_record_tdep.ioctl_TIOCGHAYESESP = 0x545E;
2051   amd64_linux_record_tdep.ioctl_TIOCSHAYESESP = 0x545F;
2052   amd64_linux_record_tdep.ioctl_FIOQSIZE = 0x5460;
2053 
2054   tdep->i386_syscall_record = amd64_linux_syscall_record;
2055 
2056   /* GNU/Linux uses SVR4-style shared libraries.  */
2057   set_solib_svr4_fetch_link_map_offsets
2058     (gdbarch, svr4_lp64_fetch_link_map_offsets);
2059 
2060   /* Register DTrace handlers.  */
2061   set_gdbarch_dtrace_parse_probe_argument (gdbarch, amd64_dtrace_parse_probe_argument);
2062   set_gdbarch_dtrace_probe_is_enabled (gdbarch, amd64_dtrace_probe_is_enabled);
2063   set_gdbarch_dtrace_enable_probe (gdbarch, amd64_dtrace_enable_probe);
2064   set_gdbarch_dtrace_disable_probe (gdbarch, amd64_dtrace_disable_probe);
2065 }
2066 
2067 static void
2068 amd64_x32_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
2069 {
2070   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
2071   const struct target_desc *tdesc = info.target_desc;
2072   struct tdesc_arch_data *tdesc_data
2073     = (struct tdesc_arch_data *) info.tdep_info;
2074   const struct tdesc_feature *feature;
2075   int valid_p;
2076 
2077   gdb_assert (tdesc_data);
2078 
2079   tdep->gregset_reg_offset = amd64_linux_gregset_reg_offset;
2080   tdep->gregset_num_regs = ARRAY_SIZE (amd64_linux_gregset_reg_offset);
2081   tdep->sizeof_gregset = 27 * 8;
2082 
2083   amd64_x32_init_abi (info, gdbarch);
2084 
2085   /* Reserve a number for orig_rax.  */
2086   set_gdbarch_num_regs (gdbarch, AMD64_LINUX_NUM_REGS);
2087 
2088   if (! tdesc_has_registers (tdesc))
2089     tdesc = tdesc_x32_linux;
2090   tdep->tdesc = tdesc;
2091 
2092   feature = tdesc_find_feature (tdesc, "org.gnu.gdb.i386.linux");
2093   if (feature == NULL)
2094     return;
2095 
2096   valid_p = tdesc_numbered_register (feature, tdesc_data,
2097 				     AMD64_LINUX_ORIG_RAX_REGNUM,
2098 				     "orig_rax");
2099   if (!valid_p)
2100     return;
2101 
2102   amd64_linux_init_abi_common (info, gdbarch);
2103 
2104   /* Initialize the amd64_x32_linux_record_tdep.  */
2105   /* These values are the size of the type that will be used in a system
2106      call.  They are obtained from Linux Kernel source.  */
2107   amd64_x32_linux_record_tdep.size_pointer
2108     = gdbarch_ptr_bit (gdbarch) / TARGET_CHAR_BIT;
2109   amd64_x32_linux_record_tdep.size__old_kernel_stat = 32;
2110   amd64_x32_linux_record_tdep.size_tms = 32;
2111   amd64_x32_linux_record_tdep.size_loff_t = 8;
2112   amd64_x32_linux_record_tdep.size_flock = 32;
2113   amd64_x32_linux_record_tdep.size_oldold_utsname = 45;
2114   amd64_x32_linux_record_tdep.size_ustat = 32;
2115   /* ADM64 doesn't need this size because it doesn't have sys_sigaction
2116      but sys_rt_sigaction.  */
2117   amd64_x32_linux_record_tdep.size_old_sigaction = 16;
2118   /* ADM64 doesn't need this size because it doesn't have sys_sigpending
2119      but sys_rt_sigpending.  */
2120   amd64_x32_linux_record_tdep.size_old_sigset_t = 4;
2121   amd64_x32_linux_record_tdep.size_rlimit = 16;
2122   amd64_x32_linux_record_tdep.size_rusage = 144;
2123   amd64_x32_linux_record_tdep.size_timeval = 16;
2124   amd64_x32_linux_record_tdep.size_timezone = 8;
2125   /* ADM64 doesn't need this size because it doesn't have sys_getgroups16
2126      but sys_getgroups.  */
2127   amd64_x32_linux_record_tdep.size_old_gid_t = 2;
2128   /* ADM64 doesn't need this size because it doesn't have sys_getresuid16
2129      but sys_getresuid.  */
2130   amd64_x32_linux_record_tdep.size_old_uid_t = 2;
2131   amd64_x32_linux_record_tdep.size_fd_set = 128;
2132   /* ADM64 doesn't need this size because it doesn't have sys_readdir. */
2133   amd64_x32_linux_record_tdep.size_old_dirent = 268;
2134   amd64_x32_linux_record_tdep.size_statfs = 120;
2135   amd64_x32_linux_record_tdep.size_statfs64 = 120;
2136   amd64_x32_linux_record_tdep.size_sockaddr = 16;
2137   amd64_x32_linux_record_tdep.size_int
2138     = gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT;
2139   amd64_x32_linux_record_tdep.size_long
2140     = gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT;
2141   amd64_x32_linux_record_tdep.size_ulong
2142     = gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT;
2143   amd64_x32_linux_record_tdep.size_msghdr = 28;
2144   amd64_x32_linux_record_tdep.size_itimerval = 32;
2145   amd64_x32_linux_record_tdep.size_stat = 144;
2146   amd64_x32_linux_record_tdep.size_old_utsname = 325;
2147   amd64_x32_linux_record_tdep.size_sysinfo = 112;
2148   amd64_x32_linux_record_tdep.size_msqid_ds = 120;
2149   amd64_x32_linux_record_tdep.size_shmid_ds = 112;
2150   amd64_x32_linux_record_tdep.size_new_utsname = 390;
2151   amd64_x32_linux_record_tdep.size_timex = 208;
2152   amd64_x32_linux_record_tdep.size_mem_dqinfo = 24;
2153   amd64_x32_linux_record_tdep.size_if_dqblk = 72;
2154   amd64_x32_linux_record_tdep.size_fs_quota_stat = 80;
2155   amd64_x32_linux_record_tdep.size_timespec = 16;
2156   amd64_x32_linux_record_tdep.size_pollfd = 8;
2157   amd64_x32_linux_record_tdep.size_NFS_FHSIZE = 32;
2158   amd64_x32_linux_record_tdep.size_knfsd_fh = 132;
2159   amd64_x32_linux_record_tdep.size_TASK_COMM_LEN = 16;
2160   amd64_x32_linux_record_tdep.size_sigaction = 20;
2161   amd64_x32_linux_record_tdep.size_sigset_t = 8;
2162   amd64_x32_linux_record_tdep.size_siginfo_t = 128;
2163   amd64_x32_linux_record_tdep.size_cap_user_data_t = 8;
2164   amd64_x32_linux_record_tdep.size_stack_t = 12;
2165   amd64_x32_linux_record_tdep.size_off_t = 8;
2166   amd64_x32_linux_record_tdep.size_stat64 = 144;
2167   amd64_x32_linux_record_tdep.size_gid_t = 4;
2168   amd64_x32_linux_record_tdep.size_uid_t = 4;
2169   amd64_x32_linux_record_tdep.size_PAGE_SIZE = 4096;
2170   amd64_x32_linux_record_tdep.size_flock64 = 32;
2171   amd64_x32_linux_record_tdep.size_user_desc = 16;
2172   amd64_x32_linux_record_tdep.size_io_event = 32;
2173   amd64_x32_linux_record_tdep.size_iocb = 64;
2174   amd64_x32_linux_record_tdep.size_epoll_event = 12;
2175   amd64_x32_linux_record_tdep.size_itimerspec = 32;
2176   amd64_x32_linux_record_tdep.size_mq_attr = 64;
2177   amd64_x32_linux_record_tdep.size_termios = 36;
2178   amd64_x32_linux_record_tdep.size_termios2 = 44;
2179   amd64_x32_linux_record_tdep.size_pid_t = 4;
2180   amd64_x32_linux_record_tdep.size_winsize = 8;
2181   amd64_x32_linux_record_tdep.size_serial_struct = 72;
2182   amd64_x32_linux_record_tdep.size_serial_icounter_struct = 80;
2183   amd64_x32_linux_record_tdep.size_hayes_esp_config = 12;
2184   amd64_x32_linux_record_tdep.size_size_t = 4;
2185   amd64_x32_linux_record_tdep.size_iovec = 8;
2186   amd64_x32_linux_record_tdep.size_time_t = 8;
2187 
2188   /* These values are the second argument of system call "sys_fcntl"
2189      and "sys_fcntl64".  They are obtained from Linux Kernel source.  */
2190   amd64_x32_linux_record_tdep.fcntl_F_GETLK = 5;
2191   amd64_x32_linux_record_tdep.fcntl_F_GETLK64 = 12;
2192   amd64_x32_linux_record_tdep.fcntl_F_SETLK64 = 13;
2193   amd64_x32_linux_record_tdep.fcntl_F_SETLKW64 = 14;
2194 
2195   amd64_x32_linux_record_tdep.arg1 = AMD64_RDI_REGNUM;
2196   amd64_x32_linux_record_tdep.arg2 = AMD64_RSI_REGNUM;
2197   amd64_x32_linux_record_tdep.arg3 = AMD64_RDX_REGNUM;
2198   amd64_x32_linux_record_tdep.arg4 = AMD64_R10_REGNUM;
2199   amd64_x32_linux_record_tdep.arg5 = AMD64_R8_REGNUM;
2200   amd64_x32_linux_record_tdep.arg6 = AMD64_R9_REGNUM;
2201 
2202   /* These values are the second argument of system call "sys_ioctl".
2203      They are obtained from Linux Kernel source.  */
2204   amd64_x32_linux_record_tdep.ioctl_TCGETS = 0x5401;
2205   amd64_x32_linux_record_tdep.ioctl_TCSETS = 0x5402;
2206   amd64_x32_linux_record_tdep.ioctl_TCSETSW = 0x5403;
2207   amd64_x32_linux_record_tdep.ioctl_TCSETSF = 0x5404;
2208   amd64_x32_linux_record_tdep.ioctl_TCGETA = 0x5405;
2209   amd64_x32_linux_record_tdep.ioctl_TCSETA = 0x5406;
2210   amd64_x32_linux_record_tdep.ioctl_TCSETAW = 0x5407;
2211   amd64_x32_linux_record_tdep.ioctl_TCSETAF = 0x5408;
2212   amd64_x32_linux_record_tdep.ioctl_TCSBRK = 0x5409;
2213   amd64_x32_linux_record_tdep.ioctl_TCXONC = 0x540A;
2214   amd64_x32_linux_record_tdep.ioctl_TCFLSH = 0x540B;
2215   amd64_x32_linux_record_tdep.ioctl_TIOCEXCL = 0x540C;
2216   amd64_x32_linux_record_tdep.ioctl_TIOCNXCL = 0x540D;
2217   amd64_x32_linux_record_tdep.ioctl_TIOCSCTTY = 0x540E;
2218   amd64_x32_linux_record_tdep.ioctl_TIOCGPGRP = 0x540F;
2219   amd64_x32_linux_record_tdep.ioctl_TIOCSPGRP = 0x5410;
2220   amd64_x32_linux_record_tdep.ioctl_TIOCOUTQ = 0x5411;
2221   amd64_x32_linux_record_tdep.ioctl_TIOCSTI = 0x5412;
2222   amd64_x32_linux_record_tdep.ioctl_TIOCGWINSZ = 0x5413;
2223   amd64_x32_linux_record_tdep.ioctl_TIOCSWINSZ = 0x5414;
2224   amd64_x32_linux_record_tdep.ioctl_TIOCMGET = 0x5415;
2225   amd64_x32_linux_record_tdep.ioctl_TIOCMBIS = 0x5416;
2226   amd64_x32_linux_record_tdep.ioctl_TIOCMBIC = 0x5417;
2227   amd64_x32_linux_record_tdep.ioctl_TIOCMSET = 0x5418;
2228   amd64_x32_linux_record_tdep.ioctl_TIOCGSOFTCAR = 0x5419;
2229   amd64_x32_linux_record_tdep.ioctl_TIOCSSOFTCAR = 0x541A;
2230   amd64_x32_linux_record_tdep.ioctl_FIONREAD = 0x541B;
2231   amd64_x32_linux_record_tdep.ioctl_TIOCINQ = amd64_x32_linux_record_tdep.ioctl_FIONREAD;
2232   amd64_x32_linux_record_tdep.ioctl_TIOCLINUX = 0x541C;
2233   amd64_x32_linux_record_tdep.ioctl_TIOCCONS = 0x541D;
2234   amd64_x32_linux_record_tdep.ioctl_TIOCGSERIAL = 0x541E;
2235   amd64_x32_linux_record_tdep.ioctl_TIOCSSERIAL = 0x541F;
2236   amd64_x32_linux_record_tdep.ioctl_TIOCPKT = 0x5420;
2237   amd64_x32_linux_record_tdep.ioctl_FIONBIO = 0x5421;
2238   amd64_x32_linux_record_tdep.ioctl_TIOCNOTTY = 0x5422;
2239   amd64_x32_linux_record_tdep.ioctl_TIOCSETD = 0x5423;
2240   amd64_x32_linux_record_tdep.ioctl_TIOCGETD = 0x5424;
2241   amd64_x32_linux_record_tdep.ioctl_TCSBRKP = 0x5425;
2242   amd64_x32_linux_record_tdep.ioctl_TIOCTTYGSTRUCT = 0x5426;
2243   amd64_x32_linux_record_tdep.ioctl_TIOCSBRK = 0x5427;
2244   amd64_x32_linux_record_tdep.ioctl_TIOCCBRK = 0x5428;
2245   amd64_x32_linux_record_tdep.ioctl_TIOCGSID = 0x5429;
2246   amd64_x32_linux_record_tdep.ioctl_TCGETS2 = 0x802c542a;
2247   amd64_x32_linux_record_tdep.ioctl_TCSETS2 = 0x402c542b;
2248   amd64_x32_linux_record_tdep.ioctl_TCSETSW2 = 0x402c542c;
2249   amd64_x32_linux_record_tdep.ioctl_TCSETSF2 = 0x402c542d;
2250   amd64_x32_linux_record_tdep.ioctl_TIOCGPTN = 0x80045430;
2251   amd64_x32_linux_record_tdep.ioctl_TIOCSPTLCK = 0x40045431;
2252   amd64_x32_linux_record_tdep.ioctl_FIONCLEX = 0x5450;
2253   amd64_x32_linux_record_tdep.ioctl_FIOCLEX = 0x5451;
2254   amd64_x32_linux_record_tdep.ioctl_FIOASYNC = 0x5452;
2255   amd64_x32_linux_record_tdep.ioctl_TIOCSERCONFIG = 0x5453;
2256   amd64_x32_linux_record_tdep.ioctl_TIOCSERGWILD = 0x5454;
2257   amd64_x32_linux_record_tdep.ioctl_TIOCSERSWILD = 0x5455;
2258   amd64_x32_linux_record_tdep.ioctl_TIOCGLCKTRMIOS = 0x5456;
2259   amd64_x32_linux_record_tdep.ioctl_TIOCSLCKTRMIOS = 0x5457;
2260   amd64_x32_linux_record_tdep.ioctl_TIOCSERGSTRUCT = 0x5458;
2261   amd64_x32_linux_record_tdep.ioctl_TIOCSERGETLSR = 0x5459;
2262   amd64_x32_linux_record_tdep.ioctl_TIOCSERGETMULTI = 0x545A;
2263   amd64_x32_linux_record_tdep.ioctl_TIOCSERSETMULTI = 0x545B;
2264   amd64_x32_linux_record_tdep.ioctl_TIOCMIWAIT = 0x545C;
2265   amd64_x32_linux_record_tdep.ioctl_TIOCGICOUNT = 0x545D;
2266   amd64_x32_linux_record_tdep.ioctl_TIOCGHAYESESP = 0x545E;
2267   amd64_x32_linux_record_tdep.ioctl_TIOCSHAYESESP = 0x545F;
2268   amd64_x32_linux_record_tdep.ioctl_FIOQSIZE = 0x5460;
2269 
2270   tdep->i386_syscall_record = amd64_x32_linux_syscall_record;
2271 
2272   /* GNU/Linux uses SVR4-style shared libraries.  */
2273   set_solib_svr4_fetch_link_map_offsets
2274     (gdbarch, svr4_ilp32_fetch_link_map_offsets);
2275 }
2276 
2277 
2278 /* Provide a prototype to silence -Wmissing-prototypes.  */
2279 extern void _initialize_amd64_linux_tdep (void);
2280 
2281 void
2282 _initialize_amd64_linux_tdep (void)
2283 {
2284   gdbarch_register_osabi (bfd_arch_i386, bfd_mach_x86_64,
2285 			  GDB_OSABI_LINUX, amd64_linux_init_abi);
2286   gdbarch_register_osabi (bfd_arch_i386, bfd_mach_x64_32,
2287 			  GDB_OSABI_LINUX, amd64_x32_linux_init_abi);
2288 
2289   /* Initialize the Linux target description.  */
2290   initialize_tdesc_amd64_linux ();
2291   initialize_tdesc_amd64_avx_linux ();
2292   initialize_tdesc_amd64_mpx_linux ();
2293   initialize_tdesc_amd64_avx_mpx_linux ();
2294   initialize_tdesc_amd64_avx512_linux ();
2295 
2296   initialize_tdesc_x32_linux ();
2297   initialize_tdesc_x32_avx_linux ();
2298   initialize_tdesc_x32_avx512_linux ();
2299 }
2300