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