GDB (xrefs)
|
#include "defs.h"
#include "language.h"
#include "opcode/i386.h"
#include "dis-asm.h"
#include "arch-utils.h"
#include "dummy-frame.h"
#include "frame.h"
#include "frame-base.h"
#include "frame-unwind.h"
#include "inferior.h"
#include "infrun.h"
#include "gdbcmd.h"
#include "gdbcore.h"
#include "objfiles.h"
#include "regcache.h"
#include "regset.h"
#include "symfile.h"
#include "disasm.h"
#include "amd64-tdep.h"
#include "i387-tdep.h"
#include "gdbsupport/x86-xstate.h"
#include <algorithm>
#include "target-descriptions.h"
#include "arch/amd64.h"
#include "producer.h"
#include "ax.h"
#include "ax-gdb.h"
#include "gdbsupport/byte-vector.h"
#include "osabi.h"
#include "x86-tdep.h"
#include "amd64-ravenscar-thread.h"
Go to the source code of this file.
Classes | |
struct | amd64_insn |
struct | amd64_displaced_step_copy_insn_closure |
struct | amd64_frame_cache |
Macros | |
#define | AMD64_NUM_LOWER_BYTE_REGS 16 |
#define | AMD64_NUM_SAVED_REGS AMD64_NUM_GREGS |
Enumerations | |
enum | amd64_reg_class { AMD64_INTEGER , AMD64_SSE , AMD64_SSEUP , AMD64_X87 , AMD64_X87UP , AMD64_COMPLEX_X87 , AMD64_NO_CLASS , AMD64_MEMORY } |
Functions | |
static int | amd64_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int reg) |
static int | amd64_arch_reg_to_regnum (int reg) |
static const char * | amd64_pseudo_register_name (struct gdbarch *gdbarch, int regnum) |
static struct value * | amd64_pseudo_register_read_value (struct gdbarch *gdbarch, readable_regcache *regcache, int regnum) |
static void | amd64_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache, int regnum, const gdb_byte *buf) |
static int | amd64_ax_pseudo_register_collect (struct gdbarch *gdbarch, struct agent_expr *ax, int regnum) |
static enum amd64_reg_class | amd64_merge_classes (enum amd64_reg_class class1, enum amd64_reg_class class2) |
static void | amd64_classify (struct type *type, enum amd64_reg_class theclass[2]) |
static bool | amd64_has_unaligned_fields (struct type *type) |
static void | amd64_classify_aggregate_field (struct type *type, int i, enum amd64_reg_class theclass[2], unsigned int bitoffset) |
static void | amd64_classify_aggregate (struct type *type, enum amd64_reg_class theclass[2]) |
static enum return_value_convention | amd64_return_value (struct gdbarch *gdbarch, struct value *function, struct type *type, struct regcache *regcache, struct value **read_value, const gdb_byte *writebuf) |
static CORE_ADDR | amd64_push_arguments (struct regcache *regcache, int nargs, struct value **args, CORE_ADDR sp, function_call_return_method return_method) |
static CORE_ADDR | amd64_push_dummy_call (struct gdbarch *gdbarch, struct value *function, struct regcache *regcache, CORE_ADDR bp_addr, int nargs, struct value **args, CORE_ADDR sp, function_call_return_method return_method, CORE_ADDR struct_addr) |
static int | amd64_syscall_p (const struct amd64_insn *insn, int *lengthp) |
static int | rex_prefix_p (gdb_byte pfx) |
static bool | vex2_prefix_p (gdb_byte pfx) |
static bool | vex3_prefix_p (gdb_byte pfx) |
static gdb_byte * | amd64_skip_prefixes (gdb_byte *insn) |
static int | amd64_get_unused_input_int_reg (const struct amd64_insn *details) |
static void | amd64_get_insn_details (gdb_byte *insn, struct amd64_insn *details) |
static void | fixup_riprel (struct gdbarch *gdbarch, amd64_displaced_step_copy_insn_closure *dsc, CORE_ADDR from, CORE_ADDR to, struct regcache *regs) |
static void | fixup_displaced_copy (struct gdbarch *gdbarch, amd64_displaced_step_copy_insn_closure *dsc, CORE_ADDR from, CORE_ADDR to, struct regcache *regs) |
displaced_step_copy_insn_closure_up | amd64_displaced_step_copy_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs) |
static int | amd64_absolute_jmp_p (const struct amd64_insn *details) |
static int | amd64_jmp_p (const struct amd64_insn *details) |
static int | amd64_absolute_call_p (const struct amd64_insn *details) |
static int | amd64_ret_p (const struct amd64_insn *details) |
static int | amd64_call_p (const struct amd64_insn *details) |
static int | amd64_classify_insn_at (struct gdbarch *gdbarch, CORE_ADDR addr, int(*pred)(const struct amd64_insn *)) |
static int | amd64_insn_is_call (struct gdbarch *gdbarch, CORE_ADDR addr) |
static int | amd64_insn_is_ret (struct gdbarch *gdbarch, CORE_ADDR addr) |
static int | amd64_insn_is_jump (struct gdbarch *gdbarch, CORE_ADDR addr) |
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) |
static int | rip_relative_offset (struct amd64_insn *insn) |
static void | append_insns (CORE_ADDR *to, ULONGEST len, const gdb_byte *buf) |
static void | amd64_relocate_instruction (struct gdbarch *gdbarch, CORE_ADDR *to, CORE_ADDR oldloc) |
static void | amd64_init_frame_cache (struct amd64_frame_cache *cache) |
static struct amd64_frame_cache * | amd64_alloc_frame_cache (void) |
static CORE_ADDR | amd64_analyze_stack_align (CORE_ADDR pc, CORE_ADDR current_pc, struct amd64_frame_cache *cache) |
static CORE_ADDR | amd64_x32_analyze_stack_align (CORE_ADDR pc, CORE_ADDR current_pc, struct amd64_frame_cache *cache) |
static CORE_ADDR | amd64_analyze_prologue (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR current_pc, struct amd64_frame_cache *cache) |
static CORE_ADDR | amd64_skip_xmm_prologue (CORE_ADDR pc, CORE_ADDR start_pc) |
static CORE_ADDR | amd64_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc) |
static void | amd64_frame_cache_1 (frame_info_ptr this_frame, struct amd64_frame_cache *cache) |
static struct amd64_frame_cache * | amd64_frame_cache (frame_info_ptr this_frame, void **this_cache) |
static enum unwind_stop_reason | amd64_frame_unwind_stop_reason (frame_info_ptr this_frame, void **this_cache) |
static void | amd64_frame_this_id (frame_info_ptr this_frame, void **this_cache, struct frame_id *this_id) |
static struct value * | amd64_frame_prev_register (frame_info_ptr this_frame, void **this_cache, int regnum) |
static void | amd64_gen_return_address (struct gdbarch *gdbarch, struct agent_expr *ax, struct axs_value *value, CORE_ADDR scope) |
static struct amd64_frame_cache * | amd64_sigtramp_frame_cache (frame_info_ptr this_frame, void **this_cache) |
static enum unwind_stop_reason | amd64_sigtramp_frame_unwind_stop_reason (frame_info_ptr this_frame, void **this_cache) |
static void | amd64_sigtramp_frame_this_id (frame_info_ptr this_frame, void **this_cache, struct frame_id *this_id) |
static struct value * | amd64_sigtramp_frame_prev_register (frame_info_ptr this_frame, void **this_cache, int regnum) |
static int | amd64_sigtramp_frame_sniffer (const struct frame_unwind *self, frame_info_ptr this_frame, void **this_cache) |
static CORE_ADDR | amd64_frame_base_address (frame_info_ptr this_frame, void **this_cache) |
static int | amd64_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc) |
static int | amd64_epilogue_frame_sniffer_1 (const struct frame_unwind *self, frame_info_ptr this_frame, void **this_prologue_cache, bool override_p) |
static int | amd64_epilogue_override_frame_sniffer (const struct frame_unwind *self, frame_info_ptr this_frame, void **this_prologue_cache) |
static int | amd64_epilogue_frame_sniffer (const struct frame_unwind *self, frame_info_ptr this_frame, void **this_prologue_cache) |
static struct amd64_frame_cache * | amd64_epilogue_frame_cache (frame_info_ptr this_frame, void **this_cache) |
static enum unwind_stop_reason | amd64_epilogue_frame_unwind_stop_reason (frame_info_ptr this_frame, void **this_cache) |
static void | amd64_epilogue_frame_this_id (frame_info_ptr this_frame, void **this_cache, struct frame_id *this_id) |
static struct frame_id | amd64_dummy_id (struct gdbarch *gdbarch, frame_info_ptr this_frame) |
static CORE_ADDR | amd64_frame_align (struct gdbarch *gdbarch, CORE_ADDR sp) |
static void | amd64_supply_fpregset (const struct regset *regset, struct regcache *regcache, int regnum, const void *fpregs, size_t len) |
static void | amd64_collect_fpregset (const struct regset *regset, const struct regcache *regcache, int regnum, void *fpregs, size_t len) |
static int | amd64_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc) |
static bool | amd64_in_indirect_branch_thunk (struct gdbarch *gdbarch, CORE_ADDR pc) |
void | amd64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch, const target_desc *default_tdesc) |
static void | amd64_none_init_abi (gdbarch_info info, gdbarch *arch) |
static struct type * | amd64_x32_pseudo_register_type (struct gdbarch *gdbarch, int regnum) |
void | amd64_x32_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch, const target_desc *default_tdesc) |
static void | amd64_x32_none_init_abi (gdbarch_info info, gdbarch *arch) |
const struct target_desc * | amd64_target_description (uint64_t xcr0, bool segments) |
void | _initialize_amd64_tdep () |
void | amd64_supply_fxsave (struct regcache *regcache, int regnum, const void *fxsave) |
void | amd64_supply_xsave (struct regcache *regcache, int regnum, const void *xsave) |
void | amd64_collect_fxsave (const struct regcache *regcache, int regnum, void *fxsave) |
void | amd64_collect_xsave (const struct regcache *regcache, int regnum, void *xsave, int gcore) |
Variables | |
static const char *const | amd64_register_names [] |
static const char *const | amd64_ymm_names [] |
static const char *const | amd64_ymm_avx512_names [] |
static const char *const | amd64_ymmh_names [] |
static const char *const | amd64_ymmh_avx512_names [] |
static const char *const | amd64_mpx_names [] |
static const char *const | amd64_k_names [] |
static const char *const | amd64_zmmh_names [] |
static const char *const | amd64_zmm_names [] |
static const char *const | amd64_xmm_avx512_names [] |
static const char *const | amd64_pkeys_names [] |
static int | amd64_dwarf_regmap [] |
static const int | amd64_dwarf_regmap_len |
static const int | amd64_arch_regmap [16] |
static const int | amd64_arch_regmap_len |
static const char *const | amd64_byte_names [] |
static const char *const | amd64_word_names [] |
static const char *const | amd64_dword_names [] |
static const unsigned char | onebyte_has_modrm [256] |
static const unsigned char | twobyte_has_modrm [256] |
static const struct frame_unwind | amd64_frame_unwind |
static const struct frame_unwind | amd64_sigtramp_frame_unwind |
static const struct frame_base | amd64_frame_base |
static const struct frame_unwind | amd64_epilogue_override_frame_unwind |
static const struct frame_unwind | amd64_epilogue_frame_unwind |
const struct regset | amd64_fpregset |
static const int | amd64_record_regmap [] |
#define AMD64_NUM_LOWER_BYTE_REGS 16 |
Definition at line 310 of file amd64-tdep.c.
Referenced by amd64_ax_pseudo_register_collect(), amd64_pseudo_register_read_value(), and amd64_pseudo_register_write().
#define AMD64_NUM_SAVED_REGS AMD64_NUM_GREGS |
Definition at line 1949 of file amd64-tdep.c.
Referenced by amd64_frame_cache_1(), amd64_init_frame_cache(), and amd64_sigtramp_frame_cache().
enum amd64_reg_class |
Enumerator | |
---|---|
AMD64_INTEGER | |
AMD64_SSE | |
AMD64_SSEUP | |
AMD64_X87 | |
AMD64_X87UP | |
AMD64_COMPLEX_X87 | |
AMD64_NO_CLASS | |
AMD64_MEMORY |
Definition at line 495 of file amd64-tdep.c.
void _initialize_amd64_tdep | ( | ) |
Definition at line 3408 of file amd64-tdep.c.
Referenced by initialize_all_files().
|
static |
Definition at line 1573 of file amd64-tdep.c.
References amd64_insn::opcode_offset, and amd64_insn::raw_insn.
Referenced by amd64_call_p(), and amd64_displaced_step_fixup().
|
static |
Definition at line 1536 of file amd64-tdep.c.
References amd64_insn::opcode_offset, and amd64_insn::raw_insn.
Referenced by amd64_displaced_step_fixup(), and amd64_jmp_p().
|
static |
Definition at line 1998 of file amd64-tdep.c.
References amd64_init_frame_cache(), and FRAME_OBSTACK_ZALLOC.
Referenced by amd64_epilogue_frame_cache(), amd64_frame_cache(), and amd64_sigtramp_frame_cache().
|
static |
Definition at line 2366 of file amd64-tdep.c.
References amd64_analyze_stack_align(), AMD64_RBP_REGNUM, amd64_x32_analyze_stack_align(), amd64_frame_cache::frameless_p, gdbarch_byte_order(), gdbarch_ptr_bit(), amd64_frame_cache::pc, read_code(), read_code_unsigned_integer(), amd64_frame_cache::saved_regs, and amd64_frame_cache::sp_offset.
Referenced by amd64_frame_cache_1(), and amd64_skip_prologue().
|
static |
Definition at line 2014 of file amd64-tdep.c.
References amd64_arch_reg_to_regnum(), amd64_frame_cache::pc, amd64_frame_cache::saved_sp_reg, and target_read_code().
Referenced by amd64_analyze_prologue().
|
static |
Definition at line 293 of file amd64-tdep.c.
References amd64_arch_regmap, and amd64_arch_regmap_len.
Referenced by amd64_analyze_stack_align(), amd64_x32_analyze_stack_align(), and fixup_riprel().
|
static |
Definition at line 465 of file amd64-tdep.c.
References i386_gdbarch_tdep::al_regnum, AMD64_NUM_LOWER_BYTE_REGS, ax_reg_mask(), i386_gdbarch_tdep::eax_regnum, i386_ax_pseudo_register_collect(), i386_byte_regnum_p(), i386_dword_regnum_p(), and regnum.
Referenced by amd64_init_abi().
|
static |
Definition at line 1612 of file amd64-tdep.c.
References amd64_absolute_call_p(), amd64_insn::opcode_offset, and amd64_insn::raw_insn.
Referenced by amd64_displaced_step_fixup(), and amd64_insn_is_call().
|
static |
Definition at line 725 of file amd64-tdep.c.
References amd64_classify_aggregate(), AMD64_COMPLEX_X87, AMD64_INTEGER, AMD64_NO_CLASS, AMD64_SSE, AMD64_SSEUP, AMD64_X87, AMD64_X87UP, code, type::code(), type::length(), and TYPE_IS_REFERENCE.
Referenced by amd64_classify_aggregate(), amd64_classify_aggregate_field(), amd64_push_arguments(), and amd64_return_value().
|
static |
Definition at line 657 of file amd64-tdep.c.
References amd64_classify(), amd64_classify_aggregate_field(), amd64_has_unaligned_fields(), AMD64_MEMORY, AMD64_NO_CLASS, AMD64_SSE, AMD64_SSEUP, check_typedef(), type::code(), language_pass_by_reference(), type::length(), type::num_fields(), type::target_type(), and TYPE_HAS_DYNAMIC_LENGTH.
Referenced by amd64_classify().
|
static |
Definition at line 591 of file amd64-tdep.c.
References amd64_classify(), amd64_classify_aggregate_field(), amd64_merge_classes(), field::bitsize(), check_typedef(), type::code(), type::field(), field::is_static(), type::length(), field::loc_bitpos(), type::num_fields(), and field::type().
Referenced by amd64_classify_aggregate(), and amd64_classify_aggregate_field().
|
static |
Definition at line 1647 of file amd64-tdep.c.
References amd64_get_insn_details(), gdbarch_max_insn_length(), and read_code().
Referenced by amd64_insn_is_call(), amd64_insn_is_jump(), and amd64_insn_is_ret().
|
static |
Definition at line 3092 of file amd64-tdep.c.
References amd64_collect_fxsave(), reg_buffer::arch(), regnum, and i386_gdbarch_tdep::sizeof_fpregset.
void amd64_collect_fxsave | ( | const struct regcache * | regcache, |
int | regnum, | ||
void * | fxsave ) |
Definition at line 3488 of file amd64-tdep.c.
References reg_buffer::arch(), gdbarch_bfd_arch_info(), i387_collect_fxsave(), I387_FISEG_REGNUM, I387_FOSEG_REGNUM, reg_buffer::raw_collect(), and regnum.
Referenced by amd64_collect_fpregset(), amd64bsd_store_inferior_registers(), fill_fpregset(), fill_fpregset(), amd64_fbsd_nat_target::store_registers(), amd64_linux_nat_target::store_registers(), and i386_darwin_nat_target::store_registers().
void amd64_collect_xsave | ( | const struct regcache * | regcache, |
int | regnum, | ||
void * | xsave, | ||
int | gcore ) |
Definition at line 3509 of file amd64-tdep.c.
References reg_buffer::arch(), gdbarch_bfd_arch_info(), i387_collect_xsave(), I387_FISEG_REGNUM, I387_FOSEG_REGNUM, reg_buffer::raw_collect(), and regnum.
Referenced by amd64_linux_collect_xstateregset(), amd64fbsd_collect_xstateregset(), amd64_fbsd_nat_target::store_registers(), and amd64_linux_nat_target::store_registers().
displaced_step_copy_insn_closure_up amd64_displaced_step_copy_insn | ( | struct gdbarch * | gdbarch, |
CORE_ADDR | from, | ||
CORE_ADDR | to, | ||
struct regcache * | regs ) |
Definition at line 1489 of file amd64-tdep.c.
References amd64_get_insn_details(), amd64_syscall_p(), displaced_debug_printf, fixup_displaced_copy(), gdbarch_max_insn_length(), amd64_insn::opcode_offset, paddress(), read_memory(), and write_memory().
Referenced by amd64_linux_init_abi_common().
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 ) |
Definition at line 1690 of file amd64-tdep.c.
References amd64_absolute_call_p(), amd64_absolute_jmp_p(), amd64_call_p(), amd64_ret_p(), AMD64_RSP_REGNUM, amd64_syscall_p(), displaced_debug_printf, gdbarch_byte_order(), amd64_displaced_step_copy_insn_closure::insn_buf, amd64_displaced_step_copy_insn_closure::insn_details, paddress(), read_memory_unsigned_integer(), regcache_cooked_read_unsigned(), regcache_cooked_write_unsigned(), regcache_read_pc(), regcache_write_pc(), amd64_displaced_step_copy_insn_closure::tmp_regno, amd64_displaced_step_copy_insn_closure::tmp_save, amd64_displaced_step_copy_insn_closure::tmp_used, and write_memory_unsigned_integer().
Referenced by amd64_linux_init_abi_common().
|
static |
Definition at line 3053 of file amd64-tdep.c.
References AMD64_RBP_REGNUM, frame_id_build(), get_frame_pc(), and get_frame_register_unsigned().
Referenced by amd64_init_abi().
|
static |
Definition at line 248 of file amd64-tdep.c.
References amd64_dwarf_regmap, amd64_dwarf_regmap_len, i386_xmm_regnum_p(), I387_XMM0_REGNUM, regnum, and i386_gdbarch_tdep::ymm0_regnum.
Referenced by amd64_init_abi().
|
static |
Definition at line 2963 of file amd64-tdep.c.
References amd64_alloc_frame_cache(), AMD64_RIP_REGNUM, AMD64_RSP_REGNUM, amd64_frame_cache::base, amd64_frame_cache::base_p, extract_unsigned_integer(), gdbarch_byte_order(), get_frame_arch(), get_frame_func(), get_frame_register(), amd64_frame_cache::pc, amd64_frame_cache::saved_regs, amd64_frame_cache::saved_sp, and amd64_frame_cache::sp_offset.
Referenced by amd64_epilogue_frame_this_id(), and amd64_epilogue_frame_unwind_stop_reason().
|
static |
Definition at line 2954 of file amd64-tdep.c.
References amd64_epilogue_frame_sniffer_1().
|
static |
Definition at line 2912 of file amd64-tdep.c.
References amd64_stack_frame_destroyed_p(), compunit_epilogue_unwind_valid(), find_pc_compunit_symtab(), frame_relative_level(), get_frame_arch(), and get_frame_pc().
Referenced by amd64_epilogue_frame_sniffer(), and amd64_epilogue_override_frame_sniffer().
|
static |
Definition at line 3017 of file amd64-tdep.c.
References amd64_epilogue_frame_cache(), amd64_frame_cache::base, amd64_frame_cache::base_p, frame_id_build(), frame_id_build_unavailable_stack(), and amd64_frame_cache::pc.
|
static |
Definition at line 3004 of file amd64-tdep.c.
References amd64_epilogue_frame_cache(), and amd64_frame_cache::base_p.
|
static |
Definition at line 2945 of file amd64-tdep.c.
References amd64_epilogue_frame_sniffer_1().
|
static |
Definition at line 3065 of file amd64-tdep.c.
Referenced by amd64_init_abi().
|
static |
Definition at line 2873 of file amd64-tdep.c.
References amd64_frame_cache(), and amd64_frame_cache::base.
|
static |
Definition at line 2636 of file amd64-tdep.c.
References amd64_alloc_frame_cache(), and amd64_frame_cache_1().
Referenced by amd64_frame_base_address(), amd64_frame_prev_register(), amd64_frame_this_id(), and amd64_frame_unwind_stop_reason().
|
static |
Definition at line 2567 of file amd64-tdep.c.
References amd64_analyze_prologue(), AMD64_NUM_SAVED_REGS, AMD64_RBP_REGNUM, AMD64_RIP_REGNUM, AMD64_RSP_REGNUM, amd64_frame_cache::base, amd64_frame_cache::base_p, extract_unsigned_integer(), amd64_frame_cache::frameless_p, gdbarch_byte_order(), get_frame_arch(), get_frame_func(), get_frame_pc(), get_frame_register(), amd64_frame_cache::pc, amd64_frame_cache::saved_regs, amd64_frame_cache::saved_sp, amd64_frame_cache::saved_sp_reg, and amd64_frame_cache::sp_offset.
Referenced by amd64_frame_cache().
|
static |
Definition at line 2695 of file amd64-tdep.c.
References amd64_frame_cache(), frame_unwind_got_constant(), frame_unwind_got_memory(), frame_unwind_got_register(), gdbarch_sp_regnum(), get_frame_arch(), regnum, amd64_frame_cache::saved_regs, and amd64_frame_cache::saved_sp.
Referenced by amd64_sigtramp_frame_prev_register().
|
static |
Definition at line 2677 of file amd64-tdep.c.
References amd64_frame_cache(), amd64_frame_cache::base, amd64_frame_cache::base_p, frame_id_build(), frame_id_build_unavailable_stack(), and amd64_frame_cache::pc.
|
static |
Definition at line 2660 of file amd64-tdep.c.
References amd64_frame_cache(), amd64_frame_cache::base, and amd64_frame_cache::base_p.
|
static |
Definition at line 2728 of file amd64-tdep.c.
References AMD64_RBP_REGNUM, AMD64_RIP_REGNUM, ax_const_l(), ax_reg(), ax_simple(), axs_lvalue_memory, register_type(), and value::type().
Referenced by amd64_init_abi().
|
static |
Definition at line 1331 of file amd64-tdep.c.
References amd64_skip_prefixes(), amd64_insn::enc_prefix_offset, amd64_insn::modrm_offset, onebyte_has_modrm, amd64_insn::opcode_len, amd64_insn::opcode_offset, amd64_insn::raw_insn, rex_prefix_p(), twobyte_has_modrm, vex2_prefix_p(), and vex3_prefix_p().
Referenced by amd64_classify_insn_at(), amd64_displaced_step_copy_insn(), and amd64_relocate_instruction().
|
static |
Definition at line 3116 of file amd64-tdep.c.
References AMD64_RDI_REGNUM, builtin_type::builtin_func_ptr, builtin_type(), extract_typed_address(), get_frame_arch(), get_frame_register(), i386_gdbarch_tdep::jb_pc_offset, type::length(), and target_read_memory().
Referenced by amd64_init_abi().
|
static |
Definition at line 1262 of file amd64-tdep.c.
References amd64_insn::modrm_offset, amd64_insn::opcode_len, amd64_insn::opcode_offset, and amd64_insn::raw_insn.
Referenced by fixup_riprel().
|
static |
Definition at line 548 of file amd64-tdep.c.
References amd64_has_unaligned_fields(), field::bitsize(), check_typedef(), type::code(), type::field(), field::is_packed(), field::is_static(), type::length(), field::loc_bitpos(), type::num_fields(), field::type(), and type_align().
Referenced by amd64_classify_aggregate(), and amd64_has_unaligned_fields().
|
static |
Definition at line 3154 of file amd64-tdep.c.
References AMD64_RAX_REGNUM, amd64_register_names, AMD64_RIP_REGNUM, and x86_in_indirect_branch_thunk().
Referenced by amd64_init_abi().
void amd64_init_abi | ( | struct gdbarch_info | info, |
struct gdbarch * | gdbarch, | ||
const target_desc * | default_tdesc ) |
Definition at line 3162 of file amd64-tdep.c.
References amd64_ax_pseudo_register_collect(), AMD64_BND0R_REGNUM, AMD64_BNDCFGU_REGNUM, amd64_dummy_id(), amd64_dwarf_reg_to_regnum(), AMD64_EFLAGS_REGNUM, amd64_epilogue_frame_unwind, amd64_epilogue_override_frame_unwind, amd64_fpregset, amd64_frame_align(), amd64_frame_base, amd64_frame_unwind, AMD64_FSBASE_REGNUM, amd64_gen_return_address(), amd64_get_longjmp_target(), amd64_in_indirect_branch_thunk(), amd64_insn_is_call(), amd64_insn_is_jump(), amd64_insn_is_ret(), AMD64_K0_REGNUM, amd64_k_names, amd64_mpx_names, AMD64_NUM_GREGS, AMD64_NUM_REGS, amd64_pkeys_names, AMD64_PKRU_REGNUM, amd64_pseudo_register_name(), amd64_pseudo_register_read_value(), amd64_pseudo_register_write(), amd64_push_dummy_call(), amd64_record_regmap, amd64_register_names, amd64_relocate_instruction(), amd64_return_value(), AMD64_RIP_REGNUM, AMD64_RSP_REGNUM, amd64_sigtramp_frame_unwind, amd64_skip_prologue(), AMD64_ST0_REGNUM, AMD64_XMM16_REGNUM, amd64_xmm_avx512_names, AMD64_YMM0H_REGNUM, AMD64_YMM16H_REGNUM, amd64_ymmh_avx512_names, amd64_ymmh_names, AMD64_ZMM0H_REGNUM, amd64_zmmh_names, i386_gdbarch_tdep::bnd0r_regnum, i386_gdbarch_tdep::bndcfgu_regnum, i386_gdbarch_tdep::fpregset, frame_base_set_default(), frame_unwind_append_unwinder(), frame_unwind_prepend_unwinder(), i386_gdbarch_tdep::fsbase_regnum, i386_stap_is_single_operand(), i386_stap_parse_special_token(), i387_convert_register_p(), I387_NUM_REGS, i387_register_to_value(), I387_SIZEOF_FXSAVE, i387_value_to_register(), i386_gdbarch_tdep::k0_regnum, i386_gdbarch_tdep::k_register_names, i386_gdbarch_tdep::mpx_register_names, i386_gdbarch_tdep::num_byte_regs, i386_gdbarch_tdep::num_core_regs, i386_gdbarch_tdep::num_dword_regs, i386_gdbarch_tdep::num_mmx_regs, i386_gdbarch_tdep::num_pkeys_regs, i386_gdbarch_tdep::num_word_regs, i386_gdbarch_tdep::num_xmm_avx512_regs, i386_gdbarch_tdep::num_xmm_regs, i386_gdbarch_tdep::num_ymm_avx512_regs, i386_gdbarch_tdep::num_ymm_regs, i386_gdbarch_tdep::num_zmm_regs, i386_gdbarch_tdep::pkeys_register_names, i386_gdbarch_tdep::pkru_regnum, i386_gdbarch_tdep::record_regmap, register_amd64_ravenscar_ops(), i386_gdbarch_tdep::register_names, set_gdbarch_ax_pseudo_register_collect(), set_gdbarch_convert_register_p(), set_gdbarch_dummy_id(), set_gdbarch_dwarf2_reg_to_regnum(), set_gdbarch_fp0_regnum(), set_gdbarch_frame_align(), set_gdbarch_frame_red_zone_size(), set_gdbarch_gen_return_address(), set_gdbarch_get_longjmp_target(), set_gdbarch_in_indirect_branch_thunk(), set_gdbarch_insn_is_call(), set_gdbarch_insn_is_jump(), set_gdbarch_insn_is_ret(), set_gdbarch_long_bit(), set_gdbarch_long_double_bit(), set_gdbarch_long_long_bit(), set_gdbarch_num_regs(), set_gdbarch_pc_regnum(), set_gdbarch_ps_regnum(), set_gdbarch_pseudo_register_read_value(), set_gdbarch_pseudo_register_write(), set_gdbarch_ptr_bit(), set_gdbarch_push_dummy_call(), set_gdbarch_register_to_value(), set_gdbarch_relocate_instruction(), set_gdbarch_return_value_as_value(), set_gdbarch_skip_prologue(), set_gdbarch_sp_regnum(), set_gdbarch_stab_reg_to_regnum(), set_gdbarch_stap_integer_prefixes(), set_gdbarch_stap_is_single_operand(), set_gdbarch_stap_parse_special_token(), set_gdbarch_stap_register_indirection_prefixes(), set_gdbarch_stap_register_indirection_suffixes(), set_gdbarch_stap_register_prefixes(), set_gdbarch_value_to_register(), set_tdesc_pseudo_register_name(), i386_gdbarch_tdep::sizeof_fpregset, i386_gdbarch_tdep::st0_regnum, stap_register_indirection_prefixes, stap_register_indirection_suffixes, i386_gdbarch_tdep::tdesc, tdesc_find_feature(), tdesc_has_registers(), i386_gdbarch_tdep::xmm16_regnum, i386_gdbarch_tdep::xmm_avx512_register_names, i386_gdbarch_tdep::ymm0h_regnum, i386_gdbarch_tdep::ymm16h_register_names, i386_gdbarch_tdep::ymm16h_regnum, i386_gdbarch_tdep::ymmh_register_names, i386_gdbarch_tdep::zmm0h_regnum, and i386_gdbarch_tdep::zmmh_register_names.
Referenced by amd64_dicos_init_abi(), amd64_linux_init_abi(), amd64_none_init_abi(), amd64_sol2_init_abi(), amd64_windows_init_abi_common(), amd64_x32_init_abi(), amd64fbsd_init_abi(), amd64nbsd_init_abi(), amd64obsd_init_abi(), and x86_darwin_init_abi_64().
|
static |
Definition at line 1971 of file amd64-tdep.c.
References AMD64_NUM_SAVED_REGS, amd64_frame_cache::base, amd64_frame_cache::base_p, amd64_frame_cache::frameless_p, amd64_frame_cache::pc, amd64_frame_cache::saved_regs, amd64_frame_cache::saved_sp, amd64_frame_cache::saved_sp_reg, and amd64_frame_cache::sp_offset.
Referenced by amd64_alloc_frame_cache(), and amd64_skip_prologue().
|
static |
Definition at line 1665 of file amd64-tdep.c.
References amd64_call_p(), and amd64_classify_insn_at().
Referenced by amd64_init_abi().
|
static |
Definition at line 1681 of file amd64-tdep.c.
References amd64_classify_insn_at(), and amd64_jmp_p().
Referenced by amd64_init_abi().
|
static |
Definition at line 1673 of file amd64-tdep.c.
References amd64_classify_insn_at(), and amd64_ret_p().
Referenced by amd64_init_abi().
|
static |
Definition at line 1557 of file amd64-tdep.c.
References amd64_absolute_jmp_p(), amd64_insn::opcode_offset, and amd64_insn::raw_insn.
Referenced by amd64_insn_is_jump().
|
static |
Definition at line 511 of file amd64-tdep.c.
References AMD64_COMPLEX_X87, AMD64_INTEGER, AMD64_MEMORY, AMD64_NO_CLASS, AMD64_SSE, AMD64_X87, and AMD64_X87UP.
Referenced by amd64_classify_aggregate_field().
|
static |
Definition at line 3337 of file amd64-tdep.c.
References amd64_init_abi(), amd64_target_description(), and target_desc::arch.
|
static |
Definition at line 332 of file amd64-tdep.c.
References i386_gdbarch_tdep::al_regnum, amd64_byte_names, amd64_dword_names, amd64_word_names, amd64_ymm_avx512_names, amd64_ymm_names, amd64_zmm_names, i386_gdbarch_tdep::ax_regnum, i386_gdbarch_tdep::eax_regnum, i386_byte_regnum_p(), i386_dword_regnum_p(), i386_pseudo_register_name(), i386_word_regnum_p(), i386_ymm_avx512_regnum_p(), i386_ymm_regnum_p(), i386_zmm_regnum_p(), regnum, i386_gdbarch_tdep::ymm0_regnum, i386_gdbarch_tdep::ymm16_regnum, and i386_gdbarch_tdep::zmm0_regnum.
Referenced by amd64_init_abi().
|
static |
Definition at line 352 of file amd64-tdep.c.
References i386_gdbarch_tdep::al_regnum, value::allocate(), AMD64_NUM_LOWER_BYTE_REGS, value::contents_raw(), i386_gdbarch_tdep::eax_regnum, i386_byte_regnum_p(), i386_dword_regnum_p(), i386_pseudo_register_read_into_value(), type::length(), lval_register, value::mark_bytes_unavailable(), readable_regcache::raw_read(), register_size(), register_type(), regnum, value::set_lval(), status, value::type(), and VALUE_REGNUM.
Referenced by amd64_init_abi().
|
static |
Definition at line 412 of file amd64-tdep.c.
References i386_gdbarch_tdep::al_regnum, AMD64_NUM_LOWER_BYTE_REGS, i386_gdbarch_tdep::eax_regnum, i386_byte_regnum_p(), i386_dword_regnum_p(), i386_pseudo_register_write(), readable_regcache::raw_read(), regcache::raw_write(), register_size(), and regnum.
Referenced by amd64_init_abi().
|
static |
Definition at line 931 of file amd64-tdep.c.
References amd64_classify(), AMD64_INTEGER, AMD64_NO_CLASS, AMD64_R8_REGNUM, AMD64_R9_REGNUM, AMD64_RAX_REGNUM, AMD64_RCX_REGNUM, AMD64_RDI_REGNUM, AMD64_RDX_REGNUM, AMD64_RSI_REGNUM, AMD64_SSE, AMD64_SSEUP, AMD64_XMM0_REGNUM, AMD64_XMM1_REGNUM, value::contents(), type::length(), regcache::raw_write_part(), regcache_raw_write_unsigned(), regnum, return_method_struct, value::type(), and write_memory().
Referenced by amd64_push_dummy_call().
|
static |
Definition at line 1066 of file amd64-tdep.c.
References amd64_push_arguments(), AMD64_RBP_REGNUM, AMD64_RDI_REGNUM, AMD64_RSP_REGNUM, regcache::cooked_write(), gdbarch_byte_order(), i387_reset_bnd_regs(), return_method_struct, store_unsigned_integer(), and write_memory().
Referenced by amd64_init_abi().
|
static |
Definition at line 1828 of file amd64-tdep.c.
References amd64_get_insn_details(), amd64_skip_prefixes(), append_insns(), displaced_debug_printf, extract_signed_integer(), gdb_buffered_insn_length(), gdbarch_byte_order(), gdbarch_max_insn_length(), paddress(), read_memory(), rip_relative_offset(), store_signed_integer(), and store_unsigned_integer().
Referenced by amd64_init_abi().
|
static |
Definition at line 1592 of file amd64-tdep.c.
References amd64_insn::opcode_offset, and amd64_insn::raw_insn.
Referenced by amd64_displaced_step_fixup(), and amd64_insn_is_ret().
|
static |
Definition at line 790 of file amd64-tdep.c.
References value::allocate(), amd64_classify(), AMD64_COMPLEX_X87, AMD64_FTAG_REGNUM, AMD64_INTEGER, AMD64_MEMORY, AMD64_NO_CLASS, AMD64_RAX_REGNUM, AMD64_RDX_REGNUM, AMD64_SSE, AMD64_SSEUP, AMD64_ST0_REGNUM, AMD64_ST1_REGNUM, AMD64_X87, AMD64_X87UP, AMD64_XMM0_REGNUM, AMD64_XMM1_REGNUM, i387_return_value(), type::length(), readable_regcache::raw_read(), readable_regcache::raw_read_part(), regcache::raw_write(), regcache::raw_write_part(), regcache_raw_read_unsigned(), regcache_raw_write_unsigned(), regnum, RETURN_VALUE_ABI_RETURNS_ADDRESS, RETURN_VALUE_REGISTER_CONVENTION, and value_at_non_lval().
Referenced by amd64_init_abi().
|
static |
Definition at line 2749 of file amd64-tdep.c.
References amd64_alloc_frame_cache(), AMD64_NUM_SAVED_REGS, AMD64_RSP_REGNUM, amd64_frame_cache::base, amd64_frame_cache::base_p, extract_unsigned_integer(), gdbarch_byte_order(), get_frame_arch(), get_frame_register(), amd64_frame_cache::saved_regs, i386_gdbarch_tdep::sc_num_regs, i386_gdbarch_tdep::sc_reg_offset, and i386_gdbarch_tdep::sigcontext_addr.
Referenced by amd64_sigtramp_frame_prev_register(), amd64_sigtramp_frame_this_id(), and amd64_sigtramp_frame_unwind_stop_reason().
|
static |
Definition at line 2820 of file amd64-tdep.c.
References amd64_frame_prev_register(), amd64_sigtramp_frame_cache(), and regnum.
|
static |
Definition at line 2830 of file amd64-tdep.c.
References value::arch(), get_frame_arch(), get_frame_pc(), i386_gdbarch_tdep::sigcontext_addr, i386_gdbarch_tdep::sigtramp_end, i386_gdbarch_tdep::sigtramp_p, and i386_gdbarch_tdep::sigtramp_start.
|
static |
Definition at line 2802 of file amd64-tdep.c.
References amd64_sigtramp_frame_cache(), amd64_frame_cache::base, amd64_frame_cache::base_p, frame_id_build(), frame_id_build_unavailable_stack(), and get_frame_pc().
|
static |
Definition at line 2789 of file amd64-tdep.c.
References amd64_sigtramp_frame_cache(), and amd64_frame_cache::base_p.
|
static |
Definition at line 1226 of file amd64-tdep.c.
Referenced by amd64_get_insn_details(), and amd64_relocate_instruction().
|
static |
Definition at line 2531 of file amd64-tdep.c.
References amd64_analyze_prologue(), amd64_init_frame_cache(), amd64_skip_xmm_prologue(), find_pc_compunit_symtab(), find_pc_partial_function(), amd64_frame_cache::frameless_p, amd64_frame_cache::pc, compunit_symtab::producer(), producer_is_icc_ge_19(), producer_is_llvm(), and skip_prologue_using_sal().
Referenced by amd64_init_abi().
|
static |
Definition at line 2466 of file amd64-tdep.c.
References symtab::compunit(), symtab_and_line::end, find_pc_sect_line(), symtab_and_line::line, symtab_and_line::pc, compunit_symtab::producer(), producer_is_gcc_ge_4(), symtab_and_line::symtab, and target_read_code().
Referenced by amd64_skip_prologue().
|
static |
Definition at line 2898 of file amd64-tdep.c.
References target_read_memory().
Referenced by amd64_epilogue_frame_sniffer_1().
|
static |
Definition at line 3076 of file amd64-tdep.c.
References amd64_supply_fxsave(), reg_buffer::arch(), regnum, and i386_gdbarch_tdep::sizeof_fpregset.
void amd64_supply_fxsave | ( | struct regcache * | regcache, |
int | regnum, | ||
const void * | fxsave ) |
Definition at line 3430 of file amd64-tdep.c.
References reg_buffer::arch(), gdbarch_bfd_arch_info(), I387_FISEG_REGNUM, I387_FOSEG_REGNUM, i387_supply_fxsave(), reg_buffer::raw_supply(), and regnum.
Referenced by amd64_supply_fpregset(), amd64bsd_fetch_inferior_registers(), amd64_fbsd_nat_target::fetch_registers(), amd64_linux_nat_target::fetch_registers(), i386_darwin_nat_target::fetch_registers(), supply_fpregset(), and supply_fpregset().
void amd64_supply_xsave | ( | struct regcache * | regcache, |
int | regnum, | ||
const void * | xsave ) |
Definition at line 3453 of file amd64-tdep.c.
References reg_buffer::arch(), gdbarch_bfd_arch_info(), I387_FISEG_REGNUM, I387_FOSEG_REGNUM, i387_supply_xsave(), i387_xsave_get_clear_bv(), reg_buffer::raw_supply(), and regnum.
Referenced by amd64_linux_supply_xstateregset(), amd64fbsd_supply_xstateregset(), amd64_fbsd_nat_target::fetch_registers(), and amd64_linux_nat_target::fetch_registers().
|
static |
Definition at line 1630 of file amd64-tdep.c.
References amd64_insn::opcode_offset, and amd64_insn::raw_insn.
Referenced by amd64_displaced_step_copy_insn(), and amd64_displaced_step_fixup().
const struct target_desc * amd64_target_description | ( | uint64_t | xcr0, |
bool | segments ) |
Definition at line 3387 of file amd64-tdep.c.
References amd64_create_target_description().
Referenced by amd64_dicos_init_abi(), amd64_none_init_abi(), amd64_sol2_init_abi(), amd64_windows_init_abi_common(), amd64_x32_none_init_abi(), amd64fbsd_core_read_description(), amd64fbsd_init_abi(), amd64nbsd_init_abi(), amd64obsd_init_abi(), amd64_fbsd_nat_target::read_description(), and x86_darwin_init_abi_64().
|
static |
Definition at line 2165 of file amd64-tdep.c.
References amd64_arch_reg_to_regnum(), amd64_frame_cache::pc, amd64_frame_cache::saved_sp_reg, and target_read_memory().
Referenced by amd64_analyze_prologue().
void amd64_x32_init_abi | ( | struct gdbarch_info | info, |
struct gdbarch * | gdbarch, | ||
const target_desc * | default_tdesc ) |
Definition at line 3361 of file amd64-tdep.c.
References amd64_init_abi(), amd64_x32_pseudo_register_type(), i386_gdbarch_tdep::num_dword_regs, set_gdbarch_long_bit(), set_gdbarch_ptr_bit(), and set_tdesc_pseudo_register_type().
Referenced by amd64_x32_linux_init_abi(), and amd64_x32_none_init_abi().
|
static |
Definition at line 3378 of file amd64-tdep.c.
References amd64_target_description(), amd64_x32_init_abi(), and type::arch().
Definition at line 3344 of file amd64-tdep.c.
References AMD64_RBP_REGNUM, AMD64_RIP_REGNUM, AMD64_RSP_REGNUM, builtin_type::builtin_data_ptr, builtin_type::builtin_func_ptr, builtin_type(), i386_gdbarch_tdep::eax_regnum, i386_pseudo_register_type(), and regnum.
Referenced by amd64_x32_init_abi().
|
static |
Definition at line 1821 of file amd64-tdep.c.
References target_write_memory().
Referenced by amd64_relocate_instruction().
|
static |
Definition at line 1469 of file amd64-tdep.c.
References fixup_riprel(), amd64_displaced_step_copy_insn_closure::insn_details, amd64_insn::modrm_offset, and amd64_insn::raw_insn.
Referenced by amd64_displaced_step_copy_insn().
|
static |
Definition at line 1412 of file amd64-tdep.c.
References amd64_arch_reg_to_regnum(), amd64_get_unused_input_int_reg(), displaced_debug_printf, amd64_insn::enc_prefix_offset, gdb_buffered_insn_length(), amd64_displaced_step_copy_insn_closure::insn_buf, amd64_displaced_step_copy_insn_closure::insn_details, amd64_insn::modrm_offset, paddress(), regcache_cooked_read_unsigned(), regcache_cooked_write_unsigned(), rex_prefix_p(), amd64_displaced_step_copy_insn_closure::tmp_regno, amd64_displaced_step_copy_insn_closure::tmp_save, amd64_displaced_step_copy_insn_closure::tmp_used, and vex3_prefix_p().
Referenced by fixup_displaced_copy().
|
static |
Definition at line 1200 of file amd64-tdep.c.
Referenced by amd64_get_insn_details(), and fixup_riprel().
|
static |
Definition at line 1804 of file amd64-tdep.c.
References amd64_insn::modrm_offset, and amd64_insn::raw_insn.
Referenced by amd64_relocate_instruction().
|
static |
Definition at line 1208 of file amd64-tdep.c.
Referenced by amd64_get_insn_details().
|
static |
Definition at line 1216 of file amd64-tdep.c.
Referenced by amd64_get_insn_details(), and fixup_riprel().
|
static |
Definition at line 266 of file amd64-tdep.c.
Referenced by amd64_arch_reg_to_regnum().
|
static |
Definition at line 286 of file amd64-tdep.c.
Referenced by amd64_arch_reg_to_regnum().
|
static |
Definition at line 302 of file amd64-tdep.c.
Referenced by amd64_pseudo_register_name().
|
static |
Definition at line 162 of file amd64-tdep.c.
Referenced by amd64_dwarf_reg_to_regnum().
|
static |
Definition at line 241 of file amd64-tdep.c.
Referenced by amd64_dwarf_reg_to_regnum().
|
static |
Definition at line 322 of file amd64-tdep.c.
Referenced by amd64_pseudo_register_name().
|
static |
Definition at line 3041 of file amd64-tdep.c.
Referenced by amd64_init_abi().
|
static |
Definition at line 3030 of file amd64-tdep.c.
Referenced by amd64_init_abi().
const struct regset amd64_fpregset |
Definition at line 3103 of file amd64-tdep.c.
Referenced by amd64_init_abi(), amd64_linux_iterate_over_regset_sections(), and amd64fbsd_iterate_over_regset_sections().
|
static |
Definition at line 2881 of file amd64-tdep.c.
Referenced by amd64_init_abi().
|
static |
Definition at line 2714 of file amd64-tdep.c.
Referenced by amd64_init_abi().
|
static |
Definition at line 118 of file amd64-tdep.c.
Referenced by amd64_init_abi().
|
static |
Definition at line 113 of file amd64-tdep.c.
Referenced by amd64_init_abi().
|
static |
Definition at line 155 of file amd64-tdep.c.
Referenced by amd64_init_abi().
|
static |
|
static |
Definition at line 63 of file amd64-tdep.c.
Referenced by amd64_in_indirect_branch_thunk(), and amd64_init_abi().
|
static |
Definition at line 2860 of file amd64-tdep.c.
Referenced by amd64_init_abi().
|
static |
Definition at line 314 of file amd64-tdep.c.
Referenced by amd64_pseudo_register_name().
|
static |
Definition at line 148 of file amd64-tdep.c.
Referenced by amd64_init_abi().
|
static |
Definition at line 89 of file amd64-tdep.c.
Referenced by amd64_pseudo_register_name().
|
static |
Definition at line 81 of file amd64-tdep.c.
Referenced by amd64_pseudo_register_name().
|
static |
Definition at line 105 of file amd64-tdep.c.
Referenced by amd64_init_abi().
|
static |
Definition at line 97 of file amd64-tdep.c.
Referenced by amd64_init_abi().
|
static |
Definition at line 136 of file amd64-tdep.c.
Referenced by amd64_pseudo_register_name().
|
static |
Definition at line 124 of file amd64-tdep.c.
Referenced by amd64_init_abi().
|
static |
Definition at line 1151 of file amd64-tdep.c.
Referenced by amd64_get_insn_details().
|
static |
Definition at line 1174 of file amd64-tdep.c.
Referenced by amd64_get_insn_details().