GDB (xrefs)
Loading...
Searching...
No Matches
amd64-linux-tdep.c
Go to the documentation of this file.
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>. */
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
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
114static 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 */
120};
121
122static 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 */
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
135static CORE_ADDR
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
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)
166 else
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
177static int
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
203static CORE_ADDR
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. */
221}
222
223
224static LONGEST
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. */
239
240 ret = extract_signed_integer (buf, byte_order);
241
242 return ret;
243}
244
245
246/* From <asm/sigcontext.h>. */
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
280static int
282 const struct reggroup *group)
283{
285 return (group == system_reggroup
286 || group == save_reggroup
287 || group == restore_reggroup);
288 return i386_register_reggroup_p (gdbarch, regnum, group);
289}
290
291/* Set the program counter for process PTID to PC. */
292
293static void
295{
297
298 /* We must be careful with modifying the program counter. If we
299 just interrupted a system call, the kernel might try to restart
300 it when we resume the inferior. On restarting the system call,
301 the kernel will try backing up the program counter even though it
302 no longer points at the system call. This typically results in a
303 SIGSEGV or SIGILL. We can prevent this by writing `-1' in the
304 "orig_rax" pseudo-register.
305
306 Note that "orig_rax" is saved when setting up a dummy call frame.
307 This means that it is properly restored when that frame is
308 popped, and that the interrupted system call will be restarted
309 when we resume the inferior on return from a function call from
310 within GDB. In all other cases the system call will not be
311 restarted. */
313}
314
315/* Record all registers but IP register for process-record. */
316
317static int
319{
321 return -1;
323 return -1;
325 return -1;
327 return -1;
329 return -1;
331 return -1;
333 return -1;
335 return -1;
337 return -1;
339 return -1;
341 return -1;
343 return -1;
345 return -1;
347 return -1;
349 return -1;
351 return -1;
353 return -1;
354
355 return 0;
356}
357
358/* amd64_canonicalize_syscall maps from the native amd64 Linux set
359 of syscall ids into a canonical set of syscall ids used by
360 process record. */
361
362static enum gdb_syscall
364{
365 DIAGNOSTIC_PUSH
366 DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
367
368 switch (syscall_number) {
369 case amd64_sys_read:
371 return gdb_sys_read;
372
373 case amd64_sys_write:
375 return gdb_sys_write;
376
377 case amd64_sys_open:
379 return gdb_sys_open;
380
381 case amd64_sys_close:
383 return gdb_sys_close;
384
387 return gdb_sys_newstat;
388
391 return gdb_sys_newfstat;
392
395 return gdb_sys_newlstat;
396
397 case amd64_sys_poll:
399 return gdb_sys_poll;
400
401 case amd64_sys_lseek:
403 return gdb_sys_lseek;
404
405 case amd64_sys_mmap:
407 return gdb_sys_mmap2;
408
411 return gdb_sys_mprotect;
412
413 case amd64_sys_munmap:
415 return gdb_sys_munmap;
416
417 case amd64_sys_brk:
419 return gdb_sys_brk;
420
424
428
432
433 case amd64_sys_ioctl:
435 return gdb_sys_ioctl;
436
439 return gdb_sys_pread64;
440
443 return gdb_sys_pwrite64;
444
445 case amd64_sys_readv:
447 return gdb_sys_readv;
448
449 case amd64_sys_writev:
451 return gdb_sys_writev;
452
453 case amd64_sys_access:
455 return gdb_sys_access;
456
457 case amd64_sys_pipe:
459 return gdb_sys_pipe;
460
461 case amd64_sys_pipe2:
462 return gdb_sys_pipe2;
463
465 return gdb_sys_getrandom;
466
467 case amd64_sys_select:
469 return gdb_sys_select;
470
473 return gdb_sys_sched_yield;
474
475 case amd64_sys_mremap:
477 return gdb_sys_mremap;
478
479 case amd64_sys_msync:
481 return gdb_sys_msync;
482
485 return gdb_sys_mincore;
486
489 return gdb_sys_madvise;
490
491 case amd64_sys_shmget:
493 return gdb_sys_shmget;
494
495 case amd64_sys_shmat:
497 return gdb_sys_shmat;
498
499 case amd64_sys_shmctl:
501 return gdb_sys_shmctl;
502
503 case amd64_sys_dup:
505 return gdb_sys_dup;
506
507 case amd64_sys_dup2:
509 return gdb_sys_dup2;
510
511 case amd64_sys_pause:
513 return gdb_sys_pause;
514
517 return gdb_sys_nanosleep;
518
521 return gdb_sys_getitimer;
522
523 case amd64_sys_alarm:
525 return gdb_sys_alarm;
526
529 return gdb_sys_setitimer;
530
531 case amd64_sys_getpid:
533 return gdb_sys_getpid;
534
537 return gdb_sys_sendfile64;
538
539 case amd64_sys_socket:
541 return gdb_sys_socket;
542
545 return gdb_sys_connect;
546
547 case amd64_sys_accept:
549 return gdb_sys_accept;
550
551 case amd64_sys_sendto:
553 return gdb_sys_sendto;
554
557 return gdb_sys_recvfrom;
558
561 return gdb_sys_sendmsg;
562
565 return gdb_sys_recvmsg;
566
569 return gdb_sys_shutdown;
570
571 case amd64_sys_bind:
573 return gdb_sys_bind;
574
575 case amd64_sys_listen:
577 return gdb_sys_listen;
578
581 return gdb_sys_getsockname;
582
585 return gdb_sys_getpeername;
586
589 return gdb_sys_socketpair;
590
593 return gdb_sys_setsockopt;
594
597 return gdb_sys_getsockopt;
598
599 case amd64_sys_clone:
601 return gdb_sys_clone;
602
603 case amd64_sys_fork:
605 return gdb_sys_fork;
606
607 case amd64_sys_vfork:
609 return gdb_sys_vfork;
610
611 case amd64_sys_execve:
613 return gdb_sys_execve;
614
615 case amd64_sys_exit:
617 return gdb_sys_exit;
618
619 case amd64_sys_wait4:
621 return gdb_sys_wait4;
622
623 case amd64_sys_kill:
625 return gdb_sys_kill;
626
627 case amd64_sys_uname:
629 return gdb_sys_uname;
630
631 case amd64_sys_semget:
633 return gdb_sys_semget;
634
635 case amd64_sys_semop:
637 return gdb_sys_semop;
638
639 case amd64_sys_semctl:
641 return gdb_sys_semctl;
642
643 case amd64_sys_shmdt:
645 return gdb_sys_shmdt;
646
647 case amd64_sys_msgget:
649 return gdb_sys_msgget;
650
651 case amd64_sys_msgsnd:
653 return gdb_sys_msgsnd;
654
655 case amd64_sys_msgrcv:
657 return gdb_sys_msgrcv;
658
659 case amd64_sys_msgctl:
661 return gdb_sys_msgctl;
662
663 case amd64_sys_fcntl:
665 return gdb_sys_fcntl;
666
667 case amd64_sys_flock:
669 return gdb_sys_flock;
670
671 case amd64_sys_fsync:
673 return gdb_sys_fsync;
674
677 return gdb_sys_fdatasync;
678
681 return gdb_sys_truncate;
682
685 return gdb_sys_ftruncate;
686
689 return gdb_sys_getdents;
690
691 case amd64_sys_getcwd:
693 return gdb_sys_getcwd;
694
695 case amd64_sys_chdir:
697 return gdb_sys_chdir;
698
699 case amd64_sys_fchdir:
701 return gdb_sys_fchdir;
702
703 case amd64_sys_rename:
705 return gdb_sys_rename;
706
707 case amd64_sys_mkdir:
709 return gdb_sys_mkdir;
710
711 case amd64_sys_rmdir:
713 return gdb_sys_rmdir;
714
715 case amd64_sys_creat:
717 return gdb_sys_creat;
718
719 case amd64_sys_link:
721 return gdb_sys_link;
722
723 case amd64_sys_unlink:
725 return gdb_sys_unlink;
726
729 return gdb_sys_symlink;
730
733 return gdb_sys_readlink;
734
735 case amd64_sys_chmod:
737 return gdb_sys_chmod;
738
739 case amd64_sys_fchmod:
741 return gdb_sys_fchmod;
742
743 case amd64_sys_chown:
745 return gdb_sys_chown;
746
747 case amd64_sys_fchown:
749 return gdb_sys_fchown;
750
751 case amd64_sys_lchown:
753 return gdb_sys_lchown;
754
755 case amd64_sys_umask:
757 return gdb_sys_umask;
758
762
765 return gdb_sys_getrlimit;
766
769 return gdb_sys_getrusage;
770
773 return gdb_sys_sysinfo;
774
775 case amd64_sys_times:
777 return gdb_sys_times;
778
779 case amd64_sys_ptrace:
781 return gdb_sys_ptrace;
782
783 case amd64_sys_getuid:
785 return gdb_sys_getuid;
786
787 case amd64_sys_syslog:
789 return gdb_sys_syslog;
790
791 case amd64_sys_getgid:
793 return gdb_sys_getgid;
794
795 case amd64_sys_setuid:
797 return gdb_sys_setuid;
798
799 case amd64_sys_setgid:
801 return gdb_sys_setgid;
802
805 return gdb_sys_geteuid;
806
809 return gdb_sys_getegid;
810
813 return gdb_sys_setpgid;
814
817 return gdb_sys_getppid;
818
821 return gdb_sys_getpgrp;
822
823 case amd64_sys_setsid:
825 return gdb_sys_setsid;
826
829 return gdb_sys_setreuid;
830
833 return gdb_sys_setregid;
834
837 return gdb_sys_getgroups;
838
841 return gdb_sys_setgroups;
842
845 return gdb_sys_setresuid;
846
849 return gdb_sys_getresuid;
850
853 return gdb_sys_setresgid;
854
857 return gdb_sys_getresgid;
858
861 return gdb_sys_getpgid;
862
865 return gdb_sys_setfsuid;
866
869 return gdb_sys_setfsgid;
870
871 case amd64_sys_getsid:
873 return gdb_sys_getsid;
874
875 case amd64_sys_capget:
877 return gdb_sys_capget;
878
879 case amd64_sys_capset:
881 return gdb_sys_capset;
882
886
890
894
898
901 return gdb_sys_sigaltstack;
902
903 case amd64_sys_utime:
905 return gdb_sys_utime;
906
907 case amd64_sys_mknod:
909 return gdb_sys_mknod;
910
913 return gdb_sys_personality;
914
915 case amd64_sys_ustat:
917 return gdb_sys_ustat;
918
919 case amd64_sys_statfs:
921 return gdb_sys_statfs;
922
925 return gdb_sys_fstatfs;
926
927 case amd64_sys_sysfs:
929 return gdb_sys_sysfs;
930
933 return gdb_sys_getpriority;
934
937 return gdb_sys_setpriority;
938
942
946
950
954
958
962
966
967 case amd64_sys_mlock:
969 return gdb_sys_mlock;
970
973 return gdb_sys_munlock;
974
977 return gdb_sys_mlockall;
978
981 return gdb_sys_munlockall;
982
985 return gdb_sys_vhangup;
986
989 return gdb_sys_modify_ldt;
990
993 return gdb_sys_pivot_root;
994
995 case amd64_sys_sysctl:
997 return gdb_sys_sysctl;
998
999 case amd64_sys_prctl:
1001 return gdb_sys_prctl;
1002
1005 return gdb_sys_no_syscall; /* Note */
1006
1007 case amd64_sys_adjtimex:
1009 return gdb_sys_adjtimex;
1010
1013 return gdb_sys_setrlimit;
1014
1015 case amd64_sys_chroot:
1017 return gdb_sys_chroot;
1018
1019 case amd64_sys_sync:
1020 case amd64_x32_sys_sync:
1021 return gdb_sys_sync;
1022
1023 case amd64_sys_acct:
1024 case amd64_x32_sys_acct:
1025 return gdb_sys_acct;
1026
1029 return gdb_sys_settimeofday;
1030
1031 case amd64_sys_mount:
1033 return gdb_sys_mount;
1034
1035 case amd64_sys_umount:
1037 return gdb_sys_umount;
1038
1039 case amd64_sys_swapon:
1041 return gdb_sys_swapon;
1042
1043 case amd64_sys_swapoff:
1045 return gdb_sys_swapoff;
1046
1047 case amd64_sys_reboot:
1049 return gdb_sys_reboot;
1050
1053 return gdb_sys_sethostname;
1054
1057 return gdb_sys_setdomainname;
1058
1059 case amd64_sys_iopl:
1060 case amd64_x32_sys_iopl:
1061 return gdb_sys_iopl;
1062
1063 case amd64_sys_ioperm:
1065 return gdb_sys_ioperm;
1066
1069 return gdb_sys_init_module;
1070
1073 return gdb_sys_delete_module;
1074
1075 case amd64_sys_quotactl:
1077 return gdb_sys_quotactl;
1078
1080 return gdb_sys_nfsservctl;
1081
1082 case amd64_sys_gettid:
1084 return gdb_sys_gettid;
1085
1088 return gdb_sys_readahead;
1089
1090 case amd64_sys_setxattr:
1092 return gdb_sys_setxattr;
1093
1096 return gdb_sys_lsetxattr;
1097
1100 return gdb_sys_fsetxattr;
1101
1102 case amd64_sys_getxattr:
1104 return gdb_sys_getxattr;
1105
1108 return gdb_sys_lgetxattr;
1109
1112 return gdb_sys_fgetxattr;
1113
1116 return gdb_sys_listxattr;
1117
1120 return gdb_sys_llistxattr;
1121
1124 return gdb_sys_flistxattr;
1125
1128 return gdb_sys_removexattr;
1129
1132 return gdb_sys_lremovexattr;
1133
1136 return gdb_sys_fremovexattr;
1137
1138 case amd64_sys_tkill:
1140 return gdb_sys_tkill;
1141
1142 case amd64_sys_time:
1143 case amd64_x32_sys_time:
1144 return gdb_sys_time;
1145
1146 case amd64_sys_futex:
1148 return gdb_sys_futex;
1149
1153
1157
1158 case amd64_sys_io_setup:
1160 return gdb_sys_io_setup;
1161
1164 return gdb_sys_io_destroy;
1165
1168 return gdb_sys_io_getevents;
1169
1172 return gdb_sys_io_submit;
1173
1176 return gdb_sys_io_cancel;
1177
1181
1184 return gdb_sys_epoll_create;
1185
1189
1192 return gdb_sys_getdents64;
1193
1197
1201
1204 return gdb_sys_semtimedop;
1205
1208 return gdb_sys_fadvise64;
1209
1212 return gdb_sys_timer_create;
1213
1216 return gdb_sys_timer_settime;
1217
1220 return gdb_sys_timer_gettime;
1221
1225
1228 return gdb_sys_timer_delete;
1229
1232 return gdb_sys_clock_settime;
1233
1236 return gdb_sys_clock_gettime;
1237
1240 return gdb_sys_clock_getres;
1241
1245
1248 return gdb_sys_exit_group;
1249
1252 return gdb_sys_epoll_wait;
1253
1256 return gdb_sys_epoll_ctl;
1257
1258 case amd64_sys_tgkill:
1260 return gdb_sys_tgkill;
1261
1262 case amd64_sys_utimes:
1264 return gdb_sys_utimes;
1265
1266 case amd64_sys_mbind:
1268 return gdb_sys_mbind;
1269
1272 return gdb_sys_set_mempolicy;
1273
1276 return gdb_sys_get_mempolicy;
1277
1278 case amd64_sys_mq_open:
1280 return gdb_sys_mq_open;
1281
1284 return gdb_sys_mq_unlink;
1285
1288 return gdb_sys_mq_timedsend;
1289
1293
1296 return gdb_sys_mq_notify;
1297
1300 return gdb_sys_mq_getsetattr;
1301
1304 return gdb_sys_kexec_load;
1305
1306 case amd64_sys_waitid:
1308 return gdb_sys_waitid;
1309
1310 case amd64_sys_add_key:
1312 return gdb_sys_add_key;
1313
1316 return gdb_sys_request_key;
1317
1318 case amd64_sys_keyctl:
1320 return gdb_sys_keyctl;
1321
1324 return gdb_sys_ioprio_set;
1325
1328 return gdb_sys_ioprio_get;
1329
1332 return gdb_sys_inotify_init;
1333
1337
1341
1344 return gdb_sys_migrate_pages;
1345
1346 case amd64_sys_openat:
1348 return gdb_sys_openat;
1349
1350 case amd64_sys_mkdirat:
1352 return gdb_sys_mkdirat;
1353
1354 case amd64_sys_mknodat:
1356 return gdb_sys_mknodat;
1357
1358 case amd64_sys_fchownat:
1360 return gdb_sys_fchownat;
1361
1364 return gdb_sys_futimesat;
1365
1368 return gdb_sys_newfstatat;
1369
1370 case amd64_sys_unlinkat:
1372 return gdb_sys_unlinkat;
1373
1374 case amd64_sys_renameat:
1376 return gdb_sys_renameat;
1377
1378 case amd64_sys_linkat:
1380 return gdb_sys_linkat;
1381
1384 return gdb_sys_symlinkat;
1385
1388 return gdb_sys_readlinkat;
1389
1390 case amd64_sys_fchmodat:
1392 return gdb_sys_fchmodat;
1393
1396 return gdb_sys_faccessat;
1397
1398 case amd64_sys_pselect6:
1400 return gdb_sys_pselect6;
1401
1402 case amd64_sys_ppoll:
1404 return gdb_sys_ppoll;
1405
1406 case amd64_sys_unshare:
1408 return gdb_sys_unshare;
1409
1413
1417
1418 case amd64_sys_splice:
1420 return gdb_sys_splice;
1421
1422 case amd64_sys_tee:
1423 case amd64_x32_sys_tee:
1424 return gdb_sys_tee;
1425
1429
1430 case amd64_sys_vmsplice:
1432 return gdb_sys_vmsplice;
1433
1436 return gdb_sys_move_pages;
1437
1438 default:
1439 return gdb_sys_no_syscall;
1440 }
1441
1442 DIAGNOSTIC_POP
1443}
1444
1445/* Parse the arguments of current system call instruction and record
1446 the values of the registers and memory that will be changed into
1447 "record_full_arch_list". This instruction is "syscall".
1448
1449 Return -1 if something wrong. */
1450
1453
1454#define RECORD_ARCH_GET_FS 0x1003
1455#define RECORD_ARCH_GET_GS 0x1004
1456
1457static int
1459 struct linux_record_tdep *linux_record_tdep_p)
1460{
1461 int ret;
1462 ULONGEST syscall_native;
1463 enum gdb_syscall syscall_gdb = gdb_sys_no_syscall;
1464
1466
1467 switch (syscall_native)
1468 {
1472 return -1;
1473 return 0;
1474 break;
1475
1478 {
1479 ULONGEST arg3;
1480 regcache_raw_read_unsigned (regcache, linux_record_tdep_p->arg3,
1481 &arg3);
1483 {
1484 CORE_ADDR addr;
1485
1487 linux_record_tdep_p->arg2,
1488 &addr);
1490 (addr, linux_record_tdep_p->size_ulong))
1491 return -1;
1492 }
1493 goto record_regs;
1494 }
1495 break;
1496 }
1497
1498 syscall_gdb
1499 = amd64_canonicalize_syscall ((enum amd64_syscall) syscall_native);
1500
1501 if (syscall_gdb == gdb_sys_no_syscall)
1502 {
1504 _("Process record and replay target doesn't "
1505 "support syscall number %s\n"),
1506 pulongest (syscall_native));
1507 return -1;
1508 }
1509 else
1510 {
1511 ret = record_linux_system_call (syscall_gdb, regcache,
1512 linux_record_tdep_p);
1513 if (ret)
1514 return ret;
1515 }
1516
1517 record_regs:
1518 /* Record the return value of the system call. */
1520 return -1;
1522 return -1;
1523
1524 return 0;
1525}
1526
1527static int
1533
1534static int
1540
1541#define AMD64_LINUX_redzone 128
1542#define AMD64_LINUX_xstate 512
1543#define AMD64_LINUX_frame_size 560
1544
1545static int
1547 struct regcache *regcache,
1548 enum gdb_signal signal)
1549{
1550 ULONGEST rsp;
1551
1553 return -1;
1554
1556 return -1;
1557
1558 /* Record the change in the stack. */
1560 /* redzone
1561 sp -= 128; */
1562 rsp -= AMD64_LINUX_redzone;
1563 /* This is for xstate.
1564 sp -= sizeof (struct _fpstate); */
1565 rsp -= AMD64_LINUX_xstate;
1566 /* This is for frame_size.
1567 sp -= sizeof (struct rt_sigframe); */
1572 return -1;
1573
1575 return -1;
1576
1577 return 0;
1578}
1579
1580const target_desc *
1581amd64_linux_read_description (uint64_t xcr0_features_bit, bool is_x32)
1582{
1583 static target_desc *amd64_linux_tdescs \
1584 [2/*AVX*/][2/*MPX*/][2/*AVX512*/][2/*PKRU*/] = {};
1585 static target_desc *x32_linux_tdescs \
1586 [2/*AVX*/][2/*AVX512*/][2/*PKRU*/] = {};
1587
1588 target_desc **tdesc;
1589
1590 if (is_x32)
1591 {
1592 tdesc = &x32_linux_tdescs[(xcr0_features_bit & X86_XSTATE_AVX) ? 1 : 0 ]
1593 [(xcr0_features_bit & X86_XSTATE_AVX512) ? 1 : 0]
1594 [(xcr0_features_bit & X86_XSTATE_PKRU) ? 1 : 0];
1595 }
1596 else
1597 {
1598 tdesc = &amd64_linux_tdescs[(xcr0_features_bit & X86_XSTATE_AVX) ? 1 : 0]
1599 [(xcr0_features_bit & X86_XSTATE_MPX) ? 1 : 0]
1600 [(xcr0_features_bit & X86_XSTATE_AVX512) ? 1 : 0]
1601 [(xcr0_features_bit & X86_XSTATE_PKRU) ? 1 : 0];
1602 }
1603
1604 if (*tdesc == NULL)
1605 *tdesc = amd64_create_target_description (xcr0_features_bit, is_x32,
1606 true, true);
1607
1608 return *tdesc;
1609}
1610
1611/* Get Linux/x86 target description from core dump. */
1612
1613static const struct target_desc *
1615 struct target_ops *target,
1616 bfd *abfd)
1617{
1618 /* Linux/x86-64. */
1619 x86_xsave_layout layout;
1620 uint64_t xcr0 = i386_linux_core_read_xsave_info (abfd, layout);
1621 if (xcr0 == 0)
1622 xcr0 = X86_XSTATE_SSE_MASK;
1623
1624 return amd64_linux_read_description (xcr0 & X86_XSTATE_ALL_MASK,
1625 gdbarch_ptr_bit (gdbarch) == 32);
1626}
1627
1628/* Similar to amd64_supply_fpregset, but use XSAVE extended state. */
1629
1630static void
1632 struct regcache *regcache, int regnum,
1633 const void *xstateregs, size_t len)
1634{
1635 amd64_supply_xsave (regcache, regnum, xstateregs);
1636}
1637
1638/* Similar to amd64_collect_fpregset, but use XSAVE extended state. */
1639
1640static void
1642 const struct regcache *regcache,
1643 int regnum, void *xstateregs, size_t len)
1644{
1645 amd64_collect_xsave (regcache, regnum, xstateregs, 1);
1646}
1647
1654
1655/* Iterate over core file register note sections. */
1656
1657static void
1660 void *cb_data,
1661 const struct regcache *regcache)
1662{
1663 i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
1664
1665 cb (".reg", 27 * 8, 27 * 8, &i386_gregset, NULL, cb_data);
1666 cb (".reg2", 512, 512, &amd64_fpregset, NULL, cb_data);
1667 if (tdep->xsave_layout.sizeof_xsave != 0)
1668 cb (".reg-xstate", tdep->xsave_layout.sizeof_xsave,
1669 tdep->xsave_layout.sizeof_xsave, &amd64_linux_xstateregset,
1670 "XSAVE extended state", cb_data);
1671}
1672
1673/* The instruction sequences used in x86_64 machines for a
1674 disabled is-enabled probe. */
1675
1677 /* xor %rax, %rax */ 0x48, 0x33, 0xc0,
1678 /* nop */ 0x90,
1679 /* nop */ 0x90
1680};
1681
1683 /* xor %rax, %rax */ 0x48, 0x33, 0xc0,
1684 /* ret */ 0xc3,
1685 /* nop */ 0x90
1686};
1687
1688/* The instruction sequence used in x86_64 machines for enabling a
1689 DTrace is-enabled probe. */
1690
1692 /* mov $0x1, %eax */ 0xb8, 0x01, 0x00, 0x00, 0x00
1693};
1694
1695/* The instruction sequence used in x86_64 machines for disabling a
1696 DTrace is-enabled probe. */
1697
1699 /* xor %rax, %rax; nop; nop */ 0x48, 0x33, 0xC0, 0x90, 0x90
1700};
1701
1702/* Implementation of `gdbarch_dtrace_probe_is_enabled', as defined in
1703 gdbarch.h. */
1704
1705static int
1707{
1708 gdb_byte buf[5];
1709
1710 /* This function returns 1 if the instructions at ADDR do _not_
1711 follow any of the amd64_dtrace_disabled_probe_sequence_*
1712 patterns.
1713
1714 Note that ADDR is offset 3 bytes from the beginning of these
1715 sequences. */
1716
1717 read_code (addr - 3, buf, 5);
1718 return (memcmp (buf, amd64_dtrace_disabled_probe_sequence_1, 5) != 0
1719 && memcmp (buf, amd64_dtrace_disabled_probe_sequence_2, 5) != 0);
1720}
1721
1722/* Implementation of `gdbarch_dtrace_enable_probe', as defined in
1723 gdbarch.h. */
1724
1725static void
1727{
1728 /* Note also that ADDR is offset 3 bytes from the beginning of
1729 amd64_dtrace_enable_probe_sequence. */
1730
1732}
1733
1734/* Implementation of `gdbarch_dtrace_disable_probe', as defined in
1735 gdbarch.h. */
1736
1737static void
1739{
1740 /* Note also that ADDR is offset 3 bytes from the beginning of
1741 amd64_dtrace_disable_probe_sequence. */
1742
1744}
1745
1746/* Implementation of `gdbarch_dtrace_parse_probe_argument', as defined
1747 in gdbarch.h. */
1748
1749static expr::operation_up
1751 int narg)
1752{
1753 /* DTrace probe arguments can be found on the ABI-defined places for
1754 regular arguments at the current PC. The probe abstraction
1755 currently supports up to 12 arguments for probes. */
1756
1757 using namespace expr;
1758
1759 if (narg < 6)
1760 {
1761 static const int arg_reg_map[6] =
1762 {
1763 AMD64_RDI_REGNUM, /* Arg 1. */
1764 AMD64_RSI_REGNUM, /* Arg 2. */
1765 AMD64_RDX_REGNUM, /* Arg 3. */
1766 AMD64_RCX_REGNUM, /* Arg 4. */
1767 AMD64_R8_REGNUM, /* Arg 5. */
1768 AMD64_R9_REGNUM /* Arg 6. */
1769 };
1770 int regno = arg_reg_map[narg];
1771 const char *regname = user_reg_map_regnum_to_name (gdbarch, regno);
1772 return make_operation<register_operation> (regname);
1773 }
1774 else
1775 {
1776 /* Additional arguments are passed on the stack. */
1777 const char *regname = user_reg_map_regnum_to_name (gdbarch, AMD64_RSP_REGNUM);
1778
1779 /* Displacement. */
1780 struct type *long_type = builtin_type (gdbarch)->builtin_long;
1781 operation_up disp = make_operation<long_const_operation> (long_type,
1782 narg - 6);
1783
1784 /* Register: SP. */
1785 operation_up reg = make_operation<register_operation> (regname);
1786
1787 operation_up add = make_operation<add_operation> (std::move (disp),
1788 std::move (reg));
1789
1790 /* Cast to long. */
1791 operation_up cast = make_operation<unop_cast_operation> (std::move (add),
1792 long_type);
1793
1794 return make_operation<unop_ind_operation> (std::move (cast));
1795 }
1796}
1797
1798static void
1800 int num_disp_step_buffers)
1801{
1802 i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
1803
1804 linux_init_abi (info, gdbarch, num_disp_step_buffers);
1805
1809 tdep->sc_num_regs = ARRAY_SIZE (amd64_linux_sc_reg_offset);
1810
1814
1815 /* Add the %orig_rax register used for syscall restarting. */
1817
1819
1820 /* Functions for 'catch syscall'. */
1824
1825 /* Enable TLS support. */
1828
1829 /* GNU/Linux uses SVR4-style shared libraries. */
1831
1832 /* GNU/Linux uses the dynamic linker included in the GNU C Library. */
1834
1835 /* Iterate over core file register note sections. */
1838
1841
1842 /* Displaced stepping. */
1846
1849
1852}
1853
1854static void
1856{
1857 i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
1858 struct tdesc_arch_data *tdesc_data = info.tdesc_data;
1859 const struct tdesc_feature *feature;
1860 int valid_p;
1861
1862 gdb_assert (tdesc_data);
1863
1866 tdep->sizeof_gregset = 27 * 8;
1867
1868 amd64_init_abi (info, gdbarch,
1869 amd64_linux_read_description (X86_XSTATE_SSE_MASK, false));
1870
1871 const target_desc *tdesc = tdep->tdesc;
1872
1873 /* Reserve a number for orig_rax. */
1875
1876 feature = tdesc_find_feature (tdesc, "org.gnu.gdb.i386.linux");
1877 if (feature == NULL)
1878 return;
1879
1880 valid_p = tdesc_numbered_register (feature, tdesc_data,
1882 "orig_rax");
1883 if (!valid_p)
1884 return;
1885
1887
1888 /* Initialize the amd64_linux_record_tdep. */
1889 /* These values are the size of the type that will be used in a system
1890 call. They are obtained from Linux Kernel source. */
1892 = gdbarch_ptr_bit (gdbarch) / TARGET_CHAR_BIT;
1899 /* ADM64 doesn't need this size because it doesn't have sys_sigaction
1900 but sys_rt_sigaction. */
1902 /* ADM64 doesn't need this size because it doesn't have sys_sigpending
1903 but sys_rt_sigpending. */
1909 /* ADM64 doesn't need this size because it doesn't have sys_getgroups16
1910 but sys_getgroups. */
1912 /* ADM64 doesn't need this size because it doesn't have sys_getresuid16
1913 but sys_getresuid. */
1916 /* ADM64 doesn't need this size because it doesn't have sys_readdir. */
1922 = gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT;
1924 = gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT;
1926 = gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT;
1971
1972 /* These values are the second argument of system call "sys_fcntl"
1973 and "sys_fcntl64". They are obtained from Linux Kernel source. */
1978
1985
1986 /* These values are the second argument of system call "sys_ioctl".
1987 They are obtained from Linux Kernel source. */
2054
2056
2057 /* GNU/Linux uses SVR4-style shared libraries. */
2060
2061 /* Register DTrace handlers. */
2066}
2067
2068static void
2070{
2071 i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
2072 struct tdesc_arch_data *tdesc_data = info.tdesc_data;
2073 const struct tdesc_feature *feature;
2074 int valid_p;
2075
2076 gdb_assert (tdesc_data);
2077
2080 tdep->sizeof_gregset = 27 * 8;
2081
2083 amd64_linux_read_description (X86_XSTATE_SSE_MASK,
2084 true));
2085
2086 /* Reserve a number for orig_rax. */
2088
2089 const target_desc *tdesc = tdep->tdesc;
2090
2091 feature = tdesc_find_feature (tdesc, "org.gnu.gdb.i386.linux");
2092 if (feature == NULL)
2093 return;
2094
2095 valid_p = tdesc_numbered_register (feature, tdesc_data,
2097 "orig_rax");
2098 if (!valid_p)
2099 return;
2100
2102
2103 /* Initialize the amd64_x32_linux_record_tdep. */
2104 /* These values are the size of the type that will be used in a system
2105 call. They are obtained from Linux Kernel source. */
2107 = gdbarch_ptr_bit (gdbarch) / TARGET_CHAR_BIT;
2114 /* ADM64 doesn't need this size because it doesn't have sys_sigaction
2115 but sys_rt_sigaction. */
2117 /* ADM64 doesn't need this size because it doesn't have sys_sigpending
2118 but sys_rt_sigpending. */
2124 /* ADM64 doesn't need this size because it doesn't have sys_getgroups16
2125 but sys_getgroups. */
2127 /* ADM64 doesn't need this size because it doesn't have sys_getresuid16
2128 but sys_getresuid. */
2131 /* ADM64 doesn't need this size because it doesn't have sys_readdir. */
2137 = gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT;
2139 = gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT;
2141 = gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT;
2186
2187 /* These values are the second argument of system call "sys_fcntl"
2188 and "sys_fcntl64". They are obtained from Linux Kernel source. */
2193
2200
2201 /* These values are the second argument of system call "sys_ioctl".
2202 They are obtained from Linux Kernel source. */
2268
2270
2271 /* GNU/Linux uses SVR4-style shared libraries. */
2274}
2275
2277void
2279{
2280 gdbarch_register_osabi (bfd_arch_i386, bfd_mach_x86_64,
2282 gdbarch_register_osabi (bfd_arch_i386, bfd_mach_x64_32,
2284}
int regnum
const char *const name
#define AMD64_LINUX_frame_size
#define LINUX_SIGTRAMP_INSN1
#define XML_SYSCALL_FILENAME_AMD64
#define LINUX_SIGTRAMP_LEN
static CORE_ADDR amd64_linux_sigcontext_addr(frame_info_ptr this_frame)
static struct linux_record_tdep amd64_linux_record_tdep
static int amd64_linux_register_reggroup_p(struct gdbarch *gdbarch, int regnum, const struct reggroup *group)
const gdb_byte amd64_dtrace_disabled_probe_sequence_2[]
static void amd64_dtrace_enable_probe(struct gdbarch *gdbarch, CORE_ADDR addr)
static void amd64_linux_supply_xstateregset(const struct regset *regset, struct regcache *regcache, int regnum, const void *xstateregs, size_t len)
#define AMD64_LINUX_redzone
int amd64_linux_gregset_reg_offset[]
static int amd64_linux_sigtramp_p(frame_info_ptr this_frame)
#define RECORD_ARCH_GET_FS
static void amd64_linux_iterate_over_regset_sections(struct gdbarch *gdbarch, iterate_over_regset_sections_cb *cb, void *cb_data, const struct regcache *regcache)
#define LINUX_SIGTRAMP_INSN0
static const gdb_byte amd64_x32_linux_sigtramp_code[]
static void amd64_linux_init_abi_common(struct gdbarch_info info, struct gdbarch *gdbarch, int num_disp_step_buffers)
static void amd64_dtrace_disable_probe(struct gdbarch *gdbarch, CORE_ADDR addr)
#define AMD64_LINUX_xstate
static int amd64_linux_syscall_record(struct regcache *regcache)
static const struct regset amd64_linux_xstateregset
const gdb_byte amd64_dtrace_disable_probe_sequence[]
static int amd64_dtrace_probe_is_enabled(struct gdbarch *gdbarch, CORE_ADDR addr)
static const gdb_byte amd64_linux_sigtramp_code[]
static struct linux_record_tdep amd64_x32_linux_record_tdep
static int amd64_linux_syscall_record_common(struct regcache *regcache, struct linux_record_tdep *linux_record_tdep_p)
const gdb_byte amd64_dtrace_disabled_probe_sequence_1[]
static void amd64_linux_write_pc(struct regcache *regcache, CORE_ADDR pc)
static LONGEST amd64_linux_get_syscall_number(struct gdbarch *gdbarch, thread_info *thread)
static void amd64_linux_collect_xstateregset(const struct regset *regset, const struct regcache *regcache, int regnum, void *xstateregs, size_t len)
const target_desc * amd64_linux_read_description(uint64_t xcr0_features_bit, bool is_x32)
static CORE_ADDR amd64_linux_sigtramp_start(frame_info_ptr this_frame)
static int amd64_linux_sc_reg_offset[]
#define AMD64_LINUX_UCONTEXT_SIGCONTEXT_OFFSET
static const struct target_desc * amd64_linux_core_read_description(struct gdbarch *gdbarch, struct target_ops *target, bfd *abfd)
static expr::operation_up amd64_dtrace_parse_probe_argument(struct gdbarch *gdbarch, int narg)
static int amd64_linux_record_signal(struct gdbarch *gdbarch, struct regcache *regcache, enum gdb_signal signal)
const gdb_byte amd64_dtrace_enable_probe_sequence[]
void _initialize_amd64_linux_tdep()
static enum gdb_syscall amd64_canonicalize_syscall(enum amd64_syscall syscall_number)
#define LINUX_SIGTRAMP_OFFSET1
static void amd64_linux_init_abi(struct gdbarch_info info, struct gdbarch *gdbarch)
#define RECORD_ARCH_GET_GS
static void amd64_x32_linux_init_abi(struct gdbarch_info info, struct gdbarch *gdbarch)
static int amd64_x32_linux_syscall_record(struct regcache *regcache)
static int amd64_all_but_ip_registers_record(struct regcache *regcache)
#define AMD64_LINUX_ORIG_RAX_REGNUM
amd64_syscall
@ amd64_sys_socketpair
@ amd64_sys_mknodat
@ amd64_sys_getpgrp
@ amd64_sys_open
@ amd64_sys_msgsnd
@ amd64_sys_mremap
@ amd64_sys_swapon
@ amd64_sys_lremovexattr
@ amd64_sys_rt_sigsuspend
@ amd64_sys_umount
@ amd64_sys_uname
@ amd64_sys_readlinkat
@ amd64_sys_waitid
@ amd64_sys_nanosleep
@ amd64_sys_dup
@ amd64_sys_newfstatat
@ amd64_sys_sendto
@ amd64_sys_nfsservctl
@ amd64_sys_rmdir
@ amd64_sys_personality
@ amd64_sys_truncate
@ amd64_sys_fremovexattr
@ amd64_sys_io_getevents
@ amd64_sys_epoll_create
@ amd64_sys_fgetxattr
@ amd64_sys_brk
@ amd64_sys_io_setup
@ amd64_sys_remap_file_pages
@ amd64_sys_timer_settime
@ amd64_sys_prctl
@ amd64_sys_getitimer
@ amd64_sys_semop
@ amd64_sys_getpgid
@ amd64_sys_getrusage
@ amd64_sys_sigaltstack
@ amd64_sys_ioprio_set
@ amd64_sys_utime
@ amd64_sys_lchown
@ amd64_sys_adjtimex
@ amd64_sys_quotactl
@ amd64_sys_listen
@ amd64_sys_dup2
@ amd64_sys_getpid
@ amd64_sys_shmdt
@ amd64_sys_statfs
@ amd64_sys_fsetxattr
@ amd64_sys_getgroups
@ amd64_sys_setuid
@ amd64_sys_clock_getres
@ amd64_sys_rt_sigreturn
@ amd64_sys_sched_setaffinity
@ amd64_sys_clock_settime
@ amd64_sys_sched_setscheduler
@ amd64_sys_io_cancel
@ amd64_sys_epoll_ctl
@ amd64_sys_accept
@ amd64_sys_close
@ amd64_sys_listxattr
@ amd64_sys_reboot
@ amd64_sys_fdatasync
@ amd64_sys_tee
@ amd64_sys_sysinfo
@ amd64_sys_shmctl
@ amd64_sys_arch_prctl
@ amd64_sys_recvfrom
@ amd64_sys_setreuid
@ amd64_sys_munlockall
@ amd64_sys_newfstat
@ amd64_sys_newlstat
@ amd64_sys_getsockopt
@ amd64_sys_fstatfs
@ amd64_sys_mq_timedreceive
@ amd64_sys_msgrcv
@ amd64_sys_creat
@ amd64_sys_pipe
@ amd64_sys_setgroups
@ amd64_sys_modify_ldt
@ amd64_sys_ustat
@ amd64_sys_sched_rr_get_interval
@ amd64_sys_sched_getscheduler
@ amd64_sys_pause
@ amd64_sys_lsetxattr
@ amd64_sys_rename
@ amd64_sys_exit
@ amd64_sys_msgctl
@ amd64_sys_syslog
@ amd64_sys_delete_module
@ amd64_sys_gettid
@ amd64_sys_llistxattr
@ amd64_sys_linkat
@ amd64_sys_getresuid
@ amd64_sys_timer_delete
@ amd64_sys_settimeofday
@ amd64_sys_sethostname
@ amd64_sys_fchmod
@ amd64_sys_sendfile64
@ amd64_sys_newstat
@ amd64_sys_sync_file_range
@ amd64_sys_getuid
@ amd64_sys_mknod
@ amd64_sys_inotify_add_watch
@ amd64_sys_pipe2
@ amd64_sys_getegid
@ amd64_sys_fadvise64
@ amd64_sys_tkill
@ amd64_sys_sched_yield
@ amd64_sys_tgkill
@ amd64_sys_getcwd
@ amd64_sys_getpriority
@ amd64_sys_sched_getaffinity
@ amd64_sys_chroot
@ amd64_sys_get_mempolicy
@ amd64_sys_futimesat
@ amd64_sys_keyctl
@ amd64_sys_getrandom
@ amd64_sys_poll
@ amd64_sys_rt_sigqueueinfo
@ amd64_sys_rt_sigpending
@ amd64_sys_move_pages
@ amd64_sys_capset
@ amd64_sys_madvise
@ amd64_sys_setxattr
@ amd64_sys_bind
@ amd64_sys_sync
@ amd64_sys_setsid
@ amd64_sys_execve
@ amd64_sys_setfsgid
@ amd64_sys_setdomainname
@ amd64_sys_io_submit
@ amd64_sys_sendmsg
@ amd64_sys_ioprio_get
@ amd64_sys_fchdir
@ amd64_sys_fork
@ amd64_sys_rt_sigprocmask
@ amd64_sys_symlink
@ amd64_sys_inotify_rm_watch
@ amd64_sys_flock
@ amd64_sys_getsid
@ amd64_sys_getpeername
@ amd64_sys_ptrace
@ amd64_sys_shmget
@ amd64_sys_semtimedop
@ amd64_sys_pwrite64
@ amd64_sys_pselect6
@ amd64_sys_recvmsg
@ amd64_sys_clock_nanosleep
@ amd64_sys_mq_open
@ amd64_sys_setregid
@ amd64_sys_rt_sigaction
@ amd64_sys_getppid
@ amd64_sys_openat
@ amd64_sys_wait4
@ amd64_sys_write
@ amd64_sys_time
@ amd64_sys_unlinkat
@ amd64_sys_chown
@ amd64_sys_link
@ amd64_sys_mprotect
@ amd64_sys_vhangup
@ amd64_sys_getdents64
@ amd64_sys_setresuid
@ amd64_sys_mq_unlink
@ amd64_sys_sched_getparam
@ amd64_sys_readv
@ amd64_sys_sysctl
@ amd64_sys_semget
@ amd64_sys_rt_sigtimedwait
@ amd64_sys_fchownat
@ amd64_sys_gettimeofday
@ amd64_sys_sched_get_priority_max
@ amd64_sys_clock_gettime
@ amd64_sys_mbind
@ amd64_sys_readlink
@ amd64_sys_timer_gettime
@ amd64_sys_epoll_wait
@ amd64_sys_getgid
@ amd64_sys_vmsplice
@ amd64_sys_setpgid
@ amd64_sys_io_destroy
@ amd64_sys_vfork
@ amd64_sys_mq_timedsend
@ amd64_sys_init_module
@ amd64_sys_getresgid
@ amd64_sys_futex
@ amd64_sys_migrate_pages
@ amd64_sys_mlock
@ amd64_sys_fsync
@ amd64_sys_connect
@ amd64_sys_request_key
@ amd64_sys_set_tid_address
@ amd64_sys_umask
@ amd64_sys_msync
@ amd64_sys_munmap
@ amd64_sys_socket
@ amd64_sys_mq_getsetattr
@ amd64_sys_timer_create
@ amd64_sys_restart_syscall
@ amd64_sys_flistxattr
@ amd64_sys_get_robust_list
@ amd64_sys_fchown
@ amd64_sys_chdir
@ amd64_sys_kexec_load
@ amd64_sys_mq_notify
@ amd64_sys_mkdirat
@ amd64_sys_setsockopt
@ amd64_sys_msgget
@ amd64_sys_sysfs
@ amd64_sys_access
@ amd64_sys_setpriority
@ amd64_sys_mlockall
@ amd64_sys_semctl
@ amd64_sys_inotify_init
@ amd64_sys_ioperm
@ amd64_sys_read
@ amd64_sys_lookup_dcookie
@ amd64_sys_kill
@ amd64_sys_chmod
@ amd64_sys_munlock
@ amd64_sys_writev
@ amd64_sys_lgetxattr
@ amd64_sys_capget
@ amd64_sys_splice
@ amd64_sys_mkdir
@ amd64_sys_getrlimit
@ amd64_sys_fchmodat
@ amd64_sys_ioctl
@ amd64_sys_ftruncate
@ amd64_sys_pivot_root
@ amd64_sys_set_mempolicy
@ amd64_sys_setresgid
@ amd64_sys_renameat
@ amd64_sys_mount
@ amd64_sys_shutdown
@ amd64_sys_removexattr
@ amd64_sys_setgid
@ amd64_sys_setrlimit
@ amd64_sys_timer_getoverrun
@ amd64_sys_unlink
@ amd64_sys_clone
@ amd64_sys_sched_setparam
@ amd64_sys_readahead
@ amd64_sys_set_robust_list
@ amd64_sys_shmat
@ amd64_sys_mmap
@ amd64_sys_utimes
@ amd64_sys_getsockname
@ amd64_sys_lseek
@ amd64_sys_symlinkat
@ amd64_sys_setfsuid
@ amd64_sys_geteuid
@ amd64_sys_acct
@ amd64_sys_faccessat
@ amd64_sys_getxattr
@ amd64_sys_fcntl
@ amd64_sys_exit_group
@ amd64_sys_getdents
@ amd64_sys_alarm
@ amd64_sys_pread64
@ amd64_sys_sched_get_priority_min
@ amd64_sys_setitimer
@ amd64_sys_select
@ amd64_sys_ppoll
@ amd64_sys_iopl
@ amd64_sys_mincore
@ amd64_sys_unshare
@ amd64_sys_times
@ amd64_sys_swapoff
@ amd64_sys_add_key
#define AMD64_LINUX_NUM_REGS
@ amd64_x32_sys_adjtimex
@ amd64_x32_sys_setrlimit
@ amd64_x32_sys_getgid
@ amd64_x32_sys_exit_group
@ amd64_x32_sys_umask
@ amd64_x32_sys_fsync
@ amd64_x32_sys_sched_setscheduler
@ amd64_x32_sys_io_cancel
@ amd64_x32_sys_rt_sigreturn
@ amd64_x32_sys_mmap
@ amd64_x32_sys_llistxattr
@ amd64_x32_sys_clock_gettime
@ amd64_x32_sys_set_mempolicy
@ amd64_x32_sys_mq_open
@ amd64_x32_sys_setpriority
@ amd64_x32_sys_getpriority
@ amd64_x32_sys_rt_sigpending
@ amd64_x32_sys_clone
@ amd64_x32_sys_getgroups
@ amd64_x32_sys_timer_create
@ amd64_x32_sys_fchdir
@ amd64_x32_sys_futimesat
@ amd64_x32_sys_setreuid
@ amd64_x32_sys_newfstatat
@ amd64_x32_sys_set_robust_list
@ amd64_x32_sys_io_getevents
@ amd64_x32_sys_sendto
@ amd64_x32_sys_getuid
@ amd64_x32_sys_chdir
@ amd64_x32_sys_readlinkat
@ amd64_x32_sys_readlink
@ amd64_x32_sys_utimes
@ amd64_x32_sys_ustat
@ amd64_x32_sys_mount
@ amd64_x32_sys_unlinkat
@ amd64_x32_sys_shmat
@ amd64_x32_sys_poll
@ amd64_x32_sys_getxattr
@ amd64_x32_sys_connect
@ amd64_x32_sys_setsockopt
@ amd64_x32_sys_madvise
@ amd64_x32_sys_unshare
@ amd64_x32_sys_getpgrp
@ amd64_x32_sys_sched_setparam
@ amd64_x32_sys_vmsplice
@ amd64_x32_sys_acct
@ amd64_x32_sys_readv
@ amd64_x32_sys_getsid
@ amd64_x32_sys_add_key
@ amd64_x32_sys_msgrcv
@ amd64_x32_sys_ioctl
@ amd64_x32_sys_openat
@ amd64_x32_sys_umount
@ amd64_x32_sys_sync
@ amd64_x32_sys_getdents64
@ amd64_x32_sys_msgget
@ amd64_x32_sys_io_submit
@ amd64_x32_sys_setresgid
@ amd64_x32_sys_mq_timedsend
@ amd64_x32_sys_times
@ amd64_x32_sys_inotify_rm_watch
@ amd64_x32_sys_accept
@ amd64_x32_sys_rt_sigaction
@ amd64_x32_sys_epoll_create
@ amd64_x32_sys_rmdir
@ amd64_x32_sys_swapoff
@ amd64_x32_sys_restart_syscall
@ amd64_x32_sys_get_robust_list
@ amd64_x32_sys_brk
@ amd64_x32_sys_mq_unlink
@ amd64_x32_sys_mremap
@ amd64_x32_sys_semop
@ amd64_x32_sys_sched_setaffinity
@ amd64_x32_sys_nanosleep
@ amd64_x32_sys_write
@ amd64_x32_sys_chown
@ amd64_x32_sys_rename
@ amd64_x32_sys_msync
@ amd64_x32_sys_bind
@ amd64_x32_sys_chroot
@ amd64_x32_sys_sched_yield
@ amd64_x32_sys_getitimer
@ amd64_x32_sys_geteuid
@ amd64_x32_sys_sysinfo
@ amd64_x32_sys_gettid
@ amd64_x32_sys_rt_sigqueueinfo
@ amd64_x32_sys_vhangup
@ amd64_x32_sys_mkdir
@ amd64_x32_sys_flock
@ amd64_x32_sys_uname
@ amd64_x32_sys_ioprio_set
@ amd64_x32_sys_personality
@ amd64_x32_sys_setfsgid
@ amd64_x32_sys_get_mempolicy
@ amd64_x32_sys_setgroups
@ amd64_x32_sys_semctl
@ amd64_x32_sys_flistxattr
@ amd64_x32_sys_getresuid
@ amd64_x32_sys_sigaltstack
@ amd64_x32_sys_inotify_init
@ amd64_x32_sys_recvmsg
@ amd64_x32_sys_getegid
@ amd64_x32_sys_timer_delete
@ amd64_x32_sys_linkat
@ amd64_x32_sys_futex
@ amd64_x32_sys_getresgid
@ amd64_x32_sys_access
@ amd64_x32_sys_splice
@ amd64_x32_sys_sendfile64
@ amd64_x32_sys_mknod
@ amd64_x32_sys_ftruncate
@ amd64_x32_sys_select
@ amd64_x32_sys_getpid
@ amd64_x32_sys_unlink
@ amd64_x32_sys_newfstat
@ amd64_x32_sys_kexec_load
@ amd64_x32_sys_capset
@ amd64_x32_sys_mlockall
@ amd64_x32_sys_faccessat
@ amd64_x32_sys_execve
@ amd64_x32_sys_mkdirat
@ amd64_x32_sys_fork
@ amd64_x32_sys_pread64
@ amd64_x32_sys_pivot_root
@ amd64_x32_sys_timer_gettime
@ amd64_x32_sys_lgetxattr
@ amd64_x32_sys_sethostname
@ amd64_x32_sys_setxattr
@ amd64_x32_sys_tkill
@ amd64_x32_sys_lsetxattr
@ amd64_x32_sys_wait4
@ amd64_x32_sys_newstat
@ amd64_x32_sys_setitimer
@ amd64_x32_sys_setpgid
@ amd64_x32_sys_msgctl
@ amd64_x32_sys_reboot
@ amd64_x32_sys_open
@ amd64_x32_sys_prctl
@ amd64_x32_sys_symlink
@ amd64_x32_sys_setdomainname
@ amd64_x32_sys_modify_ldt
@ amd64_x32_sys_mq_timedreceive
@ amd64_x32_sys_fstatfs
@ amd64_x32_sys_ioprio_get
@ amd64_x32_sys_shmctl
@ amd64_x32_sys_shmdt
@ amd64_x32_sys_fdatasync
@ amd64_x32_sys_rt_sigsuspend
@ amd64_x32_sys_lseek
@ amd64_x32_sys_mq_getsetattr
@ amd64_x32_sys_removexattr
@ amd64_x32_sys_pipe
@ amd64_x32_sys_close
@ amd64_x32_sys_move_pages
@ amd64_x32_sys_fchmod
@ amd64_x32_sys_io_destroy
@ amd64_x32_sys_getpeername
@ amd64_x32_sys_lchown
@ amd64_x32_sys_readahead
@ amd64_x32_sys_mlock
@ amd64_x32_sys_sync_file_range
@ amd64_x32_sys_sched_get_priority_min
@ amd64_x32_sys_dup2
@ amd64_x32_sys_fadvise64
@ amd64_x32_sys_truncate
@ amd64_x32_sys_sysctl
@ amd64_x32_sys_semtimedop
@ amd64_x32_sys_shutdown
@ amd64_x32_sys_utime
@ amd64_x32_sys_creat
@ amd64_x32_sys_fremovexattr
@ amd64_x32_sys_sendmsg
@ amd64_x32_sys_sched_getaffinity
@ amd64_x32_sys_getdents
@ amd64_x32_sys_fchown
@ amd64_x32_sys_getcwd
@ amd64_x32_sys_kill
@ amd64_x32_sys_keyctl
@ amd64_x32_sys_inotify_add_watch
@ amd64_x32_sys_socket
@ amd64_x32_sys_read
@ amd64_x32_sys_setuid
@ amd64_x32_sys_init_module
@ amd64_x32_sys_getppid
@ amd64_x32_sys_timer_settime
@ amd64_x32_sys_setregid
@ amd64_x32_sys_getrusage
@ amd64_x32_sys_waitid
@ amd64_x32_sys_msgsnd
@ amd64_x32_sys_shmget
@ amd64_x32_sys_rt_sigprocmask
@ amd64_x32_sys_munmap
@ amd64_x32_sys_fgetxattr
@ amd64_x32_sys_lookup_dcookie
@ amd64_x32_sys_request_key
@ amd64_x32_sys_renameat
@ amd64_x32_sys_timer_getoverrun
@ amd64_x32_sys_writev
@ amd64_x32_sys_symlinkat
@ amd64_x32_sys_arch_prctl
@ amd64_x32_sys_getsockopt
@ amd64_x32_sys_fsetxattr
@ amd64_x32_sys_setfsuid
@ amd64_x32_sys_quotactl
@ amd64_x32_sys_mq_notify
@ amd64_x32_sys_fchownat
@ amd64_x32_sys_iopl
@ amd64_x32_sys_migrate_pages
@ amd64_x32_sys_delete_module
@ amd64_x32_sys_syslog
@ amd64_x32_sys_capget
@ amd64_x32_sys_munlock
@ amd64_x32_sys_setresuid
@ amd64_x32_sys_semget
@ amd64_x32_sys_mprotect
@ amd64_x32_sys_setsid
@ amd64_x32_sys_clock_nanosleep
@ amd64_x32_sys_epoll_wait
@ amd64_x32_sys_tgkill
@ amd64_x32_sys_swapon
@ amd64_x32_sys_munlockall
@ amd64_x32_sys_sched_getscheduler
@ amd64_x32_sys_sched_get_priority_max
@ amd64_x32_sys_ppoll
@ amd64_x32_sys_alarm
@ amd64_x32_sys_clock_settime
@ amd64_x32_sys_mknodat
@ amd64_x32_sys_time
@ amd64_x32_sys_link
@ amd64_x32_sys_setgid
@ amd64_x32_sys_set_tid_address
@ amd64_x32_sys_newlstat
@ amd64_x32_sys_dup
@ amd64_x32_sys_listen
@ amd64_x32_sys_fchmodat
@ amd64_x32_sys_mbind
@ amd64_x32_sys_getrlimit
@ amd64_x32_sys_ptrace
@ amd64_x32_sys_gettimeofday
@ amd64_x32_sys_chmod
@ amd64_x32_sys_epoll_ctl
@ amd64_x32_sys_exit
@ amd64_x32_sys_sysfs
@ amd64_x32_sys_sched_getparam
@ amd64_x32_sys_pause
@ amd64_x32_sys_rt_sigtimedwait
@ amd64_x32_sys_statfs
@ amd64_x32_sys_remap_file_pages
@ amd64_x32_sys_fcntl
@ amd64_x32_sys_io_setup
@ amd64_x32_sys_pwrite64
@ amd64_x32_sys_lremovexattr
@ amd64_x32_sys_mincore
@ amd64_x32_sys_socketpair
@ amd64_x32_sys_sched_rr_get_interval
@ amd64_x32_sys_pselect6
@ amd64_x32_sys_clock_getres
@ amd64_x32_sys_settimeofday
@ amd64_x32_sys_ioperm
@ amd64_x32_sys_listxattr
@ amd64_x32_sys_getpgid
@ amd64_x32_sys_recvfrom
@ amd64_x32_sys_vfork
@ amd64_x32_sys_getsockname
@ amd64_x32_sys_tee
void amd64_collect_xsave(const struct regcache *regcache, int regnum, void *xsave, int gcore)
displaced_step_copy_insn_closure_up amd64_displaced_step_copy_insn(struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs)
void amd64_x32_init_abi(struct gdbarch_info info, struct gdbarch *gdbarch, const target_desc *default_tdesc)
void amd64_init_abi(struct gdbarch_info info, struct gdbarch *gdbarch, const target_desc *default_tdesc)
void amd64_supply_xsave(struct regcache *regcache, int regnum, const void *xsave)
void amd64_displaced_step_fixup(struct gdbarch *gdbarch, struct displaced_step_copy_insn_closure *dsc_, CORE_ADDR from, CORE_ADDR to, struct regcache *regs, bool completed_p)
const struct regset amd64_fpregset
@ AMD64_RAX_REGNUM
Definition amd64-tdep.h:35
@ AMD64_R11_REGNUM
Definition amd64-tdep.h:46
@ AMD64_R12_REGNUM
Definition amd64-tdep.h:47
@ AMD64_EFLAGS_REGNUM
Definition amd64-tdep.h:52
@ AMD64_R8_REGNUM
Definition amd64-tdep.h:43
@ AMD64_R9_REGNUM
Definition amd64-tdep.h:44
@ AMD64_RCX_REGNUM
Definition amd64-tdep.h:37
@ AMD64_RBX_REGNUM
Definition amd64-tdep.h:36
@ AMD64_RBP_REGNUM
Definition amd64-tdep.h:41
@ AMD64_RSI_REGNUM
Definition amd64-tdep.h:39
@ AMD64_R14_REGNUM
Definition amd64-tdep.h:49
@ AMD64_RIP_REGNUM
Definition amd64-tdep.h:51
@ AMD64_RDI_REGNUM
Definition amd64-tdep.h:40
@ AMD64_RDX_REGNUM
Definition amd64-tdep.h:38
@ AMD64_R13_REGNUM
Definition amd64-tdep.h:48
@ AMD64_R10_REGNUM
Definition amd64-tdep.h:45
@ AMD64_R15_REGNUM
Definition amd64-tdep.h:50
@ AMD64_RSP_REGNUM
Definition amd64-tdep.h:42
target_desc * amd64_create_target_description(uint64_t xcr0, bool is_x32, bool is_linux, bool segments)
Definition amd64.c:40
bool find_pc_partial_function(CORE_ADDR pc, const char **name, CORE_ADDR *address, CORE_ADDR *endaddr, const struct block **block)
Definition blockframe.c:373
enum register_status cooked_read(int regnum, gdb_byte *buf)
Definition regcache.c:698
void write_memory(CORE_ADDR memaddr, const bfd_byte *myaddr, ssize_t len)
Definition corefile.c:347
void read_code(CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
Definition corefile.c:254
static const unsigned short sigtramp_code[]
Definition cris-tdep.c:176
static LONGEST extract_signed_integer(gdb::array_view< const gdb_byte > buf, enum bfd_endian byte_order)
Definition defs.h:465
static ULONGEST extract_unsigned_integer(gdb::array_view< const gdb_byte > buf, enum bfd_endian byte_order)
Definition defs.h:480
CORE_ADDR get_frame_pc(frame_info_ptr frame)
Definition frame.c:2712
void get_frame_register(frame_info_ptr frame, int regnum, gdb_byte *buf)
Definition frame.c:1263
struct gdbarch * get_frame_arch(frame_info_ptr this_frame)
Definition frame.c:3027
bool safe_frame_unwind_memory(frame_info_ptr this_frame, CORE_ADDR addr, gdb::array_view< gdb_byte > buffer)
Definition frame.c:3017
void set_gdbarch_process_record(struct gdbarch *gdbarch, gdbarch_process_record_ftype *process_record)
enum bfd_endian gdbarch_byte_order(struct gdbarch *gdbarch)
Definition gdbarch.c:1396
void set_gdbarch_core_read_description(struct gdbarch *gdbarch, gdbarch_core_read_description_ftype *core_read_description)
void set_gdbarch_write_pc(struct gdbarch *gdbarch, gdbarch_write_pc_ftype *write_pc)
void set_gdbarch_skip_trampoline_code(struct gdbarch *gdbarch, gdbarch_skip_trampoline_code_ftype *skip_trampoline_code)
void set_gdbarch_dtrace_enable_probe(struct gdbarch *gdbarch, gdbarch_dtrace_enable_probe_ftype *dtrace_enable_probe)
void set_gdbarch_get_syscall_number(struct gdbarch *gdbarch, gdbarch_get_syscall_number_ftype *get_syscall_number)
void set_gdbarch_dtrace_parse_probe_argument(struct gdbarch *gdbarch, gdbarch_dtrace_parse_probe_argument_ftype *dtrace_parse_probe_argument)
void set_gdbarch_get_siginfo_type(struct gdbarch *gdbarch, gdbarch_get_siginfo_type_ftype *get_siginfo_type)
int gdbarch_int_bit(struct gdbarch *gdbarch)
Definition gdbarch.c:1449
void set_gdbarch_displaced_step_copy_insn(struct gdbarch *gdbarch, gdbarch_displaced_step_copy_insn_ftype *displaced_step_copy_insn)
void set_gdbarch_dtrace_probe_is_enabled(struct gdbarch *gdbarch, gdbarch_dtrace_probe_is_enabled_ftype *dtrace_probe_is_enabled)
void set_gdbarch_core_read_x86_xsave_layout(struct gdbarch *gdbarch, gdbarch_core_read_x86_xsave_layout_ftype *core_read_x86_xsave_layout)
void set_gdbarch_displaced_step_fixup(struct gdbarch *gdbarch, gdbarch_displaced_step_fixup_ftype *displaced_step_fixup)
void set_gdbarch_report_signal_info(struct gdbarch *gdbarch, gdbarch_report_signal_info_ftype *report_signal_info)
void set_gdbarch_process_record_signal(struct gdbarch *gdbarch, gdbarch_process_record_signal_ftype *process_record_signal)
void set_gdbarch_fetch_tls_load_module_address(struct gdbarch *gdbarch, gdbarch_fetch_tls_load_module_address_ftype *fetch_tls_load_module_address)
void set_gdbarch_dtrace_disable_probe(struct gdbarch *gdbarch, gdbarch_dtrace_disable_probe_ftype *dtrace_disable_probe)
void set_gdbarch_num_regs(struct gdbarch *gdbarch, int num_regs)
Definition gdbarch.c:1941
int gdbarch_long_bit(struct gdbarch *gdbarch)
Definition gdbarch.c:1466
int gdbarch_ptr_bit(struct gdbarch *gdbarch)
Definition gdbarch.c:1722
void set_gdbarch_skip_solib_resolver(struct gdbarch *gdbarch, gdbarch_skip_solib_resolver_ftype *skip_solib_resolver)
void set_gdbarch_iterate_over_regset_sections(struct gdbarch *gdbarch, gdbarch_iterate_over_regset_sections_ftype *iterate_over_regset_sections)
void iterate_over_regset_sections_cb(const char *sect_name, int supply_size, int collect_size, const struct regset *regset, const char *human_name, void *cb_data)
Definition gdbarch.h:104
const struct builtin_type * builtin_type(struct gdbarch *gdbarch)
Definition gdbtypes.c:6168
CORE_ADDR glibc_skip_solib_resolver(struct gdbarch *gdbarch, CORE_ADDR pc)
Definition glibc-tdep.c:38
struct type * x86_linux_get_siginfo_type(struct gdbarch *gdbarch)
bool i386_linux_core_read_x86_xsave_layout(struct gdbarch *gdbarch, x86_xsave_layout &layout)
uint64_t i386_linux_core_read_xsave_info(bfd *abfd, x86_xsave_layout &layout)
void i386_linux_report_signal_info(struct gdbarch *gdbarch, struct ui_out *uiout, enum gdb_signal siggnal)
#define I386_LINUX_XSAVE_XCR0_OFFSET
int i386_register_reggroup_p(struct gdbarch *gdbarch, int regnum, const struct reggroup *group)
Definition i386-tdep.c:4604
int i386_process_record(struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR input_addr)
Definition i386-tdep.c:5112
const struct regset i386_gregset
Definition i386-tdep.c:4042
int record_linux_system_call(enum gdb_syscall syscall, struct regcache *regcache, struct linux_record_tdep *tdep)
gdb_syscall
@ gdb_sys_ioctl
@ gdb_sys_delete_module
@ gdb_sys_no_syscall
@ gdb_sys_times
@ gdb_sys_clone
@ gdb_sys_sigaltstack
@ gdb_sys_semtimedop
@ gdb_sys_rt_sigqueueinfo
@ gdb_sys_faccessat
@ gdb_sys_timer_getoverrun
@ gdb_sys_setregid
@ gdb_sys_inotify_add_watch
@ gdb_sys_sched_getscheduler
@ gdb_sys_ioprio_set
@ gdb_sys_sched_setparam
@ gdb_sys_getuid
@ gdb_sys_fchdir
@ gdb_sys_vfork
@ gdb_sys_flistxattr
@ gdb_sys_nanosleep
@ gdb_sys_fchmod
@ gdb_sys_utimes
@ gdb_sys_restart_syscall
@ gdb_sys_mq_timedreceive
@ gdb_sys_select
@ gdb_sys_setxattr
@ gdb_sys_rt_sigaction
@ gdb_sys_vmsplice
@ gdb_sys_io_getevents
@ gdb_sys_getresuid
@ gdb_sys_write
@ gdb_sys_sched_get_priority_min
@ gdb_sys_fchmodat
@ gdb_sys_listxattr
@ gdb_sys_pread64
@ gdb_sys_lremovexattr
@ gdb_sys_uname
@ gdb_sys_setpriority
@ gdb_sys_open
@ gdb_sys_rt_sigtimedwait
@ gdb_sys_exit_group
@ gdb_sys_removexattr
@ gdb_sys_readahead
@ gdb_sys_kill
@ gdb_sys_rt_sigreturn
@ gdb_sys_sched_getaffinity
@ gdb_sys_move_pages
@ gdb_sys_sysctl
@ gdb_sys_tee
@ gdb_sys_link
@ gdb_sys_mincore
@ gdb_sys_setfsuid
@ gdb_sys_getegid
@ gdb_sys_mlockall
@ gdb_sys_close
@ gdb_sys_prctl
@ gdb_sys_newfstat
@ gdb_sys_fremovexattr
@ gdb_sys_renameat
@ gdb_sys_mprotect
@ gdb_sys_getpid
@ gdb_sys_pause
@ gdb_sys_sched_rr_get_interval
@ gdb_sys_getgid
@ gdb_sys_symlink
@ gdb_sys_fgetxattr
@ gdb_sys_recvfrom
@ gdb_sys_lookup_dcookie
@ gdb_sys_munmap
@ gdb_sys_lsetxattr
@ gdb_sys_truncate
@ gdb_sys_fcntl
@ gdb_sys_fstatfs
@ gdb_sys_kexec_load
@ gdb_sys_io_submit
@ gdb_sys_get_robust_list
@ gdb_sys_newfstatat
@ gdb_sys_syslog
@ gdb_sys_getitimer
@ gdb_sys_msgrcv
@ gdb_sys_accept
@ gdb_sys_mq_notify
@ gdb_sys_pipe
@ gdb_sys_getsockopt
@ gdb_sys_access
@ gdb_sys_pivot_root
@ gdb_sys_mknod
@ gdb_sys_newlstat
@ gdb_sys_ioperm
@ gdb_sys_shmat
@ gdb_sys_unlinkat
@ gdb_sys_socketpair
@ gdb_sys_rt_sigsuspend
@ gdb_sys_clock_settime
@ gdb_sys_sched_get_priority_max
@ gdb_sys_poll
@ gdb_sys_waitid
@ gdb_sys_dup
@ gdb_sys_fork
@ gdb_sys_quotactl
@ gdb_sys_munlock
@ gdb_sys_exit
@ gdb_sys_mq_timedsend
@ gdb_sys_pwrite64
@ gdb_sys_tkill
@ gdb_sys_timer_settime
@ gdb_sys_keyctl
@ gdb_sys_setresuid
@ gdb_sys_setgroups
@ gdb_sys_init_module
@ gdb_sys_mremap
@ gdb_sys_clock_nanosleep
@ gdb_sys_setfsgid
@ gdb_sys_unlink
@ gdb_sys_inotify_rm_watch
@ gdb_sys_splice
@ gdb_sys_futimesat
@ gdb_sys_setrlimit
@ gdb_sys_fdatasync
@ gdb_sys_futex
@ gdb_sys_execve
@ gdb_sys_statfs
@ gdb_sys_msgctl
@ gdb_sys_pselect6
@ gdb_sys_personality
@ gdb_sys_capget
@ gdb_sys_fchownat
@ gdb_sys_getrandom
@ gdb_sys_set_tid_address
@ gdb_sys_sync_file_range
@ gdb_sys_setsockopt
@ gdb_sys_fsetxattr
@ gdb_sys_rt_sigpending
@ gdb_sys_settimeofday
@ gdb_sys_openat
@ gdb_sys_getdents64
@ gdb_sys_setsid
@ gdb_sys_flock
@ gdb_sys_mmap2
@ gdb_sys_getdents
@ gdb_sys_epoll_ctl
@ gdb_sys_symlinkat
@ gdb_sys_getxattr
@ gdb_sys_fsync
@ gdb_sys_chown
@ gdb_sys_shmdt
@ gdb_sys_getrusage
@ gdb_sys_rename
@ gdb_sys_swapon
@ gdb_sys_semctl
@ gdb_sys_getpeername
@ gdb_sys_migrate_pages
@ gdb_sys_clock_getres
@ gdb_sys_semop
@ gdb_sys_mount
@ gdb_sys_add_key
@ gdb_sys_sendfile64
@ gdb_sys_listen
@ gdb_sys_geteuid
@ gdb_sys_chdir
@ gdb_sys_sync
@ gdb_sys_lseek
@ gdb_sys_ftruncate
@ gdb_sys_setresgid
@ gdb_sys_sched_getparam
@ gdb_sys_tgkill
@ gdb_sys_socket
@ gdb_sys_setgid
@ gdb_sys_linkat
@ gdb_sys_mq_getsetattr
@ gdb_sys_unshare
@ gdb_sys_mlock
@ gdb_sys_getcwd
@ gdb_sys_epoll_create
@ gdb_sys_getgroups
@ gdb_sys_chroot
@ gdb_sys_pipe2
@ gdb_sys_connect
@ gdb_sys_munlockall
@ gdb_sys_sethostname
@ gdb_sys_set_robust_list
@ gdb_sys_umount
@ gdb_sys_get_mempolicy
@ gdb_sys_setpgid
@ gdb_sys_io_setup
@ gdb_sys_remap_file_pages
@ gdb_sys_getpgid
@ gdb_sys_mkdirat
@ gdb_sys_newstat
@ gdb_sys_clock_gettime
@ gdb_sys_readv
@ gdb_sys_setitimer
@ gdb_sys_fchown
@ gdb_sys_gettid
@ gdb_sys_iopl
@ gdb_sys_getpgrp
@ gdb_sys_adjtimex
@ gdb_sys_mq_open
@ gdb_sys_nfsservctl
@ gdb_sys_msync
@ gdb_sys_rmdir
@ gdb_sys_setreuid
@ gdb_sys_reboot
@ gdb_sys_mbind
@ gdb_sys_msgsnd
@ gdb_sys_chmod
@ gdb_sys_modify_ldt
@ gdb_sys_timer_delete
@ gdb_sys_brk
@ gdb_sys_sysfs
@ gdb_sys_getppid
@ gdb_sys_swapoff
@ gdb_sys_getsid
@ gdb_sys_lgetxattr
@ gdb_sys_request_key
@ gdb_sys_acct
@ gdb_sys_getrlimit
@ gdb_sys_mkdir
@ gdb_sys_msgget
@ gdb_sys_utime
@ gdb_sys_io_destroy
@ gdb_sys_timer_gettime
@ gdb_sys_sendto
@ gdb_sys_mq_unlink
@ gdb_sys_mknodat
@ gdb_sys_setdomainname
@ gdb_sys_readlinkat
@ gdb_sys_vhangup
@ gdb_sys_getsockname
@ gdb_sys_wait4
@ gdb_sys_dup2
@ gdb_sys_inotify_init
@ gdb_sys_sendmsg
@ gdb_sys_semget
@ gdb_sys_read
@ gdb_sys_ptrace
@ gdb_sys_alarm
@ gdb_sys_capset
@ gdb_sys_sysinfo
@ gdb_sys_llistxattr
@ gdb_sys_shutdown
@ gdb_sys_umask
@ gdb_sys_set_mempolicy
@ gdb_sys_sched_setaffinity
@ gdb_sys_fadvise64
@ gdb_sys_rt_sigprocmask
@ gdb_sys_sched_setscheduler
@ gdb_sys_ppoll
@ gdb_sys_setuid
@ gdb_sys_getpriority
@ gdb_sys_timer_create
@ gdb_sys_lchown
@ gdb_sys_io_cancel
@ gdb_sys_writev
@ gdb_sys_time
@ gdb_sys_ustat
@ gdb_sys_gettimeofday
@ gdb_sys_readlink
@ gdb_sys_creat
@ gdb_sys_getresgid
@ gdb_sys_ioprio_get
@ gdb_sys_recvmsg
@ gdb_sys_bind
@ gdb_sys_sched_yield
@ gdb_sys_shmctl
@ gdb_sys_madvise
@ gdb_sys_epoll_wait
@ gdb_sys_shmget
link_map_offsets * linux_lp64_fetch_link_map_offsets()
link_map_offsets * linux_ilp32_fetch_link_map_offsets()
void linux_init_abi(struct gdbarch_info info, struct gdbarch *gdbarch, int num_disp_step_buffers)
CORE_ADDR find_solib_trampoline_target(frame_info_ptr frame, CORE_ADDR pc)
Definition minsyms.c:1554
Definition ada-exp.h:87
std::unique_ptr< operation > operation_up
Definition expression.h:82
void gdbarch_register_osabi(enum bfd_architecture arch, unsigned long machine, enum gdb_osabi osabi, void(*init_osabi)(struct gdbarch_info, struct gdbarch *))
Definition osabi.c:146
@ GDB_OSABI_LINUX
Definition osabi.h:32
int record_full_arch_list_add_reg(struct regcache *regcache, int regnum)
int record_full_arch_list_add_mem(CORE_ADDR addr, int len)
int record_full_arch_list_add_end(void)
enum register_status regcache_raw_read_unsigned(struct regcache *regcache, int regnum, ULONGEST *val)
Definition regcache.c:649
struct regcache * get_thread_regcache(process_stratum_target *target, ptid_t ptid)
Definition regcache.c:400
void regcache_cooked_write_unsigned(struct regcache *regcache, int regnum, ULONGEST val)
Definition regcache.c:825
const reggroup *const system_reggroup
Definition reggroups.c:253
const reggroup *const save_reggroup
Definition reggroups.c:256
const reggroup *const restore_reggroup
Definition reggroups.c:257
void set_solib_svr4_fetch_link_map_offsets(struct gdbarch *gdbarch, struct link_map_offsets *(*flmo)(void))
CORE_ADDR svr4_fetch_objfile_link_map(struct objfile *objfile)
struct type * builtin_long
Definition gdbtypes.h:2081
int * gregset_reg_offset
Definition i386-tdep.h:64
int(* i386_syscall_record)(struct regcache *regcache)
Definition i386-tdep.h:260
int(* sigtramp_p)(frame_info_ptr)
Definition i386-tdep.h:230
x86_xsave_layout xsave_layout
Definition i386-tdep.h:150
gdbarch_register_reggroup_p_ftype * register_reggroup_p
Definition i386-tdep.h:217
CORE_ADDR(* sigcontext_addr)(frame_info_ptr)
Definition i386-tdep.h:233
size_t sizeof_gregset
Definition i386-tdep.h:66
const struct target_desc * tdesc
Definition i386-tdep.h:214
ULONGEST ioctl_TIOCGLCKTRMIOS
ULONGEST ioctl_TIOCMIWAIT
ULONGEST ioctl_TCGETA
ULONGEST ioctl_TIOCGICOUNT
ULONGEST ioctl_TIOCMBIC
ULONGEST ioctl_TIOCMBIS
ULONGEST ioctl_TCSETSW2
ULONGEST ioctl_TIOCSERGSTRUCT
ULONGEST ioctl_TIOCGPTN
ULONGEST ioctl_TIOCSERGETMULTI
ULONGEST ioctl_TIOCGSID
ULONGEST ioctl_FIOQSIZE
ULONGEST ioctl_TIOCSERCONFIG
ULONGEST ioctl_FIONCLEX
ULONGEST ioctl_TIOCSSOFTCAR
ULONGEST ioctl_TIOCSWINSZ
ULONGEST ioctl_TCSETSF
ULONGEST ioctl_TIOCLINUX
ULONGEST ioctl_TIOCTTYGSTRUCT
ULONGEST ioctl_TIOCSBRK
ULONGEST ioctl_TIOCGPGRP
ULONGEST ioctl_TIOCSERSETMULTI
ULONGEST ioctl_TCSETS
ULONGEST ioctl_TIOCSSERIAL
int size_serial_icounter_struct
ULONGEST ioctl_TIOCSPTLCK
ULONGEST ioctl_TIOCGETD
ULONGEST ioctl_FIONREAD
ULONGEST ioctl_TIOCCBRK
ULONGEST ioctl_TCGETS
ULONGEST ioctl_TIOCGSOFTCAR
ULONGEST ioctl_TIOCNOTTY
ULONGEST ioctl_TIOCSPGRP
ULONGEST ioctl_TIOCGSERIAL
ULONGEST ioctl_FIOASYNC
ULONGEST ioctl_TIOCSERGETLSR
ULONGEST ioctl_TIOCOUTQ
ULONGEST ioctl_TIOCMGET
ULONGEST ioctl_TIOCGWINSZ
ULONGEST ioctl_TIOCSERGWILD
ULONGEST ioctl_TIOCCONS
ULONGEST ioctl_TCSETSF2
ULONGEST ioctl_TIOCSCTTY
ULONGEST ioctl_TIOCSETD
ULONGEST ioctl_TIOCSLCKTRMIOS
ULONGEST ioctl_TIOCSHAYESESP
ULONGEST ioctl_TIOCGHAYESESP
ULONGEST ioctl_TIOCEXCL
ULONGEST ioctl_TIOCNXCL
ULONGEST ioctl_TCSETSW
ULONGEST ioctl_TIOCMSET
ULONGEST ioctl_TIOCSERSWILD
const struct tdesc_feature * tdesc_find_feature(const struct target_desc *target_desc, const char *name)
int tdesc_numbered_register(const struct tdesc_feature *feature, struct tdesc_arch_data *data, int regno, const char *name)
static const registry< gdbarch >::key< tdesc_arch_data > tdesc_data
const char * user_reg_map_regnum_to_name(struct gdbarch *gdbarch, int regnum)
Definition user-regs.c:187
void gdb_printf(struct ui_file *stream, const char *format,...)
Definition utils.c:1886
#define gdb_stderr
Definition utils.h:187
void set_xml_syscall_file_name(struct gdbarch *gdbarch, const char *name)
Definition xml-syscall.c:50