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