46 #define XML_SYSCALL_FILENAME_AMD64 "syscalls/amd64-linux.xml" 81 -1, -1, -1, -1, -1, -1, -1, -1,
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, -1,
85 -1, -1, -1, -1, -1, -1, -1, -1,
86 -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,
92 -1, -1, -1, -1, -1, -1, -1, -1,
93 -1, -1, -1, -1, -1, -1, -1, -1,
94 -1, -1, -1, -1, -1, -1, -1, -1,
95 -1, -1, -1, -1, -1, -1, -1, -1,
96 -1, -1, -1, -1, -1, -1, -1, -1,
97 -1, -1, -1, -1, -1, -1, -1, -1,
108 #define LINUX_SIGTRAMP_INSN0 0x48 109 #define LINUX_SIGTRAMP_OFFSET0 0 110 #define LINUX_SIGTRAMP_INSN1 0x0f 111 #define LINUX_SIGTRAMP_OFFSET1 7 129 #define LINUX_SIGTRAMP_LEN (sizeof amd64_linux_sigtramp_code) 190 if (
name == NULL || strstr (
name,
"sigaction") != NULL)
193 return (strcmp (
"__restore_rt",
name) == 0);
197 #define AMD64_LINUX_UCONTEXT_SIGCONTEXT_OFFSET 40 369 switch (syscall_number) {
1449 #define RECORD_ARCH_GET_FS 0x1003 1450 #define RECORD_ARCH_GET_GS 0x1004 1462 switch (syscall_native)
1482 linux_record_tdep_p->
arg2,
1499 "support syscall number %s\n"),
1506 linux_record_tdep_p);
1535 #define AMD64_LINUX_redzone 128 1536 #define AMD64_LINUX_xstate 512 1537 #define AMD64_LINUX_frame_size 560 1542 enum gdb_signal signal)
1585 tdesc = &x32_linux_tdescs[(xcr0_features_bit &
X86_XSTATE_AVX) ? 1 : 0 ]
1590 tdesc = &amd64_linux_tdescs[(xcr0_features_bit &
X86_XSTATE_AVX) ? 1 : 0]
1621 const void *xstateregs,
size_t len)
1631 int regnum,
void *xstateregs,
size_t len)
1678 0xb8, 0x01, 0x00, 0x00, 0x00
1685 0x48, 0x33, 0xC0, 0x90, 0x90
1748 static const int arg_reg_map[6] =
1757 int regno = arg_reg_map[narg];
1762 str.
length = strlen (regname);
1780 str.
length = strlen (regname);
1875 if (feature == NULL)
2090 if (feature == NULL)
2293 {
"i386/amd64-avx-mpx-avx512-pku-linux.xml",
2300 for (
auto &a : xml_masks)
2306 selftests::record_xml_tdesc (a.xml, tdesc);
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)
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)
void amd64_x32_init_abi(struct gdbarch_info info, struct gdbarch *gdbarch, const target_desc *default_tdesc)
int size_serial_icounter_struct
gdbarch_register_reggroup_p_ftype * register_reggroup_p
static void amd64_x32_linux_init_abi(struct gdbarch_info info, struct gdbarch *gdbarch)
#define LINUX_SIGTRAMP_OFFSET1
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[]
#define DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
#define X86_XSTATE_SSE_MASK
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
void amd64_init_abi(struct gdbarch_info info, struct gdbarch *gdbarch, const target_desc *default_tdesc)
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() iterate_over_regset_sections_cb(const char *sect_name, int size, const struct regset *regset, const char *human_name, void *cb_data)
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_get_siginfo_type(struct gdbarch *gdbarch, gdbarch_get_siginfo_type_ftype get_siginfo_type)
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 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 i386_linux_handle_segmentation_fault(struct gdbarch *gdbarch, struct ui_out *uiout)
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
const gdb_byte amd64_dtrace_disable_probe_sequence[]
static struct linux_record_tdep amd64_x32_linux_record_tdep
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)
struct type * x86_linux_get_siginfo_type(struct gdbarch *gdbarch)
CORE_ADDR svr4_fetch_objfile_link_map(struct objfile *objfile)
static int amd64_all_but_ip_registers_record(struct regcache *regcache)
int ioctl_TIOCSERSETMULTI
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)
target_desc * amd64_create_target_description(uint64_t xcr0, bool is_x32, bool is_linux)
#define AMD64_LINUX_UCONTEXT_SIGCONTEXT_OFFSET
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)
#define X86_XSTATE_AVX_AVX512_MASK
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)
static ULONGEST extract_unsigned_integer(const gdb_byte *addr, int len, enum bfd_endian byte_order)
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 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)
int amd64_linux_gregset_reg_offset[]
static int startswith(const char *string, const char *pattern)
const struct regset i386_gregset
#define LINUX_SIGTRAMP_LEN
static int amd64_linux_sc_reg_offset[]
const target_desc * amd64_linux_read_description(uint64_t xcr0_features_bit, bool is_x32)
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)
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)
static const gdb_byte amd64_x32_linux_sigtramp_code[]
void gdbarch_register_osabi(enum bfd_architecture arch, unsigned long machine, enum gdb_osabi osabi, void(*init_osabi)(struct gdbarch_info, struct gdbarch *))
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 regset amd64_fpregset
#define RECORD_ARCH_GET_GS
void write_exp_elt_opcode(struct parser_state *ps, enum exp_opcode expelt)
int(* sigtramp_p)(struct frame_info *)
static CORE_ADDR amd64_linux_sigtramp_start(struct frame_info *this_frame)
static const struct regset amd64_linux_xstateregset
void set_gdbarch_displaced_step_copy_insn(struct gdbarch *gdbarch, gdbarch_displaced_step_copy_insn_ftype displaced_step_copy_insn)
#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)
#define X86_XSTATE_AVX512
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)
static LONGEST extract_signed_integer(const gdb_byte *addr, int len, enum bfd_endian byte_order)
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 enum gdb_syscall amd64_canonicalize_syscall(enum amd64_syscall syscall_number)
void amd64_displaced_step_fixup(struct gdbarch *gdbarch, struct displaced_step_closure *dsc_, CORE_ADDR from, CORE_ADDR to, struct regcache *regs)
#define X86_XSTATE_AVX_MPX_MASK
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
enum register_status regcache_raw_read_unsigned(struct regcache *regcache, int regnum, ULONGEST *val)
#define I386_LINUX_XSAVE_XCR0_OFFSET
void set_gdbarch_handle_segmentation_fault(struct gdbarch *gdbarch, gdbarch_handle_segmentation_fault_ftype handle_segmentation_fault)
void set_gdbarch_iterate_over_regset_sections(struct gdbarch *gdbarch, gdbarch_iterate_over_regset_sections_ftype iterate_over_regset_sections)
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)
struct tdesc_arch_data * tdesc_data
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)
void write_exp_elt_type(struct parser_state *ps, struct type *expelt)
struct type * lookup_pointer_type(struct type *type)
struct gdbarch * get_frame_arch(struct frame_info *this_frame)
#define X86_XSTATE_AVX_MPX_AVX512_PKU_MASK
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)
#define X86_XSTATE_ALL_MASK