53 #define XML_SYSCALL_FILENAME_AMD64 "syscalls/amd64-linux.xml"
88 -1, -1, -1, -1, -1, -1, -1, -1,
89 -1, -1, -1, -1, -1, -1, -1, -1,
90 -1, -1, -1, -1, -1, -1, -1, -1,
91 -1, -1, -1, -1, -1, -1, -1, -1, -1,
92 -1, -1, -1, -1, -1, -1, -1, -1,
93 -1, -1, -1, -1, -1, -1, -1, -1,
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, -1, -1, -1, -1, -1, -1, -1,
100 -1, -1, -1, -1, -1, -1, -1, -1,
101 -1, -1, -1, -1, -1, -1, -1, -1,
102 -1, -1, -1, -1, -1, -1, -1, -1,
103 -1, -1, -1, -1, -1, -1, -1, -1,
104 -1, -1, -1, -1, -1, -1, -1, -1,
111 #define LINUX_SIGTRAMP_INSN0 0x48
112 #define LINUX_SIGTRAMP_OFFSET0 0
113 #define LINUX_SIGTRAMP_INSN1 0x0f
114 #define LINUX_SIGTRAMP_OFFSET1 7
132 #define LINUX_SIGTRAMP_LEN (sizeof amd64_linux_sigtramp_code)
193 if (name == NULL || strstr (name,
"sigaction") != NULL)
196 return (strcmp (
"__restore_rt", name) == 0);
200 #define AMD64_LINUX_UCONTEXT_SIGCONTEXT_OFFSET 40
367 switch (syscall_number) {
1445 #define RECORD_ARCH_GET_FS 0x1003
1446 #define RECORD_ARCH_GET_GS 0x1004
1458 switch (syscall_native)
1478 linux_record_tdep_p->
arg2,
1491 if (syscall_gdb < 0)
1494 "support syscall number %s\n"),
1501 linux_record_tdep_p);
1530 #define AMD64_LINUX_redzone 128
1531 #define AMD64_LINUX_xstate 512
1532 #define AMD64_LINUX_frame_size 560
1537 enum gdb_signal signal)
1610 const void *xstateregs,
size_t len)
1620 int regnum,
void *xstateregs,
size_t len)
1625 static const struct regset amd64_linux_xstateregset =
1645 &amd64_linux_xstateregset,
"XSAVE extended state", cb_data);
1667 0xb8, 0x01, 0x00, 0x00, 0x00
1674 0x48, 0x33, 0xC0, 0x90, 0x90
1739 static const int arg_reg_map[6] =
1748 int regno = arg_reg_map[narg];
1753 str.
length = strlen (regname);
1772 str.
length = strlen (regname);
1864 tdep->
tdesc = tdesc;
1867 if (feature == NULL)
2080 tdep->
tdesc = tdesc;
2083 if (feature == NULL)
int i386_register_reggroup_p(struct gdbarch *gdbarch, int regnum, struct reggroup *group)
void set_gdbarch_num_regs(struct gdbarch *gdbarch, int num_regs)
#define X86_XSTATE_AVX_MASK
const char * user_reg_map_regnum_to_name(struct gdbarch *gdbarch, int regnum)
ULONGEST extract_unsigned_integer(const gdb_byte *, int, enum bfd_endian)
static void amd64_linux_init_abi_common(struct gdbarch_info info, struct gdbarch *gdbarch)
static void amd64_linux_supply_xstateregset(const struct regset *regset, struct regcache *regcache, int regnum, const void *xstateregs, size_t len)
int size_serial_icounter_struct
static void amd64_x32_linux_init_abi(struct gdbarch_info info, struct gdbarch *gdbarch)
#define LINUX_SIGTRAMP_OFFSET1
static void initialize_tdesc_x32_avx512_linux(void)
struct frame_info * get_selected_frame(const char *message)
void set_gdbarch_displaced_step_fixup(struct gdbarch *gdbarch, gdbarch_displaced_step_fixup_ftype displaced_step_fixup)
CORE_ADDR get_frame_pc(struct frame_info *frame)
const gdb_byte amd64_dtrace_disabled_probe_sequence_2[]
void set_gdbarch_fetch_tls_load_module_address(struct gdbarch *gdbarch, gdbarch_fetch_tls_load_module_address_ftype fetch_tls_load_module_address)
struct link_map_offsets * svr4_lp64_fetch_link_map_offsets(void)
int i386_process_record(struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR input_addr)
struct regcache * get_thread_regcache(ptid_t ptid)
uint64_t i386_linux_core_read_xcr0(bfd *abfd)
struct displaced_step_closure * amd64_displaced_step_copy_insn(struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs)
#define AMD64_LINUX_redzone
int record_full_arch_list_add_reg(struct regcache *regcache, int regnum)
#define X86_XSTATE_MPX_MASK
int gdbarch_int_bit(struct gdbarch *gdbarch)
void set_gdbarch_skip_trampoline_code(struct gdbarch *gdbarch, gdbarch_skip_trampoline_code_ftype skip_trampoline_code)
CORE_ADDR glibc_skip_solib_resolver(struct gdbarch *gdbarch, CORE_ADDR pc)
void set_gdbarch_write_pc(struct gdbarch *gdbarch, gdbarch_write_pc_ftype write_pc)
void set_gdbarch_displaced_step_location(struct gdbarch *gdbarch, gdbarch_displaced_step_location_ftype displaced_step_location)
int gdbarch_ptr_bit(struct gdbarch *gdbarch)
int ioctl_TIOCSERGETMULTI
void amd64_displaced_step_fixup(struct gdbarch *gdbarch, struct displaced_step_closure *dsc, CORE_ADDR from, CORE_ADDR to, struct regcache *regs)
void set_gdbarch_process_record_signal(struct gdbarch *gdbarch, gdbarch_process_record_signal_ftype process_record_signal)
int(* i386_syscall_record)(struct regcache *regcache)
static int amd64_x32_linux_syscall_record(struct regcache *regcache)
void linux_init_abi(struct gdbarch_info info, struct gdbarch *gdbarch)
CORE_ADDR(* sigcontext_addr)(struct frame_info *)
int gdbarch_long_bit(struct gdbarch *gdbarch)
static void amd64_dtrace_enable_probe(struct gdbarch *gdbarch, CORE_ADDR addr)
struct link_map_offsets * svr4_ilp32_fetch_link_map_offsets(void)
void set_gdbarch_dtrace_probe_is_enabled(struct gdbarch *gdbarch, gdbarch_dtrace_probe_is_enabled_ftype dtrace_probe_is_enabled)
struct reggroup *const restore_reggroup
#define LINUX_SIGTRAMP_INSN1
#define AMD64_LINUX_xstate
struct target_desc * tdesc_amd64_mpx_linux
struct target_desc * tdesc_x32_linux
struct target_desc * tdesc_amd64_linux
const gdb_byte amd64_dtrace_disable_probe_sequence[]
static struct linux_record_tdep amd64_x32_linux_record_tdep
struct gdbarch_tdep_info * tdep_info
struct gdbarch_tdep * gdbarch_tdep(struct gdbarch *gdbarch)
static const unsigned short sigtramp_code[]
void _initialize_amd64_linux_tdep(void)
void set_gdbarch_process_record(struct gdbarch *gdbarch, gdbarch_process_record_ftype process_record)
#define X86_XSTATE_SIZE(XCR0)
static LONGEST amd64_linux_get_syscall_number(struct gdbarch *gdbarch, ptid_t ptid)
CORE_ADDR svr4_fetch_objfile_link_map(struct objfile *objfile)
static int amd64_all_but_ip_registers_record(struct regcache *regcache)
int ioctl_TIOCSERSETMULTI
void amd64_x32_init_abi(struct gdbarch_info info, struct gdbarch *gdbarch)
int tdesc_numbered_register(const struct tdesc_feature *feature, struct tdesc_arch_data *data, int regno, const char *name)
const gdb_byte amd64_dtrace_enable_probe_sequence[]
void write_exp_elt_longcst(struct parser_state *ps, LONGEST expelt)
struct target_desc * tdesc_x32_avx512_linux
#define AMD64_LINUX_UCONTEXT_SIGCONTEXT_OFFSET
struct target_desc * tdesc_x32_avx_linux
void set_gdbarch_dtrace_disable_probe(struct gdbarch *gdbarch, gdbarch_dtrace_disable_probe_ftype dtrace_disable_probe)
static int amd64_linux_register_reggroup_p(struct gdbarch *gdbarch, int regnum, struct reggroup *group)
static void amd64_dtrace_disable_probe(struct gdbarch *gdbarch, CORE_ADDR addr)
static struct parser_state * pstate
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 AMD64_LINUX_ORIG_RAX_REGNUM
int record_linux_system_call(enum gdb_syscall syscall, struct regcache *regcache, struct linux_record_tdep *tdep)
CORE_ADDR find_solib_trampoline_target(struct frame_info *frame, CORE_ADDR pc)
int safe_frame_unwind_memory(struct frame_info *this_frame, CORE_ADDR addr, gdb_byte *buf, int len)
struct reggroup *const system_reggroup
static const gdb_byte amd64_linux_sigtramp_code[]
static void initialize_tdesc_amd64_mpx_linux(void)
static void amd64_linux_init_abi(struct gdbarch_info info, struct gdbarch *gdbarch)
#define AMD64_LINUX_frame_size
void amd64_supply_xsave(struct regcache *regcache, int regnum, const void *xsave)
static int amd64_linux_record_signal(struct gdbarch *gdbarch, struct regcache *regcache, enum gdb_signal signal)
enum bfd_endian gdbarch_byte_order(struct gdbarch *gdbarch)
char * pulongest(ULONGEST u)
void set_solib_svr4_fetch_link_map_offsets(struct gdbarch *gdbarch, struct link_map_offsets *(*flmo)(void))
#define XML_SYSCALL_FILENAME_AMD64
int find_pc_partial_function(CORE_ADDR pc, const char **name, CORE_ADDR *address, CORE_ADDR *endaddr)
void read_code(CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
static void initialize_tdesc_x32_avx_linux(void)
const void * register_reggroup_p
#define X86_XSTATE_MPX_AVX512_MASK
int amd64_linux_gregset_reg_offset[]
const struct regset i386_gregset
#define LINUX_SIGTRAMP_LEN
enum register_status regcache_raw_read_unsigned(struct regcache *regcache, int regnum, ULONGEST *val)
static int amd64_linux_sc_reg_offset[]
static void initialize_tdesc_x32_linux(void)
void set_xml_syscall_file_name(struct gdbarch *gdbarch, const char *name)
void printf_unfiltered(const char *format,...)
static int amd64_linux_syscall_record_common(struct regcache *regcache, struct linux_record_tdep *linux_record_tdep_p)
void( iterate_over_regset_sections_cb)(const char *sect_name, int size, const struct regset *regset, const char *human_name, void *cb_data)
const gdb_byte amd64_dtrace_disabled_probe_sequence_1[]
static const struct target_desc * amd64_linux_core_read_description(struct gdbarch *gdbarch, struct target_ops *target, bfd *abfd)
struct target_desc * tdesc_amd64_avx_linux
static const gdb_byte amd64_x32_linux_sigtramp_code[]
CORE_ADDR linux_displaced_step_location(struct gdbarch *gdbarch)
static void amd64_dtrace_parse_probe_argument(struct gdbarch *gdbarch, struct parser_state *pstate, int narg)
int record_full_arch_list_add_mem(CORE_ADDR addr, int len)
const struct target_desc * target_desc
const struct regset amd64_fpregset
#define RECORD_ARCH_GET_GS
void write_exp_elt_opcode(struct parser_state *ps, enum exp_opcode expelt)
static void initialize_tdesc_amd64_linux(void)
int(* sigtramp_p)(struct frame_info *)
static CORE_ADDR amd64_linux_sigtramp_start(struct frame_info *this_frame)
void set_gdbarch_displaced_step_copy_insn(struct gdbarch *gdbarch, gdbarch_displaced_step_copy_insn_ftype displaced_step_copy_insn)
#define X86_XSTATE_AVX512_MASK
struct target_desc * tdesc_amd64_avx512_linux
#define AMD64_LINUX_NUM_REGS
static int amd64_linux_syscall_record(struct regcache *regcache)
void regcache_cooked_write_unsigned(struct regcache *regcache, int regnum, ULONGEST val)
void amd64_init_abi(struct gdbarch_info info, struct gdbarch *gdbarch)
void set_gdbarch_dtrace_enable_probe(struct gdbarch *gdbarch, gdbarch_dtrace_enable_probe_ftype dtrace_enable_probe)
#define LINUX_SIGTRAMP_INSN0
#define RECORD_ARCH_GET_FS
static CORE_ADDR amd64_linux_sigcontext_addr(struct frame_info *this_frame)
void set_gdbarch_get_syscall_number(struct gdbarch *gdbarch, gdbarch_get_syscall_number_ftype get_syscall_number)
void get_frame_register(struct frame_info *frame, int regnum, gdb_byte *buf)
static int amd64_linux_sigtramp_p(struct frame_info *this_frame)
enum register_status regcache_cooked_read(struct regcache *regcache, int regnum, gdb_byte *buf)
const struct target_desc * tdesc
unsigned long long ULONGEST
static void amd64_linux_write_pc(struct regcache *regcache, CORE_ADDR pc)
const struct tdesc_feature * tdesc_find_feature(const struct target_desc *target_desc, const char *name)
void set_gdbarch_dtrace_parse_probe_argument(struct gdbarch *gdbarch, gdbarch_dtrace_parse_probe_argument_ftype dtrace_parse_probe_argument)
static void initialize_tdesc_amd64_avx_linux(void)
static enum gdb_syscall amd64_canonicalize_syscall(enum amd64_syscall syscall_number)
static void initialize_tdesc_amd64_avx512_linux(void)
void set_gdbarch_displaced_step_free_closure(struct gdbarch *gdbarch, gdbarch_displaced_step_free_closure_ftype displaced_step_free_closure)
void amd64_collect_xsave(const struct regcache *regcache, int regnum, void *xsave, int gcore)
int size_hayes_esp_config
struct reggroup *const save_reggroup
static struct linux_record_tdep amd64_linux_record_tdep
#define I386_LINUX_XSAVE_XCR0_OFFSET
void set_gdbarch_iterate_over_regset_sections(struct gdbarch *gdbarch, gdbarch_iterate_over_regset_sections_ftype iterate_over_regset_sections)
LONGEST extract_signed_integer(const gdb_byte *, int, enum bfd_endian)
void write_memory(CORE_ADDR memaddr, const bfd_byte *myaddr, ssize_t len)
int size__old_kernel_stat
static struct gdbarch_data * tdesc_data
void set_gdbarch_skip_solib_resolver(struct gdbarch *gdbarch, gdbarch_skip_solib_resolver_ftype skip_solib_resolver)
enum bfd_endian byte_order
void write_exp_string(struct parser_state *ps, struct stoken str)
int record_full_arch_list_add_end(void)
void set_gdbarch_core_read_description(struct gdbarch *gdbarch, gdbarch_core_read_description_ftype core_read_description)
int tdesc_has_registers(const struct target_desc *target_desc)
void write_exp_elt_type(struct parser_state *ps, struct type *expelt)
void gdbarch_register_osabi(enum bfd_architecture arch, unsigned long machine, enum gdb_osabi osabi, void(*init_osabi)(struct gdbarch_info, struct gdbarch *))
struct type * lookup_pointer_type(struct type *type)
struct gdbarch * get_frame_arch(struct frame_info *this_frame)
static void amd64_linux_collect_xstateregset(const struct regset *regset, const struct regcache *regcache, int regnum, void *xstateregs, size_t len)
static int amd64_dtrace_probe_is_enabled(struct gdbarch *gdbarch, CORE_ADDR addr)
const ULONGEST const LONGEST len
void simple_displaced_step_free_closure(struct gdbarch *gdbarch, struct displaced_step_closure *closure)
#define X86_XSTATE_ALL_MASK