gold: Add a linker configure option --enable-relro
[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-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 \f
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 \f
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 \f
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 }